![]() |
|
|
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# ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço foreach da linguagem C#Quantidade de visualizações: 27074 vezes |
O laço foreach é usado quando queremos percorrer todos os elementos de um array (matriz) ou de coleções de dados, tais como uma ArrayList. Veja um exemplo:
static void Main(string[] args){
// declara e inicializa um array de inteiros
int[] valores = new int[5]{3, 2, 5, 11, 13};
// usa o laço foreach para percorrer todos
// os elementos
foreach(int valor in valores){
Console.WriteLine("{0}", valor);
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
Aqui nós usamos este laço para percorrer todos os elementos do array. Note que, durante cada iteração do laço, uma referência ao elemento atual é guardada na variável valor. Agora uma advertência: a referência retornada pelo laço foreach é somente leitura. Observe o seguinte trecho de código:
// declara e inicializa um array de inteiros
int[] valores = new int[5]{3, 2, 5, 11, 13};
// tenta alterar o valor da referência ao
// elemento atual
foreach(int valor in valores){
valor = 10;
}
Ao tentarmos compilar este código teremos a seguinte mensagem: Cannot assign to 'valor' because it is a 'foreach iteration variable' |
Python ::: Python para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a transposta de uma matriz em Python - Python para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 7794 vezes |
|
A matriz transposta de uma matriz A é a matriz AT. Tal matriz é obtida quando copiamos os elementos da matriz A para uma outra matriz (ou para ela mesma) e trocamos de posição as linhas e colunas. Dessa forma, a primeira linha da matriz A se transforma na primeira coluna da matriz transposta, a segunda linha da matriz A se transforma na segunda coluna da matriz transposta e assim por diante. Em termos de notação, podemos dizer, de forma algébrica, que: ATji = Aij Onde i representa as linhas e j representa as colunas, tanto na matriz original quanto na matriz transposta. É importante estar atento à quantidade de linhas e colunas na matriz original e na matriz transposta equivalente. Assim, se a matriz original for 3x2, a matriz transposta será 2x3. Antes de vermos o código Python, dê uma olhada na seguinte matriz de duas linhas e três colunas: \[A = \left[\begin{matrix} 3 & 5 & 7 \\ 1 & 2 & 9 \end{matrix}\right] \] Sua matriz transposta correspondente é: \[A^T = \left[\begin{matrix} 3 & 1 \\ 5 & 2 \\ 7 & 9 \end{matrix}\right] \] E agora veja o código Python que declara uma matriz 2x3 e gera a matriz transposta 3x2:
# importamos a bibliteca NumPy
import numpy as np
def main():
# vamos declarar e construir uma matrix
# 2x3 (duas linhas e três colunas
matriz = np.array([(3, 5, 7), (1, 2, 9)])
# vamos exibir os valores da matriz
print("Elementos da matriz:")
for i in range(np.shape(matriz)[0]):
for j in range(np.shape(matriz)[1]):
print("%7.2f" % matriz[i][j], end="")
print()
# como temos uma matriz 2x3, a transposta deverá ser
# 3x2, ou seja, três linhas e duas colunas
linhas = np.shape(matriz)[0] # linhas da matriz original
colunas = np.shape(matriz)[1] # colunas da matriz original
transposta = np.empty((colunas, linhas))
# e agora vamos preencher a matriz transposta
for i in range(np.shape(matriz)[0]):
for j in range(np.shape(matriz)[1]):
transposta[j][i] = matriz[i][j]
# vamos exibir os valores da matriz transposta
print("\nElementos da matriz transposta:")
for i in range(np.shape(transposta)[0]):
for j in range(np.shape(transposta)[1]):
print("%7.2f" % transposta[i][j], end="")
print()
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado:
Elementos da matriz:
3 5 7
1 2 9
Elementos da matriz transposta:
3 1
5 2
7 9
É possível também obter a matriz transposta de um outra matriz usando o método transpose() da biblioteca NumPy da linguagem Python. Veja:
# importamos a bibliteca NumPy
import numpy as np
def main():
# vamos declarar e construir uma matrix
# 2x3 (duas linhas e três colunas
matriz = np.array([(3, 5, 7), (1, 2, 9)])
# vamos exibir os valores da matriz
print("Elementos da matriz:")
for i in range(np.shape(matriz)[0]):
for j in range(np.shape(matriz)[1]):
print("%7.2f" % matriz[i][j], end="")
print()
# vamos transpor a matriz usando o método transpose()
transposta = matriz.transpose()
# vamos exibir os valores da matriz transposta
print("\nElementos da matriz transposta:")
for i in range(np.shape(transposta)[0]):
for j in range(np.shape(transposta)[1]):
print("%7.2f" % transposta[i][j], end="")
print()
if __name__== "__main__":
main()
Ao executar este novo código Python veremos que o resultado é o mesmo. |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como adicionar elementos no início de um array JavaScript usando a função unshift() do objeto ArrayQuantidade de visualizações: 8524 vezes |
|
Nesta dica mostrarei como adicionar um ou mais elementos no início de um array da linguagem JavaScript usando a função unshift() do objeto Array. Esta função é chamada na variável do tipo array e recebe um ou mais elementos, os quais serão inseridos no início do vetor. Veja o código JavaScript completo para o exemplo:
<!doctype html>
<html>
<head>
<title>Arrays em JavaScript</title>
</head>
<body>
<script type="text/javascript">
// vamos criar um array em JavaScript
var valores = new Array(1, 2, 3, 4, 5);
// agora vamos mostrar o vetor criado
document.write("Valores no array: " + valores
+ "<br>");
// vamos adicionar três elementos no início do
// array
valores.unshift(6, 7, 8);
// e mostramos o resultado
document.write("Adicionei três elementos no início do array<br>");
document.write("Valores no array: " + valores);
</script>
</body>
</html>
Ao executar este código JavaScript nós teremos o seguinte resultado: Valores no array: 1,2,3,4,5 Adicionei três elementos no início do array Valores no array: 6,7,8,1,2,3,4,5 |
C# ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de C# - Escreva um programa (algorítmo) C# que usa o laço do...while para ler um número indeterminado de idades. A condição de parada do laço é o valor da idade igual a 0Quantidade de visualizações: 2562 vezes |
|
Pergunta/Tarefa: Escreva um programa (algorítmo) C# que usa o laço do...while para ler um número indeterminado de idades de algumas pessoas. A condição de parada do laço é o valor da idade igual a 0. Calcule a escreva a idade média deste grupo de pessoas. Sua saída deverá ser parecida com: Informe a idade: 19 Informe a idade: 30 Informe a idade: 21 Informe a idade: 45 Informe a idade: 0 A idade média é: 28,75 Veja a resolução comentada deste exercício usando C# console:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
int idade; // guarda a idade lida de cada indivíduo
double idade_media; // a idade média calculada
int soma = 0; // a soma das idades de cada indivíduo
int contador = 0; // conta as idades lidas
// laço do...while que repetirá até que o valor da idade seja 0
do {
Console.Write("Informe a idade: ");
idade = int.Parse(Console.ReadLine());
// a idade lida é diferente de 0?
if (idade != 0) {
soma = soma + idade; // soma mais esta idade
contador++; // aumenta a quantidade de idades lidas
}
} while (idade != 0);
// calcula a idade média
// note que forcei contador para o tipo double antes da divisão
// isso faz com que o resultado seja do tipo double
idade_media = soma / (contador * 1.0);
// finalmente mostramos o resultado
Console.WriteLine("A idade média é: " + idade_media);
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
|
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
Arquivos e diretórios em C++ - Como escrever em arquivos usando a função WriteFile() da API do WindowsQuantidade de visualizações: 9690 vezes |
|
A função WriteFile() da Win32 API é útil quando precisamos escrever em arquivos. Esta função foi projetada para escritas síncronas e assíncronas, enquanto WriteFileEx() é somente para escritas assíncronas. Veja o protótipo desta função: BOOL WINAPI WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped ); Antes de escrevermos em um arquivo, é importante entendermos o significado dos parâmetros da função WriteFile(): a) HANDLE hFile - Este é o handle para o arquivo no qual queremos escrever. Este handle deve ser criado com os direitos de acesso de escrita GENERIC_WRITE. b) LPCVOID lpBuffer - Um ponteiro para o buffer que contém os dados que serão escritos no arquivo. c) DWORD nNumberOfBytesToWrite - O número de bytes a serem escritos no arquivo. d) LPDWORD lpNumberOfBytesWritten - Um ponteiro para uma variável que receberá o número de bytes escritos. A função WriteFile() define o valor desta variável como zero antes de fazer seu trabalho ou verificação de erro. d) LPOVERLAPPED lpOverlapped - Um ponteiro para um estrutura OVERLAPPED. Esta estrutura é exigida se o handle para o arquivo for obtido usando FILE_FLAG_OVERLAPPED para o parâmetro dwFlagsAndAttributes da função CreateFile(). Geralmente usamos NULL para este parâmetro. Veja um trecho de código no qual usamos a função WriteFile() para escrever duas linhas em um arquivo texto:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]){
// dados a serem escritos no arquivo
CHAR frase[80];
DWORD nOut; // bytes escritos
// nome do arquivo
CHAR arquivo[] = "C:\\testes.txt";
// vamos abrir o arquivo para escrita.
// se o arquivo não existir nós vamos criá-lo.
HANDLE hArquivo = CreateFile(arquivo, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hArquivo == INVALID_HANDLE_VALUE){
cout << "Erro ao abrir o arquivo: " << GetLastError() << endl;
}
else{
// arquivo aberto com sucesso. Vamos escrever
// dados a serem escritos no arquivo
CHAR frase1[80] = "Programar em C++ é bom demais\r\n";
CHAR frase2[80] = "E a Win32 é da hora!!!!";
DWORD nOut; // bytes escritos
// vamos escrever a primeira frase
WriteFile(hArquivo, frase1, strlen(frase1), &nOut, NULL);
cout << nOut << " bytes foram escritos. " << endl;
// vamos escrever a segunda frase
WriteFile(hArquivo, frase2, strlen(frase2), &nOut, NULL);
cout << nOut << " bytes foram escritos. " << endl;
}
// vamos fechar o handle
CloseHandle(hArquivo);
system("PAUSE");
return EXIT_SUCCESS;
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |



