Você está na página 1de 34

Programação de Computadores

Semana 5: Lidando com Repetições no Programa


Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Programa do Curso
Tópico 1: Lógica de Programação – Algoritmos e Estruturas Básicas de Programa

Tópico 2: Lógica de Programação – Estruturas de Dados

Tópico 3: Lógica de Programação - Lidando com escolhas no programa

Tópico 4: Lógica de Programação - Lidando com repetições no programa

Tópico 5: Projetando a Interação com o Usuário

Tópico 6: Persistência de Dados em Arquivos

Tópico 7: Modularização e Organização do programa: Orientação a Objetos

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Agenda da Semana
» Parte 1: Lidando com Repetições nos Programas
• O que são e para que servem

» Parte 2: As nossas opções


• para ... até
• enquanto ... faça
• repita .. Até

» Parte 3: Repetições em Linguagem de Programação


• for / while / do while
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Treinando o 1. Faça um programa que leia dois
IF/ELSE números A e B e imprima o maior
deles.
Desafio Anterior:
Corrigindo os programas ao
lado 2. Faça um programa que leia os
valores A, B e C. Mostre uma
mensagem que informe se a soma de A
com B é menor, maior ou igual a C.

3. Construa um programa que receba


como entrada três valores A, B e C
e os imprima em ordem crescente.

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Não Terminou? Faça mais uma vez O que são?
Para que servem?

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Uma revendedora de carros usados paga a seus
Ponto de Partida vendedores um salário fixo por mês, mais uma
Desafio: comissão também fixa para cada carro vendido
Faça um programa ou e mais 5% do valor das vendas realizadas por
algoritmo do programa ao ele.
lado
Escreva um algoritmo que leia o número de
carros vendidos por um vendedor, o valor total
de suas vendas, o salário fixo e o valor que ele
recebe por carro vendido e calcule o seu salário.
Ao final o algoritmo deve escrever o salário final
do vendedor.
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
algoritmo
declare salario, comissao, vendas numerico
Ponto de Partida salarioFinal, carVendidos numerico
escreva “Digite a quantidade de carros vendidos: ”
Desafio: leia carVendidos
Faça um programa ou escreva “Digite o total de vendas (R$) : ”
algoritmo do programa ao leia vendas
lado escreva “Digite o salário fixo (R$) : ”
leia salario
escreva “Digite a comissão p/ venda (R$) : ”
leia comissao
salarioFinal <- carVendidos * comissao
+ vendas * 0.05
+ salario
escreva “O salário final: ”, salarioFinal
fim_algoritmo
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Não Terminou? Faça mais uma vez
E se precisássemos calcular o salário de 10 vendedores?
Como fazer o programa?
[ ] criar variáveis salário, vendas, comissão para cada um dos 10 vendedores
[ ] achar um outro jeito menos trabalhoso de fazer isso
• Muitos problemas exigem que se realize uma mesma atividade várias vezes até
que se “encontre” uma condição
• São situações comuns em problemas de computação e exige um tipo diferente
de estrutura de programação: estruturas de repetição

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Não Terminou? Faça mais uma vez
• Estruturas de programação que permitem ao programa repetir um um
conjunto de ações até que uma condição seja atingida

𝑣𝑒𝑛𝑑𝑒𝑑𝑜𝑟 + 1

Não
Inicio 𝑣𝑒𝑛𝑑𝑒𝑑𝑜𝑟 = 1 𝑣𝑒𝑛𝑑𝑒𝑑𝑜𝑟 = 10? 𝑙𝑒𝑖𝑎 𝑠𝑎𝑙𝑎𝑟𝑖𝑜 𝑐𝑎𝑙𝑐𝑢𝑙𝑒 𝑜 𝑠𝑎𝑙á𝑟𝑖𝑜

Sim

Fim

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Não Terminou? Faça mais uma vez
» Por que não usar só Estruturas Condicionais?
• Semelhança: assim como as estruturas condicionais as
estruturas de repetição realizam o teste de uma condição para
realizar um conjunto de ações
• Diferenças:
› Necessidade de executar a mesma operação várias vezes
› Ideia de continuidade: o teste da condição deve ser realizado até que
uma condição seja atingida

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Como funciona uma repetição?
algoritmo
• Temos uma Variável de controle: declare a numerico
variável que é testada para identificar a ...
parada da repetição a <- 0
• Condição de parada: condição que testa enquanto a < 10 faça
a Variável de Controle para a execução ação 1
ou não de mais um ciclo da repetição ação 2
(iteração) ...
• Bloco de comandos: ações executadas a <- a + 1
repetidamente enquanto a condição de fim_enquanto
parada não é atendida ...
fim_algoritmo

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
A Importância da Variável de Controle
Faz sentido comparar dois números enquanto 5 < 10 faça
diretamente? escreva “teste”
fim_enquanto
Ou nunca repete ou fica eternamente na
repetição (loop infinito)

