Buscar

05 - Estruturas de controle (sentinela)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Repetição Controlada por Sentinela
Estruturas de Controle Aninhadas
Algoritmos e Programação I - Cátia Khouri & Fábio Moura
1
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
2
Uma estrutura de repetição pode ser controlada através de um contador
Como no exemplo na aula passada
Também pode ser controlada por uma sentinela
De acordo com essa técnica, um valor impossível é apresentado como o último dado a ser processado
Por exemplo, se serão processadas notas de alunos, uma sentinela seria uma nota negativa
Se serão processados números de matrícula, uma sentinela seria zero
2
Estudo de caso 2
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
3
Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas
Imagine que você tem uma relação das notas a serem processadas, mas
Você não sabe a quantidade delas
Acrescente uma nota fictícia no final da relação
Por exemplo, acrescente a nota -1
3
Estudo de caso 2
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
4
-1
7
8
6
8
7
9
O operador irá digitar as notas uma a uma
Quando for digitada a nota “-1”, significará que não há mais notas a serem digitadas (“entradas”), então o programa passará para outra fase.
4
Refinamento top-down
6/14/2012
Linguagem de Programação I - Estruturas de Controle
5
Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas
Topo:
Determine a média da turma
Função global do programa
5
Refinamento top-down
6/14/2012
Linguagem de Programação I - Estruturas de Controle
6
Refinamento
Cada refinamento, como o topo, é uma especificação completa do algoritmo:
Fase de inicialização
Fase de processamento
Fase de finalização
Inicializar variáveis
Receber os dados, somar e contar as notas
Calcular e imprimir a média da turma
6
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
7
Inicializar variáveis
Inicialize total com zero
Inicialize contador com zero
total
contador
0
0
Memória
7
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
8
Receber os dados, somar e contar as notas
Receba como entrada a primeira nota
(possivelmente a sentinela)
Enquanto ainda não digitou a sentinela
Some a nota ao total corrente
Some 1 ao contador de notas
Receba como entrada a próxima nota
(possivelmente a sentinela)
8
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
9
-1
Imagine que você tem uma pilha de provas com as notas
Em baixo da pilha, está uma prova com a nota -1
7
8
6
8
7
9
9
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
10
total
nota
xxx
contador
Enquanto usuário ainda não digitou sentinela:
	Some esta nota ao total corrente;
	Some um ao contador de notas;
	Receba como entrada a próxima nota; 	(possivelmente a sentinela)
Receba como entrada a primeira nota
(possivelmente a sentinela)
-1
7
8
6
8
7
9
0
0
9
9
1
7
16
2
8
24
3
6
30
4
8
38
5
7
45
6
-1
Não é sentinela !
Não é sentinela !
Não é sentinela !
Não é sentinela !
Não é sentinela !
Não é sentinela !
Sentinela !
Fim do laço !
10
Repetição controlada por sentinela
6/14/2012
Linguagem de Programação I - Estruturas de Controle
11
Calcular e imprimir a média da turma
Se contador não é igual a zero
Atribua à média o valor total dividido
pelo contador
Imprima a média
Se não
Imprima “Nenhuma nota foi fornecida”
total
45
contador
6
Memória
nota
-1
media
7
11
6/14/2012
Linguagem de Programação I - Estruturas de Controle
12
Inicialize total com zero
Inicialize contador com zero
Receba como entrada a primeira nota
Enquanto usuário ainda não digitou a sentinela
Some a nota ao total corrente
Some 1 ao contador de notas
Receba como entrada a próxima nota
Se o contador não é igual a zero
Atribua à média, total dividido pelo contador
Imprima a média
Se não
Imprima “Nenhuma nota foi fornecida”
12
Estudo de caso 3
Estruturas de controle aninhadas
6/14/2012
Linguagem de Programação I - Estruturas de Controle
13
Uma escola oferece um curso de Inglês para 10 estudantes que vão prestar exame para o Mestrado da USP
Após a realização do exame você recebe uma lista com o nome de cada aluno com o código ao lado:
1 - se o estudante foi aprovado
2 - se o estudante foi reprovado
13
Estudo de caso 3
Estruturas de controle aninhadas
6/14/2012
Linguagem de Programação I - Estruturas de Controle
14
Faça um programa que conte quantos estudantes foram aprovados e quantos reprovados.
Se o número de aprovados for maior do que 8, imprima a mensagem:
“Aumente o preço do curso!”
14
Observações
6/14/2012
Linguagem de Programação I - Estruturas de Controle
15
Serão processados 10 resultados
laço controlado por contador
Além do contador para controle do laço serão usados mais dois contadores:
 um para contar o número de aprovados; e 
 outro para o número de reprovados
