Esse exemplo faz uma calculadora simples usando um procedimento para cada operação. Também faz uso do Case, uma alternativas a if (s) aninhados.
program CALCULADORA;
uses
CRT;
var
opcao: char;
{ Sub-rotinas de calculos - Adição }
Procedure rot_adicao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32, 1); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a+b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------------------------------------------------------------------------------------}
{ Sub-rotinas de calculos - Subtração }
Procedure rot_subtracao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32, 1); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a-b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------------------------------------------------------------------------------------}
{ Sub-rotinas de calculos - Multiplicação}
Procedure rot_multiplicacao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32, 1); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a*b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------------------------------------------------------------------------------------}
{ Sub-rotinas dee calculos - Divisão }
Procedure rot_divisao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32, 1); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a/b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------------------------------------------------------------------------------------}
BEGIN { PROGRAMA PRINCIPAL}
textColor(yellow + blink); { altero a cor da fonte }
textBackground(BLUE); { altero a cor do plano de fundo }
clrscr;
opcao:='0';
while (opcao < '5') do Begin
clrscr;
gotoxy(33,1); write('Menu principal');
gotoxy(22, 6); write('1 Soma');
gotoxy(22, 8); write('2 Subtracao');
gotoxy(22, 10); write('3 Multiplicacao');
gotoxy(22, 12); write('4 Divisao');
gotoxy(22, 14); write('5 Fim de programa');
gotoxy(22, 18); write(' Escolha uma opcao ......: ');
readln(opcao);
Case opcao of
'1': rot_subtracao;
'2': rot_subtracao;
'3': rot_multiplicacao;
'4': rot_divisao
Else
Writeln('Byeee');
end;
end;
END.
Este artigo foi útil ?
SimNão
Last modified: 23 de outubro de 2007
Há um erro no programa principal onde está:
while (opcao ‘5’) do Begin
O correto é:
while (opcao ‘5’) do Begin
Há me esqueci de agradecer muito legal esse programinha de pascal!
Obrigado.
Acho que o erro está na página que não dá para enxergar o sinal de maior e menor, no primeiro comentário postei
while (opcao sinal de maior e menor ‘5’) do Begin
Valeu Ulysses, ta arrumado.Abraço
Muito Legal mesmo
Brigadao ai 🙂
há um erro no programa principal.
como está:
Case opcao of
‘1’: rot_subtracao;
‘2’: rot_subtracao;
‘3’: rot_multiplicacao;
‘4’: rot_divisao
como deveria estar:
Case opcao of
‘1’: rot_adicao;
‘2’: rot_subtracao;
‘3’: rot_multiplicacao;
‘4’: rot_divisao
aah, mais ficou beem legal! 🙂
byeee
Como se faz um programa de calculadora procedure em pascal????
Rpz, sinceramente… depois desse exemplo q vi agora foi q eu vim conseguir entender, ja fiz de tudo, li vi exemplos, mais esse foi foda, consegui entender mesmo como funciona a procedure, e como se faz pra chamar ela… mto bem…
gostei!
Esta dando um erra no else do case do programa principal me ajude…..
Oii!
Muito bom seu site!
E pode ter certeza, esse seu algoritmo salvou minha vida!!
Thank’s 😉
Ola galera to querendo fazer umna prova tipo do detran em pascal.
do codigo ja tenho pro isso ai Program Prova ;
uses crt;
var
q: array [1..10] of string; {*variaveis para as questoes*}
a: array [1..5] of string;// variaveis para alternativas
i, j: integer; // atribuição para a linha e coluna da maatriz
op: char; // caracter de criação para o menu
sair: boolean; // verdadeiro ou falso
procedure menu;
begin
writeln (‘1 – aplicar prova’);
writeln (‘2 – resultado’);
writeln (‘3 – ranking’);
writeln (‘4 – Sair’);
case op of
‘1’: writeln (‘aplicar prova’);
‘2’: writeln (‘resultado’);
‘3’: writeln (‘ranking’);
‘4’: writeln (‘sair’);
end;
procedure prova;
begin
q[1]:= ‘Ficou conhecido como primeiro instrumento de calculo?’;
q[2]:= ‘Super computadores utilizados normalmente em centros de processamentos de grande porte.’;
q[3]:= ‘Mais conhecida como linguagem de montagem.’;
q[4]:= ‘Qual o ano em que foi criada a linguagem Pascal?’;
q[5]:= ‘A que geração se adequa a linguagem de montagem.’;
q[6]:= ‘Uma tecnologia semicondutora é conhecida por utilizar…’;
q[7]:= ‘Memoria em que uma vez gravados, os dados contidos em seu interior não podem ser apagados.’;
q[8]:= ‘Qual extenção do arquivo salvo no Writer (processador de textos em BrOffice)?’;
q[9]:= ‘Quem é o fundador do WikiLeaks (organização transnacional sem fins lucrativos, sediada na Suécia, que publica, em seu site, posts de fontes anônimas, documentos, fotos e informações confidenciais, vazadas de governos ou empresas, sobre assuntos sensíveis.’);
q[10]:= ‘Computador em forma de prancheta eletrônica, sem teclado e com tela sensível ao toque.’);
end;
begin
q[1]a:= (‘Calculadora’);
q[1]b:= (‘Tabuada’);
q[1]c:= (‘Abaco’);
q[1]d:= (‘A Regua de Calculo’);
q[1]e:= (‘NRA’);
q[2]a:= (‘Mainframes’);
q[2]b:= (‘Minicomputadores’);
q[2]c:= (‘Microcomputadores’);
q[2]d:= (‘Notebook’);
q[2]e:= (‘Workstation’);
q[3]a:= (‘C++’);
q[3]b:= (‘Java’);
q[3]c:= (‘Cobol’);
q[3]d:= (‘Dotnet’);
q[3]e:= (‘Assembly’);
q[4]a:= (‘1900’);
q[4]b:= (‘1930’);
q[4]c:= (‘1970’);
q[4]d:= (‘1980’);
q[4]e:= (‘1987’);
q[5]a:= (‘1a geração’);
q[5]b:= (‘2a geração’);
q[5]c:= (‘3a geração’);
q[5]d:= (‘4a geração’);
q[5]e:= (‘5a geração’);
q[6]a:= (‘Processador’);
q[6]b:= (‘Transitores’);
q[6]c:= (‘Memoria’);
q[6]d:= (‘Placa mãe’);
q[6]e:= (‘Pilhas’);
q[7]a:= (‘RAM’);
q[7]b:= (‘ROM’);
q[7]c:= (‘PROM’);
q[7]d:= (‘EPROM’);
q[7]e:= (‘EEPROM’);
q[8]a:= (‘.xls’);
q[8]b:= (‘.ppt’);
q[8]c:= (‘.doc’);
q[8]d:= (‘.odt’);
q[8]e:= (‘.ods’);
q[9]a:= (‘Jimmy Wales’);
q[9]b:= (‘Larry Page’);
q[9]c:= (‘Sergey Brin’);
q[9]d:= (‘Mark Zuckerberg’);
q[9]e:= (‘Julian Assange’);
q[10]a:= (‘Palmtop’);
q[10]a:= (‘Laptop’);
q[10]a:= (‘Tablet’);
q[10]a:= (‘Iphone’);
q[10]a:= (‘Smartphone’);
end;
end.
cara depois que termina o calculo pra voltar pro menu quando está executando, a tela fica suja… como limpar isso? pois em todos os procedures contem o ( clrscr ) mais não funciona apenas nesta parte.
Para limpar a tela para o Menu Principal não ficar por cima do resultado anterior, apenas colocar clrscr após todos os ( readln ) de cada procedure e antes de todos os ( end´s ) de cada procedure.
OK!
OBS: Deixa o que ja existe, apenas adiciona no fim de cada procedure!
Ah muito bom….ajudou bem para entender procedure…
Valeww
Heard some buzz ‘bout 777bgame. Might be worth checking out if you’re looking for something new. Just saying 777bgame.
WG777login? That’s where it’s at! Made the login easy peasy. Take a gander wg777login
Okay, tojaybetgame is actually quite interesting. Worth checking out if you’re looking for something new. Get in on the action here tojaybetgame