estruturas de repetição · para ← ate ... expoente) e retorne como resultado a potencia do...

36
Estruturas de Repetição Lógica de Programação Prof. Kleber Rezende

Upload: duongkien

Post on 03-Dec-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estruturas de Repetição

Lógica de Programação

Prof. Kleber Rezende

Page 2: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Uma das principais características

que consolidaram o sucesso na

utilização dos computadores para a

resolução de problemas foi a sua

capacidade de repetir o processa-

mento de um conjunto de opera-

ções para grandes quantidades de

dados.

Page 3: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Por exemplo, conside que uma determinada

loja de calçados efetue uma venda no

crediário para um cliente que ainda não esteja

registrado em seu sistema.

Para realizar essa venda, é necessário

cadastrar o cliente, solicitando informações

básicas como: nome, endereço, CPF, RG,

lojas do comércio onde já possui crédito, etc.

Page 4: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Estas etapas para realizar o cadastro,

seguirão sempre a mesma ordem para cada

novo cliente que aparecer na loja.

Caso seja necessário desenvolver um sistema

para efetuar os cadastros de clientes de uma

loja, não haveria lógica em programar

novamente essas etapas para cada cliente

novo.

Page 5: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Bastaria desenvolver uma única vez a

sequência de etapas e que, a cada novo

cliente, usar a sequência previamente

definida.

Outro exemplo que pode-se observar é o

cálculo das médias dos alunos de uma turma

qualquer.

Page 6: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Para calcular a média de um único aluno é necessário

que se some suas duas notas e divida o resultado

dessa soma por dois. Um algoritmo simples para o

cálculo da média de um aluno seria:

algoritmo "calculo_media"

var

real n1, n2, media

inicio

escreva("digite nota 1 e nota 2")

leia(n1, n2)

media ←(n1 + n2)/2

escreva("a media do aluno é ", media)

Fimalgoritmo

Page 7: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

Sendo necessário calcular as médias de

dois alunos, pode-se simplesmente

copiar as mesmas linhas de código e

colá-las no mesmo programa para o

cálculo da média do segundo aluno:

Page 8: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Considerações Iniciais

algoritmo "calculo_media"

var

real n1, n2, media

inicio

escreva("digite nota 1 e nota 2")

leia(n1, n2)

media ←(n1 + n2)/2

escreva("a media do aluno é ", media)

escreva("digite nota 1 e nota 2")

leia(n1, n2)

media ←(n1 + n2)/2

escreva("a media do aluno é ", media)

Fimalgoritmo

Page 9: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Tipos de Estruturas de Repetição

As 3 ESTRUTURAS DE REPETIÇÃO

que iremos estudar são:

1) PARA – FIMPARA

2) ENQUANTO – FIMENQUANTO

3) FAÇA – ENQUANTO

Page 10: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

A estrutura de repetição PARA – FIMPARA é utilizada

sempre que temos condições de estabelecer a

QUANTIDADE de vezes que uma determinada

sequência de operações deva ser executada.

Por exemplo, na situação de cálculo de médias dos

alunos, sabemos que o número de alunos da turma é

de 50 (mesmo não conhecendo esse valor de

antemão, temos condições de solicitá-lo ao usuário).

Dessa maneira podemos definir com exatidão o

número de vezes que precisaremos calcular a média

de alunos.

Page 11: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

A estrutura de repetição PARA - FIMPARA é utilizada

da seguinte maneira:

PARA <variavel inteira> ← <valor inicial> ATE <valor final>

passo de <incremento>

Comando 1

Comando 2

Comando N

FIMPARA

Page 12: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Onde a <variável inteira> será um contador que marcará em qual

iteração a estrutura de repetição se encontra.

O <valor inicial> é o valor em que o contador irá começar a

contagem, e <valor final> é o valor onde o contador irá parar a

execução.

A cada iteração o contador (<variável inteira>) será incrementado

(aumentado) em <incremento> unidades.

E quando esse contador atingir o mesmo valor que o <valor

final> a estrutura de repetição chega ao final.

PARA <variavel inteira> ← <valor inicial> ATE <valor final>

passo de <incremento>

...

FIMPARA

Page 13: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Caso se deseje escrever 20 vezes uma

frase na tela, utiliza-se a estrutura de

repetição PARA – FIMPARA, iniciando

um contador em 1 e indicando que a

repetição deva acontecer até que esse

contador chegue ao número 20.

