Dúvidas, comentários e doaçoes: +55 62 9 8513 2505

Planilha de Dimensionamento de Tubulações Hidráulicas Água Fria e Água Quente Completa
Nossa 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.

VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de VisuAlg - Um algoritmo em VisuAlg que testa se um triângulo é equilátero, isósceles ou escaleno

Quantidade de visualizações: 1501 vezes
Pergunta/Tarefa:

Escreva um algoritmo que lê três valores para os lados de um triângulo. O algoritmo deve verificar se o triângulo é equilátero (todos os lados iguais), isósceles (dois lados iguais) ou escaleno (todos os lados diferentes).

Sua saída deverá ser parecida com:

Informe o lado 1 do triângulo: 6
Informe o lado 2 do triângulo: 8
Informe o lado 3 do triângulo: 2
O triângulo é escaleno
Resposta/Solução:

Veja a resolução deste algoritmo em VisuAlg:

Algoritmo "Testa se um triângulo é equilátero, escaleno ou isósceles"

Var
  // variáveis usadas na resolução do problema
  lado1, lado2, lado3: real

Inicio
  // vamos ler os lados do triângulo
  escreva("Informe o lado 1 do triângulo: ")
  leia(lado1)
  escreva("Informe o lado 2 do triângulo: ")
  leia(lado2)
  escreva("Informe o lado 3 do triângulo: ")
  leia(lado3)

  // vamos testar se o triângulo é equilátero
  // os três lados iguais
  se (lado1 = lado2) e (lado2 = lado3) entao
    escreval("O triângulo é equilátaro.")
  senao
    // vamos testar se o triângulo é escaleno
    // os três lados diferentes
    se (lado1 <> lado2) e (lado1 <> lado3) e (lado2 <> lado3) entao
      escreval("O triângulo é escaleno")
    senao
      // vamos testar se o triângulo é isósceles
      // dois lados iguais e um diferente
      se (lado1 = lado2) ou (lado1 = lado3) ou (lado2 = lado3) entao
        escreval("O triângulo é isósceles")
      fimse
    fimse
  fimse
Fimalgoritmo



Portugol ::: Dicas & Truques ::: Cadeias e Caracteres

Como converter uma palavra, frase ou texto para letras maiúsculas usando a função caixa_alta() da biblioteca Texto do Portugol

Quantidade de visualizações: 650 vezes
Em algumas situações nós precisamos converter uma letra, palavra, frase ou texto em letras maiúsculas. Na linguagem Portugol isso pode ser feito usando-se a função caixa_alta() da biblioteca Texto.

Veja um código Portugol completo no qual pedimos para o usuário informar o seu nome e mostramos o resultado convertido para letras maiúsculas:

programa {
  // vamos incluir a biblioteca Texto
  inclua biblioteca Texto --> texto
  
  funcao inicio() {
    // vamos declarar uma variável para guardar o nome de uma pessoa
    cadeia nome, nome_maiusculo

    // vamos pedir para o usuário informar o seu nome
    escreva("Informe o seu nome: ")
    leia(nome)

    // vamos converter o nome para letras maiúsculas
    nome_maiusculo = texto.caixa_alta(nome)

    // vamos mostrar o resultado
    escreva("O seu nome em letras maiúsculas é: " + nome_maiusculo)
  }
}

Ao executar este código Portugol nós teremos o seguinte resultado:

Informe o seu nome: Marcelo de Souza Gomes
O seu nome em letras maiúsculas é: MARCELO DE SOUZA GOMES


Python ::: Dicas & Truques ::: Data e Hora

Como construir uma data em Python usando o construtor da classe datetime

Quantidade de visualizações: 7372 vezes
Nesta dica mostrarei como podemos usar o construtor da classe datetime do Python para construir e retornar uma nova data. Note que estou fornecendo a data para construtor da classe datetime usando o ano, o mês e o dia.

Veja o código Python completo para o exemplo:

from datetime import datetime

# função principal do programa
def main():
  # vamos definir o dia, mês e ano
  dia = 20
  mes = 4
  ano = 1980

  # Constrói um datetime (ano, mês, dia)
  data = datetime(ano, mes, dia)

  # Exibe o conteúdo do datetime
  print("A data construída foi {0}".format(data))
 
  # Obtém o ano da data recém-criada
  print("O ano da data construída foi: {0}".format(data.year))

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

A data construída foi 1980-04-20 00:00:00
O ano da data construída foi: 1980


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 Delphi

Quantidade de visualizações: 11801 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.


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby


E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90


© 2026 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 36 usuários muito felizes estudando em nosso site.