Estruturas de Controle - Condicional

Propaganda
Estruturas de Controle Condicional
PROGRAMAÇÃO I (COM06842)
LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
F REDDY B RASILEIRO
www.inf.ufes.br/~fbrasileiro
[email protected]
Conteúdo
5. Estruturas de controle
1.
Estruturas Sequenciais e Condicionais
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
2
Estruturas Sequenciais
...
<Comando 1>
<Comando 2>
<Comando 1>
<Comando 3>
...
<Comando 2>
<Comando 3>
3
Estruturas de Controle
• Quando o fluxo de instruções depende de uma ou mais
condições
◦ Expressões lógicas (verdadeiro ou falso)
• Estruturas
◦ Se
◦ Caso
4
Se-Então(-Senão)
Opção 1:
Opção 2:
se condição então
se condição então
bloco de comandos 1;
bloco de comandos 1;
fim-se;
senão
bloco de comandos 2;
fim-se;
Exemplo:
Exemplo:
se MEDIA < 7.0 então
se MEDIA < 7.0 então
escreva (‘reprovado’);
escreva (‘reprovado’);
fim-se;
senão
escreva (‘aprovado’);
fim-se;
5
Se-Então(-Senão)
.V.
.V.
?
?
.F.
.F.
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
6
Exemplo 1
Início
N1, N2
MEDIA aaa
(N1 + N2) / 2
MEDIA >= 7
"Aprovado"
"Reprovado"
BLOCO “SE”
Fim
7
Exemplo 2
Algoritmo radar
Início
Var
velV : Real;
velV
Início
Leia(velV);
.V.
Se velV > 60 Então
.F.
Escreva(‘Multado!’);
Fim_se
velV
> 60
“Multado!”
Fim.
Fim
BLOCO “SE”
8
Aninhamento
se condição1 então
...
senão
...
se condição2 então
...
fim-se;
...
fim-se;
se condição1 então
...
se condição2 então
...
fim-se;
...
senão
...
fim-se;
se condição1 então
...
senão
...
se condição2 então
...
senão
...
fim-se;
...
fim-se;
se condição1 então
...
se condição2 então
...
senão
...
fim-se;
...
senão
...
fim-se;
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
9
Exemplo
algoritmo media;
var
p1, p2, p3, t, mediaParcial, pf, mediaFinal: real;
inicio
leia(p1, p2, p3, t);
mediaParcial <- (p1 + p2 + p3 + t)/4;
se mediaParcial >= 7 então
escreva(‘Aprovado');
senão
leia(pf);
mediaFinal <- (mediaParcial + pf)/2;
se mediaFinal >= 5 então
escreva(‘Aprovado');
senão
escreva(‘Reprovado');
fim-se;
fim-se;
fim.
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
10
Cuidado! Organize seu código
algoritmo classificao;
var
idade: inteiro;
inicio
escreva('Informe sua idade: ');
leia(idade);
se idade >= 5 e idade <= 7 então
escreva('Infantil A');
se idade >= 8 e idade <= 11 então
escreva('Infantil B');
fim-se;
fim-se;
fim.
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
11
Cuidado! Organize seu código
algoritmo classificao;
var
idade: inteiro;
inicio
escreva('Informe sua idade: ');
leia(idade);
se idade >= 5 e idade <= 7 então
escreva('Infantil A');
se idade >= 8 e idade <= 11 então
escreva('Infantil B');
fim-se;
fim-se;
fim.
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
12
Cuidado! Organize seu código
algoritmo classificao;
var
idade: inteiro;
inicio
escreva('Informe sua idade: ');
leia(idade);
se idade >= 5 e idade <= 7 então
escreva('Infantil A');
fim-se;
se idade >= 8 e idade <= 11 então
escreva('Infantil B');
fim-se;
fim.
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
13
Exercício
Elabore um algoritmo que dada a idade de um nadador
classifique-o em uma das seguintes categorias:
• Infantil: 0 a 11 anos
• Juvenil: 12 a 17 anos
• Adulto: Maiores de 18 anos
Utilize o SE aninhado
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
14
Estruturas de Controle: Caso
• Funciona como um encadeamento de “Se”
◦ Várias condições avaliadas para uma variável
15
Estruturas de Decisão: Caso
<Condição
1>
.V.
<Comandos
1>
.F.
<Condição
2>
.V.
<Comandos
2>
.F.
<Condição
n>
.V.
<Comandos
n>
.F.
16
Caso - Sintaxe
Caso variavel seja
Condição1:
<Conjunto
Condição2:
<Conjunto
...
CondiçãoN:
<Conjunto
Senão
<Conjunto
Fim-caso
de Comandos 1>
de Comandos 2>
de Comandos n>
de Comandos Senão>
17
Caso - Semântica
• A “condição 1” é testada.
• Se for VERDADEIRO, o “conjunto de comandos 1” é
executado,
◦ Em seguida o programa passa para a próxima linha depois do “Fimcaso”.
• Se for FALSO, a “condição 2” é avaliada e o cenário se
repete.
• Se nenhuma das condições for VERDADEIRA,
◦ o “conjunto de comandos senão” é executado.
◦ Não é obrigatório ter um “Senão”;
18
Exemplo
Faça um algoritmo que leia o cargo e o salário de um
funcionário. Os funcionários receberão aumento de acordo
com o cargo:
• Técnico: 50% de aumento
• Gerente: 30% de aumento
• Todos os outros funcionários: 10% de aumento
PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)
19
Exemplo
Algoritmo reajuste_salario
Var
Salario, Novo_Sal : Real
Profissao : String[20];
Início
Leia Salario, Profissao
caso Profissao seja
‘Técnico’:
Novo_Sal <- 1.5 * Salario;
‘Gerente’:
Novo_Sal <- 1.3 * Salario;
Senão
Novo_Sal <- 1.1 * Salario;
Fim-caso
Escreva(‘Salário Reaj. = ‘, Novo_Salario);
Fim.
20
Exemplo
Início
Salario,
Profissao
Profissao
=
“Tecnico”
.V.
Novo_Sal <1.5 *
Salario
.V.
Novo_Salario
<- 1.3 *
Salario
.F.
Profissao
=
“Gerente”
.F.
Novo_Salario
<- 1.1 *
Salario
BLOCO “CASO”
“Salário
Reaj. = ”,
Novo_Salario
Fim
21
Exercício
Faça um programa, utilizando a instrução escolha-caso, que
receba um número real, digitado pelo usuário e mostre o
menu para selecionar o tipo de cálculo que deve ser
realizado:
Código
Tipo de Cálculo
101
Raiz quadrada
102
A metade
103
10% do número
104
O dobro
• Para raiz quadrada de x, utilize sqrt(x).
22
Exercício - Resolução
Algoritmo calculadora2
Var
operacao: Inteiro
a, resultado: Real
Início
Escreva(‘Informe a operação desejada e o valor: ‘);
Leia(operação, valor);
caso operação seja
101:
resultado <- sqrt(valor);
102:
resultado <- valor / 2;
103:
resultado <- 0,1 * valor;
104:
resultado <- valor * 2;
Senão
Escreva(‘Operação inválida’);
Fim-caso
Escreva(‘Resultado: ‘, resultado);
Fim.
23
Download