25
Algoritmos e Estruturas de Dados I Algoritmos com Repetição Profa. Márcia Cristina Moraes Profa. Milene Selbach Silveira Prof. Iara C. de Almeida Material para estudo : Forbellone, A. e Eberspächer, H. (2005) capítulo 3 (estrutura de repetição) a sintaxe utilizada em nossos algoritmos será diferenciada em alguns poucos detalhes, mas a lógica é a mesma

Algoritmos e Estruturas de Dados A

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmos e Estruturas de Dados A

Algoritmos e

Estruturas de Dados I

Algoritmos com RepetiçãoProfa. Márcia Cristina Moraes

Profa. Milene Selbach Silveira

Prof. Iara C. de Almeida

Material para estudo:

Forbellone, A. e Eberspächer, H. (2005)

capítulo 3 (estrutura de repetição)

a sintaxe utilizada em nossos algoritmos será diferenciada

em alguns poucos detalhes, mas a lógica é a mesma

Page 2: Algoritmos e Estruturas de Dados A

Calcular média das notas de aluno

Algoritmo Média

inteiro: num

real: n1, n2, n3, m

Início

escreva(“Informe seu número de matrícula e suas três notas”)

leia(num, n1, n2, n3)

m ←(n1 + n2 + n3)/3

escreva(“Média = ”, m)

Fim

Como calcular a média das notas de 30 alunos ?

Solução simplista: executar 30 vezes este algoritmo

Solução correta: trabalhar com algoritmo de repetição!

Page 3: Algoritmos e Estruturas de Dados A

Algoritmos com Repetição

Algoritmos que repetem uma ou mais

instruções.

Todo o algoritmo que tem a execução de um

ou mais de seus passos repetido duas ou

mais vezes é denominado de algoritmo de

repetição (Orth, 2001).

Page 4: Algoritmos e Estruturas de Dados A

Algoritmo com Repetição -

Enquanto

Sempre que quisermos realizar uma

instrução ou uma sequência de instruções

mais de uma vez, necessitamos de uma

instrução de repetição.

Sequência de Instruções:

1 ou mais instruções quaisquer

Enquanto <condição> faça

Início

<sequencia de instruções>

Fim

Page 5: Algoritmos e Estruturas de Dados A

Também é preciso uma variável que conte

quantas vezes é executada a “sequência de

passos” que se pretende repetir

Esta variável contador deve

receber um valor inicial,

ser incrementada sempre que “a sequência de

passos foi repetida”, e

ser comparada ao valor final

Algoritmo com Repetição

Variável Contador

Page 6: Algoritmos e Estruturas de Dados A

Também é preciso uma variável que conte

quantas vezes é executada a “sequência de

passos” que se pretende repetir

Esta variável contador deve

receber um valor inicial permite iniciar a contagem

ser incrementada sempre que “a sequência de

passos foi repetida” permite contar n vezes

ser comparada ao valor final permite finalizar a

contagem

Algoritmo com Repetição

Variável Contador

Page 7: Algoritmos e Estruturas de Dados A

Exemplo

Algoritmo Média

inteiro: num, cont

real: n1, n2, n3, m

Início

cont 0 {inicialização do contador}

enquanto (cont < 30) faça

Início

escreva (“Informe seu número de matrícula e suas três notas”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = ”, m)

cont cont + 1 {incremento do contador}

Fim

Fim

Page 8: Algoritmos e Estruturas de Dados A

Exercício 1

Faça um algoritmo que leia 20 pares de

valores a e b, e para cada par de valores

lido escreve qual é o maior valor.

SUGESTÃO

(1) especificar um algoritmo para determinar o maior de

um par de valores

… e, só depois,

(2) verificar o que é preciso para repetir 20 vezes os

passos definidos em (1)

Page 9: Algoritmos e Estruturas de Dados A

Exercício 2

Escreva um algoritmo que lê um número

inteiro n. Calcule e escreva a tabuada (de

1 a 10) deste número

Page 10: Algoritmos e Estruturas de Dados A

No exemplo anterior, caso se queira saber ao final a

média geral desta turma, deve-se se utilizar o conceito

de variável acumulador.

Variável acumulador é qualquer variável que recebe

um valor inicial constante e é incrementada em algum

outro ponto do algoritmo de um valor variável.

soma 0

....

...

soma soma + valor

Exemplo:

Inicialização da variável acumulador

Incremento da variável acumulador de

um valor variável

Algoritmo com Repetição

Variável Acumulador

Page 11: Algoritmos e Estruturas de Dados A

Exemplo

Algoritmo MédiaGeral

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

cont 0 {inicialização do contador}

soma 0 {inicialização do acumulador}

enquanto (cont < 30) faça

Início