a <- 5
Faz sentido comparar uma variável que enquanto a < 10 faça
nunca muda? escreva “teste”
Ou nunca repete ou fica eternamente na fim_enquanto
repetição (loop infinito)

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
A Variável de Controle
a <- 5
» A variável de controle precisa: enquanto a < 10 faça
• De um valor inicial atribuído ANTES da escreva “teste”
estrutura de repetição iniciar a <- a + 1
fim_enquanto
• Ser comparada na condição de parada
• Ser alterada dentro da estrutura de v <- “s”
repetição enquanto v = “s” faça
› Pode ser alterada por uma função matemática escreva “teste”
(como a incrementação) leia v
› Alterada por uma entrada do usuário fim_enquanto

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
As nossas opções
Estrutura ENQUANTO
Estrutura REPITA
Estrutura PARA

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura ENQUANTO
Funcionamento 𝐸𝑛𝑡𝑟𝑎𝑟 𝑛𝑜 𝐸𝑛𝑞𝑢𝑎𝑛𝑡𝑜

• Avalia se a condição de parada é


verdadeira e, caso seja, executa Não 𝐶𝑜𝑛𝑑𝑖çã𝑜
𝑣𝑒𝑟𝑑𝑎𝑑𝑒𝑖𝑟𝑎?
as ações que se encontram no
bloco de comando
Sim
• Ao terminar a execução do
bloco retorna novamente ao 𝐴çã𝑜
teste da condição de parada
• Realiza o procedimento até que
o teste seja falso 𝑆𝑎𝑖𝑟 𝑑𝑜 𝐸𝑛𝑞𝑢𝑎𝑛𝑡𝑜

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura ENQUANTO
» Funcionamento
• Avalia se a condição é verdadeira e, caso
seja, executa as ações que se encontram
entre o enquanto e o fim enquanto condição faca
• Ao chegar ao FIM volta à linha inicio
ENQUANTO e testa novamente.
ação 1
» Cuidados ação 2
• O valor inicial da variável de controle é ação 3
muito importante pois determina se ele fim
entra ou não na estrutura de repetição

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Treinamento algoritmo
Estrutura ENQUANTO
declare numero inteiro
Desafio:
escreva “digite um número: ”
Faça o pseudocódigo de um
algoritmo no qual o usuário leia numero
digite um número inteiro e o enquanto numero <= 10 faca
algoritmo imprima o texto
“teste” até que esse número inicio
seja maior que 10 variando de escreva “teste”
um em um
numero <- numero + 1
fim
fim_algoritmo

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura REPITA
𝐸𝑛𝑡𝑟𝑎𝑟 𝑛𝑜 𝑅𝑒𝑝𝑖𝑡𝑎
Funcionamento
• Executa as ações que se 𝐴çã𝑜
encontram no bloco de comando
• Avalia se a condição de parada é
Não
verdadeira e, caso seja, retorna 𝐶𝑜𝑛𝑑𝑖çã𝑜
𝑓𝑎𝑙𝑠𝑎?
novamente ao inícios do bloco de
comando Sim
• Realiza o procedimento enquanto 𝑆𝑎𝑖𝑟 𝑑𝑎 𝑅𝑒𝑝𝑒𝑡𝑖çã𝑜
o teste seja verdadeiro

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura REPITA
Funcionamento
• Executa, pelo menos uma vez, o bloco de
comandos
repita
• Ao chegar a linha do ENQUANTO e avalia se
a condição de parada é falsa. ação 1
ação 2
• Caso seja verdadeira, retorna à linha REPITA
executa novamente as ações ação 3
enquanto condição
Cuidados
• O bloco de comandos é executado uma vez
mesmo se a condição não for satisfeita
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Treinamento
Estrutura REPITA algoritmo
Desafio: declare numero numerico
Faça o pseudocódigo de um escreva “digite um número: ”
algoritmo no qual o usuário
digite um número e o algoritmo leia numero
imprima todos os números repita
deste número até 1000
variando de um em um usando escreva numero
a estrutura repita numero <- numero + 1
enquanto numero < 1000
fim_algoritmo

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura PARA
Funcionamento
• Lógica diferente: condição inicial da variável de controle, a condição de
parada e a alteração da variável de controle prédefinidas.
• A variável de controle varia de inicio até o valor de parada variando de
acordo com o incremento
para variavel <- inicio ate parada faca
inicio
ação 1
ação 2
fim
• Utilizado quando se sabe, antes de se começar a repetição, quando ele inicia e
quando ele termina.
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Treinamento
Estrutura PARA

Desafio: algoritmo
declare controle, numero inteiro
Faça o pseudocódigo de um
algoritmo no qual o usuário escreva “digite um número: ”
digite um número e o algoritmo leia numero
imprima todos os números de para controle <- 1000 ate numero faca
1000 até que esse número inicio
variando de um em um com a
escreva controle
estrutura para
fim
fim_algoritmo

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura PARA
O incremento
• A Estrutura PARA atualiza, automaticamente, a variável com com o
incremento definido no PASSO
variavel <- variavel + incremento
• Se o numero no incremento for negativo então ...
variavel <- variavel - incremento
• Caso o passo seja igual a somar 1 ele não precisa ser escrito na linha
para variavel <- inicio ate parada faca
inicio
...
fim
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Resumo
Tipo ENQUANTO REPITA PARA
Condição de Repete enquanto Repete enquanto condição Repete enquanto condição
Parada condição for verdadeira for verdadeira for verdadeira

