Algoritmos e Estruturas de Dados
Estruturas de Controle
Prof. Me. Claudio Benossi
[email protected]
Sumário
Estrutura Condicional
Estrutura de Repetição
Sumário
Estrutura Condicional
Estrutura de Repetição
Estrutura Condicional
Execução seqüencial:
início
Cada comando é
executado
seqüencialmente, na
ordem em que são
escritos.
separar ingredientes
misturar ingredientes
colocar massa no forno
tirar bolo do forno
fim
Estrutura Condicional
Execução seletiva ou
condicional:
início
olhar o céu
Permite a escolha de
um grupo de ações
(bloco), quando
certas condições são
(ou não são)
satisfeitas.
chuva?
F
V
levar
guardachuva
fim
usar
roupa
leve
Estrutura Condicional
Simples
Composta
Múltipla escolha
Estrutura Condicional Simples
início
olhar o céu
escuro?
V
acender
luz
fim
F
Estrutura Condicional Simples
Utilizada quando precisamos testar uma certa
condição antes de executar uma ação.
se <condição> então
<ação>
fim se
Estrutura Condicional Simples
Exemplo:
// declaração de variáveis:
real N1, N2, NF, media
// início do programa:
ler(N1,N2,NF)
media ← (N1 + N2 + NF) / 3.0
se (media ≥ 5.0) então
escrever(“Aluno aprovado”)
fim se
fim programa
Estrutura Condicional Composta
início
olhar a vovó
nariz
grande?
F
V
Chamar
caçador
fim
Entregar cesta
de comida
Estrutura Condicional Composta
Utilizada em situações em que duas alternativas
dependem da mesma condição, uma da
condição verdadeira (então) e a outra da
condição falsa (senão).
se <condição> então
<ação1>
senão
<ação2>
fim se
Estrutura Condicional Composta
Exemplo:
// declaração de variáveis:
real N1, N2, NF, media
// início do programa:
ler(N1,N2,NF)
media ← (N1 + N2 + NF) / 3.0
se (media ≥ 5.0) então
escrever("Aluno aprovado")
senão
escrever("Aluno reprovado")
fim se
fim programa
Estrutura Condicional de Múltipla Escolha
início
ler signo
áries?
V
Ganhará na loteria
F
touro?
V
Não saia de casa hoje!
F
gêmeos?
F
fim
V
Sorte no amor
Estrutura Condicional de Múltipla Escolha
Utilizada quando um conjunto de valores
discretos e ações diferentes são associadas a
cada um desses valores.
se <cond_01> então
<ação1>
senão se <cond_02> então
<ação2>
senão se <cond_03> então
<ação3>
....
senão
<ação default>
fim se
switch <variável>
caso x1:
<ação1>
caso x2:
<ação2>
caso x3:
<ação3>
...
default
<ação default>
fim switch
Estrutura Condicional de Múltipla Escolha
O comando switch-case testa apenas igualdade
A corrente if-esle-if pode avaliar uma expressão
de relação ou lógica
Estrutura Condicional de Múltipla Escolha
Exemplo:
Dado a variável
inteira mês,
determinar o número
de dias ao mês
correspondente.
switch (mês)
caso 1:
dias =
caso 2:
dias =
caso 3:
dias =
caso 4:
dias =
caso 5:
dias =
caso 6:
dias =
....
default:
dias =
fim switch
31
28
31
30
31
30
0
Sumário
Estrutura Condicional
Estrutura de Repetição
Estruturas de Repetição
Permitem que uma seqüência de comandos seja
executada repetidamente, até que determinada
condição de interrupção seja satisfeita.
São também conhecidas como laços ou malhas.
Cada repetição do conjunto de comandos é
chamada iteração.
Estruturas de Repetição
A repetição de comandos em um laço pode
seguir um dos seguintes critérios:
 Por Condição (Verificação no início)
 Por Condição (Verificação no fim)
 Por Contagem
Estrutura de Repetição por Condição
:: Verificação no início
Permite que comandos sejam repetidos
enquanto uma condição não é atendida.
enquanto (<condição>) fazer
<ações>
fim fazer
Estrutura de Repetição por Condição
:: Verificação no início
Exemplo:
 Dado o valor de N, calcular a soma dos números
inteiros de 1 a N.
...
soma = 0
i = 1
enquanto (i ≤ N) fazer
soma = soma + i
i = i + 1
fim fazer
...
Estrutura de Repetição por Condição
:: Verificação no fim
Permite que comandos sejam repetidos até que
uma condição seja atendida.
fazer
<ações>
enquanto <condição>
fim fazer
Estrutura de Repetição por Condição
:: Verificação no fim
Exemplo:
 Dado o valor de N, calcular a soma dos números
