Kelvin Dules 0 Denunciar post Postado Fevereiro 3, 2009 Olá, esse é meu primeiro post no fórum e espero ser respondido :rolleyes: OK... direto ao assunto... Estou com um problema num código simples de pascal (comecei a estudar pascal ontem à tarde), o objetivo é criar uma calculadora simples, que calcule só dois números (básico) de uma soma,subtraçao,divisao, multiplicaçao etc.. até ai tudo bem. Logo veio a vontade de incrementar um pouco, colocando as funções de produtos notaveis.. quadrado da soma.. diferença etc. O problema é que o End. não ta "servindo" como deveria, ou seja, finalizar o programa, a mensagem que o interpretador me manda é ' . ' não esperado já tentei várias formas mas nao obtive sucesso... Program Calculadora_Especial; var //Variaveis opcao:integer; opcao2:integer; resposta1:real; resposta2:real; num1,num2:real; resposta:real; termo1:real; termo2:real; Begin //Inicio dos comandos writeln('=====--- || CalculaK ® by Kelvin Dias Dules || ---====='); //Apresentação writeln('|| versão 0.5 ||'); writeln('|| ||'); writeln('|| ||'); writeln('---------------------------------------------------------'); writeln('||Digite o número correspondente à função para começar!||'); writeln('|||------------------|||'); //Menu de navegação writeln('|||[1] Somar'); writeln('|||[2] Subtrair'); writeln('|||[3] Multiplicar'); writeln('|||[4] Dividir'); writeln('|||[5] Produtos Notáveis'); writeln('|||[6] Sobre o Programa'); writeln('|||------------------|||'); read(opcao); //Soma if opcao=1 then begin writeln('Digite o primeiro número da soma:'); read(num1); writeln('Digite o segundo número da soma:'); read(num2); resposta:=(num1+num2); writeln('Resposta :',' ',round(resposta)); end //Subtração else if opcao=2 then begin writeln('Digite o primeiro número da subtração:'); read(num1); writeln('Digite o segundo número da subtração:'); read(num2); resposta:=(num1-num2); writeln('Resposta:',' ',round(resposta)); end //Multiplicação else if opcao=3 then begin writeln('Digite o primeiro número da multiplicação:'); read(num1); writeln('Digite o segundo número da multiplicação:'); read(num2); resposta:=(num1*num2); writeln('Resposta:',' ',round (resposta)); end //Divisão else if opcao=4 then begin writeln('Digite o dividendo (número a ser dividido):'); read(num1); writeln('Digite o divisor (número de partes que o dividendo será dividido)'); read(num2); resposta:=(num1/num2); writeln('Resposta:',' ',round (resposta)); end //Sobre o Programa else if opcao=6 then begin writeln('||| ===================Sobre o Programa=====================|||');//Não leiam essa bobagem saiugsiagsyagu writeln('||-- Por estar começando agora, esse é o primeiro programa'); writeln('||-- que durou mais de 30min para ser criado, então decidi'); writeln('||-- fazer esse "Sobre o Programa" por organização'); writeln('||-- O programa se encontra na versão 0.5, ou seja, não está completo,'); writeln('||-- ele deve chegar à uma versão 2.0 futuramente.'); writeln('||-- Bugs serão corrigidos e novas funções serão adicionadas como:'); writeln('||-- *Raiz, Potênciação, Produtos Notáveis etc...'); writeln('||-- Vai ser uma calculadora totalmente completa!'); writeln('||-- [OBS1]Nesta versão, depois de calcular uma operação, deve-se reiniciar o ||-- programa para realizar uma outra atividade!'); writeln('||-- [OBS2]Nesta versão, todos os resultados são aredondados no caso de de ||-- números decimais'); writeln('||-- Contato = kelvindules@hotmail.com'); writeln('||-- Obrigado!!!'); writeln('================================================================||'); writeln(' \\\ || /// Kelvin Dias Dules \\\ || /// '); writeln('================================================================||'); end; //Produtos Notáveis if opcao=5 then begin writeln('===== Produtos Notáveis disponíveis ====='); //Início Menu writeln('=1= Quadrado da Soma (2 termos)|'); writeln('=2= Quadrado da Diferença (2 termos)|'); writeln('=3= Quadrado da Soma (3 termos)|'); writeln('=4= Cubo da Soma (2 termos)|'); writeln('=5= Cubo da Diferença (2 termos)|'); writeln('=6= Produto da Soma pela Diferença|'); writeln('=== Digite o número correspondente à função para calcular ==='); //Fim Menu read(opcao2); //Quadrado da Soma* if opcao2=1 then begin writeln('Informe o primeiro termo:'); read(termo1); writeln('Informe o segundo termo:'); read(termo2); resposta1:=(termo1+termo2); resposta2:=(resposta1*resposta1); writeln('O resultado final é:',' ',round(resposta2)); end //Quadrado da Diferença else if opcao=2 then begin writeln('Informe o primeiro termo:'); read(termo1); writeln('Informe o segundo termo:'); read(termo2); resposta1:=(termo1-termo2); resposta2:=(resposta1*resposta1); writeln('O resultado final é:',' ',round(resposta2)); end //Quadrado da Soma 3t else if opcao=3 then begin writeln('Informe o primeiro termo:'); read(termo1); writeln('Informe o segundo termo:'); read(termo2); writeln('Informe o terceiro termo:'); read(termo3); resposta1:=(termo1+termo2+termo3); resposta2:=(resposta1*resposta1); writeln('O resultado final é:',' ',round(resposta2)); end; readkey; End. OBS: Estou usando os if e else if porque não consegui usar os cases http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif Obrigado pela anteção! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 3, 2009 Em qual linha o erro ocorre? Se não me falha a memória, Pascal exige um ponto-e-vírgula após os end's dos if's. OBS: Estude funções. Isso facilitará bastante . http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Kelvin Dules 0 Denunciar post Postado Fevereiro 3, 2009 Opa, obrigado por responder! O único erro é na ultima linha : End. Ele diz que o ponto não era esperado como se eu não tivesse terminado a função de cima ¬¬ Sim.. exige um ponto e virgula mas antes de else nao pode ter ponto e virgula entao só coloquei no ultimo end... Mais alguem pra ajudar..? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 3, 2009 parece que está faltando o end que corresponde ao if da opao 5 if opcao=5 then Compartilhar este post Link para o post Compartilhar em outros sites
Kelvin Dules 0 Denunciar post Postado Fevereiro 4, 2009 Que vergonha http://forum.imasters.com.br/public/style_emoticons/default/blush.gif era isso mesmo... e também faltava a variável do termo3 "termo3:real;" Obrigado pela atenção EDIT: BeraldO ^^ (e eu achando que nao dava pra errar o nome de uma pessoa mais de uma vez ¬¬). abraço Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 4, 2009 Obrigado pela atenção Beraldi ^^por nada, mas é Beraldo. :P hehe abraço Compartilhar este post Link para o post Compartilhar em outros sites