• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gempis

Case

16 mensagens neste tópico

Em pascal também existe o comando case?

à semelhança do php e outros...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sintaxe da função Case em pascal:

CASE seletor OF
             alvo1 : BEGIN
                       ... instruções ...
                     END;
             
             alvo2 : comando2;   
             
             alvo3 : BEGIN
                       ... instruções ...  
                     END; 
             ELSE comando4;  
        END;

E um pequeno exemplo dele

Uses Crt;

Var Y, X : Integer;

Begin
  Readln (X, Y);
  Case X Of
       1 : Begin
             Y := 4;
             Writeln ('Entrou no Primeiro alvo');
           End;

       2 : Begin
             Y := 3;
             Writeln ('Entrou no Segundo alvo');
           End;

       3 : Writeln ('Entrou no Terceiro alvo');
       Else Writeln ('Entrou no Else');
  End;
End.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que está maçl neste bloco de código?

o compilador diz que a seguir a "operador := +;" não vem ; depois tiro e diz que devia vir...

1 : Begin
operador := +;
write('Número A : ');
		readln(a);
		writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da soma é ',a+b,'.');
End;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que está maçl neste bloco de código?

o compilador diz que a seguir a "operador := +;" não vem ; depois tiro e diz que devia vir...

1 : Begin
           operador := +;
         	write('Número A : ');
		readln(a);
		writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da soma é ',a+b,'.');
       End;

O que queres fazer com isto operador := +; mas experimenta retirar esta linha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo...

Quero fazer caso o operadro seja "+" entºao ele faz a soma... como se faz isso sem ser daquela maneira?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo...

Quero fazer caso o operador seja "+" então ele faz a soma... como se faz isso sem ser daquela maneira?

Como a variável operador não é numérica acho que tens de pôr:

operador := "+";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não era aspas, mas sim plica, tem que ficar assim :

operador := '+';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o double post, mas já fiz tudo e dá-me erro na última linha...

Program calculadora ;
Var
a: real;
b: real;
c: real;
operador: char;

Begin
writeln('====================================');
writeln('Calculadora © BrunoAleixo aka Gempis');
writeln('====================================');
writeln('');
writeln('Primeiro, terá que definir qual a operação que quer fazer.');
writeln('');
writeln('As opções são:');
writeln('+ -> SOMA');
writeln('- -> SUBTRACÇÃO');
writeln('* -> MULTIPLICAÇÃO');
writeln('/ -> DIVISÃO');
writeln('! -> EQUAÇÃO SEGUNDO GRAU');
writeln('$ -> RAIZ QUDRADA');
writeln('');
write('Introduza o operador : ');
read(operador);
Case operador Of
   	1 : Begin
   		writeln('Escolheu fazer uma soma!');
             operador := '+';
           	write('Número A : ');
		readln(a);
		writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da soma é ',a+b,'.');
		readln;
         End;
         2 : Begin
         	writeln('Escolheu fazer uma subtracção!');
         	operador := '-';
         	write('Número A : ');
         	readln(a);
         	writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da subtracção é ',a-b,'.');
		readln;
	End;
	3 : Begin
		operador := '*';
		writeln('Escolheu fazer uma multiplicção!');
         	write('Número A : ');
         	readln(a);
         	writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da multiplicção é ',a*b,'.');
		readln;
	End;
	4 : Begin
		operador := '/';
		writeln('Escolheu fazer uma divisão!');
         	write('Número A : ');
         	readln(a);
         	writeln('');
		write('Número B : ');
		readln(b);
		writeln('');
		writeln('O resultado da divisão é ',a/b,'.');
		readln;
	End;
	5 : Begin	
		operador := '!';
		writeln('Escolheu resolver uma equação do segundo grau!');
		writeln('Introduza o a:');
		readln(a);
		writeln('Introduza o b');
		writeln(''); 
		readln(b);
		writeln('');
		writeln('Introduza o c');
		readln(c);
		ClrScr;
		If b*b-4*a*c < 0	
		Then
		writeln('Equação Impossível')		
		Else
		writeln('As soluções são : ',(-b + sqrt(b*b-4*a*c))/2*a, ' e ',((-b - sqrt(b*b-4*a*c))/2*a),'.');
		readln;
	End;	
	6 : Begin
		operador := '$';
		writeln('Escolheu fazer uma raiz quadrada!');
         	write('Número A : ');
         	readln(a);
         	writeln('');
		writeln('O resultado da raiz quadrada é ',sqrt(a),'.');
		readln;
	End;
readln;		 			
End;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas também não dá, experimentei os dois e não deu nenhum, e depois sem querer copiei para o forum assim...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso do fim eu sabia, s´´o que aqui ficou com ;...

Isso do case não sabia...

O maior erro, isso foi porque não estou familiarizado com o case, entao achava que "1" era o número do case e a seguir é que entrava a variável >.<

BTW linha extra -> else writeln ('Opcao errada!');    //valor por defeito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma ultima dúvida, duas aliás...

1. Como faço para limitar o número de casas decimais?

2. Como faço para quando acaba o programa voltar ao inicio?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gempis, para colocares as variáveis com casas decimais  metes a seguir a variável, por ex :0:2 (para o numero ficar com 2 casas á direita do 0) se for para colocar casas decimais á esquerda :2:0,salvo erro   

Quanto à segunda pergunta vou dar umas dicas , eu penso que na programação em geral utiliza-se estruturas de repetição(ciclos ) para quando a expressão  atinge um determinado valor booleano (no caso da estrutura repeat - false e na estrutura while - true  o programa acaba

Tens de pensar se queres que programa volte sempre a um menu principal para convem que utilize procedimentos,pois não dizer como se faz concretamente isso

PS:Só olhei para o código de relance,portanto se alguma coisa que disse em cima,já estiver  no código peço desculpa

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto às casas decimais já consegui, eu preciso é que quando a pessoa acabe a conta, volte ao menu de escolha de operador...

0

Partilhar esta mensagem


Link 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