Aula 6 – Instruções de Seleção Cleverton...

24
Aula 6 – Instruções de Seleção Cleverton Hentz

Transcript of Aula 6 – Instruções de Seleção Cleverton...

Page 1: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Aula 6 – Instruções de Seleção Cleverton Hentz

Page 2: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Sumário de Aula

2

}  Instrução Condicional }  Instrução Escolha }  Teste de Mesa

Page 3: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Introdução

3

}  O fluxo de execução é a sequência(ordem) em que as instruções são executadas no algoritmo;

}  Cada instrução em um algoritmo é executada em seqüência, uma por vez, de cima para baixo;

}  Algumas estruturas básicas permitem um controle mais detalhado da execução do algoritmo

}  Desviar ou repetir parte do fluxo de execução são exemplos.

Page 4: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura de Decisão

4

}  Uma estrutura de decisão permite a escolha do fluxo de execução a ser seguido em função do resultado da avaliação de uma ou mais condições (expressão) }  Uma condição é uma expressão lógica (retorna V ou F)

}  Temos duas estruturas de decisão básicas: }  A estrutura condicional IF simples:

}  Utilizada quando apenas uma condição deve ser verificada.

}  A estrutura de SWITCH ou IF composto: }  Utilizada quando mais de uma condição deve ser verificada.

Page 5: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura Condicional IF

5

}  Sintaxe: if (<expressão_lógica>) {

<sequencia_instruções_V> }

}  Semântica: A expressão é avaliada. }  Se for true, então os comandos no bloco do if

(<sequencia_instruções_V>) são executados e o fluxo de execução prossegue com o primeiro comando após o símbolo }.

}  Caso contrário, o fluxo é desviado e continua após o símbolo }.

Page 6: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo

6

}  Escreva um algoritmo que, dada a idade de uma pessoa, informe se ela é maior de idade.

Page 7: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo - Resolução

7

int idade; Console.WriteLine(“Digite a idade (maior ou igual que zero): “);

idade = int.Parse(Console.ReadLine());

if (idade >= 18) { Console.WriteLine(“Pessoa é maior de idade.“);

}

Page 8: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura Condicional SE – Forma Completa

8

}  Sintaxe: if (<expressão>) { <sequencia_instruções_V> } else { <sequencia_intruções_F> } }  Semântica: A condição é avaliada.

}  Se for true, então as instruções <sequencia_comandos_V> serão executadas e o fluxo de execução prossegue com o primeiro comando após }.

}  Se a condição for false, então serão executadas as instruções <sequencia_comandos_F> e o fluxo prossegue após o }.

Page 9: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura Condicional SE – Forma Completa

9

}  Sintaxe: if (<expressão_1>) { <sequencia_instruções_1> } else if (<expressão_2>) { <sequencia_instruções_2> } else { <sequencia_intruções_else> } }  Semântica: Cada uma das expressões é testada.

}  A primeira expressão verdadeira encontrada, então as instruções referentes àquela expressão serão executadas e o fluxo de execução prossegue com o primeiro comando após }.

}  Caso nenhuma expressão seja verdadeira, então serão executadas as instruções do else (<sequencia_comandos_else>) e o fluxo prossegue após o }.

Page 10: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplos de IF’s

10

}  Exemplo 1 if (a > 2) { Console.WriteLine(“a é maior que 2.”); } else { Console.WriteLine(“a é menor ou igual a 2.”); }

}  Exemplo 2 if (true) { Console.WriteLine(“Caso 1”); } else if (true) { Console.WriteLine(“Caso 2”); }

Page 11: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Situações de Uso Incorreto do SE

11

}  Situações Incorretas // É uma atribuição e não uma expressão

if (A = B) {

...

}

// É uma expressão aritmética e não uma expressão lógica

if (A + B) {

...

}

Page 12: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exercício

12

}  Modifique o algoritmo da maior Idade para imprimir “menor de idade ” caso a pessoa tenha menos de 18 anos e “recém nascido” caso tenha entre 0 e 1 ano.

Page 13: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

IF’s Aninhados (Encadeados)

13

}  Pode-se utilizar IF's dentro de outros IF's, no caso de uma alternativa envolver outras decisões

}  Exemplo: if (<expressão_1>) { if (<expressão_2>) { <instruções> } } else { if (<expressão_3>) { <instruções> } }

Page 14: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo

14

}  Determinar o tipo de triângulo dados os valores dos seus três lados: }  Triângulo: Figura geométrica de três lados, em que cada um é

