![]() |
|
|
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 Python |
||
|
||
|
|
||
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destasQuantidade de visualizações: 6559 vezes |
|
Exercício Resolvido de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas Pergunta/Tarefa: Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas e R$ 5,00 para cada 1 hora abaixo destas 3 horas. Faça um programa (algorítmo) Java que leia a quantidade de horas que a charrete foi usada, calcule e escreva o valor a ser pago pelo cliente. Sua saída deverá ser parecida com: Quantidade de horas que a charrete foi usada: 7 Valor total a ser pago: R$ 25,00 Veja a resolução comentada deste exercício usando Java console:
package exercicio;
import java.text.NumberFormat;
import java.util.Scanner;
public class Exercicio {
public static void main(String[] args) {
// vamos fazer a leitura usando a classe Scanner
Scanner entrada = new Scanner(System.in);
// vamos ler a quantidade de horas que a charrete foi usada
System.out.print("Quantidade de horas que a charrete foi usada: ");
int horas = Integer.parseInt(entrada.nextLine());
// vamos calcular o valor por 3 horas exatas
int valor = horas / 3;
// valor a ser pago para cada hora abaixo de 3
int restante = horas % 3;
// finalmente calculamos o valor total a ser pago
double valor_total = (valor * 10.0) + (restante * 5);
// e exibimos o resultado
NumberFormat formato = NumberFormat.getCurrencyInstance();
System.out.println("Valor total a ser pago: " + formato.format(valor_total));
}
}
|
Java ::: Tratamento de Erros ::: Erros de Tempo de Execução |
Java para iniciantes - Como tratar o erro OutOfMemoryError no JavaQuantidade de visualizações: 12590 vezes |
|
O erro OutOfMemoryError é apresentado quando a Java Virtual Machine (JVM) não consegue alocar um objeto por falta de memória e o Garbagge Collector não liberou mais memória ainda. Este é um erro que não deve ser apanhado em um bloco try...catch, ou seja, se não há memória para alocar novos objetos, é fácil entender que não haverá memória para tal procedimento. O melhor a fazer é deixar o programa terminar e verificar a causa do problema. Veja a posição da classe OutOfMemoryError na hierarquia de classes da plataforma Java:
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.VirtualMachineError
java.lang.OutOfMemoryError
Esta classe implementa a interface Serializable. Uma das causas mais comuns para o erro OutOfMemoryError é a instanciação exagerada de objetos, principalmente em laços (loops). Uma forma de aumentar a memória RAM a ser usada é definindo opções na linha de comando para o java.exe. Algumas destas opções são -Xss64k -Xoss300k -Xms4m e -Xmx10m. |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço while em C - Linguagem C para iniciantes em programaçãoQuantidade de visualizações: 34216 vezes |
O laço while é usado quando queremos que um bloco de instruções seja executado ENQUANTO uma condição for verdadeira (true). Veja um trecho de código exemplificando isso:
int valor = 1;
while(valor <= 10){
printf("%d ", valor);
valor++;
}
Este trecho de código exibe os números de 1 à 10 na página. Veja agora o mesmo trecho de código, desta vez contando de 10 à 1:
int valor = 10;
while(valor >= 1){
printf("%d ", valor);
valor--;
}
Lembre-se de que a condição testada em um laço while deve resultar em um valor boolean (true ou false). O trecho de código seguinte deixa isso mais claro:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int continuar = 1; // 1 é true em C
int valor = 1;
while(continuar){
printf("%d ", valor);
valor++;
if(valor > 10)
continuar = 0; // 0 é false em C
}
printf("\n\n");
system("PAUSE");
return 0;
}
Para finalizar, lembre-se de que um laço while pode nunca ser executado, ou seja, se a condição testada na primeira iteração já resultar false, o fluxo de código é transferido para a primeira instrução após o laço. |
Delphi ::: VCL - Visual Component Library ::: TEdit |
Como definir o conteúdo de um TEdit do Delphi em tempo de execução usando a função SendMessage() da API do Windows e a mensagem WM_SETTEXTQuantidade de visualizações: 11958 vezes |
|
Embora o Delphi já nos forneça as ferramentas necessárias para definir o conteúdo de um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_SETTEXT. A função SendMessage() da API do Windows possui a seguinte assinatura em C/C++: LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal:
// Protótipo
{$EXTERNALSYM SendMessage}
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM;
lParam: LPARAM): LRESULT; stdcall;
// Implementação
function SendMessage; external user32 name 'SendMessageW';
Note que precisamos de um HWND (Handle) para a caixa de texto. Feito isso só precisamos enviar a mensagem WM_SETTEXT juntamente com o conteúdo a ser exibido no controle. Veja: procedure TForm1.Button1Click(Sender: TObject); var texto: String; begin // conteúdo a ser definido para a caixa de texto texto := 'Veja isso'; // vamos definir o conteúdo usando a função SendMessage // fornecendo a mensagem WM_SETTEXT SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(texto))); end; Veja que o parâmetro wParam da função SendMessage não é usado quando a mensagem é WM_SETTEXT. Desta forma só precisamos fornecer o valor 0. |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como abrir e fechar um dispositivo de saída MIDI usando DelphiQuantidade de visualizações: 11882 vezes |
Quando queremos executar sons MIDI no Windows, a primeira tarefa a ser realizada é abrir o dispositivo de saída MIDI. Isso é feito com uma chamada à função midiOutOpen() da API do Windows. Veja sua assinatura (em C):MMRESULT midiOutOpen( LPHMIDIOUT lphmo, UINT_PTR uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwCallbackInstance, DWORD dwFlags ); Esta função está traduzida na unit MMSystem.pas do Delphi da seguinte forma: function midiOutOpen(lphMidiOut: PHMIDIOUT; uDeviceID: UINT; dwCallback, dwInstance, dwFlags: DWORD): MMRESULT; stdcall; Antes de continuarmos, vamos entender os parâmetros desta função: lphmo - Este é um ponteiro para um HMIDIOUT (que é simplemente um Integer). Este ponteiro é preenchido com um handle identificando o dispositivo de saída MIDI aberto. Este handle é usado para identificar o dispositivo nas demais chamadas de saída MIDI. uDeviceID - Identificador do dispositivo de saída MIDI a ser aberto. O valor 0 aqui é seguro, visto que este identifica o primeiro dispositivo na lista de dispositivos de saída. Veja minha dica "Como obter uma lista dos dispositivos de saída MIDI no sistema" para mais informações. dwCallback - Um ponteiro para uma função de callback, um handle de evento, um identificador de thread ou um handle para uma janela ou thread chamada durante o playback do MIDI para processar mensagens relacionadas ao processo de playback. Se não houver nada a ser processado, podemos definir o valor 0 para este parâmetro. Dê uma olhada na minha dica relacionada à função MidiOutProc(). dwCallbackInstance - Dados de instância do usuário passados para a função de callback. Este parâmetro não é usado em callbacks de janela e thread. É seguro manter seu valor como 0. dwFlags - Flag de callback para abrir o dispositivo. Por enquanto vamos manter seu valor como CALLBACK_NULL. Veja minhas outras dicas sobre o assunto para aprofundar mais neste parâmetro. Agora que aprendemos mais sobre os parâmetros da função midiOutOpen(), vamos ver como usá-la para abrir um dispositivo de saída MIDI e tocar a nota DÓ média (aquela no meio da escala de notas possíveis). Veja o código completo para a unit:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MMSystem;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
dispositivo: HMIDIOUT; // dispositivo de saída MIDI
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
erro: Word;
begin
erro := midiOutOpen(@dispositivo, 0, 0, 0, CALLBACK_NULL);
// houve erro na abertura do dispositivo de saída MIDI?
if (erro <> 0) then
begin
ShowMessage('Não foi possível abrir o dispositivo MIDI. Erro: ' + IntToStr(erro));
end
else
begin
ShowMessage('Dispositivo MIDI aberto com sucesso.');
// vamos tocar uma nota para nos certificarmos de que o dispositivo
// realmente foi aberto e está funcionando
// vamos tocar a nota DÓ média e com velocidade máxima
midiOutShortMsg(dispositivo, rgb($90, 60, 127));
// vamos deixar a nota soar um pouco
sleep(1000);
// vamos silenciar a nota
midiOutShortMsg(dispositivo, rgb($80, 60, 0));
// finalmente vamos fechar o dispositivo MIDI
midiOutClose(dispositivo);
end;
end;
end.
O primeiro passo foi declarar uma variável do tipo HMIDIOUT: dispositivo: HMIDIOUT; Este é o dispositivo de saída que será usado nas demais chamadas MIDI, incluindo a função midiOutClose(), usada para fechar o dispositivo: midiOutClose(dispositivo); Na API do Windows está função está declarada da seguinte forma: MMRESULT midiOutClose( HMIDIOUT hmo ); Na unit MMSystem.pas do Delphi está função está traduzida da seguinte forma: function midiOutClose(hMidiOut: HMIDIOUT): MMRESULT; stdcall; Veja que só precisamos fornecer o nome da variável representando o dispositivo de saída MIDI aberto no momento para que a função se encarregue de fechá-lo. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