inteiros de 1 a N.
...
s = 0
i = 1
fazer
s = s + i
i = i + 1
enquanto (i ≤ N)
fim fazer
...
Estrutura de Repetição por Condição
:: Verificação no fim × Verificação no início
Verificação no início
Condição é
verificada antes do
conjunto de
instruções
Verificação no fim
O conjunto de
instruções será
executado pelo
menos uma vez
Condição é
verificada depois do
conjunto de
instruções
Estrutura de Repetição por Contagem
Permite que comandos sejam repetidos um
determinado número de vezes.
para (início; fim; incremento)
<ações>
fim para
Estrutura de Repetição por Contagem
 início: define qual a variável de controle da
malha (contador) e seu valor inicial.
 fim: define o valor final da variável de controle.
 incremento: define como a variável de controle
se altera a cada repetição.
Estrutura de Repetição por Contagem
Exemplo:
 Dado o valor de N, calcular a soma dos números
inteiros de 1 a N.
...
soma = 0
para (i=1; N; incremento=1)
soma = soma + i
fim para
...
Estruturas de Repetição
:: Considerações finais
Número de repetições pode ser indeterminado,
mas não deve ser infinito (loop).
As formas de laços de repetição são
equivalentes entre si.
A escolha entre uma e outra é arbitrária.
Estruturas de Repetição
:: Considerações finais
Repetição por condição
s = 0
i = 1
enquanto (i ≤ N) fazer
s = s + i
i = i + 1
fim fazer
atribuição-1
enquanto (condição) fazer
instruções
atribuição-2
fim fazer
Repetição por contagem
s = 0
para (i=1; N; incremento=1)
s = s + i
fim para
para (atribuição-1;
condição; atribuição-2)
instruções
fim para
Exemplo 1
 O IMC (Índice de Massa Corporal) é um critério da Organização
Mundial da saúde para dar uma indicação sobre a condição de peso
de uma pessoa adulta.
 A fórmula é
IMC 
peso
(altura ) 2
 Elabore um algoritmo que leia o peso e a altura de um adulto e
mostre sua condição.
IMC em adultos
Condição
abaixo de 18,5
abaixo do peso
entre 18,5 e 25
peso normal
entre 25 e 30
acima do peso
acima de 30
obeso
Exemplo 1 – Esboço
 Variáveis:
 Entrada: peso, altura
 Tipo: real (float)
 Intervalo: maior que zero
 Saída: IMC
 Tipo: real
 Comandos:
 Ler variáveis de entrada
 Checar validade das variáveis de entrada
 Calcular IMC
 Determinar condição
Exemplo 1 – Algoritmo
início
float peso, altura, imc
ler(peso, altura)
se ((peso ≤ 0) OU (altura ≤ 0)) então
escrever("Valores Inválidos")
senão
imc = peso / (altura * altura)
se (imc ≤ 18,5) então
escrever("Abaixo do peso")
senão se (imc ≤ 25) então
escrever("Peso normal")
senão se (imc ≤ 30) então
escrever("Acima do peso")
senão
escrever("Obeso")
fim se
fim se
fim programa
verifica validade
dos valores
inseridos
calcula IMC
verifica posição
na tabela
Exemplo 2
Anacleto tem 1,50m e cresce 2cm por ano,
enquanto Felisberto tem 1,10m e cresce 3cm
por ano.
Construa um algoritmo que calcule e imprima
quantos anos serão necessários para que
Felisberto seja maior que Anacleto.
Exemplo 2 – Esboço
Crescimento da Anacleto:
 Altura inicial:
alt_a = 1,5
 Altura após cada ano:
alt_a = alt_a + 0,02
Crescimento de Felisberto:
 Altura inicial:
alt_f = 1,1
 Altura após cada ano:
alt_f = alt_f + 0,03
Condição de parada:
alt_f > alt_a
Exemplo 2 – Algoritmo
início
inteiro ano = 0
float alt_a = 1,5
float alt_f = 1,1
enquanto (alt_a > alt_f) fazer
alt_a = alt_a + 0,02
alt_f = alt_f + 0,03
ano = ano + 1
fim fazer
escrever(ano)
fim programa
condições
iniciais
Exemplo 3
Apresente dois algoritmos para calcular o valor
da seguinte soma.
 Estrutura de repetição por condição.
 Estrutura de repetição por contagem.