Page 14: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Veja o exemplo a seguir:

algoritmo "imprime_frase"

var

cadeia frase

inteiro cont

inicio

frase ← "escreva-me 20 vezes"

para cont ← 1 ate 20 passo de 1

escreva(frase)

fimpara

Fimalgoritmo

Page 15: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Em C, faríamos assim:

main()

{

char frase[51];

int cont;

strcpy (frase, "escreva-me 20 vezes\n");

for (cont = 1; cont <= 20; cont = cont + 1)

{

printf("%s", frase);

}

}

Page 16: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

O comando cont = cont + 1 pode ser substituído por

cont++. Assim, poderíamos ter:

main()

{

char frase[51];

int cont;

strcpy (frase, "escreva-me 20 vezes\n");

for (cont = 1; cont <= 20; cont++)

{

printf("%s", frase);

}

}

Page 17: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

A execução do algoritmo anterior traria como resultado

uma tela semelhante a que está sendo mostrada a

seguir:

Page 18: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

Fluxograma

frase ← "escreva-me 20 vezes"

Início

cont <= 20?

Fim

Escreva frase

Verdadeiro

Falso

cont ← 1

cont ← cont + 1

Page 19: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Como comentado anteriormente, a variável que

representa o contador é incrementada em cada

iteração (no exemplo anterior a variável cont

representa o contador).

Dessa forma, na 1ª iteração ela possui o valor 1,

na 2ª iteração o valor 2, e assim sucessiva-

mente até que ela chegue ao valor 20.

Page 20: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Observe o exemplo a seguir:

algoritmo "imprime_frase"

variavel

cadeia frase

inteiro cont

inicio

frase ← "a vez"

para cont ← 1 ate 20 passo de 1

escreva(cont, frase)

fimpara

Fimalgoritmo

Page 21: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

O código mostrado anteriormente apresentaria

a seguinte tela como resultado de sua

execução:

Page 22: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Conhecendo os detalhes de utilização dessa estrutura

podemos tentar solucionar o problema do cálculo da

média dos 50 alunos de uma turma.

O primeiro passo é definir como seria o

processamento para um único aluno.

Considerando que necessitamos solicitar as duas

notas e calcular a média dessas notas, teríamos o

seguinte processamento:

escreva("digite nota 1 e nota 2 do aluno 1")

leia(n1, n2)

media ←(n1 + n2)/2

escreval("a media do aluno é ", media)

Page 23: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Para que esse trecho de código seja

executado 50 vezes, é necessário que

utilizemos alguma estrutura de repetição.

Nesse caso utilizaremos a estrutura PARA –

FIMPARA.

Necessitamos de uma variável que assuma o

papel de contador, e devemos fazer com que

essa variável comece com o valor 1 e termine

com o valor 50.

Page 24: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Vejamos o algoritmo a seguir:

algoritmo “calcule_media"

variavel

real n1, n2, media

inteiro cont

inicio

para cont ← 1 ate 50 passo de 1

escreva("digite nota 1 e nota 2 do aluno ", cont)

leia(n1, n2)

media ← (n1 + n2)/2

escreva("a media do aluno é", media)

fimpara

Fimalgoritmo

Page 25: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Os valores do início e do final da iteração

podem também ser definidos em tempo de

execução por meio de variáveis.

Por exemplo, considere que a princípio não

saibamos quantos são os alunos de uma

turma.

Page 26: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Dessa maneira, podemos solicitar ao usuário

o número de alunos (Nalunos), e utilizar essa

variável como o valor de limite para a iteração.

Comparando com o algoritmo anterior, ao

invés de utilizarmos o valor 50 utilizaremos

uma variável que contenha o número de

alunos da turma (Nalunos).

Page 27: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Veja o trecho de código a seguir:

algoritmo “calcule_media"

variavel

real n1, n2, media

inteiro cont, nalunos

inicio

escreva("digite o número de alunos da turma")

leia(nalunos)

para cont ← 1 ate nalunos passo de 1

escreva("digite nota 1 e nota 2 do aluno ", cont)

leia(n1, n2)

media ← (n1 + n2)/2

escreva("a media do aluno é", media)

fimpara

Fimalgoritmo

Page 28: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Os exemplos vistos anteriormente utilizam

uma ordem crescente para incrementar o

contador, ou seja, a iteração varia de um

número menor até alcançar um número maior.

Também é possível que façamos de traz para

frente, ou em ordem decrescente. Por