Variável de Programador precisa Programador precisa Condição inicial definidos e


controle informar a condição informar a condição inicial e passo atualizado
inicial e como será como será alterada automaticamente
alterada
Quando usar Usado quando não se Usado quando não se sabe a Usado quando se sabe a
sabe a quantidade de quantidade de repetições quantidade de repetições
repetições do loop do loop mas se deseja do loop
executá-lo ao menos uma
vez
Disciplina de Programação de Computadores
Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estruturas de
Usando Linguagens de Programação Repetição em
Java e C#

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura ENQUANTO
Pseudocodigo Java e C#
enquanto condição faca while (condição)
inicio {
... ...
fim }

Exemplo: Exemplo:
numero <- 1 numero = 1;
enquanto numero < 10 faca while (numero < 10)
inicio {
numero <- numero + 1 numero = numero + 1;
fim }

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura REPITA
Pseudocodigo Java e C#
repita do {
... ...
equanto condição } while (condição);

Exemplo: Exemplo:
numero <- 1 numero = 1;
repita do {
numero <- numero + 1 numero = numero + 1;
equanto numero <= 10 } while (numero <= 10);

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Estrutura PARA
Pseudocodigo Java e C#
para v <- inicio ate parada faca for ( v = inicio; v<=parada; v++)
inicio {
... ...
fim }

Exemplo: Exemplo:
para n <- 1 ate 10 faca for(n = 1; n <= 10; n = n + 1)
inicio {

fim }

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Entrada de um número

Problemas Comuns
definido de dados
Entrada de um número
definido de dados
Acumulando uma variável

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Entrada de Dados
Quantidade Fixa de Entradas
ALGORITMO
Problema DECLARE i, numero INTEIRO
Algoritmos que precisam receber uma
...
quantidade fixa de dados de entrada de
forma repetitiva. PARA i DE 1 ATÉ 10 FAÇA
ESCREVA(“Digite um número: ”)
Pontos-chave
LEIA(numero)
Operação de leitura deve ficar dentro da
ESCREVA(numero)
estrutura de repetição
FIM_PARA
Exemplo ...
Um algoritmo no qual o usuário precisa
FIM_ALGORITMO
digitar dez números em sequencia

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Entrada de Dados
Quantidade Indeterminada de Entradas ALGORITMO
Problema DECLARE numero INTEIRO
Algoritmos que precisam receber uma ...
quantidade indeterminada de dados de entrada numero <- -1
de forma repetitiva. ENQUANTO (numero ≠ 0) FAÇA
Pontos-chave ESCREVA(“Digite um número: ”)
O uso da estrutura ENQUANTO ou REPITA LEIA(numero)
A variável de controle deve ter um valor inicial ESCREVA(numero)
diferente da condição de parada FIM_PARA
Exemplo ...
Um algoritmo no qual o usuário precisa FIM_ALGORITMO
números até que ele digite 0

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Acumulação
O somatório / produtório ... ALGORITMO
DECLARE soma, numero INTEIRO
Problema ...
Algoritmos que precisam acumular o valor dos
soma <- 0
dados recebendo um número por vez.
PARA i DE 1 ATÉ 10 FAÇA
Pontos-chave ESCREVA(“Digite um número: ”)
Criar uma variável para receber o valor LEIA(numero)
acumulado
soma <- soma + numero
Iniciar o valor dessa variável com 0
FIM_PARA
A cada iteração, acumular o valor da entrada
ESCREVA(soma)
com o que a variável já possui
...
Exemplo FIM_ALGORITMO
Um algoritmo no qual o usuário precisa calcular o
somatório de 10 números digitados pelo usuário

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Repetição Aninhada algoritmo
Estruturas de repetição internas declare i, j inteiro
Problema ...
Algoritmos que precisam realizar várias o para i de 1 até 10 faça
processo de repetição. inicio
Pontos-chave para j de 1 até 10 faça
Criar duas variáveis de controle diferentes inicio
Criar duas estruturas de repetição, uma interna escreva ( i * j )
a outra. fim
Utilizar as variáveis de controle corretamente fim
Exemplo escreva(soma)
Um algoritmo no qual o usuário precisa imprimir a ...
tabuada dos 10 primeiros números naturais fimalgoritmo

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)
Referências
Capitulo 5 (Estruturas de Repetição)
Fundamentos da Programação de Computadores
Ana Fernanda Gomes ASCENCIO, Edilene CAMPOS
Editora Pearson (2012)

Disciplina de Programação de Computadores


Prof. Flávio A. R. Calado (flavio.calado@prof.una.br)