Buscar

Aul04pas20012

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

*
*
*
Algoritmos com Seleção
Comando CASE
*
*
*
Sejam os seguintes códigos 
e expressões para cálculo da variável Resultado
Valor de Código
Resultado
1
Resultado + 5
2
inalterado
3
resultado - 2
4
inalterado
5
resultado - 2
6
2* (resultado + 1)
7
inalterado
8
0
9
0
10
0
*
*
*
Código = 1
Código =
 3 ou 5
Código = 6
Código
 > 7 e < 11
Resultado <- 
Resultado + 5
Resultado <- 
Resultado -2
Resultado <- 2 * 
(Resultado + 1)
Resultado <- 0
S
S
S
S
N
N
N
N
{uso de seleção simples}
*
*
*
(…)
Código = 1
Código = 3 ou Código = 5
Código > 7 e < 11
Resultado <- 
Resultado + 5
Resultado <- 
Resultado -2
Resultado <- 0
S
S
S
N
N
N
{uso de seleção simples}
*
*
*
{uso de seleção simples}
if (Codigo = 1)
	then
		Resultado := Resultado + 5;
if (Codigo = 3) or (Codigo = 5)
	then
		Resultado := Resultado - 2;
if (Codigo = 6) 
	then
		Resultado := 2 * (Resultado + 1);
 if (Codigo > 7) and (Codigo < 11)
	then
		Resultado := 0;
*
*
*
Código 
= 1
Código
=3 ou 5
Código = 6
Resultado 
<-
Resultado + 5
Resultado 
<-
Resultado +-2
Resultado 
<- 2*
(Resultado + 1)
Código >= 8 
e <= 10
Resultado 
<-
0
S
S
S
N
N
N
N
S
{uso de seleção composta}
*
*
*
{uso de seleção composta}
if (Codigo = 1)
	then
		Resultado := Resultado + 5
	else
		if (Codigo = 3) or (Codigo = 5)
		 then
			Resultado := Resultado - 2
		 else
			if Codigo = 6
			 then
				Resultado := 2 * (Resultado + 1)
			 else
				if (Codigo >= 8) and (Codigo <= 10)
				 then
					Resultado := 0;
*
*
*
{uso de seleção múltipla}
case Codigo of
	1		: Resultado := Resultado + 5;
	3 , 5		: Resultado := Resultado - 2;
	6		: Resultado := 2 * (Resultado + 1);
	8..10	: Resultado := 0;
	else
			if (Codigo <> 2) and
			 (Codigo <> 4) and
			 (Codigo <> 7)
	 	 then
	 writeln(´Codigo invalido´)
end;
*
*
*
Case Código
1
3 ou 5
6
8 a 10
<> 2, 4 ou 7
Resultado 
<- 
Resultado
 + 5
Resultado 
<- 
Resultado
 - 2
Resultado 
<- 
2*
(Resultado
 + 1)
Resultado 
<- 
0
´Código 
inválido!´
CASE: funciona como uma condição composta
*
*
*
Código 
= 1
Resultado 
<-
Resultado + 5
Código >= 8 
e <= 10
Resultado 
<-
0
S
N
N
CASE: funciona como uma condição composta
S
...
Código<> 2 
4 ou 7
Código 
Inválido
S
N
*
*
*
 write ('Valor de Codigo: ');
 readln (Codigo);
 Resultado := 0;
 case Codigo of
 1 : Resultado := Resultado + 5;
 3 , 5 : Resultado := Resultado - 2;
 6 : Resultado := 2 * Resultado + 1;
 8 .. 10 : Resultado := 0;
 else
 if (Codigo <> 2) 
 and 
 (Codigo <> 4) and (Codigo <> 7)
 then
 writeln ('Codigo invalido!')
 end;
 if (Codigo >= 1) and (Codigo <= 10)
 then 
 writeln('Resultado: ', Resultado);
*
*
*
var
 LetraCor : char;