exemplo, suponha que desejamos escrever os

números de 20 até 1.

Page 29: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Para esse tipo de problema podemos utilizar a

estrutura de repetição PARA FACA

especificando que o PASSO para o algoritmo

é decrescente, ou melhor, -1.

Veja o exemplo a seguir: algoritmo "imprime_palavra"

variavel

inteiro cont

inicio

para cont ← 20 ate 1 passo de -1

escreva(cont)

fimpara

Fimalgoritmo

Page 30: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

Estrutura de Repetição

PARA - FIMPARA

Em C, seria:

main()

{

int cont;

for (cont = 20; cont >= 1; cont = cont - 1)

// ou for (cont = 20; cont >= 1; cont--)

{

printf("%d\n", cont);

}

}

Page 31: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios Exercícios utilizando somente a estrutura de repetição

PARA - FIMPARA

1) Elabore um algoritmo que imprima todos os números de 1 até

100.

2) Elabore um algoritmo que imprima todos os números de 100

até 1.

3) Elabore um algoritmo que imprima todos os números de 250 a

500.

4) Elabore um algoritmo que imprima todos os números pares de

1 até 100.

5) Elabore um algoritmo que leia um valor (n) de entrada que

indicará a quantidade de números a serem lidos. Em seguida,

leia n números (conforme o valor informado anteriormente) e

imprima o triplo de cada um.

Page 32: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios Exercício utilizando a estrutura de condição SE

ENTAO FIMSE dentro da estrutura de repetição

PARA FACA FIMPARA

1) Elabore um algoritmo que leia nome, idade e sexo de 20

pessoas. Imprimir o nome, se a pessoa for do sexo

masculino, e tiver mais de 21 anos.

Exercícios de repetição que calculam somatórios e/ou

produtórios

1) Elabore um algoritmo que imprima todos os números de 100 a

200, e ao final, imprima também, a soma deles.

2) Elabore um algoritmo que leia um valor inteiro e imprima todos

os números de 1 até o valor lido, e também o seu produto.

Exemplo: Número: 3 Saída: 1 2 3 Produto: 6

Page 33: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios

3) Construir um algoritmo que calcule o fatorial de um número.

4) Construir um algoritmo que leia dois números (BASE e

EXPOENTE) e retorne como resultado a POTENCIA do cálculo

da BASE elevado ao EXPOENTE.

Ex: para a BASE = 2 e EXPOENTE = 4, POTENCIA = 24 = 16

5) Elabore um algoritmo que imprima a tabuada de um número

que será informado pelo usuário.

6) Elabore um algoritmo que leia 30 números, e imprima quantos

números maiores que 30 foram digitados.

Page 34: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios

Exercícios de repetição que calculam somatórios e/ou

produtos e que utilizam a estrutura de condição SE

ENTAO FIMSE dentro da estrutura de repetição

PARA FACA FIMPARA

1) Elabore um algoritmo que leia um valor inteiro e imprima a

soma dos números múltiplos de 5 no intervalo entre 1 e o valor

informado. Suponha que o valor lido será maior que zero.

2) Elabore um algoritmo que leia 20 números, e ao final, imprima

a média desses números.

3) Elabore um algoritmo que leia 200 números, e imprima

quantos são pares e quantos são ímpares.

Page 35: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios

Exercícios de repetição para localizar determinados

valores dentro de um conjunto

1) Elabore um algoritmo que leia um número de entrada que

indicará a quantidade de números a serem lidos. Em seguida,

leia n números (conforme o valor informado anteriormente) e, ao

final imprima o maior número digitado.

2) Elabore um algoritmo que leia um número de entrada que

indicará a quantidade de números a serem lidos. Em seguida,

leia n números (conforme o valor informado anteriormente) e, ao

final imprima o menor número digitado.

3) Elabore um algoritmo que leia um número de entrada que

indicará a quantidade de números a serem lidos. Em seguida,

leia n números (conforme o valor informado anteriormente) e, ao

final imprima o maior, menor, e a média dos números digitados.

Page 36: Estruturas de Repetição · PARA  ←  ATE ... EXPOENTE) e retorne como resultado a POTENCIA do ... para a BASE = 2 4e EXPOENTE = 4,

PARA – FIMPARA

Exercícios

Exercício utilizando a estrutura de repetição PARA

FACA – FIMPARA aninhada.

1) Elabore um algoritmo que imprima a tabuada de 1 a 10.