menor que a soma dos outros dois; }  Triângulo eqüilátero: três lados iguais; }  Triângulo isósceles: dois lados iguais; }  Triângulo escaleno: todos os lados diferentes.

Page 15: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo: Condições para Classificação dos Tipos de Triângulos

15

}  Triângulo: }  Lados: a, b, c }  (a < b + c) e (b < a + c) e (c < a + b)

}  Equilátero: }  (a == b) e (b == c)

}  Isósceles: }  (a == b) ou (a == c) ou (b == c)

}  Escaleno: }  (a != b) e (b != c) e (c != a)

Page 16: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Algoritmo para Classificar Triângulos

16

Console.WriteLine("Digite os três lados do triângulo:");

int a = int.Parse(Console.ReadLine());

int b = int.Parse(Console.ReadLine());

int c = int.Parse(Console.ReadLine());

if ((a < b + c) && (b < a + c) && (c < a + b)) {

if ((a == b) && (b == c)) {

Console.WriteLine("Triângulo equilátero");

} else if ((a == b) || (a == c) || (b == c)) {

Console.WriteLine("Triângulo isósceles");

} else {

Console.WriteLine("Triângulo escaleno");

}

} else {

Console.WriteLine("Os valores dos lados não representam um triângulo!");

}

Console.ReadLine();

Page 17: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura de Decisão switch

17

}  Utilizada quando um conjunto de valores precisa ser testado e ações diferentes são associadas a esses valores;

switch (<expressão-de-seleção>) { case <expressão_1>: <sequência-de-comandos-1>

break; case <expressão_N>: <sequência-de-comandos-N>

break; ... default:

<sequência-de-comandos-padrão>

break; }

Page 18: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Estrutura de Decisão switch

18

} Equivalente a: if (<expressão-de-seleção> == <expressão_1>){ <sequência-de-comandos-1> } ...

else if (<expressão-de-seleção> == <expressão_N>){

<sequência-de-comandos-N> } else {

<sequência-de-comandos-padrão> }

Page 19: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo

19

}  Faça um algoritmo para imprimir o preço e a procedência de um produto dado o seu código.

Código Procedência

1 Sul

2 Norte

3, 4 Centro-oeste

7, 8 ou 9 Sudeste

5, 6, 10 até 13 Nordeste

Page 20: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

20

Page 21: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Teste de Mesa

21

}  A atividade de programação é inerentemente propensa à falhas;

}  Logo, é uma característica importante projetar e codificar algoritmos corretos: }  Um algoritmo é dito correto se produz o resultado esperado

para todas entradas possíveis.

}  O teste de mesa é um meio pelo qual podemos acompanhar um algoritmo passo à passo;

}  Este tipo de processo facilita a detecção de falhas contidas no algoritmo.

Page 22: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Teste de Mesa

22

}  O teste de mesa pode ser realizado através de uma tabela que representa a linha, variáveis e comentários sobre cada passo do algoritmo;

}  Cada linha da tabela deve conter as informações: }  Instrução; }  Linha de código; }  Variáveis.

}  Os valores que foram colocados nas variáveis através do comando Console.ReadLine() deve ficar entre [];

}  Os valores que são escritos através do comando Console.WriteLine() na saída devem ficar entre {}.

Page 23: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo Simples

23

}  Exemplo: 1.  Console.WrileLine(“Digite dois números:”); 2.  int a = int.Parse(Console.ReadLine()); 3.  int b = int.Parse(Console.ReadLine()); 4.  int r = a + b; 5.  Console.WriteLine(r)

Instrução Linha a b r

1 1 - - -

2 2 [1] - -

3 3 1 [2] -

4 4 1 2 3

5 5 1 2 {3}

Page 24: Aula 6 – Instruções de Seleção Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/algoritmos/Alg.Aula6.pdf · Sumário de Aula 2 ! Instrução Condicional ! Instrução

Exemplo com Condicional

24

1.  Console.WriteLine(“Entre com um número:”);

2.  int a = int.Parse(Console.ReadLine());

3.  if (a == 5) {

4.  Console.WriteLine(“condição é verdadeira”);

5.  }

6.  Console.WriteLine(“fim do algoritmo”);

Instrução Linha a

1 1 -

2 2 [1]

3 3 1

4 6 1

Instrução Linha a

1 1 -

2 2 [5]

3 3 5

4 4 5

5 6 5

Valo

r de

a !=

5

Valo

r de

a =

= 5