begin
 Case LetraCor of
 'V': writeln ('Vermelho');
 'B': writeln ('Branco');
 'A': writeln ('Azul')
 end;
end.
*
*
*
TipPizza : char;
NomePizza : string;
case TipPizza of
 'A' , 'a' : NomePizza := 'Brotinho';
 'B' , 'b' : NomePizza := 'Media';
 'C' , 'c' : NomePizza := 'Grande';
 'D' , 'd' : NomePizza := 'Calzone';
 else writeln 
('Tipo de pizza desconhecido!')
end;
*
*
*
Var
	Classificado : boolean;
Case Classificado of
 true : writeln (´Candidato ´, Inscricao , classificado!´);
 false: writeln (´Candidato ´, Inscricao, ´desclassificado!´)
end;
*
*
*
Comando CASE
Estrutura de controle condicional.
Permite que grupos particulares de instruções sejam escolhidos entre grupos possíveis.
Escolha é baseada no valor correspondente de uma expressão.
*
*
*
Expressão
De qualquer tipo ordinal
Tipo ordinal: Tipo onde os elementos aparecem em uma determinada ordem e são distintos e descontínuos. 
*
*
*
Tipos ordinais simples padrão
char ;
boolean;
byte;
shortint ;
integer
*
*
*
Instrução
Simples 
		ou
Composta 
 (duas ou mais instruções simples delimitadas por begin end)
*
*
*
Funcionamento 
do 
CASE
*
*
*
As seqüências de constantes não precisam aparecer numa ordem específica, mas devem ser únicas (ou seja, mesmo valor não pode aparecer implícita ou explicitamente em mais de uma seqüência!)
 Ex.:	
		case ValorInteiro of
		 9: writeln(´Valor 9´);
			4..8: writeln(´Entre 4 e 8´´);
			{ 7: writeln(´valor 7´); 
 ERRADO! O valor 7
			 está implícito no rótulo anterior.}
		end;
*
*
*
Valores nas listas de constantes devem pertencer ao mesmo tipo ordinal do valor da expressão.
Ex.:
 case ValorChar of
		´A´: writeln(´A maiusculo´);
		 a : writeln(´Vai dar erro´);
 { a deveria ser uma constante caractere,
 logo deveria estar entre apostrofos}
		 1: writeln(´Tambem vai dar erro!´);
 {idem acima, o um tambem deveria 
 estar entre apostofros}
 	 end;
*
*
*
Uma instrução será executada sempre que uma das constantes de uma seqüência coincidir com o valor corrente da expressão.
Ex.:
	SoNumeros := 5;
	case SoNumeros of
		1..3: (…);
		 7: (…);
	 5: (…);
 {a instrução do rotulo acima sera executada,
 já que a constante 5 vai coincidir com o valor 
 corrente da expressao (SoNumeros) 
 que eh 5 no momento}
 4:(…);
 end;
*
*
*
Se valor corrente da expressão não coincidir com qualquer valor de uma seqüência, nada será executado (o Turbo Pascal possibilita o tratamento de valores não previstos através do Else).
Ex.:
Valor := 10
Case Valor of
1..9: Somatorio := Somatorio + Valor;
 {observar que antes de ELSE de CASE pode ponto e vírgula}
else
 writeln(´Valor não valido!´)
end;
*
*
*
case
expressão
of
Sintaxe
. . 
, 
: 
constante
constante
Comando*
; 
else
Comando*
end
* Comando simples ou composto
*
*
*
Vantagens e Desvantagens do CASE
	Desvantagem
	Serve como alternativa apenas para estruturas aninhadas IF-THEN-ELSE que testam igualdades valendo-se de variáveis ordinais.
	Não pode ser usada com strings ou reais, por exemplo!!!
	 	(IF-THEN-ELSE é mais abrangente!!)
	Vantagem
	O código produzido é mais claro. 
	A lógica fica mais evidente.

Outros materiais