Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Gempis

Case

Mensagens Recomendadas

vbtipo    0
vbtipo

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gempis    0
Gempis

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;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vbtipo    0
vbtipo

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vbtipo    0
vbtipo

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 := "+";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gempis    0
Gempis

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;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gempis    0
Gempis

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gempis    0
Gempis

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sr Inovação    4
Sr Inovação

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gempis    0
Gempis

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade