![]() |
|
|
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. |
||
C++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Apostila C++ para iniciantes - Como usar o tipo de dados short ou short int da linguagem C++Quantidade de visualizações: 14143 vezes |
O tipo de dados short (também chamado de short int) da linguagem C++ é uma variação do tipo int e geralmente possui a metade da capacidade de armazenamento deste. Nós o usamos quando queremos representar números inteiros, ou seja, sem partes fracionárias, que não sejam grandes o suficiente para exigir variáveis do tipo int. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// declara uma variável do tipo short
short idade = 45;
cout << "A idade é: " << idade << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Veja que a maioria dos compiladores C++ não faz distinção entre os tipos short e short int. A capacidade de armazenamento do tipo short depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos SHRT_MIN e SHRT_MAX, definidos no header climits (limits.h). Veja:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
cout << "Valor mínimo: " << SHRT_MIN << "\n";
cout << "Valor máximo: " << SHRT_MAX << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este programa você terá um resultado parecido com: Valor mínimo: -32768 Valor máximo: 32767 Veja que o tipo short aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow):
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
short soma = SHRT_MAX + 2;
cout << "Resultado: " << soma << "\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Este programa exibirá o seguinte resultado: Resultado: -32767 Note que este não é o resultado esperado, visto que SHRT_MAX + 2 deveria retornar: 32767 + 2 = 32769 Porém, como o valor máximo que pode ser armazenado em um short é 32767, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui. Em termos de bytes, é comum o tipo short ser armazenado em 2 bytes, o que resulta em 16 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo short:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
cout << "Tamanho de um short: " << sizeof(short)
<< " bytes\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
O resultado da execução deste código será algo como: Tamanho de um short: 2 bytes |
Delphi ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Delphi para iniciantes: Como usar o laço de repetição for do DelphiQuantidade de visualizações: 22950 vezes |
|
O laço for do Delphi (linguagem Object Pascal) é usado quando queremos que um determinado bloco de instruções seja executado um determinado número de vezes. Na maioria das vezes a execução deste laço é controlada por uma variável de controle, que deve ser declarada antes de seu uso. Veja um laço for que contará de 0 até 10 (incluído):
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer; // variável de controle
begin
for i := 0 to 10 do
begin
ShowMessage(IntToStr(i)); // mostra a mensagem 10 vezes
end;
end;
Veja que o valor da variável de controle i começa em 0 e é incrementado a cada iteração até que seu valor seja igual a 10, o que faz com que a execução do laço seja interrompida. A variável de controle de um laço for deve ser do tipo ordinal (inteiro, caractere, Boolean, enumerações ou sub-faixas) e não pode ser alterada dentro do laço. Veja:
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer; // variável de controle
begin
// este laço for pretende exibir os números pares de 0 a 10
for i := 0 to 10 do
begin
ShowMessage(IntToStr(i));
i := i + 2; // vamos ter problemas aqui
end;
end;
Ao tentarmos compilar este código teremos o seguinte erro: [DCC Error] Unit1.pas(107): E2081 Assignment to FOR-Loop variable 'i' Este erro nos informa que não é possível atribuir valor a uma variável de controle dentro do laço for. Se quisermos que o laço "conte" de trás para frente, podemos substituir a palavra-chave to por downto. Veja:
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer; // variável de controle
begin
// este laço for conta de 10 até 0
for i := 10 downto 0 do
begin
ShowMessage(IntToStr(i));
end;
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
CSS ::: Dicas & Truques ::: Cores de Fundo e Imagens de Fundo |
Como definir uma imagem de fundo fixa para suas páginas HTML em CSS usando as propriedades background-image, background-repeat e background-attachmentQuantidade de visualizações: 11961 vezes |
|
Nesta dica mostrarei como combinar as propriedades CSS background-image, background-repeat e background-attachment para definir uma imagem de fundo fixa para a página. Dessa forma, a imagem não será repetida e e permanecerá fixa no fundo da página, ou seja, não vai rolar com o restante do conteúdo. Veja como o exemplo ficará na imagem abaixo (é claro que sua imagem de fundo será diferente): ![]() Veja o código HTML completo para o exemplo, incluindo as definições de estilo CSS:
<head>
<title>Estudando CSS</title>
<meta name="viewport" content="width=device-width,
initial-scale=1">
<style type="text/css">
body {background-image: url(fundo.jpg);
background-repeat: no-repeat;
background-attachment: fixed}
</style>
</head>
<body>
</body>
</html>
|
Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um arquivo em Delphi usando a função RenameFile()Quantidade de visualizações: 22754 vezes |
Em algumas situações nossas aplicações precisam renomear arquivos. Em Delphi isso pode ser feito com o auxílio da função RenameFile(), presente na unit SysUtils. Esta função requer o caminho e nome do arquivo a ser renomeado e o novo nome e caminho. O retorno será true se a operação for realizada com sucesso e false em caso contrário. Veja o exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
arquivo_original, novo_arquivo: string;
begin
// diretorio e nome do arquivo original
arquivo_original := 'C:\arquivo de codigos\dados.txt';
// diretorio e nome do novo arquivo
novo_arquivo := 'C:\arquivo de codigos\dados2.txt';
// vamos renomear o arquivo
if RenameFile(arquivo_original, novo_arquivo) then
ShowMessage('O arquivo foi renomeado com sucesso')
else
ShowMessage('Não foi possível renomear o arquivo');
end;
Observe que não é possível renomear um arquivo de forma que seu caminho possua drives diferentes. Para estes casos é recomendável que você copie o arquivo para o drive desejado e exclua o arquivo anterior. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Você também poderá gostar das dicas e truques de programação abaixo |
|
JavaScript - Como construir uma determinada data e hora usando o construtor do objeto Date do JavaScript JavaScript - Como obter entrada do usuário em seus códigos JavaScript usando a função prompt() do objeto window Java - Como retornar a quantidade de palavras em uma string Java usando um objeto da classe StringTokenizer MySQL - Como retornar a hora atual no MySQL usando as funções CURTIME(), CURRENT_TIME e CURRENT_TIME() |
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 |




