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