![]() |
|
|
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 Aço e Madeira |
||
|
||
|
|
||
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar encapsulamento em Java - Programação Orientada a Objetos em JavaQuantidade de visualizações: 38405 vezes |
|
Encapsulamento é a técnica de transformar os objetos que compõem uma aplicação em verdadeiras caixas-pretas. De fato, se pensarmos em termos de informática, é possível para um usuário comum usar todas as funcionalidades de uma impressora sem nem mesmo entender seu funcionamento interno. Imagine o desastre que seria se todos os usuários resolvessem abrir suas impressoras para investigar o que há dentro delas. Da mesma forma, ao construir uma classe, devemos fazê-lo de forma que o usuário desta classe tenha acesso apenas aos métodos que permitem ler informações da classe ou fornecer os dados necessários para sua correta operação. Dados relativos ao funcionamento interno da classe devem permanecer ocultos e acessíveis somente aos métodos da própria classe. O encapsulamento deve ser aplicado de forma a permitir que alterações na estrutura interna de uma classe não prejudique o funcionamento do código externo que a usa. Veja um exemplo:
class Pedido{
public List obterProdutos(){
// monta uma lista de produtos
// pertecentes a este pedido
return lista;
}
}
A classe Pedido contém um método chamado obterProdutos() que retorna uma lista de produtos pertencentes a um determinado pedido. É aqui que o encapsulamento se torna importante. O código que usa esta classe desconhece completamente como esta lista de produtos é montada. Tudo que nos interessa é a lista de produtos que o método retorna. O programador da classe pode decidir a qualquer momento, talvez para melhorar o desempenho da classe, alterar a forma de montagem da lista. Uma vez que o nome e retorno do método (incluindo a estrutura da lista retornada) continuem sendo os mesmos, o código que usa a classe continuará funcionando como anteriormente. |
C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como alocar memória para instâncias de uma estrutura (struct) e acessá-las usando ponteiros em CQuantidade de visualizações: 11793 vezes |
|
Esta dica mostra como declarar uma estrutura (struct), alocar duas instâncias desta e acessá-las usando ponteiros. Considere a seguinte struct:
// define a estrutura Livro
struct Livro{
char titulo[80];
int codigo;
int paginas;
};
Note que agora a variável titulo foi declarada como uma matriz de caracteres de 80 posições. Mais adiante você entenderá o propósito de tal abordagem. Veja agora como alocamos memória para duas instâncias desta estrutura: // cria dois ponteiros para duas instâncias (recém-alocadas) // de Livro Livro *a = (struct Livro*)malloc(sizeof(struct Livro)); Livro *b = (struct Livro*)malloc(sizeof(struct Livro)); A partir deste ponto as variáveis a e b são ponteiros para as duas instâncias recém alocadas. Observe que, quando usamos ponteiros para estruturas, seus membros são acessados usando-se a notação -> em vez do ponto. Veja: a->codigo = 342; a->paginas = 230; Para definir o valor para o membro titulo é preciso lançar mão da função strcpy(). Isso é feito porque estamos lidando com ponteiros, e cada instância de Livro possui sua área de memória a partir da qual a posição inicial da cadeia de caracteres que receberá o título do livro já foi inicializada. Veja: strcpy(a->titulo, "Programando em Java"); Observe agora o código completo para o exemplo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// define a estrutura Livro
struct Livro{
char titulo[80];
int codigo;
int paginas;
};
int main(int argc, char *argv[]){
// cria dois ponteiros para duas instâncias (recém-alocadas)
// de Livro
Livro *a = (struct Livro*)malloc(sizeof(struct Livro));
Livro *b = (struct Livro*)malloc(sizeof(struct Livro));
// preenche os dados do primeiro Livro
// Estamos usando ponteiros agora. Para definir o título
// do livro é preciso usar a função strcpy, já que estamos
// usando uma cadeia de caracteres
strcpy(a->titulo, "Programando em Java");
a->codigo = 342;
a->paginas = 230;
// preenche os dados do segundo Livro
strcpy(b->titulo, "JavaScript - O Guia Prático");
b->codigo = 675;
b->paginas = 930;
// exibe os dados do primeiro livro
printf("Primeiro Livro\nTitulo: %s\nCodigo: %d\nPaginas: %d\n",
a->titulo, a->codigo, a->paginas);
// exibe os dados do segundo livro
printf("\nSegundo Livro\nTitulo: %s\nCodigo: %d\nPaginas: %d\n",
b->titulo, b->codigo, b->paginas);
puts("\n\n");
system("PAUSE");
return 0;
}
|
LISP ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como declarar variáveis globais em Lisp usando as funções defvar e defparameterQuantidade de visualizações: 1492 vezes |
|
Em algumas situações nós precisamos declarar variáveis globais em Lisp, ou melhor, em Common Lisp, que é a padronização da Lisp que adotamos para estas dicas. Variáveis globais em Common Lisp se comportam de forma idêntica àquelas de outras linguagens de programação, ou seja, possuem valores permanentes por todo o sistema Lisp e mantém seus valores até que novos valores são especificados. Se quisermos, por exemplo, a partir do corpo de uma função acessar uma variável fora dela, então esta variável deverá ser declarada globalmente. Em Common List nós podemos declarar variáveis globais usando as funções defvar e defparameter. Vamos ver exemplos envolvendo as duas e no final desta dica eu mostro a diferença. Veja um trecho de código Common Lisp na qual declaramos uma variável global chamada valor e a acessamos de dentro de uma função: ; vamos declarar uma variável global (defvar valor 10) ; vamos mostrar o valor atual da variável global (format t "O valor da variável global é ~D" valor) ; agora vamos acessar a variável global ; de dentro de uma função (defun ModificaValor() ; vamos alterar o valor da variável global (setq valor 50) ) ; chamamos a função ModificaValor (ModificaValor) ; e checamos se o valor da variável global foi ; mesmo alterado (terpri) (format t "O valor da variável global é ~D" valor) Ao executar este código Common List nós teremos o seguinte resultado: O valor da variável global é 10 O valor da variável global é 50 Veja agora um trecho de código Common Lisp no qual usamos a função defparameter para declarar e inicializar as variáveis globais: ; vamos declarar três variáveis globais (defparameter *a* 5) (defparameter *b* 3) (defparameter *soma* 0) ; agora vamos acessar as variáveis globais ; de dentro de uma função (defun Somar() ; vamos somar as duas variáveis globais ; e guardar o resultado em uma terceira ; variáveis global (setq *soma* (+ *a* *b*)) ) ; chamamos a função Somar (Somar) ; e mostramos o resultado da soma (format t "A soma das variáveis globais é ~D" *soma*) Ao executar este novo código Common Lisp nós teremos o seguinte resultado: A soma das variáveis globais é 8 Note que coloquei asteríscos (*) ao redor dos nomes das variáveis globais. Esta é uma prática comum entre programadores Lisp e altamente recomendado pelo comunidade, pois facilita a distinção entre variáveis globais e locais. Então, qual é a diferença entre defvar e defparameter? A primeira delas é que a função defparameter nos obriga a informar o valor inicial para a variável global, enquanto a função defvar não o faz. A segunda diferença é que, ao redefinirmos o valor de uma variável global usando defparameter, o valor armazenado anteriormente será sobreposto, enquanto a função defvar não altera o valor anterior. |
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Portugol Básico |
Exercícios Resolvidos de Portugol - Escreva um programa Portugol para calcular e imprimir o número de lâmpadas necessáriasQuantidade de visualizações: 927 vezes |
|
Pergunta/Tarefa: Escreva um programa Portugol para calcular e imprimir o número de lâmpadas necessárias para iluminar um determinado cômodo de uma residência. Dados de entrada: a potência da lâmpada utilizada (em watts), as dimensões (largura e comprimento, em metros) do cômodo. Considere que a potência necessária é de 18 watts por metro quadrado. Sua saída deverá ser parecida com: Informe a potência da lâmpada (em watts): 100 Informe a largura do cômodo (em metros): 6 Informe o comprimento do cômodo (em metros): 4 Serão necessárias 4 lâmpadas. Veja a resolução completa para o exercício em Portugol, comentada linha a linha (na resolução eu usei o Portugol Webstudio):
programa {
// vamos incluir a biblioteca Tipos
inclua biblioteca Tipos --> tp
funcao inicio() {
// variáveis usadas na resolução do problema
real potencia_lampada, largura_comodo, comprimento_comodo
real area_comodo, potencia_total
inteiro quant_lampadas
// vamos ler a potência da lâmpada
escreva("Informe a potência da lâmpada (em watts): ")
leia(potencia_lampada)
// vamos ler a largura do cômodo
escreva("Informe a largura do cômodo (em metros): ")
leia(largura_comodo)
// agora vamos ler o comprimento do cômodo
escreva("Informe o comprimento do cômodo (em metros): ")
leia(comprimento_comodo)
// agora vamos calcular a área do cômodo
area_comodo = largura_comodo * comprimento_comodo
// calculamos a potência total necessária para iluminar
// todo o cômodo
potencia_total = area_comodo * 18
// e finalmente calculamos a quantidade de lâmpadas necessárias
quant_lampadas = tp.real_para_inteiro(potencia_total / potencia_lampada)
// será necessário no mínimo uma lâmpada
se (quant_lampadas == 0) {
quant_lampadas = quant_lampadas + 1
}
// e mostramos o resultado
escreva("Serão necessárias ", quant_lampadas, " lâmpadas.")
}
}
|
C# ::: Namespace System.Windows.Forms ::: Formulários e Janelas |
Como usar a classe Form em suas aplicação C# Windows FormQuantidade de visualizações: 1831 vezes |
A classe Form é usada para representar as janelas (formulários) ou caixas de diálogo que compõem a interface gráfica de uma aplicação Windows Forms. Veja sua posição na hierarquia de classes da plataforma.NET:
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Form
É importante conhecer algumas classes derivadas da classe Form. Entre estas classes podemos citar: - System.ComponentModel.Design.CollectionEditor.CollectionForm - System.Messaging.Design.QueuePathDialog - System.ServiceProcess.Design.ServiceInstallerDialog - System.Web.UI.Design.WebControls.CalendarAutoFormatDialog - System.Web.UI.Design.WebControls.RegexEditorDialog - System.Windows.Forms.Design.ComponentEditorForm - System.Windows.Forms.PrintPreviewDialog - System.Windows.Forms.ThreadExceptionDialog Uma aplicação Windows Forms em C# é construida a partir de uma ou mais janelas. A classe Form permite criar formulários padrões, de ferramentas, sem bordas e flutuantes, cada um direcionado a uma determinada funcionalidade. É possível também usar a classe Form para criar caixas de diálogo modais. Há ainda um tipo especial de janela (ou formulário) conhecido como formulário de interface de múltiplos documentos (MDI) que contêm outros formulários chamados de filhos (MDI child forms). Uma janela do tipo MDI pode ser criada definindo-se o valor true para a propriedade IsMdiContainer da classe Form. Os formulários filhos MDI são criados definindo-se o nome do formulário-pai para a propriedade MdiParent do formulário que atuará como filho. Por meio das propriedades disponíveis na classe Form nós podemos determinar a aparência, tamanho, cor e os aspectos de gerenciamento da janela do formulário ou caixa de diálogo que estamos criando. A propriedade Text permite definir o título da janela. As propriedades Size e DesktopLocation permitem definir o tamanho e posição inicial da janela. A propriedade ForeColor define a cor do texto padrão de todos os componentes colocados no formulário. As propriedades FormBorderStyle, MinimizeBox e MaximizeBox permitem definirmos se o formulário poderá ser minimizado, maximizado ou redimensionado em tempo de execução. Além das propriedades, podemos usar os métodos da classe Form. Por exemplo, podemos usar o método ShowDialog() para exibir um formulário como uma caixa de diálogo modal. Podemos também efetuar uma chamada ao método SetDesktopLocation() para posicionar o formulário em uma determinada região do desktop. Os eventos disponíveis na classe Form permitem responder às ações realizadas no formulário. Podemos, por exemplo, usar o evento Activated para realizar operações tais como atualizar as informações exibidas nos controles do formulário quando este for ativado. Se estiver usando o Visual Studio 2005, 2008 ou mais recente, o formulário inicial de sua aplicação Windows Forms C# já será exibido inicialmente seguinte os seguintes passos: a) Vá no menu File -> New -> Project; b) Em Project types selecione Visual C# -> Windows; c) Em Templates selecione Windows Application; d) Dê um nome para o projeto, escolha um local, um nome para a solução e clique OK. Imediatamente o projeto será criado e você já verá o formulário principal da aplicação. e) Vá em View -> Toolbox. Clique e arraste alguns componentes para o formulário; f) Pressione F5 e execute a aplicação. Pronto! Agora é só verificar todas as dicas, truques e anotações para aprender e tirar proveito total da classe Form. |
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 |




