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.