![]() |
|
|
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 Hidrostática |
||
|
||
|
|
||
Java ::: Fundamentos da Linguagem ::: Modificadores |
Como usar o modificador synchronized da linguagem JavaQuantidade de visualizações: 24372 vezes |
|
O modificador synchronized tem seu uso e importância destacados quando várias threads (fluxos de execução) estão sendo executadas em um programa. Tais threads podem tentar acessar métodos de uma ou mais classes ao mesmo tempo. No entanto, pode ser necessário planejarmos o sistema de forma que determinados métodos possam ser acessados por somente uma thread de cada vez, talvez para garantir a integridade de valores das diversas variáveis envolvidas no processo. É aqui que o modificador synchronized é usado. Ao marcarmos um método como synchronized, o sistema de execução Java garantirá que apenas uma thread de cada vez acesse tal método. Se outras threads tentarem fazer o mesmo, elas serão colocadas em espera até que a thread atual finalize seu trabalho e libere o método. Um exemplo de aplicação do modificador synchronized pode ser visto em uma classe Pilha. Como sabemos, esta estrutura de dados possui métodos para inserir um novo item no topo da pilha e para removê-lo do topo (lembra? LIFO: Last In First Out). Ora, para evitar que uma thread remova o elemento do topo ao mesmo tempo em que outra está tentando inserir, tais métodos devem ser marcados como synchronized. Isso evitará que os dados sejam corrompidos. |
C# ::: Namespace System.Drawing ::: Image |
Gráficos C# Windows Forms - Como usar a classe Image em suas aplicações C#Quantidade de visualizações: 6938 vezes |
|
A classe Image, do namespace System.Drawing (no assemply System.Drawing.dll) é uma classe abstrata de base que fornece funcionalidades para as classes derivadas Bitmap e Metafile (que são classes concretas e sealed, ou seja, não podem ter suas funcionalidades herdadas por outras classes). Por ser uma classe abstrata, não podemos criar novas instâncias de Image (usando new()). Em vez disso nós a usamos apenas para chamar seus métodos estáticos ou como referência para as classes derivadas. Veja um trecho de código no qual carregamos um bitmap e o exibimos em um PictureBox:
private void button2_Click_1(object sender, EventArgs e){
try{
// vamos carregar o bitmap a partir de um diretório
Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);
// vamos exibir a imagem no PictureBox
pictureBox1.Image = imagem;
}
catch(ArgumentException ae){
MessageBox.Show("Houve um erro ao carregar a imagem: " +
ae.Message.ToString());
}
}
Veja que declaramos uma Image e a usamos como referência a um Bitmap. É claro que podemos perfeitamente trocar a linha: Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); por: Bitmap imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); O código compila normalmente, mas aí perdemos todo o poder que o polimorfismo nos entrega. Sempre que possível, devemos programar em cima das interfaces, superclasses e classes abstratas. Além dos métodos estáticos, a classe Image fornece várias propriedades. Veja uma modificação do exemplo anterior no qual obtemos a largura e a altura da imagem que foi carregada:
private void button2_Click_1(object sender, EventArgs e){
try{
// vamos carregar o bitmap a partir de um diretório
Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);
// vamos exibir a imagem no PictureBox
pictureBox1.Image = imagem;
// vamos exibir a largura e altura da imagem
MessageBox.Show("A imagem carregada possui a largura de " + imagem.Width +
" pixels e altura de " + imagem.Height + " pixels.");
}
catch(ArgumentException ae){
MessageBox.Show("Houve um erro ao carregar a imagem: " +
ae.Message.ToString());
}
}
Depois de carregada a imagem você verá uma mensagem parecida com: A imagem carregada possui a largura de 80 pixels e altura de 50 pixels. |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como verificar se um arquivo ou diretório existe em Java usando o método exists() da classe FileQuantidade de visualizações: 3 vezes |
|
Em algumas situações nós precisamos checar a existência de um arquivo ou diretório em Java. Para isso nós podemos usar o método exists() da classe File, do pacote java.io. Este método recebe uma string contendo o caminho do arquivo ou diretório e retorna true se o arquivo ou diretório indicado existir, e false em caso contrário. Veja um exemplo:
package arquivodecodigos;
import java.io.*;
public class Estudos{
public static void main(String[] args){
// vamos verificar a existência de um arquivo
File arquivo = new File("C:\\estudos_java\\lago.jpg");
if(arquivo.exists()){
System.out.println("O arquivo existe");
}
else{
System.out.println("O arquivo não existe");
}
}
}
O arquivo existe no caminho indicado. É importante observar que o método exists() pode disparar uma exceção do tipo Security Exception se o arquivo ou diretório não possuir permissão de acesso ou escrita. |
Java ::: Coleções (Collections) ::: ArrayList |
Como retornar o índice da última ocorrência de um elemento em uma ArrayList do Java usando a função lastIndexOf()Quantidade de visualizações: 9820 vezes |
|
Em algumas situações nós gostaríamos de pesquisar um valor em um ArrayList e retornar o índice de sua última aparição, para o caso desse elemento estar contido mais de uma vez na coleção. Para isso nós podemos usar o método lastIndexOf(). Se o elemento pesquisado não estiver na ArrayList, o valor -1 será retornado. Veja o código completo para o exemplo:
package estudos;
import java.util.ArrayList;
public class Estudos{
public static void main(String[] args){
// cria uma ArrayList que conterá strings
ArrayList<String> nomes = new ArrayList<String>();
// adiciona itens na lista
nomes.add("Carlos");
nomes.add("Maria");
nomes.add("Fernanda");
nomes.add("Osmar");
nomes.add("Maria");
// obtém o índice da última ocorrência do
// nome "Maria"
int indice = nomes.lastIndexOf("Maria");
System.out.println("O último índice do nome pesquisado é: "
+ indice);
System.exit(0);
}
}
Ao executarmos este código Java nós teremos o seguinte resultado: O último índice do nome pesquisado é: 4 |
C ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Apostila C para iniciantes - Como escrever suas próprias funções em CQuantidade de visualizações: 11253 vezes |
|
As funções na linguagem C têm por objetivo dividir nossos programas em partes menores. Em vez de colocar todo o nosso código na função main() nós podemos criar nossas próprias funções e, desta forma, agrupar funcionalidades relacionadas. Suponha que estejamos desenvolvendo um editor de texto em C. Poderíamos então ter funções que abrem o arquivo a ser exibido no editor, que salvam o arquivo, que verificam se houve alterações no texto, etc. E a maior vantagem disso é que conseguimos promover o reaproveitamento de código, uma vez que, diferente da função main(), as funções disponíveis na linguagem e aquelas que nós mesmos criamos podem ser chamadas mais de uma vez durante a execução do programa. Então, já sabemos que uma função não é nada mais que um bloco de códigos situado fora da função main() e que pode ser chamado a partir da função main() ou de outras funções no programa. Sendo assim, vamos escrever nossa primeira função em C. Veja o código a seguir:
#include <stdio.h>
#include <stdlib.h>
// uma função que escreve uma frase
// na tela
void escrever(void){
printf("Sou uma funcao");
}
int main(int argc, char *argv[]){
// efetua uma chamada à função escrever
escrever();
puts("\n\n");
system("PAUSE");
return 0;
}
Neste programa nós temos uma função chamada escrever() que apenas escreve uma frase na tela. Note o uso de void para indicar que a função não retorna nada e não aceita nenhum argumento. Alguns compiladores (tais como Dev-C++) não exigem que coloquemos void para indicar a ausência de parâmetros na função. Assim, a função acima pode ser reescrita da seguinte forma:
void escrever(){
printf("Sou uma funcao");
}
Importante notar que, dentro do corpo de uma função, podemos inserir a quantidade de código que desejarmos. Isso é importante, uma vez que a tarefa realizada por uma função pode não ser tão simples quanto o exemplo que usamos até este ponto. Veja um programa que contém uma função personalizada mais elaborada. Note as duas chamadas a esta função a partir da função main():
#include <stdio.h>
#include <stdlib.h>
// uma função que escreve uma frase
// na tela
void escrever(){
char nome[] = "Osmar J. Silva";
printf("Ola, meu nome e %s\n", nome);
}
int main(int argc, char *argv[]){
printf("Sou main. Vou chamar a funcao escrever()\n");
// efetua uma chamada à função escrever
escrever();
// efetua outra chamada à função escrever
escrever();
printf("Acabei de efetuar chamadas a funcao escrever()");
puts("\n\n");
system("PAUSE");
return 0;
}
Funções podem receber argumentos e retornar valores. E quando isso acontece nós estamos realmente escrevendo funções úteis. Quando perceber que já aprendeu a escrever funções simples como as demonstradas nesta dica, volte sua atenção para as funções mais elaboradas que tratamos em outras dicas relacionadas. |
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 |



