Aula 6 – Instruções de Seleção
Cleverton Hentz
Sumário de Aula
} 
} 
} 
2
Instrução Condicional
Instrução Escolha
Teste de Mesa
Introdução
} 
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
} 
} 
3
Desviar ou repetir parte do fluxo de execução são
exemplos.
Estrutura de Decisão
} 
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:
} 
} 
A estrutura de SWITCH ou IF composto:
} 
4
Utilizada quando apenas uma condição deve ser verificada.
Utilizada quando mais de uma condição deve ser verificada.
Estrutura Condicional IF
Sintaxe:
if (<expressão_lógica>) {
<sequencia_instruções_V>
}
} 
} 
5
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 }.
Exemplo
} 
6
Escreva um algoritmo que, dada a idade de uma
pessoa, informe se ela é maior de idade.
Exemplo - Resolução
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.“);
}
7
Estrutura Condicional SE – Forma
Completa
} 
Sintaxe:
if (<expressão>) {
<sequencia_instruções_V>
} else {
<sequencia_intruções_F>
}
} 
Semântica: A condição é avaliada.
} 
} 
8
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 }.
Estrutura Condicional SE – Forma
Completa
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.
} 
} 
} 
9
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 }.
Exemplos de IF’s
} 
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”);
}
10
Situações de Uso Incorreto do SE
} 
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) {
...
}
11
Exercício
} 
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.
12
IF’s Aninhados (Encadeados)
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>
}
}
13
Exemplo
} 
Determinar o tipo de triângulo dados os valores dos
seus três lados:
} 
} 
} 
} 
14
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.
Exemplo: Condições para Classificação dos
Tipos de Triângulos
} 
Triângulo:
} 
} 
} 
Equilátero:
} 
} 
(a == b) e (b == c)
Isósceles:
} 
} 
Lados: a, b, c
(a < b + c) e (b < a + c) e (c < a + b)
(a == b) ou (a == c) ou (b == c)
Escaleno:
} 
15
(a != b) e (b != c) e (c != a)
Algoritmo para Classificar Triângulos
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();
16
Estrutura de Decisão switch
} 
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;
}
17
Estrutura de Decisão switch
}  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>
}
18
Exemplo
} 
Faça um algoritmo para imprimir o preço e a
procedência de um produto dado o seu código.
19
Código
Procedência
1
Sul
2
Norte
3, 4
Centro-oeste
7, 8 ou 9
Sudeste
5, 6, 10 até 13
Nordeste
20
Teste de Mesa
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.
} 
21
Teste de Mesa
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 {}.
} 
22
Exemplo Simples
} 
Exemplo:
1. 
2. 
3. 
4. 
5. 
23
Console.WrileLine(“Digite dois números:”);
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int r = a + b;
Instrução Linha a
b
Console.WriteLine(r)
r
1
1
-
-
-
2
2
[1]
-
-
3
3
1
[2]
-
4
4
1
2
3
5
5
1
2
{3}
Exemplo com Condicional
1. 
2. 
Console.WriteLine(“Entre com um número:”);
int a = int.Parse(Console.ReadLine());
4. 
if (a == 5) {
Console.WriteLine(“condição é verdadeira”);
5. 
}
6. 
Console.WriteLine(“fim do algoritmo”); Instrução Linha
Valor de a != 5
Instrução Linha
24
a
1
1
-
2
2
[1]
3
3
1
4
6
1
Valor de a == 5
3. 
a
1
1
-
2
2
[5]
3
3
5
4
4
5
5
6
5
Download

Instruções de Seleção - Cleverton Hentz IFRN