Jump to content
Orgon

Calculadora e Áreas e perímetros

Recommended Posts

Orgon

Este é um projecto de final de segundo que eu fiz para a escola.

Eu escrevi e compilei o programa em Linux.

Esta calculadora pede dois números ao utilizador e depois o utilizador escolhe a operação que pretende fazer entre elas soma, subtracção, divisão, multiplicação e exponenciação.

A opção áreas e perímetros calcula as áreas e perímetros de quadrados, círculos, rectângulos, ect.

program Programa;
uses crt;
 //Procedimento que desenha a tela no ecrã
procedure tela;
var
i:integer;
begin
	  //Linha do Titulo
for i := 6 to 44 do
	  begin
		gotoxy(i,2);
		write('*');
	  end;
	  //Linha de Cima
for i := 6 to 44 do
	  begin
		gotoxy(i,4);
		write('*');
	  end;
	  //Linha de Baixo
for i := 5 to 45 do
	  begin
		gotoxy(i,15);
		write('*');
	  end;
	  //Linha da esquerda
for i := 2 to 14 do
	  begin
		gotoxy(5,i);
		write('*');
	  end;
	  //Linha da direita
for i := 2 to 14 do
	  begin
		gotoxy(45,i);
		writeln('*');
	  end;
end;
 //procedimento menu principal
procedure menu_principal(var opc:integer);
 begin
repeat
	  clrscr;
	  tela;
	  gotoxy(17,3);
	  writeln('Menu principal');
	  gotoxy(7,5);
	  writeln('1 - Calculadora');
	  gotoxy(7,6);
	  writeln('2 - Area e perimetro');
	  gotoxy(7,12);
	  writeln('9 - Sair');
	  gotoxy(7,13);
	  write('Escolha uma das opções anteriores: ');		  readln(opc);
	  if (opc <> 1) and (opc <> 2) and (opc <> 9) then
		begin
		gotoxy(9,14);
		write('Opção Inválida');  readln;
		end;
until (opc = 1) or (opc = 2) or (opc = 9);
 end;
 //Procedimeto calculadora
procedure calculadora;
var
 op:byte;
 n1,n2:integer;
 //Procedimento para o menu principal
procedure menu(var opc:byte);
 begin
repeat
	  clrscr;
	  tela;
	  gotoxy(17,3);
	  writeln('Calculadora');
	  gotoxy(7,5);
	  writeln('0 - Entrada dos números');
	  gotoxy(7,6);
	  writeln('1 - Adição');
	  gotoxy(7,7);
	  writeln('2 - Subtração');
	  gotoxy(7,8);
	  writeln('3 - Multiplicação');
	  gotoxy(7,9);
	  writeln('4 - Divisão');
	  gotoxy(7,10);
	  writeln('5 - Exponenciação');
	  gotoxy(7,12);
	  writeln('9 - Sair');
	  gotoxy(7,13);
	  write('Escolha uma das opções anteriores: ');		  readln(opc);
	  if (opc <> 0) and (opc <> 1) and (opc <> 2) and (opc <> 3) and (opc <> 4) and (opc <> 5) and (opc <> 9) then
		begin
			  gotoxy(9,14);
			  write('Opção Inválida');  readln;
		end;
until (opc = 0) or (opc = 1) or (opc = 2) or (opc = 3) or (opc = 4) or (opc = 5) or (opc = 9);
 end;
 //Procedimento para entrada de dados introduzidos pelo utilizador
procedure entrada_numeros(var num1,num2:integer);
 begin
clrscr;
tela;
gotoxy(17,3);
writeln('Calculadora');
gotoxy(7,5);
write('Introduza o primeiro número: ');	 readln(num1);
gotoxy(7,6);
write('Introduza o segundo número: ');	   readln(num2);
 end;
 //Função Adição
function adicao(num1,num2:integer):integer;
 begin
adicao := (num1+num2);
 end;
 //Função Subtração
function subtracao(num1,num2:integer):integer;
 begin
subtracao := (num1-num2);
 end;
 //Função Multiplicaçaõ