2 3 4 5 6
10
S  1     
4 9 16 25 36
100
Exemplo 3 – Termo geral
1
2 3 4 5 6
10
S  1     
4
9
16
25
36
100
2
1
22 32
42
Termo geral:
(1)
i1
i
2
i
52
62
102
Exemplo 3 – Algoritmos
início
// Contagem
float i
float soma = 0
para ((i = 1); (i ≤ 10); (incremento = 1))
soma = soma + (-1)^(i+1)*(i)/(i*i)
fim para
escrever(soma)
fim programa
início
// Condição
float soma, i
soma = 0
i=1
enquanto (i ≤ 10) fazer
soma = soma + (-1)^(i+1)*(i)/(i*i)
i=i+1
fim fazer
escrever(soma)
fim programa
termo
geral
termo
geral
Exemplo 4
início
inteiros: A, B, i, j
ler(A)
fazer
para (i=1; i ≤ A; incremento=1)
j = i
enquanto (j ≤ A) fazer
escrever(j)
j = j + 1
fim fazer
fim para
B = A
ler(A)
enquanto ((A ≠ B) AND (A > 0))
fim fazer
fim




O
O
O
O
que
que
que
que
será
será
será
será
mostrado se
mostrado se
mostrado se
mostrado se
inserirmos
inserirmos
inserirmos
inserirmos
4 e 0?
3, 2 e 2?
2, 1 e 0?
1 e 0?
Exemplo 5
Construa um algoritmo que verifique se um
número fornecido pelo usuário é primo ou não.
Exemplo 5 – Esboço
 O que é um número primo?
 (divisível por ele mesmo) E (divisível por 1)
 Zero e Um não são primos
 Se A é divisível por B, então (A % B = 0)
 Checar divisibilidade entre número em teste e divisores.
 Repetir teste, incrementando-se o divisor a partir de 2.
 Se um dos resto for zero, não há necessidade de testar
novos divisores  número em teste é primo.
 Não há necessidade de testar divisores maiores que a
metade do número em teste.
Exemplo 5 – Algoritmo
:: Refinamento 1
início
inteiro num, div, resto
ler(num)
div = 2
enquanto ((div < num/2) AND (resto ≠ 0)) fazer
resto = num % div
div = div + 1
fim fazer
se (resto ≠ 0) então
escrever("É primo")
senão
escrever("Não é primo")
fim se
fim programa
testa
divisibilidade
determina
primalidade de
acordo com o
resto
Exemplo 5 – Algoritmo
:: Refinamento 2
início
inteiro num, div, resto
ler(num)
se (num < 0) então
escrever("Valor Inválido")
senão
div = 2
enquanto ((div < num/2) AND (resto ≠ 0)) fazer
resto = num % div
div = div + 1
fim fazer
se (resto ≠ 0) então
escrever("É primo")
senão
escrever("Não é primo")
fim se
fim se
fim programa
verifica validade
dos valores
inseridos
testa
divisibilidade
determina
primalidade de
acordo com o
resto
Exemplo 5 – Algoritmo
:: Refinamento 3
início
inteiro num, div, resto
ler(num)
se (num < 0) então
escrever("Valor Inválido")
senão
se ((num == 1) OU (num == 0)) então
escrever("Não é primo")
senão
div = 2
enquanto ((div < num/2) AND (resto ≠ 0)) fazer
resto = num % div
div = div + 1
fim fazer
se (resto ≠ 0) então
escrever("É primo")
senão
escrever("Não é primo")
fim se
fim se
fim programa
verifica validade
dos valores
inseridos
0 e 1 não são
primos
testa
divisibilidade
determina
primalidade de
acordo com o
resto
Exemplo 5 – Algoritmo
:: Refinamento 4
início
inteiro num, div, resto
ler(num)
verifica validade
se (num < 0) então
dos valores
escrever("Valor Inválido")
inseridos
senão
0 e 1 não são
se ((num == 1) OU (num == 0)) então
primos
escrever("Não é primo")
senão se ((num == 2) OU (num == 3) OU (num == 5)) então 2, 3 e 5 são primos,
mas não passariam
escrever("É primo")
no teste
senão
testa
div = 2
divisibilidade
enquanto ((div < num/2) AND (resto ≠ 0)) fazer
resto = num % div
div = div + 1
fim fazer
se (resto ≠ 0) então
determina
escrever("É primo")
primalidade de
senão
acordo com o
resto
escrever("Não é primo")
fim se
fim se
fim programa
Questões
Download

fim - Prof. Ms. Claudio Benossi