![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Você está aqui: Cards de Engenharia Civil - Estruturas de Concreto Armado |
||
|
||
|
|
||
C ::: Dicas & Truques ::: Matemática e Estatística |
Como testar se um número é primo em CQuantidade de visualizações: 3104 vezes |
|
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos. É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par. Veja agora um código C completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int numero, i;
int primo = 1; // verdadeiro, true
// vamos solicitar um número inteiro positivo
printf("Informe um número inteiro positivo: ");
scanf("%d", &numero);
// o número é negativo?
if(numero < 0){
printf("Número inválido.\n\n");
}
// é 0 ou 1?
else if((numero == 0) || (numero == 1)){
printf("Número válido, mas não é primo.\n\n");
}
// passou até aqui. Vamos testar se o número é primo
else{
for (i = 2; i <= (numero / 2); i++){
// se passar no teste, não é primo
if (numero % i == 0) {
primo = 0; // recebe false
break;
}
}
if(primo){
printf("O número informado é primo\n\n");
}
else{
printf("O número informado não é primo\n\n");
}
}
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Informe um número inteiro positivo: 9 O número informado não é primo |
Android Java ::: Gerenciadores de Layout ::: LinearLayout |
Como usar o gerenciador de layout LinearLayout em suas aplicações AndroidQuantidade de visualizações: 8426 vezes |
O gerenciador de layout LinearLayout (no pacote android.widget) do Android SDK nos permite exibir seus componentes filhos em uma única coluna ou linha. Esta classe está disponível desde a API Level 1. Veja sua posição na hierarquia de classes do Android:
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.LinearLayout
As classes diretas mais conhecidas são: NumberPicker, RadioGroup, SearchView, TabWidget, TableLayout, TableRow e ZoomControls. Veja um exemplo de como podemos usar o gerenciador LinearLayout em um arquivo de layout em XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
Veja agora como este mesmo gerenciador pode ser criado em tempo de execução a partir do método onCreate() de uma activity:
package arquivo.estudos;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
public class EstudosActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// vamos criar o gerenciador de layout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// vamos atribuir este layout à janela
setContentView(layout);
}
}
Em ambos os exemplos, os componentes filhos serão dispostos em uma única coluna, ou seja, serão empilhados na vertical, uma vez que o valor da orientação do layout é vertical. Note que a orientação do layout LinearLayout é definida em um arquivo XML usando o atributo android:orientation. Via código, a orientação é definida por meio de uma chamada ao método setOrientation(). A orientação padrão de um LinearLayout é horizontal (os componentes são dispostos em uma linha horizontal e a quebra de linha só ocorrerá quando forçada por questões de espaço). |
Delphi ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em Delphi dados dois pontos no plano cartesianoQuantidade de visualizações: 1688 vezes |
|
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem Delphi que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:
procedure TForm4.Button2Click(Sender: TObject);
var
x1, y1, x2, y2, m: Double;
begin
// x e y do primeiro ponto
x1 := 3;
y1 := 6;
// x e y do segundo ponto
x2 := 9;
y2 := 10;
// agora vamos calcular o coeficiente angular
m := (y2 - y1) / (x2 - x1);
// e mostramos o resultado
Memo1.Lines.Add('O coeficiente angular é: ' +
FloatToStr(m));
end;
Ao executar este código em linguagem Delphi nós teremos o seguinte resultado: O coeficiente angular é: 0,666666666666667 Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):
procedure TForm4.Button2Click(Sender: TObject);
var
x1, y1, x2, y2, tangente: Double;
cateto_oposto, cateto_adjascente, tetha: Double;
begin
// incluir a unit Math
// x e y do primeiro ponto
x1 := 3;
y1 := 6;
// x e y do segundo ponto
x2 := 9;
y2 := 10;
// vamos obter o comprimento do cateto oposto
cateto_oposto := y2 - y1;
// e agora o cateto adjascente
cateto_adjascente := x2 - x1;
// vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
// (em radianos, não se esqueça)
tetha := ArcTan2(cateto_oposto, cateto_adjascente);
// e finalmente usamos a tangente desse ângulo para calcular
// o coeficiente angular
tangente := Tan(tetha);
// e mostramos o resultado
Memo1.Lines.Add('O coeficiente angular é: ' +
FloatToStr(tangente));
end;
Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Ordenação e pesquisa em C - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)Quantidade de visualizações: 3365 vezes |
|
A ordenação Insertion Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados. A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando as cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação. A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim em diante, até não receber mais cartas. Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição. Vamos ver a implementação na linguagem C agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:
#include <stdio.h>
#include <stdlib.h>
// função que permite ordenar um vetor de inteiros
// usando a ordenação Insertion Sort
void insertionSort(int vetor[], int tam){
int i, temp, j;
// este laço varre os elementos a partir do segundo
// elemento, ou seja, o índice 1
for(i = 1; i < tam; i++){
// guardamos o elemento atual em temp
temp = vetor[i];
for(j = i; ((j > 0) && (vetor[j - 1] > temp)); j--){
vetor[j] = vetor[j - 1]; // houve uma troca
}
vetor[j] = temp; // colocamos temp em seu devido lugar
}
}
int main(int argc, char *argv[]){
int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
int i, tamanho = 9;
// imprime a matriz sem a ordenação
puts("Sem ordenação:\n");
for(i = 0; i < 9; i++){
printf("%d ", valores[i]);
}
// vamos ordenar a matriz
insertionSort(valores, tamanho);
// imprime a matriz ordenada
puts("\n\nOrdenada usando Insertion Sort:\n");
for(i = 0; i < 9; i++){
printf("%d ", valores[i]);
}
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Sem ordenação: 4 6 2 8 1 9 3 0 11 Ordenada usando Insertion Sort: 0 1 2 3 4 6 8 9 11 |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Python - Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor BQuantidade de visualizações: 637 vezes |
|
Pergunta/Tarefa: Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B com seus elementos distribuídos da seguinte forma: Vetor A = [8, 5, 4, 1, 2, 3, 4, 6, 9, 7] Vetor B = [24, 10, 12, 2, 6, 6, 12, 12, 27, 14] Note que os elementos do vetor B seguem um padrão. Se o elemento do vetor A estiver em uma posição par, então o elemento do vetor B será o triplo do elemento do vetor A. Caso contrário o elemento do vetor B será o dobro do elemento do vetor A. Neste exercício a primeira posição/índice dos vetores é assumida como sendo zero. Em algumas linguagens de programação o primeiro índice é um e não zero. Sua saída deverá ser parecida com: Informe o valor do 1.o elemento: 8 Informe o valor do 2.o elemento: 5 Informe o valor do 3.o elemento: 4 Informe o valor do 4.o elemento: 1 Informe o valor do 5.o elemento: 2 Informe o valor do 6.o elemento: 3 Informe o valor do 7.o elemento: 4 Informe o valor do 8.o elemento: 6 Informe o valor do 9.o elemento: 9 Informe o valor do 10.o elemento: 7 Elementos do vetor A: 8, 5, 4, 1, 2, 3, 4, 6, 9, 7 Elementos do vetor B: 24, 10, 12, 2, 6, 6, 12, 12, 27, 14 Veja a resolução comentada deste exercício em Python:
# função principal do programa
def main():
# vamos declarar e construir dois vetores de 10 inteiros
vetor_a = [0 for x in range(10)]
vetor_b = [0 for x in range(10)]
# agora vamos pedir para o usuário informar os valores
# dos elementos do vetor A
for i in range(len(vetor_a)):
vetor_a[i] = int(input("Valor do %d.o elemento: " % ((i + 1))))
# vamos construir o vetor B
for i in range(len(vetor_b)):
# o índice atual é par?
if i % 2 == 0:
vetor_b[i] = vetor_a[i] * 3
else:
vetor_b[i] = vetor_a[i] * 2
# vamos mostrar os elementos do vetor A
print("\nElementos do vetor A:\n")
for i in range(len(vetor_a)):
print("%d, " % vetor_a[i], end=' ')
# vamos mostrar os elementos do vetor B
print("\n\nElementos do vetor B:\n")
for i in range(len(vetor_b)):
print("%d, " % vetor_b[i], end=' ')
if __name__== "__main__":
main()
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
|
JavaScript - Como usar a propriedade parentNode para obter o objeto pai de um elemento na hierarquia do DOM do JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