function multiplicacao(num1,num2:integer):integer;
 begin
multiplicacao := (num1 * num2);
 end;
 //Função Divisão
function divisao(num1,num2:integer):integer;
 begin
divisao := (num1 div num2);
 end;
 //Função Exponenciacao
Function exponenciacao(num1,num2:Integer):Integer;
Begin
	  If (num2 = 0) Then
		exponenciacao := 1
	  Else
		exponenciacao := num1 * exponenciacao(num1,num2-1);
End;
 //Programa principal
begin
 textcolor(blue);
 op:=0;
 n1:=0;
 n2:=0;
 repeat
menu(op);
case op of
	  0:entrada_numeros(n1,n2); //Chama o prcedimento de entrada de números
	  1:begin								  //Chama o prodimento da Adição
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Calculadora');
			  gotoxy(7,5);
			  write('Adição: ',adicao(n1,n2));
			  readln;
		end;
	  2:begin	//Chama o procedimento da subtração
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Calculadora');
			  gotoxy(7,5);
			  write('Subtração: ',subtracao(n1,n2));
			  readln;
		end;
	  3:begin	//Chama o procedimento da Multiplicação
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  write('Calculadora');
			  gotoxy(7,5);
			  write('Multiplicação: ',multiplicacao(n1,n2));
			  readln;
		end;
	  4:begin	//Chama o procedimento da Divisão
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Calculadora');
			  gotoxy(7,5);
			  write('Divisão: ',divisao(n1,n2));
			  divisao(n1,n2);
			  readln;
		end;
	  5:begin	//Chama o procedimento da Exponenciação
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Calculadora');
			  gotoxy(7,5);
			  write('Exponenciação: ',exponenciacao(n1,n2));
			  readln;
		end;
end;
 until op = 9;
end;
//Procedimento area_perimetro
procedure area_perimetro;
var
 opc:byte;
 n1,n2:real;
 //Procedimento para o menu principal
procedure menu(var opc:byte);
 begin
repeat
	  clrscr;
	  tela;
	  gotoxy(17,3);
	  writeln('Areas e perímetros');
	  gotoxy(7,5);
	  writeln('1 - Área do Quadrado');
	  gotoxy(7,6);
	  writeln('2 - Área do Retângulo');
	  gotoxy(7,7);
	  writeln('3 - Área do Triângulo');
	  gotoxy(7,8);
	  writeln('4 - Área do Circulo');
	  gotoxy(7,9);
	  writeln('5 - Perimetro do Quadrado');
	  gotoxy(7,10);
	  writeln('6 - Perimetro do Rectângulo');
	  gotoxy(7,11);
	  writeln('7 - Perimetro do Circulo');
	  gotoxy(7,12);
	  writeln('9 - Sair');
	  gotoxy(7,13);
	  write('Escolha uma das opções anteriores: ');		  readln(opc);
	  if (opc <> 1) and (opc <> 2) and (opc <> 3) and (opc <> 4) and (opc <> 5) and (opc <> 6) and (opc <> 7) and (opc <> 9) then
		begin
		gotoxy(9,14);
		write('Opção Inválida');  readln;
		end;
until (opc = 1) or (opc = 2) or (opc = 3) or (opc = 4) or (opc = 5) or (opc = 6) or (opc = 7) or (opc = 9);
 end;
 //PROCEDIMENTO DA ÁREA DO QUADRADO
function AREA_QUADRADO (largura_quadrado : Real):real;
 Begin
AREA_QUADRADO := (largura_quadrado * 2);
 End;
 //PROCEDIMENTO DA ÁREA DO RETÂNGULO
function AREA_RETANGULO (base_retangulo, altura_retangulo  : Real):real;
 Begin
AREA_RETANGULO := (base_retangulo * altura_retangulo);
 End;
 //PROCEDIMENTO DA ÁREA DO TRIÂNGULO
function AREA_TRIANGULO (base_triangulo, altura_triangulo  : Real):real;
 Begin
