![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Java ::: Coleções (Collections) ::: Vector |
Como copiar todos os elementos de um Vector Java para um arrayQuantidade de visualizações: 8112 vezes |
Muitas vezes precisamos obter um array a partir de um Vector. Isso pode ser feito usando-se o método copyInto(). Veja sua assinatura:public void copyInto(Object[] anArray) Veja que os elementos do Vector são copiados para as mesmas posições no array. Assim, precisamos ficar atentos. Aqui podemos ter três exceções: NullPointerException (se o array fornecido como argumento for null), IndexOutOfBoundsException (se o array fornecido não for grande o suficiente para acomodar todos os elementos do array) e ArrayStoreException (se o tipo dos elementos do Vector não for de um tipo que pode ser armazenado no array fornecido como argumento). O trecho de código abaixo mostra como copiar todos os elementos de um Vector de String para um array de String: package estudos; import java.util.*; public class Estudos{ public static void main(String args[]){ // Cria o Vector Vector<String> nomes = new Vector<String>(); // adiciona itens ao Vector nomes.addElement("Osmar"); nomes.addElement("Marcos"); nomes.addElement("Ingrid"); // Cria o array String[] arrayNomes = new String[3]; // copia os elementos do Vector para o array nomes.copyInto(arrayNomes); // Exibe o conteúdo do array for(int i = 0; i < arrayNomes.length; i++){ System.out.println(arrayNomes[i]); } } } Ao executar este código Java nós teremos o seguinte resultado: Osmar Marcos Ingrid |
Python ::: Matplotlib Python Library (Biblioteca Python Matplotlib) ::: Geração e Plotagem de Gráficos usando Matplotlib |
Como gerar o gráfico da função seno usando a biblioteca Matplotlib do PythonQuantidade de visualizações: 2752 vezes |
Sabemos, como lembrança das nossas aulas de Trigonometria no segundo grau, que a função seno é a razão entre o cateto oposto e a hipotenusa de um triângulo retângulo, ou seja, trata-se de uma razão trigonométrica que retorna valores na faixa de -1 até 1 (ambos inclusos). Nesta dica mostrarei como podemos usar as capacidades de geração de gráficos da biblioteca Matplotlib da linguagem Python, combinadas com as funções arange() e sin() da biblioteca NumPy para gerar o gráfico da função seno. Antes de vermos o código, observe o resultado gerado na imagem a seguir: ![]() Veja agora o código Python completo para a geração do gráfico: # importamos a biblioteca NumPy import numpy as np #importamos a biblioteca Matplotlib import matplotlib.pyplot as plt def main(): # definimos o título para a área de plotagem plt.title('Gráfico da Função Seno') # vamos exibir o grid da área de plotagem plt.grid(True) # vamos definir os valores da coordenada x # os valores gerados serão de 0 até 12 (não incluído) eixo_x = np.arange(0, 12, 0.1) # os valores da coordenada y serão o seno de # cada valor correspondente no eixo x eixo_y = np.sin(eixo_x) # vamos plotar a função seno agora plt.plot(eixo_x, eixo_y) # finalmente exibimos o resultado plt.show() if __name__== "__main__": main() |
VB.NET ::: Dicas & Truques ::: Data e Hora |
Como adicionar horas à data e hora atual em VB.NET usando a função AddHours() da classe DateTimeQuantidade de visualizações: 12667 vezes |
Nesta dica mostrarei como podemos adicionar horas à data e hora atual em VB.NET usando o método AddHours() da classe DateTime. Note que estamos obtendo a data e hora atual usando DateTime.Now. Em seguida nós adicionamos 5 horas e mostramos a nota data e hora. Veja o código VB.NET completo para o exemplo: Imports System Module Program Sub Main(args As String()) Dim agora As DateTime = DateTime.Now Dim horas As Integer = 5 ' vamos adicionar 5 horas ' exibe a data e hora atual Console.WriteLine("Agora são: " _ & agora.ToString("dd/MM/yyyy - hh:mm:ss")) ' adiciona as horas agora = agora.AddHours(horas) ' exibe a nova data e hora Console.WriteLine("Daqui " & horas & " horas será: " _ & agora.ToString("dd/MM/yyyy - hh:mm:ss")) Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...") ' pausa o programa Console.ReadKey() End Sub End Module Ao executar este código VB.NET nós teremos o seguinte resultado: Agora são: 11/07/2022 - 03:47:01 Daqui 5 horas será: 11/07/2022 - 08:47:01 |
Python ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular a apótema de um polígono regular de N lados em PythonQuantidade de visualizações: 766 vezes |
Uma das formas mais comuns de se obter a área de um polígono regular é usando a seguinte fórmula: \[\text{A} = \frac{1}{2} \cdot \text{p} \cdot \text{a} \] Onde: p = Perímetro, ou seja, a soma dos comprimentos de todos os lados. a = Apótema, isto é, uma parte que une o centro do polígono ao meio de qualquer lado que esteja perpendicular. Agora que já estamos alinhados, saiba que calcular a apótema de um polígono regular "na mão" é fácil, já que só precisamos medir a distância de dois lados opostos e dividir por dois ou traçar linhas cruzadas e medir a distância de um dos lados até a interseção dessas linhas. No entanto, em programação a coisa já é um pouco mais complicada. Nesta dica mostrarei como podemos realizar esta tarefa em Python. Para isso usaremos alguns truques de trigonometria. Comece analisando a seguinte imagem: ![]() Note que temos um pentágono com cada lado medindo 4 metros. Recorde que um pentágono é um polígono regular de 5 lados. Para deixar a dica mais didática eu coloquei também uma linha azul representando a apótema do polígono e as linhas cruzadas. Veja agora o código Python que recebe a quantidade de lados do polígono, o comprimento dos lados e retorna a apótema: # vamos importar o módulo Math import math # função que calcula e retorna a apótema de um # polítono regular def calcular_apotema(lados, comprimento): # a quantidade de lados e o comprimento deles # não podem ser negativos if lados < 0 or comprimento < 0: return -1 # calculamos a apótema return (comprimento / (2 * math.tan((180 / lados) * math.pi / 180))) # função principal do programa def main(): # vamos ler a quantidade de lados lados = int(input("Informe a quantidade de lados: ")) # vamos ler o comprimento dos lados comprimento = int(input("Informe o comprimento dos lados: ")) # e agora calculamos a apótema dos polígono apotema = calcular_apotema(lados, comprimento) # e mostramos o resultado print("A apótema do polígono é: {0}".format(apotema)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a quantidade de lados: 5 Informe o comprimento dos lados: 4 A apótema do polígono é: 2.7527638409423476 |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Escreva um programa C para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no arrayQuantidade de visualizações: 900 vezes |
Pergunta/Tarefa: Dado o seguinte vetor de inteiros: // vamos declarar e construir um vetor de 8 inteiros int valores[] = {0, 3, 0, 5, 7, 4, 0, 9}; Sua saída deverá ser parecida com: Vetor na ordem original: 0 3 0 5 7 4 0 9 Vetor com os zeros deslocados para o final: 3 5 7 4 9 0 0 0 Veja a resolução comentada deste exercício usando C: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ // vamos declarar e construir um vetor de 8 inteiros int valores[] = {0, 3, 0, 5, 7, 4, 0, 9}; int i; // para o controle do laço int j; // variável auxiliar int temp; // variável temporária setlocale(LC_ALL,""); // para acentos do português // vamos mostrar o vetor na ordem original printf("Vetor na ordem original:\n"); for(i = 0; i < 8; i++){ printf("%d ", valores[i]); } // vamos inicializar j como 0 para que ele aponte para // o primeiro elemento do vetor j = 0; // agora o laço for percorre todos os elementos do vetor, // incrementanto a variável i e deixando o j em 0 for(i = 0; i < 8; i++){ // encontramos um valor que não é 0 if(valores[i] != 0){ // fazemos a troca entre os elementos nos índices // i e j temp = valores[i]; valores[i] = valores[j]; valores[j] = temp; // e avançamos o j para o elemento seguinte j++; } } // agora mostramos o resultado printf("\n\nVetor com os zeros deslocados para o final:\n"); for(i = 0; i < 8; i++){ printf("%d ", valores[i]); } printf("\n\n"); system("pause"); return 0; } Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes. |
Python ::: Dicas & Truques ::: Lista (List) |
Como ordenar uma lista de inteiros em Python de acordo com a soma dos dígitos de seus elementos usando uma função lambdaQuantidade de visualizações: 869 vezes |
Nesta dica mostrarei como podemos usar uma função lambda em Python para ordenar uma lista de inteiros de acordo com a soma dos seus dígitos. Este é um código muito interessante e que permitirá um melhor entendimento de funções lambda em Python. Veja o código completo para o exemplo: # método usado para ordenar a lista de acordo com a soma # de seus dígitos def ordenar(vetor): return sorted(vetor, key=lambda n: sum(int(c) for c in str(n) if c != "-")) # função principal do programa def main(): # vamos criar uma lista de inteiros valores = [21, 10, 8, 32, 70, 41, 40, 11] # vamos exibir a lista original print("Lista na ordem original: {0}".format(valores)) # agora vamos ordenar de acordo com a soma dos dígitos lista_ordenada = ordenar(valores) print("Lista ordenada: {0}".format(lista_ordenada)) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Lista na ordem original: [21, 10, 8, 32, 70, 41, 40, 11] Lista ordenada: [10, 11, 21, 40, 32, 41, 70, 8] |
PHP ::: Fundamentos da Linguagem ::: Tipos de Dados |
PHP do básico ao profissional - Como usar o tipo de dados integer do PHPQuantidade de visualizações: 9117 vezes |
Integers (inteiros) são números inteiros, tais como 1, 12, 50, etc. A faixa de valores aceitáveis varia de acordo com os detalhes da plataforma na qual o PHP está sendo executado. Mas, geralmente, a faixa vai de -2.147.483.648 até +2.147.483.647. Especificamente, esta faixa é equivalente à faixa do tipo de dados long de seu compilador C. Infelizmente, o C padrão não define qual faixa o tipo long deve ter. Assim, em alguns sistemas poderemos ter uma faixa de inteiros diferente do afirmado acima. Literais integer podem ser escritos em decimal, octal ou hexadecimal. Valores decimais são representados por uma sequencia de dígitos não precedidos de zeros. A sequencia pode começar com um sinal de positivo (+) ou negativo (-). Se não houver sinal, assume-se que o valor é positivo. Exemplos de inteiros decimal incluem: 1998 -641 +33 Números octais consistem de um 0 (zero) e uma sequencia de dígitos de 0 à 7. Assim como os números decimais, números octais podem ser prefixados com um sinal de positivo ou negativo. Veja alguns exemplos de números octais e seus equivalentes decimais: 0755 // decimal 493 +010 // decimal 8 Valores hexadecimais começam com 0x, seguido por uma sequencia de dígitos (0-9) ou letras (A-F). As letras podem estar em maiúsculas ou minúsculas mas geralmente são escritas em maiúsculas. Números hexadecimais também podem incluir um sinal de positivo ou negativo. Veja alguns exemplos: 0xFF // decimal 255 0x10 // decimal 16 -0xDAD1 // decimal -56017 Se tentarmos armazenar um número inteiro que é grande demais para ser armazenado como inteiro, ou que não seja um número inteiro, ele será automaticamente convertido em um número de ponto-flutuante (contendo casas decimais). Podemos testar se uma variável é do tipo integer usando as funções is_int() ou is_integer(). Veja: <? $valor = 10; if(is_int($valor)){ echo 'A variável $valor é do tipo integer'; } ?> |
Python ::: Estruturas de Dados ::: Lista Ligada Simples |
Como excluir um nó no final de uma lista encadeada simples em PythonQuantidade de visualizações: 1348 vezes |
Nesta dica mostrarei como podemos escrever um método remover_final() que remove e retorna o nó no final de uma lista encadeada simples em Python, ou seja, excluí o último nó da lista. É importante observar que o método exclui o último nó e o retorna completo, inclui o valor que está incluído nele. Se a lista estiver vazia o método retorna o valor None para indicar lista vazia. Vamos começar então com o código para a classe No da lista singularmente ligada (que salvei em um arquivo no_lista_singularmente_ligada.py): # classe No para uma lista singularmente encadeada ou # ligada - Singly Linked List class No: # construtor da classe No def __init__(self, info, proximo): self.info = info self.proximo = proximo # método que permite definir o conteúdo do nó def set_info(self, info): self.info = info # método que permite obter a informação de um nó def get_info(self): return self.info # método que permite definir o campo próximo deste nó def set_proximo(self, proximo): self.proximo = proximo # método que permite obter o campo próximo deste nó def get_proximo(self): return self.proximo # retorna True se este nó apontar para outro nó def possui_proximo(self): return self.proximo != None Veja que o código para a classe Nó não possui muitas firulas. Temos apenas um campo info, que guardará o valor do nó, e um campo próximo, que aponta para o próximo nó da lista, ou null, se este for o único nó ou o último nó da lista ligada. Veja agora o código para a classe ListaLigadaSimples (lista_ligada_simples.py), com os métodos inserir_inicio(), remover_final() e exibir(): # importa a classe No from no_lista_singularmente_ligada import No # classe ListaLigadaSimples class ListaLigadaSimples: # construtor da classe def __init__(self): self.inicio = None # nó inicial da lista # método que deleta um nó no final de uma lista ligada # este método retorna o nó excluído def remover_final(self): # a lista está vazia? if self.inicio == None: return None else: # vamos excluir e retornar o primeiro nó da lista removido = self.inicio # a lista possui apenas um nó? if self.inicio.get_proximo() == None: # a lista agora ficará vazia self.inicio = None else: # começamos apontando para o início da lista no_atual = self.inicio no_anterior = self.inicio # enquanto o próximo do nó atual for diferente de nulo while no_atual.get_proximo() != None: # avançamos o nó anterior no_anterior = no_atual # saltamos para o próximo nó no_atual = no_atual.get_proximo() # na estamos na posição de exclusão removido = no_atual no_anterior.set_proximo(None) # retorna o nó removido return removido # método que permite inserir um novo nó no início da lista def inserir_inicio(self, info): # cria um novo nó contendo a informação e que # não aponta para nenhum outro nó novo_no = No(info, None) # a lista ainda está vazia? if self.inicio == None: # o novo nó será o início da lista self.inicio = novo_no else: # o novo nó aponta para o início da lista novo_no.set_proximo(self.inicio) # o novo nó passa a ser o início da lista self.inicio = novo_no # método que permite exibir todos os nós da lista # ligada simples (lista singularmente encadeada) def exibir(self): # aponta para o início da lista no_atual = self.inicio # enquanto o nó não for nulo while no_atual != None: # exibe o conteúdo do nó atual print(no_atual.get_info()) # pula para o próximo nó no_atual = no_atual.get_proximo() E agora o código main() que insere alguns valores no início da nossa lista singularmente encadeada e testa o método remover_final(): # importa a classe ListaLigadaSimples from lista_singularmente_ligada import ListaLigadaSimples # método principal def main(): # cria uma nova lista encadeada simples lista = ListaLigadaSimples() print("Insere o valor 12 no início da lista") lista.inserir_inicio(12) print("Conteúdo da lista: ") lista.exibir() print("Insere o valor 30 no início da lista") lista.inserir_inicio(30) print("Conteúdo da lista: ") lista.exibir() print("Insere o valor 27 no início da lista") lista.inserir_inicio(27) print("Conteúdo da lista: ") lista.exibir() print("Remove um nó no final da lista") removido = lista.remover_final() if removido == None: print("Não foi possível remover. Lista vazia") else: print("Nó removido:", removido.get_info()) print("Conteúdo da lista: ") lista.exibir() if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: c:\estudos_python>python estudos.py Insere o valor 12 no início da lista Conteúdo da lista: 12 Insere o valor 30 no início da lista Conteúdo da lista: 30 12 Insere o valor 27 no início da lista Conteúdo da lista: 27 30 12 Remove um nó no final da lista Nó removido: 12 Conteúdo da lista: 27 30 |
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular o peso que um pilar aguenta usando Python - Python para Engenharia CivilQuantidade de visualizações: 299 vezes |
![]() O sonho de todo estudante de Engenharia Civil é poder responder, com segurança, a uma das perguntas mais recorrentes no nosso dia-a-dia: Quanto de peso um pilar aguenta? Para responder, basta nos lembrarmos de que o concreto é muito resistente à compressão, e, no caso dos pilares, a armadura é usada, em sua maior parte, para combater a flambagem, que é quando o pilar tende a fletir para os lados, parecendo-se com um arco ou com uma barriga de chope. Então, uma vez que o pilar recebe sua carga em seu eixo (carga axial) e o concreto é muito resistente à compressão, só precisamos nos concentrar na resistência característica do concreto à compressão e na área da seção transversal do pilar. Sempre que falamos de resistência do concreto, nós estamos falando de FCK C15, C20, C25, C30, etc, que são os termos usados para designar sua resistência. Assim, um concreto C25 é o mesmo que 25 MPa, ou seja, esse concreto resiste a 250Kg/cm2. Os concretos usinados, em geral, vêm com resistência de 25 MPa para cima, enquanto aquele concreto que fazemos na obra, na betoneira, usando a combinação de 3x1, chega no máximo a 15 MPa. Além disso, é importante nos lembrarmos de que a norma NBR 6118/2014 exige que o concreto seja igual ou superior a 25 MPa. Há também o fator de segurança de 40%, também exigido pela norma NBR 6118/2014. Dessa forma, se o concreto for de 25 MPa, aplicado o fator de segurança, só podemos contar com 15 MPa mais ou menos, o que daria 150Kg/cm2. Vamos ver código agora? Veja o código Python completo que pede os lados b (base) e h (altura) do pilar e o FCK do concreto usado e retorna o peso que o pilar suporta (já aplicado o fator de segurança): # Algoritmo Python que calcula o peso suportado por um pilar # dados os seus lados e o FCK do concreto # função principal do programa def main(): # vamos ler o lado b do pilar base = float(input("Informe a base (b) do pilar em cm: ")) # vamos ler a altura h do pilar altura = float(input("Informe a altura (h) do pilar em cm: ")) # vamos calcular a área da seção transversal do pilar area = base * altura # agora vamos ler o FCK do concreto em MPa fck = float(input("Informe o FCK do concreto em MPa: ")) # vamos calcular o peso suportado pelo pilar peso_suportado = area * (fck * 10) # vamos aplicar o fator de segurança de 40% peso_suportado = peso_suportado / 1.4 # e mostramos o resultado print("A área da seção transversal é: {0} cm2".format(area)) print("Esse pilar suporta {0} kg".format(peso_suportado)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a base (b) do pilar em cm: 14 Informe a altura (h) do pilar em cm: 26 Informe o FCK do concreto em MPa: 20 A área da seção transversal é: 364.0 cm2 Esse pilar suporta 52000.0 kg Lembre-se de que a área mínima da seção de um pilar, de acordo com a NBR 6118/2014 é de 360 cm2. |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como criar diretórios usando PHP - Como usar a função mkdir() da linguagem PHP para criar diretórios - RevisadaQuantidade de visualizações: 25246 vezes |
Diretórios podem ser criados com a função mkdir() do PHP. Esta função recebe o nome do diretório a ser criado, um modo que define as permissões de acesso ao diretório e um valor boolean que define se os diretórios fornecidos no primeiro parâmetro serão criados recursivamente. O valor padrão para o modo de acesso é 0777 (todos têm permissão de leitura, escrita e execução) e false para a criação de diretórios recursivamente. Veja um trecho de código no qual criamos um diretório no diretório public_html: <? // nome do diretório $diretorio = "/site/public_html/minhas_imagens"; // cria o diretório com a permissão 0777 if(mkdir($diretorio)) echo "Diretório criado com sucesso."; else echo "Não foi possível criar o diretório."; ?> Antes de criar um diretório, é preciso que você verifique se o diretório dentro do qual o novo diretório será criado apresenta as permissões adequadas, do contrário você terá a seguinte mensagem de erro: Warning: mkdir() [function.mkdir]: Permission denied in /site/public_html/testes.php on line 8 Não foi possível criar o diretório. Veja agora como criar um diretório contendo dois sub-diretórios recursivamente: <? // cria o diretório imagens contendo o subdiretório "fotos" // e este conterá o sub-diretório // "recentes" $diretorio = "/site/public_html/imagens/fotos/recentes"; // cria o diretório com a permissão 0777 if(mkdir($diretorio, 0777, true)) echo "Diretório criado com sucesso."; else echo "Não foi possível criar o diretório."; ?> Esta dica foi revisada, atualizada e testada com o PHP 8. |
Nossas 20 dicas & truques de programação mais populares |
PHP - Datas e horas em PHP - Como subtrair horas de uma data usando a função mktime() da linguagem PHP |
Você também poderá gostar das dicas e truques de programação abaixo |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |