![]() |
|
|
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 |
||
|
||
|
|
||
Python ::: Pygame ::: Animação, Animações, Técnicas de Animação |
Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em portuguêsQuantidade de visualizações: 1813 vezes |
Nesta dica mostrarei um código para a criação de um relógio analógico completo em Python, com comentários detalhados e fácil de entender. Veja a imagem:![]() Por simplicidade, eu mantive a mesma cor para todos os elementos da animação e deixei somente o básico mesmo, para que você possa se concentrar nas partes mais importantes. Neste código você aprenderá como definir o tamanho, título e cor de fundo para uma janela do Pygame do Python. Aprenderá também como definir a quantidade de frames por segundo para a animação, assim como controlar os disparos do timer pygame.time.Clock(). Por fim, o código mostra como calcular o ângulo dos ponteiros das horas, minutos e segundos e efetuar o desenho das retas saindo do centro do círculo. Você sabia, por exemplo, que o ângulo de 45 graus corresponde exatamente à hora 1:30hs? Em vários exemplos de relógios analógicos na internet, o ponteiro das horas fica preso à uma determinada hora, aguardando o ponteiro dos segundos completar um giro completo. No código que apresento aqui, eu obtive a hora atual como um decimal, o que faz com que o ponteiro das horas mostre a posição real da hora, como um relógio analógico do mundo real. Para estudantes de matemática, engenharia e física, este código é uma boa aplicação da técnica de se converter coordenadas polares para coordenadas cartesianas. Eis o código completo para o relógio analógico. Boa diversão.
# vamos importar as bibliotecas necessárias
import pygame, sys
from pygame.locals import *
import math
from datetime import datetime
# função que faz a correção dos ângulos
def corrigir_angulo(angulo):
return abs(angulo % 360)
# inicializa a biblioteca
pygame.init()
# quantidade de frames por segundo
FPS = 30
# construímos o timer
timer = pygame.time.Clock()
# obtém a superfície do jogo e define o tamanho da tela
janela = pygame.display.set_mode((600, 400))
# vamos definir o título da janela do jogo
pygame.display.set_caption('Relógio Analógico no Pygame')
# vamos definir alguns parâmetros
fonte = pygame.font.Font(None, 36)
VERMELHO = (200, 0, 0)
BRANCO = (255, 255, 255)
raio = 150
x_inicial = 300
y_inicial = 200
distancia_aro = 20
# e aqui nós entramos no loop do game
while True:
# vamos pintar a tela toda de branco
janela.fill(BRANCO)
# monitoramos os eventos
for evento in pygame.event.get():
# se o evento foi um pedido para sair
if evento.type == QUIT:
# fechamos a tela do jogo
pygame.quit()
# e saimos do programa
sys.exit()
# vamos desenhar um circulo não preenchido (maior)
pygame.draw.circle(janela, VERMELHO, (x_inicial, y_inicial), raio, 2)
# vamos desenhar um circulo não preenchido (menor)
pygame.draw.circle(janela, VERMELHO, (x_inicial + 1, y_inicial + 1), 5, 0)
# vamos desenhar os números do relório (1-12)
for n in range(1, 13):
# calcula o ângulo dessa hora
angulo = math.radians((n * (360 / 12)) - 90)
# agora convertemos o ângulo e o raio para coordenadas cartesianas
if len(str(n)) > 1:
x = math.cos(angulo) * (raio - distancia_aro) - 18
else:
x = math.cos(angulo) * (raio - distancia_aro) - 10
y = math.sin(angulo) * (raio - distancia_aro) - 10
texto_numero = fonte.render(str(n), True, VERMELHO)
janela.blit(texto_numero, (x_inicial + x, y_inicial + y))
# vamos obter as horas, minutos e segundos atuais
hoje = datetime.today()
horas = hoje.hour % 12
minutos = hoje.minute
segundos = hoje.second
# ajustamos as horas para tratar a hora decimal (com frações de horas)
horas = horas + (minutos * (1 / 60)) + (segundos * (1 / 3600))
# desenha o ponteiro das horas
angulo_horas = corrigir_angulo(horas * (360 / 12) - 90)
angulo_horas = math.radians(angulo_horas)
hora_x = math.cos(angulo_horas) * (raio - 60)
hora_y = math.sin(angulo_horas) * (raio - 60)
coord_finais = (x_inicial + hora_x, y_inicial + hora_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 4)
# desenha o ponteiro dos minutos
angulo_minutos = corrigir_angulo(minutos * (360 / 60) - 90)
angulo_minutos = math.radians(angulo_minutos)
minutos_x = math.cos(angulo_minutos) * (raio - 40)
minutos_y = math.sin(angulo_minutos) * (raio - 40)
coord_finais = (x_inicial + minutos_x, y_inicial + minutos_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 3)
# desenha o ponteiro dos segundos
angulo_segundos = corrigir_angulo(segundos * (360 / 60) - 90)
angulo_segundos = math.radians(angulo_segundos)
segundos_x = math.cos(angulo_segundos) * (raio - 30)
segundos_y = math.sin(angulo_segundos) * (raio - 30)
coord_finais = (x_inicial + segundos_x, y_inicial + segundos_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 1)
# redesenha a tela continuamente
pygame.display.update()
# aciona o disparo do timer
timer.tick(FPS)
|
LISP ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico |
Exercícios Resolvidos de Lisp - Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua somaQuantidade de visualizações: 2166 vezes |
|
Exercício Resolvido de Lisp - Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua soma Pergunta/Tarefa: Escreva um programa Common Lisp que solicita ao usuário dois números inteiros e mostre a sua soma. Sua saída deverá ser parecida com: Informe o primeiro valor: 2 Informe o segundo valor: 8 A soma é 10 Veja a resolução completa para o exercício em Common Lisp usando o compilador Steel Bank Common Lisp (SBCL), comentada linha a linha: ; Vamos definir as variáveis que vamos ; usar no programa (defvar n1) (defvar n2) (defvar soma) ; Este o programa principal (defun Soma() ; Vamos ler o primeiro valor (princ "Informe o primeiro valor: ") ; talvez o seu compilador não precise disso (force-output) (setq n1 (read)) ; Vamos ler o segundo valor (princ "Informe o segundo valor: ") ; talvez o seu compilador não precise disso (force-output) (setq n2 (read)) ; Agora vamos efetuar a soma dos dois números (setq soma (+ n1 n2)) ; E mostramos o resultado (format t "A soma é ~D" soma) ) ; Auto-executa a função Soma() (Soma) |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para letras maiúsculas em Java - Como transformar uma string em maiúsculas usando o método toUpperCase() da classe StringQuantidade de visualizações: 1 vezes |
|
A classe String nos fornece o toUpperCase() que converte todas as letras em um texto para letras maiúsculas e nos retorna o resultado de acordo com o locale padrão. Este método é semelhante à toUpperCase(Locale.getDefault()). Veja um exemplo de como transformar todas as letras de uma frase para letras maiúsculas:
package arquivodecodigos;
public class Estudos{
public static void main(String[] args){
String original = "Onde posso aprender a programar em Java?";
// vamos convertar para letras maísculas
String maiusculas = original.toUpperCase();
// vamos mostrar o resultado
System.out.println("String original: " + original);
System.out.println("Em letras maiúsculas: " + maiusculas);
System.exit(0);
}
}
Ao executarmos este código nós teremos o seguinte resultado: String original: Onde posso aprender a programar em Java? Em letras maiúsculas: ONDE POSSO APRENDER A PROGRAMAR EM JAVA? Esta dica foi revisada e atualizada para o Java 8. |
Python ::: wxPython ::: Controles Visuais Básicos do wxPython |
Como obter o texto de um botão wx.Button do wxPython e exibí-lo em uma mensagem wx.MessageDialog usando a função GetLabel()Quantidade de visualizações: 7429 vezes |
|
Como obter o texto de um botão wx.Button do wxPython e exibí-lo em uma mensagem wx.MessageDialog usando a função GetLabel() O texto (rótulo) de um wx.Button do framework wxPython pode ser obtido com uma chamada à função GetLabel(). O exemplo abaixo mostra uma aplicação completa e detalha como clicar em um botão, obter seu texto e exibí-lo em uma caixa de mensagem:
# vamos importar a biblioteca wxPython
import wx
class Janela(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1,
"Usando wx.Button", size=(350, 200))
# Cria um painel
panel = wx.Panel(self)
# Cria um botão e o adiciona no painel
self.btn = wx.Button(panel, label="Clique Aqui",
pos=(10, 10), size=(100, 25))
# Anexa um evento ao botão
self.Bind(wx.EVT_BUTTON, self.OnBtnClick, self.btn)
# Método que será chamado ao clicar o botão
def OnBtnClick(self, event):
texto_btn = self.btn.GetLabel()
dlg = wx.MessageDialog(None, u"O texto do botão é: "
+ texto_btn, "Usando wx.Button", wx.OK | wx.ICON_INFORMATION)
result = dlg.ShowModal()
dlg.Destroy()
if __name__ == "__main__":
app = wx.App()
janela = Janela()
janela.Show(True)
app.MainLoop()
|
Java ::: Tratamento de Erros ::: Passos Iniciais |
Como usar try catch em Java - Aprenda a tratar erros em Java usando o bloco try...catchQuantidade de visualizações: 40526 vezes |
A forma mais comum de tratar e se recuperar de erros em uma aplicação Java é usando o bloco try...catch. Todo o código que apresenta a possibilidade de erros ou falhas é colocado em um bloco try. E o código a ser executado caso o erro ou falha aconteça é colocado em um bloco catch. Veja a sintáxe:
try{
// código que pode provocar erros
}
catch(Tipo_Exceção nome){
// tratamento do erro
}
A palavra-chave catch é seguida por uma declaração do tipo de exceção sendo lançada. É aqui que entram detalhes interessantes. Antes de tratar um erro, é preciso que você saiba qual erro estará tratando. Em Java temos três tipos de erros: runtime exceptions, checked exceptions e errors. Errors não precisam ser tratados com bloco try...catch, runtime exceptions (erros causados por códigos mal escritos ou mal testados) opcionalmente usam try...catch e checked exceptions (erros que fogem ao controle do programador) devem obrigatoriamente usar try...catch. Vamos ver um exemplo do uso de try...catch:
import java.io.*;
public class Estudos{
public static void main(String[] args){
try{
DataInputStream in = new DataInputStream(
new BufferedInputStream(
new FileInputStream("conteudo.txt")));
while(in.available() != 0)
System.out.print((char) in.readByte());
}
catch(IOException e){
System.out.print(e.getMessage());
}
System.exit(0);
}
}
Neste trecho de código nós tentamos ler o conteúdo de um arquivo. O que aconteceria se o arquivo não existisse? O programa entraria em colapso. Além disso, todas as operações de entrada e saída (IO) estão suscetíveis a falhas externas. Por esta razão, o compilador nos força a usar try...catch nestas situações. Neste exemplo podemos ver que o bloco catch é seguido por uma definição da classe IOException. No entanto, este trecho de código pode também disparar a exceção FileNotFoundException. Olhando a documentação vemos que FileNotFoundException herda de IOException, que por sua vez herda de Exception. Isso nos mostra que, se não estivermos certos de qual exceção será lançada, podemos usar a superclasse Exception e usarmos o método getMessage() ou demais métodos para obter maiores informações sobre o erro. Vamos ver mais um exemplo de try...catch. Desta vez veremos como evitar uma exceção StringIndexOutOfBoundsException:
import java.util.*;
public class Estudos{
public static void main(String[] args){
String palavra = "Java";
Scanner in = new Scanner(System.in);
System.out.print("Informe um inteiro: ");
int indice = in.nextInt();
try{
System.out.println("O caractere no índice " +
"informado é " + palavra.charAt(indice));
}
catch(StringIndexOutOfBoundsException e){
System.out.println("Erro:" + e.getMessage());
}
}
}
Compile, execute este código e forneça um inteiro maior que 3 para ver o resultado. |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





