Orgon Posted March 19, 2013 at 11:38 PM Report #499709 Posted March 19, 2013 at 11:38 PM (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 March 19, 2013 at 11:39 PM by Orgon
thoga31 Posted March 19, 2013 at 11:44 PM Report #499711 Posted March 19, 2013 at 11:44 PM 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!
Orgon Posted March 19, 2013 at 11:49 PM Author Report #499713 Posted March 19, 2013 at 11:49 PM Uma semana mas só podia trabalhar nas aulas (3 aulas de 90 minutos por semana).
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now