progRJP

caderno virtual de programação

[pascal] Procedures – Exemplo de subrotina – Calculadora

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.

Navegação de Post Único

15 opiniões sobre “[pascal] Procedures – Exemplo de subrotina – Calculadora

  1. ULysses de Castro Silva em disse:

    Há um erro no programa principal onde está:
    while (opcao ‘5’) do Begin
    O correto é:
    while (opcao ‘5’) do Begin

  2. ULysses de Castro Silva em disse:

    Há me esqueci de agradecer muito legal esse programinha de pascal!
    Obrigado.

  3. ULysses de Castro Silva em disse:

    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

  4. Valeu Ulysses, ta arrumado.Abraço

  5. Leandro em disse:

    Muito Legal mesmo
    Brigadao ai 🙂

  6. Mari e Beta em disse:

    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

  7. Sérgio em disse:

    Como se faz um programa de calculadora procedure em pascal????

  8. Alexandre em disse:

    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!

  9. kleber finneys em disse:

    Esta dando um erra no else do case do programa principal me ajude…..

  10. Oii!
    Muito bom seu site!
    E pode ter certeza, esse seu algoritmo salvou minha vida!!
    Thank’s 😉

  11. 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.

  12. Emerson em disse:

    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.

  13. Emerson em disse:

    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!

  14. Emerson em disse:

    OBS: Deixa o que ja existe, apenas adiciona no fim de cada procedure!

  15. Sandro em disse:

    Ah muito bom….ajudou bem para entender procedure…

    Valeww

Deixe um comentário