![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar em Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 639 vezes |
![]() O cálculo e dimensionamento de pilares, sejam pilares de canto, extremidade ou intermediários, sempre seguem alguns passos cujas ordens são muito importantes, pois os dados de entrada de um passo podem vir de um ou mais passos anteriores. Em dicas anteriores do uso da linguagem Python no cálculo de pilares eu mostrei como calcular os esforços solicitantes majorados em pilares e também como calcular o índice de esbeltez de um pilar nas direções x e y. Nesta dica mostrarei como calcular o Momento Fletor Mínimo e a Excentricidade Mínima de 1ª Ordem de um pilar. Estes dados são muito importantes para a aplicação das fórmulas que embasam a área de aço a ser usada no pilar. Note que a Excentricidade Mínima de 1ª Ordem pode ser desprezada no caso de pilares intermediários (também chamados pilares de centro). O Momento Fletor Mínimo é o momento mínimo que deve ser considerado, mesmo em pilares nos quais a carga está centrada, e é calculado por meio da seguinte fórmula: \[M_\text{1d,min} = Nd \cdot (1,5 + (0,03 \cdot h) \] Onde: M1d,min é o momento fletor mínimo na direção x ou y em kN.cm. Nd são os esforços solicitantes majorados em kN. h é a dimensão do pilar na direção considerada (x ou y) em cm. A Excentricidade Mínima de 1ª Ordem do pilar pode ser calculada por meio da fórmula: \[e_\text{1,min} = \frac{M_\text{1d,min}}{Nd} \] Onde: e1,min é excentricidade mínima de 1ª ordem na direção escolhida. Nd são os esforços solicitantes majorados em kN. Note que, a exemplo do momento fletor mínimo, a excentricidade mínima de 1ª ordem também deve ser calculada nas direções x e y do pilar. Vamos ao código Python agora? Veja que o código pede para o usuário informar as dimensões do pilar nas direções x e y em centímetros, a carga total que chega ao pilar em kN e mostra o momento fletor mínimo e a excentricidade mínima de 1ª ordem no pilar, tanto na direção x quanto na direção y: # método principal def main(): # vamos pedir as dimensões do pilar hx = float(input("Informe a dimensão do pilar na direção x (em cm): ")) hy = float(input("Informe a dimensão do pilar na direção y (em cm): ")) # vamos pedir a carga total no pilar em kN Nk = float(input("Informe a carga total no pilar (em kN): ")) # vamos obter o menor lado do pilar (menor dimensão da seção transversal) if (hx < hy): b = hx else: b = hy # agora vamos calcular a área do pilar em centímetros quadrados area = hx * hy # a área está de acordo com a norma NBR 6118 (ABNT, 2014) if (area < 360): print("A área do pilar não pode ser inferior a 360cm2") return # vamos calcular a força normal de projeto Nd yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1 yf = 1.4 # regra geral para concreto armado Nd = yn * yf * Nk # e agora vamos calcular o momento fletor mínimo na direção x do pilar M1d_min_x = Nd * (1.5 + (0.03 * hx)) # e agora vamos calcular o momento fletor mínimo na direção y do pilar M1d_min_y = Nd * (1.5 + (0.03 * hy)) # agora vamos calcular a excentricidade mínima de 1ª ordem na direção x do pilar e1x_min = M1d_min_x / Nd # e finalmente a excentricidade mínima de 1ª ordem na direção y do pilar e1y_min = M1d_min_y / Nd # e mostramos os resultados print("\nO momento fletor mínimo na direção x é: {0} kN.cm".format( round(M1d_min_x, 2))) print("O momento fletor mínimo na direção y é: {0} kN.cm".format( round(M1d_min_y, 2))) print("A excentricidade mínima de 1ª ordem na direção x é: {0} cm".format( round(e1x_min, 2))) print("A excentricidade mínima de 1ª ordem na direção y é: {0} cm".format( round(e1y_min, 2))) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a dimensão do pilar na direção x (em cm): 40 Informe a dimensão do pilar na direção y (em cm): 19 Informe a carga total no pilar (em kN): 841.35 O momento fletor mínimo na direção x é: 3180.3 kN.cm O momento fletor mínimo na direção y é: 2438.23 kN.cm A excentricidade mínima de 1ª ordem na direção x é: 2.7 cm A excentricidade mínima de 1ª ordem na direção y é: 2.07 cm |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) recursivoQuantidade de visualizações: 961 vezes |
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma recursiva. Em outra dica desta seção que mostrei como fazer a mesma travessia de forma iterativa e usando uma pilha para backtracking (retrocesso). Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo: ![]() Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas. Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n). Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária: // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } Veja agora o código completo para o exemplo. Note que estamos usando recursividade nesta dica. Observe também o uso de uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis o código: package estudos; import java.util.ArrayList; // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } public class Estudos{ public static void main(String[] args){ // vamos criar os nós da árvore No cinco = new No(5); // será a raiz da árvore No quatro = new No(4); No nove = new No(9); No dois = new No(2); No tres = new No(3); No doze = new No(12); // vamos fazer a ligação entre os nós cinco.esquerdo = quatro; cinco.direito = nove; quatro.esquerdo = dois; nove.esquerdo = tres; nove.direito = doze; // agora já podemos efetuar o percurso depth-first ArrayList<Integer> valores = new ArrayList<>(); percursoDepthFirst(valores, cinco); System.out.println("Os valores na ordem Depth-First são: " + valores); } public static void percursoDepthFirst(ArrayList<Integer> valores, No no){ if(no != null){ // vamos adicionar o valor deste nó no ArrayList valores.add(no.valor); // passamos para o filho esquerdo percursoDepthFirst(valores, no.esquerdo); // passamos para o filho direito percursoDepthFirst(valores, no.direito); } } } Ao executarmos este código Java nós teremos o seguinte resultado: Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12] Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First. |
Java ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Java para iniciantes - Como usar os diferentes tipos de variáveis em JavaQuantidade de visualizações: 17476 vezes |
Na linguagem de programação Java podemos encontrar diferentes tipos de variáveis. Veja a lista e uma descrição detalhada de cada um destes tipos: Variáveis de instância (Instance Variables) - Estas variáveis são não-estáticas, ou seja, declaradas sem o modificador static. Variáveis de instância são assim chamadas porque seus valores são únicos para cada instância da classe. Assim, a variável nomeCliente pode armazenar valores diferentes para cada cópia da classe Cliente. Variáveis de classes - Estas variáveis são declaradas com o modificador static. Isso informa ao compilador que há exatamente uma única cópia desta variável, independente do número de instâncias da classe. Um bom exemplo de tal variável é quantCliente, que pode ser incrementada cada vez que uma nova cópia da classe é criada. Variáveis locais - São usadas para armazenar o estado temporário de um método. Variáveis locais são acessíveis somente dentro do método em que são declaradas, e automaticamente abandonadas na saída deste. Parâmetros - São os parâmetros de métodos. Tais variáveis são acessíveis somente ao código no corpo do método. Geralmente quando falamos de "campos em geral" (excluindo variáveis locais e parâmetros), podemos simplesmente dizer "campos". Se a discussão se aplica a todas as variáveis acima, usamos "variáveis". Se o contexto pede uma distinção, usamos termos específicos (campo estático, variável local, etc) como apropriado. Podemos ainda usar o termo "membro". Os campos, métodos e tipos aninhados de um tipo podem ser chamados de seus membros. |
C++ ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular MDC em C++ - C++ para matemáticaQuantidade de visualizações: 37384 vezes |
Como calcular MDC em C++ Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada: Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b. O trecho de código abaixo mostra como calcular o MDC de dois números informados: #include <iostream> using namespace std; int MDC(int a, int b){ int resto; while(b != 0){ resto = a % b; a = b; b = resto; } return a; } int main(int argc, char *argv[]){ int x, y; cout << "Este programa permite calcular o MDC\n"; cout << "Informe o primeiro valor: "; cin >> x; cout << "Informe o segundo valor: "; cin >> y; cout << "\nO Máximo Divisor Comum de " << x << " e " << y << " é " << MDC(x, y) << endl; system("PAUSE"); return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Este programa permite calcular o MDC Informe o primeiro número: 12 Informe o segundo número: 9 O Máximo Divisor Comum de 12 e 9 é 3 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como usar o método startsWith() da classe String do Java para verificar se uma string começa com uma substring - Como testar o conteúdo no início de uma stringQuantidade de visualizações: 360 vezes |
Em algumas situações gostaríamos de verificar se uma palavra, frase ou texto começa com uma determinada substring. Para isso podemos usar o método startsWith() da classe String da linguagem Java. Veja um código completo no qual verificamos se um endereço de um site na internet começa com "https": package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String site = "https://www.arquivodecodigos.com.br"; if(site.startsWith("https")){ System.out.println("Este site parece ser seguro."); } else{ System.out.println("Este site não parece ser seguro."); } System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Este site parece ser seguro. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercícios Resolvidos de Java - Métodos - Um método estático que recebe um vetor de inteiros e o exibeQuantidade de visualizações: 2549 vezes |
Exercício Resolvido de Java - Métodos - Um método estático que recebe um vetor de inteiros e o exibe Pergunta/Tarefa: Escreva um método Java que recebe um vetor de inteiros e o exibe. Este método deverá ter a seguinte assinatura: public static void exibirVetor(int[] vetor){ // sua implementação aqui } Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos declarar e construir um vetor de 5 inteiros int valores[] = new int[5]; // agora vamos pedir que o usuário informe os valores for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor para o " + (i + 1) + " elemento: "); valores[i] = Integer.parseInt(entrada.nextLine()); } // e agora vamos passar o vetor para o método exibirVetor() System.out.println("\nOs elementos do vetor são:\n"); exibirVetor(valores); System.out.println("\n"); } // um método estático que recebe um vetor de inteiros e o exibe public static void exibirVetor(int[] vetor){ // vamos percorrer os elementos do vetor e exibir cada um for(int i = 0; i < vetor.length; i++){ System.out.print(vetor[i] + " "); } } } |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como verificar se uma substring está contida no final de uma string usando a função AnsiEndsStr() do DelphiQuantidade de visualizações: 11464 vezes |
Em algumas situações precisamos verificar se uma substring está contida no final de uma string, ou seja, se a string termina com um determinado sufixo. Em Delphi isso pode ser feito com o auxílio da função AnsiEndsStr(). Esta função requer a substring a ser pesquisada e a string alvo da pesquisa. O retorno será true se a substring estiver contida no final da string. Do contrário o retorno será false. Veja o exemplo:procedure TForm1.Button1Click(Sender: TObject); var frase: string; begin frase := 'Gosto muito de Delphi e Java'; // vamos verificar se a string termina com "Java" if AnsiEndsStr('Java', frase) then ShowMessage('A frase termina com a substring indicada') else ShowMessage('A frase NÃO termina com a substring indicada') end; Não se esqueça de adicionar a unit StrUtils no uses do seu formulário. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
JavaScript ::: DOM (Document Object Model) ::: document Object |
JavaScript DOM - Como usar o objeto document em seus códigos JavaScriptQuantidade de visualizações: 7940 vezes |
O objeto document representa a página HTML e fornece possibilidades para acessar, criar e manipular todos os elementos HTML no documento. Este objeto está logo abaixo do objeto window na hierarquia do DOM (Document Object Model), ou seja, podemos dizer que este elemento é filho do objeto window. Assim, para acessá-lo a partir de nossos códigos JavaScript podemos usar window.document ou simplesmente document. Veja:<html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos obter o título desta página var titulo = window.document.title; // vamos exibir o resultado em uma mensagem alert window.alert("O título da página é: " + titulo); </script> </body> </html> Neste exemplo nós usamos o objeto window para obter o objeto document. O passo seguinte foi obter o valor de sua propriedade title, que é usada para definir ou obter o título da página HTML. Para obter um elemento em um documento HTML nós podemos usar as coleções (all, anchors, applets, etc), os métodos getElementById(), getElementsByName() e getElementsByTagName() e algumas outras propriedades e métodos. Se precisarmos acessar o elemento body ou html, podemos usar as propriedades document.documentElement e document.body. Veja um trecho de código no qual acessamos o corpo do documento HTML e definimos sua cor de fundo: <script type="text/javascript"> // vamos definir a cor de fundo da página HTML window.document.body.bgColor = "Beige"; </script> Uma vez que o objeto document é um objeto contâiner para um documento HTML, ele fornece métodos para a crição de novos elementos (por meio do método createElement()), nós textos (createTextNode()) e nós de comentários (createComment()). Depois que um nó (node) é criado, ele pode ser inserido no documento por meio de chamadas aos métodos appendChild() e insertBefore(). Veja um trecho de código no qual usamos o método createElement() para criar um novo elemento div e logo em seguida usamos o método appendChild() para adicionar o elemento recém-criado no final do documento HTML: <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos criar um novo elemento div var elem = document.createElement("div"); elem.innerHTML = "Sou uma div criada dinâmicamente"; elem.style.backgroundColor = "beige"; // vamos adicionar este novo elemento no final do documento document.body.appendChild(elem); </script> </body> </html> Os documentos HTML contidos em elementos frames e iframes possuem seus próprios objetos document. Para obter tais objetos, devemos usar a propriedade contentDocument. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Declarar e construir uma matriz de 10 int, pedir ao usuário para informar os valores dos elementos, mostrar a média dos valores informados e a quantidade de valores acima da médiaQuantidade de visualizações: 14035 vezes |
Pergunta/Tarefa: Escreva um programa Java console ou GUI que declara e constrói uma matriz de 10 inteiros. Em seguida peça ao usuário para informar os 10 valores e armazene-os na matriz. Finalmente obtenha a média aritmética dos valores informados e mostre quantos valores estão acima da média. Seu programa deverá exibir a seguinte saída (no caso de uma aplicação Console): Informe o 1º valor: 4 Informe o 2º valor: 12 Informe o 3º valor: 9 Informe o 4º valor: 6 Informe o 5º valor: 4 Informe o 6º valor: 3 Informe o 7º valor: 7 Informe o 8º valor: 2 Informe o 9º valor: 3 Informe o 10º valor: 1 A média dos valores é: 5.0 Quantidade de valores acima da média: 4 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import java.util.Scanner; public class Main { public static void main(String[] args) { // vamos declarar e instancia um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // vamos declarar e construir uma matriz de 10 ints int valores[] = new int[10]; double media; // média dos valores int soma = 0; // soma dos valores lidos int quantAcimaMedia = 0; // quantidade de valores acima da média // vamos solicitar ao usuário que informe os 10 valores inteiros // e vamos armazená-los na matriz for(int i = 0; i < valores.length; i++){ System.out.print("Informe o " + (i + 1) + "º valor: "); int valor = Integer.parseInt(entrada.nextLine()); valores[i] = valor; // vamos adicionar este valor à soma soma = soma + valor; } // vamos obter a média dos valores lidos media = (soma / valores.length); // agora precisamos obter a quantidade de valores acima da média for(int i = 0; i < valores.length; i++){ if(valores[i] > media){ quantAcimaMedia++; } } // vamos exibir os resultados System.out.println("A média dos valores é: " + media); System.out.println("Quantidade de valores acima da média: " + quantAcimaMedia); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como testar se um valor está contido em um array em JavaQuantidade de visualizações: 11351 vezes |
Pergunta/Tarefa: Escreva um programa Java GUI ou console que declara, constrói e inicializa um vetor (array unidimensional) de 5 inteiros. Em seguida peça ao usuário para informar um valor inteiro e informe se o valor lido está contido no vetor. A declaração, construção e inicialização do vetor pode ser feita da seguinte forma: // declara, constrói e inicializa um vetor de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import javax.swing.JOptionPane; public class Estudos { public static void main(String[] args) { // declara, constrói e inicializa um vetor de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; // vamos ler um valor inteiro int pesquisa = Integer.parseInt(JOptionPane.showInputDialog("Valor:")); // vamos verificar se o valor informado está contido no vetor boolean encontrado = false; for(int i = 0; i < valores.length; i++){ if(valores[i] == pesquisa){ encontrado = true; break; } } if(encontrado){ JOptionPane.showMessageDialog(null, "O valor está no vetor"); } else{ JOptionPane.showMessageDialog(null, "O valor não está no vetor"); } } } |
Nossas 20 dicas & truques de programação mais populares |
Java - Como usar o método next() da interface Iterator do Java para obter o próximo elemento da iteração C - Como inverter (reverter) o conteúdo de uma string em C usando uma função str_reverse() personalizada |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Como calcular a transposta de uma matriz em Java - Java para Geometria Analítica e Álgebra Linear PHP - Como converter graus em radianos em PHP usando a função deg2rad() - Trigonometria para iniciantes |
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 |