4a. aula – estruturas de decisão 2013 - ecivaldo.com · nas estruturas de decisão onde ocorrem...
TRANSCRIPT
4a. Aula – Estruturas de decisão
2013.2
.F.Condição
.V.
2
Instruções seguidas caso a condição seja
verdadeira.
/* Exemplo em Linguagem C : */
if ( faltas > 20 )printf ( “\n Aluno retido por faltas”);
� Aqui a frase Aluno retido por faltas será exibida apenas se o valor contido na variável faltas for maior que 20.
� Caso o valor contido na variável faltas seja inferior ou menor que 20 a frase não será exibida.
3
.F.Condição
.V.
4
Instruções seguidas caso a condição seja
verdadeira.
Instruções seguidas caso a condição seja
falsa.
/* Exemplo em Linguagem C : */
if ( faltas > 20 )printf ( “\n Retido por faltas”);
elseelseprintf ( “\n Aprovado ou em exame”);
� Aqui a frase Retido por faltas será exibida apenas se o valor contido na variável faltas for maior que 20.
� Caso o valor contido na variável faltas seja inferior ou menor que 20 será exibida a outra frase: Aprovado ou em exame.
5
.F.
1a condição .V.
Instruções seguidas caso aprimeira condição seja
falsa.
6
.F. .V.2a condição
Instruções seguidas caso a segunda condição seja
verdadeira.
falsa.
/* Exemplificando em Linguagem C: */
if ( faltas <= 20 )if ( media >= 7 )
printf ( “\n Aprovado.”);else
printf ( “\n Retido ou em exame.”);else
printf ( “\n Retido ou em exame.”);else
printf ( “\n Retido por faltas.”);
� Nas estruturas de decisão onde ocorrem “if’s aninhados” temos uma ou mais decisões que estão subordinadas a uma primeira.
� Neste exemplo, a segunda condição será testada apenas se a primeira condição for verdadeira.
7
� Estabelece um conjunto de comandos a serem executados pelo computador
� Encerrado entre chaves� Começa com {
8
� Começa com {
� Termina com }
int main (){
/* comandos */}
� DEVE USAR SEMPRE, especialmente quando:� desejar que um conjunto de instruções (portanto mais de
uma instrução) sejam processadas quando uma ou mais condições de uma decisão seja(m) verdadeira(s).
if ( faltas > 20 )
9
if ( faltas > 20 )printf ( “Aluno retido por faltas.”);
else{
printf (“Forneça as notas de: p1 e p2 “);scanf (“%f” &p1 ); scanf (“%f” &p2 ); m = ( p1*2 + p2*3 ) / 5;if ( m>=7 )
printf ( “Aluno aprovado.”);else
printf ( “Aluno retido por nota.”);}
� Quando precisamos escolher uma entre várias alternativas previamente definidas é fortemente recomendável o uso da estrutura de decisão múltipla.
� Um exemplo clássico desta situação é quando precisamos escolher uma opção entre várias disponíveis num menu.
� Esta estrutura é particularmente útil pois elimina a necessidade do uso de if’s aninhados
10
switch (variavel_de_controle) {
case Opcao_1: {
<bloco de comandos >
} break;
case Opcao_2: {
<bloco de comandos ><bloco de comandos >
}break;
[...]
case Opcao_n: {
< bloco de comandos >
}break;
default : {
<bloco de comandos >
}
} 11
� Se a variável_de_controle assume algum dos
valores opcao_1, opcao_2, opcao_3, etc ; o
seu respectivo bloco de comandos é
executado. Se a variável_de_controle não executado. Se a variável_de_controle não
assume nenhum destes valores o bloco
associado ao default será executado. O uso
do default é opcional.
12
� Se usarmos apenas um comando, em vez de
um bloco de comandos, não é necessário que
ele esteja entre um { e um }.
O comando default é opcional, geralmente é � O comando default é opcional, geralmente é
colocado no final dos cases, mas pode ser
colocado noutra parte dentro do switch.
13
� 1°) Avalia a variavel_de_controle, que deve
ser do tipo char ou int;
� 2°) Localiza o case cuja constante é igual ao
valor da variavel_de_controle e executa valor da variavel_de_controle e executa
todos os comandos seguintes até encontrar
um comando break;
� 3°) Se não existe tal caso, executa as
instruções associadas ao caso default (“caso
contrário dos cases”).
14
/* Bibliotecas utilizadas */#include <stdio.h>#include <conio.h>
/* Variáveis globais */int qtd;
/* Corpo do programa */main ()main (){
printf ("Digite a quantidade de pessoas esperando na fila: " );fflush (stdin);scanf ("%d" , &qtd );
switch ( qtd ){
case 0: printf ("\n Ninguém na fila. "); break;case 1: printf ("\n Uma pessoa na fila. "); break;case 2: printf ("\n Duas pessoas na fila. "); break;default: printf ("\n Várias pessoas na fila. ");
}getch ();
}
15
� Note que, para cada case existe um break. � Enquanto não for localizado o break, são processadas
todas as instruções até que um break seja encontrado dentro do switch.
Apenas no default não foi usado o break. � Apenas no default não foi usado o break. � Isto é devido ao fato de que o default normalmente é
o último comando dentro do switch.
� Contudo, se você optar por colocar o default noutra parte do switch que não no final, não se esqueça de usar um break para ele também. Observe como isto ocorre no exemplo a seguir.
16
/* Bibliotecas utilizadas */#include <stdio.h>#include <conio.h>
/* Variáveis globais */int qtd;
/* Corpo do programa */main ()main (){
printf ("Digite a quantidade de pessoas esperando na fila: " );fflush (stdin);scanf ("%d" , &qtd );
switch ( qtd ){
default: printf ("\n Várias pessoas na fila. "); break;case 0: printf ("\n Ninguém na fila. "); break;case 1: printf ("\n Uma pessoa na fila. "); break;case 2: printf ("\n Duas pessoas na fila. "); break;
}getch ();
}
17
� Em Linguagem C não existe o tipo de dados
boolean (lógico) como em outras linguagens
de programação.
uma expressão resulta em false (falso) se seu � uma expressão resulta em false (falso) se seu
valor é 0 (zero) e
� qualquer valor que seja diferente de zero significa
que a expressão resulta em true (verdadeiro).
� convencionou-se que zero corresponde a false,
enquanto que 1 (um) representa true.
18
� uma forma mais compacta de representar
decisões simples (substitui o if)
� Também conhecido como operador
condicionalcondicional
condição ? expressão_1 : expressão_2
19
1°) avalia a condição;
2°) se ela for verdadeira, o resultado final é o
valor da expressão_1;
3°) senão, o resultado final é o valor da 3°) senão, o resultado final é o valor da
expressão_2.
condição ? expressão_1 : expressão_2
20
...maior_de_dois = a > b ? a : b;...
A instrução acima atribui à variável maior_de_doisA instrução acima atribui à variável maior_de_doiso valor do maior número: a ou b.
� A expressão a>b é avaliada: � se for verdadeira, maior_de_dois recebe o valor
contido na variável a;
� caso contrário, maior_de_dois recebe o valor contido na variável b.
21
� Pode ser utilizado em qualquer contexto em que uma expressão é permitida.
� Analise a linha do programa: printf ("\nMaior numero: %0.1f" , a>b ? a : b );
� Se a expressão a>b for verdadeira o valor que será impresso será o da variável a, caso contrário o valor que será impresso será o da variável b.
� Observe que o uso do operador ternário fez com que apenas uma instrução printf fosse necessária para exibir o maior número.
� Note ainda que não poderíamos ter feito isto usando if-else, já que if-else não pode ser argumento da função printf
22