Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Orgon

Calculadora e Áreas e perímetros

Mensagens Recomendadas

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.

Editado por Orgon

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.