AREA_TRIANGULO := ((base_triangulo * altura_triangulo) / 2);
 End;
 //PROCEDIMENTO DA ÁREA DO CIRCULO
function AREA_CIRCULO (raio_circulo  : Real):real;
 Begin
		AREA_CIRCULO := ( 3.14 * raio_circulo * 2);
 End;
 //PROCEDIMENTO DO PERÍMETRO DO QUADRADO
function PERIMETRO_QUADRADO (largura_quadrado  : Real):real;
 Begin
PERIMETRO_QUADRADO := (largura_quadrado * 4);
 End;
 //PROCEDIMENTO DO PERÍMETRO DO RETÂNGULO
function PERIMETRO_RETANGULO (base_retangulo, altura_retangulo  : Real):real;
 Begin
PERIMETRO_RETANGULO := (base_retangulo + altura_retangulo + base_retangulo + altura_retangulo);;
 End;
//PROCEDIMENTO DO PERÍMETRO DO CIRCULO
function PERIMETRO_CIRCULO (raio_circulo  : Real):real;
 Begin
PERIMETRO_CIRCULO := (2 * 3.14 * raio_circulo);
 End;
 //Programa principal
begin
 textcolor(blue);
 repeat
menu(opc);
case opc of
	  1:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write('Introduza a largura do quadrado: ');  Readln (n1);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Área do Quadrado: ',AREA_QUADRADO(n1):0:2);
			  readln;
		end;
	  2:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write(' Introduza a base do retângulo: ');			 Readln (n1);
			  gotoxy(7,6);
			  Write (' Introduza a altura do retângulo: ');		   Readln (n2);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Área do Rectângulo: ',AREA_RETANGULO(n1,n2):0:2);
			  readln;
		end;
	  3:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write ('Introduza a base do triângulo: ');  Readln (n1);
			  gotoxy(7,6);
			  Write ('Introduza a altura do triângulo: ');  Readln (n2);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Área do Triângulo: ',area_triangulo(n1,n2):0:2);
			  readln;
		end;
	  4:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write (' Introduza o raio do circulo: ');  Readln (n1);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Área do Circulo: ',AREA_CIRCULO(n1):0:2);
			  readln;
		end;
	  5:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write('Introduza a largura do quadrado: ');  Readln (n1);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Perimetro do quadrado: ',PERIMETRO_QUADRADO(n1):0:2);
			  readln;
		end;
	  6:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  writeln('Areas e perímetros');
			  gotoxy(7,5);
			  Write (' Introduza a base do retângulo: ');  Readln (n1);
			  gotoxy(7,6);
			  Write (' Introduza a altura do retângulo: ');  Readln (n2);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Perimetro do Rectangulo: ',PERIMETRO_RETANGULO(n1,n2):0:2);
			  readln;
		end;
	  7:begin
			  clrscr;
			  tela;
			  gotoxy(17,3);
			  write('Areas e perímetros');
			  gotoxy(7,5);
			  Write (' Introduza o raio do circulo: ');  Readln (n1);
			  clrscr;
			  tela;
			  gotoxy(7,5);
			  write('Perimetro do Circulo: ',PERIMETRO_CIRCULO(n1):0:2);
			  readln;
		end;
end;
 until opc = 9;
end;
var
 op:integer;
begin
 repeat
 clrscr;
 textcolor(blue);
 tela;
 menu_principal(op);
 case op of
1:calculadora;
2:area_perimetro;
 end;
 until op = 9;
end.

Espero que este código possa ser útil a alguém.

PS: Este trabalho valeu-me 18 valores numa escala de 0 a 20 e uma semana de trabalho.

Edited by Orgon

Share this post


Link to post
Share on other sites
thoga31

PS: Este trabalho valeu-me 18 valores numa escala de 0 a 20 e uma semana de trabalho.

Esse código levou 1 semana? Estás mal habituado :D

Quando tiver tempo verei o código com calma (em princípio, amanhã à noitinha). Até lá, deixo os comentários para quem ver entretanto o código.


Knowledge is free!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.