escreva(“Informe seu número de matrícula e suas três notas”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m {incremento do acumulador}

cont cont + 1 {incremento do contador}

Fim

mg soma/30 {calcula média DEPOIS do laço}

escreva(“Media Geral = “, mg)

Fim

Page 12: Algoritmos e Estruturas de Dados A

Exercício 3

Escrever um algoritmo que lê o código e o

valor de 25 produtos e calcula e apresenta o

valor total a ser pago por eles.

Page 13: Algoritmos e Estruturas de Dados A

Exercício 4

Escrever um algoritmo que lê um número n e

calcula o somatório de n. Por exemplo:

S = 1 + 2 + 3 + 4 + ... + n.

Ao final do cálculo, escrever o valor do

somatório calculado.

Page 14: Algoritmos e Estruturas de Dados A

Algoritmo com Repetição –

Enquanto com número desconhecido

de repetições

No exemplo anterior sabíamos exatamente o

número de vezes que o laço de repetição

deveria ocorrer, mas existem casos em que o

número de repetição pode estar

condicionado a um valor de entrada.

Por exemplo: ler um conjunto não

determinado de números de alunos. O

algoritmo deve parar quando o número do

aluno for um número negativo.

Page 15: Algoritmos e Estruturas de Dados A

Algoritmo MédiaGeralCondicional

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

soma 0 {inicialização do acumulador}

cont 0 {inicialização do contador}

escreva(“Informe seu número de matrícula”)

leia(num) {leitura da matrícula do aluno ANTES}

enquanto (num > 0) faça {número de aluno válido? Continua!}

Início

escreva(“Informe suas três notas”)

leia(n1,n2,n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m {incremento do acumulador}

cont cont + 1 {incremento do contador}

escreva(“Informe seu número de matrícula”)

leia(num) {novo aluno}

Fim

mg soma/cont

escreva(“Media Geral = “, mg)

Fim

Exemplo

Page 16: Algoritmos e Estruturas de Dados A

Comparação dos Algoritmos

Enquanto Contado Enquanto Condicional

Algoritmo MédiaGeralCONTADA

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

cont 0

soma 0

enquanto (cont < 30) faça

Início

escreva(“Informe....”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m

cont cont + 1

Fim

mg soma/30

escreva(“Media Geral = “, mg)

Fim

Algoritmo MédiaGeralCONDICIONAL

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

soma 0

cont 0

escreva(“Informe seu número...”)

leia(num)

enquanto (num > 0) faça

Início

escreva(“Informe... notas”)

leia(n1,n2,n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m

cont cont + 1

escreva(“Informe seu número...”)

leia(num)

Fim

mg soma/cont

escreva(“Media Geral = “, mg)

Fim

Page 17: Algoritmos e Estruturas de Dados A

Exercício 5

Faça um algoritmo que lê uma quantidade

não determinada de valores e verifica qual o

maior e qual o menor valor digitados. O

algoritmo pára quando for digitado o valor 0

(zero).

Page 18: Algoritmos e Estruturas de Dados A

Algoritmo com Repetição -

Para

Outra forma de repetição…

Para variável de Exp1 até Exp2 [passo Exp3]

Início

<instruções>

Fim

Variável: variável de controle

Exp1, Exp2, Exp3 são constantes ou expressões aritméticas

Exp1 representa o valor inicial

Exp2 representa o valor final

Exp3 representa o valor a ser incrementado a cada iteração. Se não for especificado

este item, assume-se o valor 1

Page 19: Algoritmos e Estruturas de Dados A

Algoritmo com Repetição -

Para

Na instrução “Para” ocorrem 3 passos:

1) inicialização da variável de controle com o valor inicial igual a Exp1

2) um teste que verifica se o valor da variável de controle já ultrapassou o seu valor final indicado em Exp2

3) a cada nova repetição ocorrerá um incremento da variável de controle de um valor igual ao que esta estabelecido em Exp3 ou de 1 caso não tenha esta especificação

Page 20: Algoritmos e Estruturas de Dados A

Exemplos

Para i de 1 até 5

Início

Instruções

Fim

A cada repetição ocorre o incremento de 1 na

variável i

Para x de a até b passo 2

Início

Instruções

Fim

Para i de n até 1 passo -1

Início

Instruções

Fim

Quando o incremento é negativo o

teste é sempre se o valor da

variável é menor do que o valor

final especificado

A cada repetição ocorre o incremento

de 2 na variável x

Page 21: Algoritmos e Estruturas de Dados A

Exemplo

Algoritmo MédiaGeralPARA

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

soma 0

Para cont de 1 até 30

Início

escreva(“Informe...”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m

Fim

mg soma/30

escrever(“Media Geral = “, mg)

Fim

Qual o valor de cont

após o laço de

repetição?

Page 22: Algoritmos e Estruturas de Dados A

Exercício

Modifique os exercícios 1, 2 e 3 para que

eles sejam realizados com a instrução Para.

Page 23: Algoritmos e Estruturas de Dados A

Algoritmo com Repetição -

Repita

Além do “Enquanto” e do “Para” podemos

ainda usar o “Repita”

Repita

Inicio

<instruções>

Fim

até <condição>

Page 24: Algoritmos e Estruturas de Dados A

Exemplo

Algoritmo MédiaGeralPARA

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

cont 0

soma 0

Repita

Inicio

escreva(“Informe...”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m

cont cont + 1

Fim

Até cont == 30

mg soma/30

escrever(“Media Geral = “, mg)

Fim

Enquanto Contado

Algoritmo MédiaGeralCONTADA

inteiro: num, cont

real: n1, n2, n3, m, mg, soma

Início

cont 0

soma 0

Enquanto (cont < 30) faça

Início

escreva(“Informe....”)

leia(num, n1, n2, n3)

m (n1 + n2 + n3)/3

escreva(“Média = “, m)

soma soma + m

cont cont + 1

Fim

mg soma/30

escreva(“Media Geral = “, mg)

Fim

Repita

Page 25: Algoritmos e Estruturas de Dados A

Bibliografia

Orth, Afonso Inácio. Algoritmos e

Programação. Editora AIO. 2001.

Forbellone, A. e Eberspacher, H. Lógica

de Programação: A Construção de

Algoritmos e Estruturas de Dados.

Makron Books, São Paulo, 3ª edição.

2005.