Deve-se testar se mais de 8 foram aprovados
15
Topo
6/14/2012
Linguagem de Programação I - Estruturas de Controle
16
Analise os resultados do exame e decida se o preço deve ser aumentado
16
Refinamento
6/14/2012
Linguagem de Programação I - Estruturas de Controle
17
Inicialize as variáveis
Receba os 10 resultados como entrada e conte as aprovações e reprovações
Imprima um resumo dos resultados e decida se o preço deve ser aumentado
17
Inicialize as variáveis
6/14/2012
Linguagem de Programação I - Estruturas de Controle
18
Inicialize contador de estudantes com zero
Inicialize contador de aprovações com zero
Inicialize contador de reprovações com zero
cntEst = 0
cntAprov = 0
cntReprov = 0
18
Receba os 10 resultados como entrada e conte as aprovações e reprovações
6/14/2012
Linguagem de Programação I - Estruturas de Controle
19
Enquanto o contador de estudantes for menor que 10
Leia o próximo resultado
Some 1 a aprovações
Se não
Some 1 a reprovações
Se o estudante for aprovado
Some 1 ao contador de estudantes
Enquanto cntEst < 10:
 Leia próximo resultado
 Se resultado == 1:
 cntAprov=cntAprov+1
 Senão:
 cntReprov=cntReprov+1
 cntEst = cntEst+1
19
Imprima um resumo dos resultados e decida se o preço deve ser aumentado
6/14/2012
Linguagem de Programação I - Estruturas de Controle
20
Imprima o número de aprovações
Imprima o número de reprovações
Imprima “Aumente o preço do curso!”
Se o número de aprovações for maior que oito
Imprima “Número de aprovações: ”, cntAprov
Imprima “Número de reprovações: ”, cntReprov
Se cntAprov >= 8:
	Imprima “Aumente o preço do curso!”
20
6/14/2012
Linguagem de Programação I - Estruturas de Controle
21
Inicialize as variáveis
cntEst = 0
cntAprov = 0
cntReprov = 0
Receba os 10 resultados como entrada e conte as aprovações e reprovações
Enquanto cntEst < 10:
 Leia próximo resultado
 Se resultado == 1:
 cntAprov = cntAprov + 1
 Senão:
 cntReprov = cntReprov + 1
 cntEst = cntEst + 1
Imprima um resumo dos resultados e decida se o preço deve ser aumentado
Imprima “Número de aprovações: ”, cntAprov
Imprima “Número de reprovações: ”, cntReprov
Se cntAprov >= 8:
	Imprima “Aumente o preço do curso!”
21
Operadores de atribuição
6/14/2012
Linguagem de Programação I - Estruturas de Controle
22
c = c + 2	
x = x – 3	
w = w * 8
y = y/5	
a = a % 4	
c += 2 
x -= 3
w *= 8
y /= 5
a %= 4
22
Exercícios
6/14/2012
Linguagem de Programação I - Estruturas de Controle
23
Escreva programas em Python para:
Pedir três números inteiros ao usuário, mostrar o menor e o maior número
Pedir dois números inteiros ao usuário, mostrar se o primeiro número é ou não um múltiplo do segundo
Pedir um número de cinco dígitos ao usuário e imprimi-lo na vertical.
	Exemplo:
	Digite um número de 5 dígitos: 45623
	4
	5
	6
	2
	3
23
Exercícios (cont.)
6/14/2012
Linguagem de Programação I - Estruturas de Controle
24
Pedir uma nota ao usuário; a nota deve estar necessariamente entre 0.0 e 10.0, caso contrário deverá ser emitida uma mensagem de erro e solicitada
uma nova nota; imprimir “Aprovado” para nota maior ou igual a 7.0 e “Reprovado” para nota menor que 7.0
Modifique o programa anterior, de forma que seja impresso o conceito do aluno de acordo com os seguintes critérios:
	nota [9, 10] = “A”	nota [8, 9[ = “B”	 nota [7, 8[ = “C”
	nota [5, 7[ = “D”		nota [0, 5[ = “E”
Solicitar o salário base e o número de horas trabalhadas pelo funcionário; se o número de horas for menor ou igual a 40, o salário deverá ser igual ao salário base; caso contrário, o salário deverá ser igual ao salário base mais o número de horas extras vezes o valor da hora trabalhada com acréscimo de 25%; mostrar o valor final do salário
24
Exercícios (cont.)
6/14/2012
Linguagem de Programação I - Estruturas de Controle
25
Modificar o programa anterior para pedir o salário base da empresa e o número de horas trabalhadas por cada um de seus 10 funcionários; no final mostrar o valor total da folha de pagamento da empresa
Imprimir os números primos menores que 1000
25

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais