sr._neves Posted September 30, 2009 at 07:13 PM Report Share #289380 Posted September 30, 2009 at 07:13 PM program exercicio8; uses crt; Var num1, num2, funsao:real; Begin clrscr; write ('Ensira o 1º número: '); readln (num1); write ('ensira o 2º número: '); readln (num2); Write ('Qual a operação que deseja fazer: '); readln (funsao); If funsao= then begin num1*num2; end; If funsao= then num1-num2; If funsao= then num1+num2; if funsao= Then num1/num2; readln; End. Quando eu tento meter no " IF funsao=* " ele da erro e fiz que não posso usar o " * " assim ! Estou a iniciar em pascal e não sei o que fazer Link to comment Share on other sites More sharing options...
rkixa Posted September 30, 2009 at 07:33 PM Report Share #289384 Posted September 30, 2009 at 07:33 PM 1º - a variavel funcão não sei o que vais fazer com ela como real eu se calhar optava por char (vais usar '+', '-', '/', '*') 2º - no if tens funcao= ele com o igual está à espera que retorne um valor lógico e para o fazer precisa de 2 valores. 3ª - isso tudo com ifs ? não me parece bem CENAS GEEK | PORTEFÓLIO (Construção) Link to comment Share on other sites More sharing options...
softklin Posted September 30, 2009 at 08:00 PM Report Share #289392 Posted September 30, 2009 at 08:00 PM Para além do que o rkixa te disse considera mais estas linhas: - Apenas necessitas dos "begin" "end" no inicio e fim de programa, e em procedimentos/funções (não as que tens actualmente). - Tens que meter os caracteres de soma, subtracção, etc entre aspas. - Os resultados devem ser colocados nalgum lado. Da maneira que estás a fazer, ele não altera nada, e acho que não mostra no ecrã (para mostrar, tens de usar uma instrução de escrita, como o writeln) Tens alguns erros de aprendizagem da sintaxe do Pascal. Revê os teus apontamentos, e ainda esta página: http://en.wikibooks.org/wiki/Pascal_Programming/Syntax_and_functions Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
sr._neves Posted September 30, 2009 at 08:10 PM Author Report Share #289396 Posted September 30, 2009 at 08:10 PM Para além do que o rkixa te disse considera mais estas linhas: - Apenas necessitas dos "begin" "end" no inicio e fim de programa, e em procedimentos/funções (não as que tens actualmente). - Tens que meter os caracteres de soma, subtracção, etc entre aspas. - Os resultados devem ser colocados nalgum lado. Da maneira que estás a fazer, ele não altera nada, e acho que não mostra no ecrã (para mostrar, tens de usar uma instrução de escrita, como o writeln) Tens alguns erros de aprendizagem da sintaxe do Pascal. Revê os teus apontamentos, e ainda esta página: http://en.wikibooks.org/wiki/Pascal_Programming/Syntax_and_functions Obrigado por tudo mas: 1º se quiser usar "flores" meter coisas a cores e assim tenho de usar um begin e end; para a função If saber onde a "Flor" tem de parar. 2º O programa não está acabado por isso e que ainda não mostra os resultados, culpa minha não ter mencionado isso. já agora, quando falas em aspas são as plicas ( ' ' ) ou aspas (" ") mesmo ? Cumprimentos Link to comment Share on other sites More sharing options...
softklin Posted September 30, 2009 at 08:19 PM Report Share #289397 Posted September 30, 2009 at 08:19 PM Tens razão quanto ao caso dos if's. Já não programo em Pascal há bastante tempo, e confesso que li isso a correr, apesar de estar escrito como dizes, na página que te indiquei. Quanto às aspas, era plicas que queria dizer, tal como tens no teu programa. Como disse o rkixa, tens de alterar o tipo de dados da "funsao" para receber um caractere, que será a tua operação. Depois já podes fazer as comparações no if. if funsao = '*' then ... Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
sr._neves Posted September 30, 2009 at 08:32 PM Author Report Share #289402 Posted September 30, 2009 at 08:32 PM Tens razão quanto ao caso dos if's. Já não programo em Pascal há bastante tempo, e confesso que li isso a correr, apesar de estar escrito como dizes, na página que te indiquei. Quanto às aspas, era plicas que queria dizer, tal como tens no teu programa. Como disse o rkixa, tens de alterar o tipo de dados da "funsao" para receber um caractere, que será a tua operação. Depois já podes fazer as comparações no if. if funsao = '*' then ... Obrigado por todas as dicas já consegui por a minha amostra de calculadora a funcionar program exercicio8; uses crt; Var num1, num2,resultado:real; funsao:char; Begin clrscr; write ('Ensira o primeiro numero: '); readln (num1); write ('ensira o segundo numero: '); readln (num2); Write ('Qual a função que deseja utilizar: '); readln (funsao); If funsao= '*' then resultado:=num1*num2; If funsao='-' then resultado:=num1-num2; If funsao= '+' then resultado:=num1+num2; if funsao= '/' Then resultado:=num1/num2; Writeln ('O resultado e : ',resultado:5:0); readln (resultado); readln; End. Link to comment Share on other sites More sharing options...
softklin Posted October 1, 2009 at 07:32 AM Report Share #289466 Posted October 1, 2009 at 07:32 AM Falta-te verificar o caso na divisão, quando o denominador é 0, dá erro. De resto não experimentei, mas olhando para o código parece estar bom 🙂 Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
sr._neves Posted October 1, 2009 at 03:40 PM Author Report Share #289529 Posted October 1, 2009 at 03:40 PM Depois de todas as alterações o programa ja está a bombar com umas funcionalidades melhores 🙂 Mas ainda tem aquele BUG da divisão por 0 ! program exercicio8; uses crt; Var num1, num2,resultado:real; funsao:char; Begin clrscr; write ('Ensira o primeiro numero: '); readln (num1); write ('ensira o segundo numero: '); readln (num2); Write ('Qual a função que deseja utilizar: '); readln (funsao); If funsao= '*' then resultado:=num1*num2; If funsao='-' then resultado:=num1-num2; If funsao= '+' then resultado:=num1+num2; if funsao= '/' Then resultado:=num1/num2; Writeln ('O resultado e : ',resultado:5:0); readln (resultado); readln; End. Obrigado por todas as dicas 😄 Link to comment Share on other sites More sharing options...
softklin Posted October 1, 2009 at 07:04 PM Report Share #289559 Posted October 1, 2009 at 07:04 PM Basta colocares outra condição if dentro do operador da divisão, e verificar se num2 é 0: se for, dizes que não é possível dividir por zero, caso não seja 0, prossegues com a operação normalmente. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
felixs Posted October 2, 2009 at 05:08 PM Report Share #289671 Posted October 2, 2009 at 05:08 PM Um pormenor off-topic: "Ensira" não existe, a forma correcta é "Insira". Se este é um trabalho para apresentar ao professor, fica melhor com português correcto. 😄 Link to comment Share on other sites More sharing options...
Primordius Posted October 7, 2009 at 03:39 PM Report Share #290464 Posted October 7, 2009 at 03:39 PM Boa tarde eu começei a programar em pascal há uns dias e meti o teu programa a funcionar sem problemas incluindo o bug do dividir por 0 aqui tens o código espero ter ajudado program exercicio8; uses wincrt; Var num1, num2,resultado:real; funsao:char; Begin clrscr; write ('insira o primeiro numero: '); readln (num1); write ('insira o segundo numero: '); readln (num2); Write ('Qual a função que deseja utilizar: '); readln (funsao); begin If funsao= '*' then resultado:=num1*num2; end; Begin If funsao='-' then resultado:=num1-num2; end; begin If funsao= '+' then resultado:=num1+num2; begin if num2=0 then writeln('É impossivel dividir por 0'); if num2=0 then exit; if funsao= '/' Then resultado:=num1/num2; end; Writeln ('O resultado e : ',resultado:5:0); readln (resultado); readln; End; End. Link to comment Share on other sites More sharing options...
sr._neves Posted October 14, 2009 at 09:15 AM Author Report Share #291630 Posted October 14, 2009 at 09:15 AM Depois de mais algumas aulas, cá está uma maneira muito mais simples de conseguir alcançar o objectivo: program exercicio12; uses crt; var operador:char; num1,num2,resultado:real; Begin clrscr; writeln ('---------------------------------------------'); writeln ('---------------------------------------------'); write ('Ensira o primeiro numero: '); readln (num1); write ('Ensira o segundo numero: '); readln (num2); write ('Ensira o operador que deseja utilizar: '); readln (operador); Case operador of '*':Begin resultado:=num1*num2; writeln ('O resultado é: ',resultado:5:2); end; '-':begin resultado:=num1-num2; writeln('O resultado é: ',resultado:5:2); end; '+':begin resultado:=num1+num2; writeln('O resultado é: ',resultado:5:2); end; '/':begin If num2=0 then begin writeln('Impossivel divir por 0'); readln; end else begin resultado:=num1/num2; writeln('O resultado é: ',resultado:5:2); end; end; else Writeln('Inválido'); readln; end; writeln ('---------------------------------------------'); writeln ('---------------------------------------------'); writeln ('sr._neves'); readln; end. Link to comment Share on other sites More sharing options...
Primordius Posted October 17, 2009 at 05:11 PM Report Share #292094 Posted October 17, 2009 at 05:11 PM nao dava pa fazer de outra maneira? 😛 eu tb fiz uma para a escola uma beca mais simples ainda vout mostrar o codigo nao tem é a parte daquele erro do 0 mas nao faz mal xD program exercicio12; uses winCrt; var valor1,valor2:real; operador: char; begin writeln('Introduza os 2 valores'); readln(valor1,valor2); writeln ('|-----------------------------------|'); writeln ('| Escolha de Operador |'); writeln ('|-----------------------------------|'); writeln ('|[1] - Soma |'); writeln ('|[2] - Subtração |'); writeln ('|[3] - Multiplicação |'); writeln ('|[4] - Divisão Inteira |'); writeln ('|-----------------------------------|'); writeln ('Insira a sua escolha:'); readln (operador); case operador of '1': writeln('A soma é: ',valor1+valor2:8:2); '2': writeln('A subtração é: ',valor1-valor2:8:5); '3': writeln('A multiplicação é: ',valor1*valor2:8:5); '4': writeln('A divisão é: ',valor1 / valor2:8:5); end; end. Link to comment Share on other sites More sharing options...
]T0rr3nT[ Posted November 7, 2009 at 01:19 AM Report Share #295019 Posted November 7, 2009 at 01:19 AM boas! eu comecei pascal a uma semana e sou mto noob nisto... podiam dizer para que servem estes numeros: nao dava pa fazer de outra maneira? 😛 eu tb fiz uma para a escola uma beca mais simples ainda vout mostrar o codigo nao tem é a parte daquele erro do 0 mas nao faz mal xD program exercicio12; uses winCrt; var valor1,valor2:real; operador: char; begin writeln('Introduza os 2 valores'); readln(valor1,valor2); writeln ('|-----------------------------------|'); writeln ('| Escolha de Operador |'); writeln ('|-----------------------------------|'); writeln ('|[1] - Soma |'); writeln ('|[2] - Subtração |'); writeln ('|[3] - Multiplicação |'); writeln ('|[4] - Divisão Inteira |'); writeln ('|-----------------------------------|'); writeln ('Insira a sua escolha:'); readln (operador); case operador of '1': writeln('A soma é: ',valor1+valor2:8:2); '2': writeln('A subtração é: ',valor1-valor2:8:5); '3': writeln('A multiplicação é: ',valor1*valor2:8:5); '4': writeln('A divisão é: ',valor1 / valor2:8:5); end; end. Link to comment Share on other sites More sharing options...
softklin Posted November 7, 2009 at 09:43 AM Report Share #295024 Posted November 7, 2009 at 09:43 AM Se a memória não me falha, servem para formatar a apresentação do número, isto é 8:2, acho que vai ter 8 casas no máximo à esquerda da virgula, e 2 casas decimais no máximo. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
]T0rr3nT[ Posted November 7, 2009 at 11:20 AM Report Share #295027 Posted November 7, 2009 at 11:20 AM muito obrigado! xD Link to comment Share on other sites More sharing options...
sr._neves Posted November 8, 2009 at 07:00 PM Author Report Share #295162 Posted November 8, 2009 at 07:00 PM Se a memória não me falha, servem para formatar a apresentação do número, isto é 8:2, acho que vai ter 8 casas no máximo à esquerda da virgula, e 2 casas decimais no máximo. È isso mesmo! Link to comment Share on other sites More sharing options...
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