4a. aula – estruturas de decisão 2013 - ecivaldo.com · nas estruturas de decisão onde ocorrem...

22
4a. Aula – Estruturas de decisão 2013.2

Upload: vocong

Post on 20-Jan-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

4a. Aula – Estruturas de decisão

2013.2

Page 2: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

.F.Condição

.V.

2

Instruções seguidas caso a condição seja

verdadeira.

Page 3: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

/* 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

Page 4: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

.F.Condição

.V.

4

Instruções seguidas caso a condição seja

verdadeira.

Instruções seguidas caso a condição seja

falsa.

Page 5: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

/* 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

Page 6: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

.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.

Page 7: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

/* 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

Page 8: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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 */}

Page 9: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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.”);}

Page 10: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 11: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

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

Page 12: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 13: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 14: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 15: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

/* 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

Page 16: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 17: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

/* 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

Page 18: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 19: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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

Page 20: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

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

Page 21: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

...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

Page 22: 4a. Aula – Estruturas de decisão 2013 - ecivaldo.com · Nas estruturas de decisão onde ocorrem “if’s aninhados” temos ... colocado noutra parte dentro do switch. 13. 1°)Avalia

� 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