![]() |
|
|
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 - Fundações |
||
|
||
|
|
||
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
C++ Windows API - Como ler o conteúdo de um arquivo usando a função ReadFile() da Win32 APIQuantidade de visualizações: 9395 vezes |
|
A função ReadFile() é usada quando queremos ler o conteúdo de um arquivo. A leitura se inicia na posição zero do arquivo e mantém um ponteiro de arquivo, a partir do qual as leituras subsequentes ocorrerão. Esta função pode ser usada para leituras síncronas e assíncronas. Para leituras apenas assíncronas devemos usar ReadFileEx(). Veja seu protótipo na documentação da API do Windows: BOOL WINAPI ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); Antes de vermos um exemplo de como usar a função ReadFile(), vamos dar uma olhada em seus parâmetros: a) HANDLE hFile - Este é o handle para o arquivo a partir do qual queremos ler. Tal handle deve ser criado com o direito de acesso GENERIC_READ. b) LPVOID lpBuffer - Um ponteiro para o buffer que receberá os dados lidos do arquivo. c) DWORD nNumberOfBytesToRead - O número máximo de bytes a serem lidos de cada vez. Geralmente este número está relacionado à quantidade de bytes dos elementos do buffer. d) LPDWORD lpNumberOfBytesRead - Um ponteiro para uma variável que receberá o número de bytes lidos. A função ReadFile() define o valor desta variável como 0 antes de cada leitura e verificação de erros. e) 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. A função ReadFile() retorna quando um erro ocorre ou a quantidade de bytes solicitados é alcançada. Veja um trecho de código no qual lemos o conteúdo de um arquivo chamado testes.txt:
#include <cstdlib>
#include <iostream>
#include <windows.h>
#define TAM_BUFFER 256 // tamanho do buffer em bytes
using namespace std;
int main(int argc, char *argv[]){
// nome do arquivo
CHAR arquivo[] = "C:\\testes.txt";
CHAR buffer[TAM_BUFFER]; // buffer para o conteúdo do arquivo
DWORD nIn; // bytes lidos
// vamos abrir o arquivo para leitura.
// se o arquivo não existir uma mensagem de erro é exibida.
HANDLE hArquivo = CreateFile(arquivo, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hArquivo == INVALID_HANDLE_VALUE){
cout << "Erro ao abrir o arquivo: " << GetLastError() << endl;
}
else{
// arquivo aberto com sucesso. Vamos ler
while(ReadFile(hArquivo, buffer, TAM_BUFFER, &nIn, NULL) && nIn > 0){
cout << "Efetuei a leitura de " << nIn << " bytes." << endl;
// vamos adicionar o caractere de final de linha
// caso os bytes lidos não preencham todo o buffer
buffer[nIn] = 0;
cout << "Conteudo da leitura: " << buffer << endl;
}
}
// vamos fechar o handle
CloseHandle(hArquivo);
system("PAUSE");
return EXIT_SUCCESS;
}
|
Java ::: Coleções (Collections) ::: Set (Conjunto) |
Java Collections - Como usar a interface Set em seus códigos JavaQuantidade de visualizações: 5686 vezes |
|
A interface Set estende a interface Collection mas não adiciona novos métodos ou constantes. Em vez disso, esta interface define que uma instância de Set não contenha elementos duplicados. Esta responsabilidade é transferida para as classes que implementam a interface. A classe abstrata AbstractSet é uma classe de conveniência que herda da classe também abstrata AbstractCollection e implementa a interface Set. A classe AbstractSet fornece implementações concretas para os métodos equals() e hashCode(). Estes métodos permitem a funcionalidade da não permissão de elementos duplicados nos conjuntos. As classes concretas mais conhecidas da interface Set são: HashSet - Esta classe é implementada em cima de uma tabela hash, ou seja, um array (matriz) na qual os elementos são armazenados em posições calculadas de acordo com o seu conteúdo. Uma característica interessante de HashSet é que os elementos raramente são retornados na mesma ordem na qual foram inseridos. LinkedHashSet - Esta classe estende a classe HashSet com uma implementação de lista ligada (linked list) que permite a ordenação dos elementos no conjunto. TreeSet - Esta classe é uma classe concreta que implementa a interface SortedSet. A interface SortedSet é uma sub-interface de Set que garante que os elementos no conjunto estejam ordenados. Além disso, esta interface fornece os métodos first() e last() para acessar o primeiro e o último elemento do conjunto. Há ainda os métodos headSet(toElement) e tailSet(fromElement) para retornar uma faixa do conjunto cujos elementos sejam "menores" que toElement e "maiores" que fromElement. Seja qual for a implementação de Set que você queira usar, é sempre uma boa idéia codificar em cima da interface. Isso facilita a troca de HashSet por TreeSet ou vice-versa sem grandes modificações no seu código. Veja um exemplo no qual usamos a classe concreta HashSet para representar um conjunto de cinco strings únicas:
package estudos;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Estudos{
public static void main(String[] args) {
// vamos criar uma instância da classe HashSet
Set<String> conjunto = new HashSet<>();
// vamos inserir cinco elementos no Set
conjunto.add("Açucar");
conjunto.add("Macarrão");
conjunto.add("Feijão");
conjunto.add("Carne");
conjunto.add("Maionese");
// vamos exibir os elementos inseridos
Iterator iterator = conjunto.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
Ao executar este trecho de código teremos um resultado parecido com: Macarrão Feijão Carne Açucar Maionese Note que raramente os elementos serão exibidos na ordem na qual eles foram inseridos. Experimente agora trocar a linha: Set<String> conjunto = new HashSet<>(); por Set<String> conjunto = new LinkedHashSet<>(); Execute o código novamente e verá que agora os elementos são exibidos na mesma ordem que foram inseridos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa Java que recebe o ano de nascimento de uma pessoa e o ano atual e mostra a idade da pessoa em anos, meses, dias e semanasQuantidade de visualizações: 7464 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que recebe o ano de nascimento de uma pessoa e o ano atual, calcule e mostre: a) A idade da pessoa em anos; b) A idade da pessoa em meses; c) A idade da pessoa em dias; d) A idade da pessoa em semanas. Sua saída deverá ser parecida com: Informe o ano de seu nascimento: 1985 Informe o ano atual: 2023 A idade em anos é: 38 A idade em meses é: 456 A idade em dias é: 13680 A idade em semanas é: 1976 Veja a resolução comentada deste exercício usando Java:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos ler o ano de nascimento
System.out.print("Informe o ano de seu nascimento: ");
int ano_nascimento = Integer.parseInt(entrada.nextLine());
System.out.print("Informe o ano atual: ");
int ano_atual = Integer.parseInt(entrada.nextLine());
// calcula a idade em anos
int idade_anos = ano_atual - ano_nascimento;
System.out.println("A idade em anos é: " + idade_anos);
// calcula a idade em meses
int idade_meses = idade_anos * 12;
System.out.println("A idade em meses é: " + idade_meses);
// calcula a idade em dias
int idade_dias = idade_anos * 12 * 30;
System.out.println("A idade em dias é: " + idade_dias);
// calcula a idade em semanas
int idade_semanas = idade_anos * 52;
System.out.println("A idade em semanas é: " + idade_semanas);
}
}
|
JavaScript ::: Dicas & Truques ::: Cookies |
Cookies em JavaScript - Como escrever uma função para a criação de cookies em JavaScriptQuantidade de visualizações: 3 vezes |
|
Nesta dica mostrarei como podemos criar uma função JavaScript chamada gravarCookie() que recebe o nome, o valor e a duração de dias do cookie. Em outras dicas desse seção você encontra a função que faz a leitura dos cookies criados. Veja o código JavaScript completo, incluindo o código HTML:
<html>
<head>
<title>Estudando JavaScript</title>
<script type="text/javascript">
// função que permite gravar um cookie
function gravarCookie(nome, valor, diasDuracao){
var dataExpiracao = new Date();
dataExpiracao.setTime(dataExpiracao.getTime()
+ (diasDuracao * 24 * 3600 * 1000));
document.cookie = nome + "=" + escape(valor) +
((diasDuracao == null) ? "" : "; expires=" + dataExpiracao);
}
</script>
</head>
<body>
<script type="text/javascript">
// cria um cookie que durará um dia
gravarCookie("nome_visitante", "Osmar", 1);
document.writeln("Cookie criado com sucesso.");
</script>
</body>
</html>
Ao executar este código nós teremos o seguinte resultado: Cookie criado com sucesso. |
PHP ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar a instrução switch para desviar o fluxo de execução de seus códigos PHPQuantidade de visualizações: 15231 vezes |
A instrução switch é usada quando queremos testar várias possibilidades de fluxo de código mas não queremos usar vários elseif. Desta forma, cada possibilidade é testada em um bloco case. Veja um exemplo:
<?php
$valor = 4;
switch($valor){
case 0:
echo "Valor é igual a 0";
break;
case 1:
echo "Valor é igual a 1";
break;
case 2:
echo "Valor é igual a 2";
break;
default:
echo "Nenhuma das anteriores";
}
?>
Ao executarmos este código PHP nós teremos o seguinte resultado: Nenhuma das anteriores Veja que, se nenhuma das condições testadas em um bloco case for satisfatória, a parte default da instrução switch será executada. |
Desafios, Exercícios e Algoritmos Resolvidos de PHP |
Veja mais Dicas e truques de PHP |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




