Jump to content

Recommended Posts

Posted (edited)

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
Posted

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 😄

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!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.