estruturas de repetição

41
INTRODUÇÃO À PROGRAMAÇÃO Estruturas de Controlo 1

Upload: catia-sousa

Post on 07-Mar-2016

233 views

Category:

Documents


7 download

DESCRIPTION

aplicações informáticas b

TRANSCRIPT

Page 1: Estruturas de Repetição

INTRODUÇÃO À PROGRAMAÇÃOEstruturas de Controlo

1

Page 2: Estruturas de Repetição

Estruturas de repetição controladas por uma condição As estruturas de repetição controladas

por condições, ou expressões lógicas, podem apresentar duas variantes principais: estrutura de repetição com a condição de

controlo no início do ciclo; estrutura de repetição com a condição de

controlo no final do ciclo.

2

Page 3: Estruturas de Repetição

Estrutura de repetição com a condição de controlo no fim do ciclo

Estruturas de repetição controladas por uma condição3

Page 4: Estruturas de Repetição

Estrutura “Repeat … Until”

A palavra que indica o início do ciclo é a palavra “Repetir”. Segue-se um conjunto ou bloco de instruções que deverá ser executado até que a condição ou expressão lógica assuma o valor Verdadeiro (V).

Como esta condição ou expressão é avaliada somente no final da estrutura, isso implica que as instruções nela indicadas serão executadas pelo menos uma vez.

Pode acontecer que a condição de controlo nunca possa assumir valores que determinem o fim do ciclo – nestes casos podemos estar perante um ciclo infinito.

4

Page 5: Estruturas de Repetição

Exemplo 1 5

Algoritmo para escrever o nome introduzido pelo utilizador dez vezes.

Em pseudocódigo:Variáveis Nome: Char;Variáveis i: Inteiro;Início

Escrever(“Introduz o teu nome”);Ler(Nome);i←0;Repetir

Escrever(Nome);i←i+1;

Até que (i=10);Fim.

Page 6: Estruturas de Repetição

Exemplo 26

Algoritmo para efectuar a soma e a média de vários valores a introduzir, sucessivamente, pelo utilizador, até que o valor acumulado (somatório) seja maior que 1000.

No final serão apresentados os valores das variáveis: Contador – corresponde ao número de parcelas

introduzidas; Soma – corresponde ao somatório ou valor

acumulado das parcelas introduzidas. Com base nos valores dessas duas variáveis

(Soma e Contador) será calculada e apresentada a média dos valores introduzidos.

Page 7: Estruturas de Repetição

Exemplo 2 - Pseudocódigo7

Variáveis Contador: Inteiro;Valor, Soma: Reais;

InícioSoma←0;Contador←0;RepetirEscrever(“Introduza um valor numérico ”);Ler(Valor);Soma←Soma+Valor;Contador←Contador+1;Até que (Soma>1000);Escrever(“Número de valores introduzidos = ”, Contador);Escrever(“Valor da soma = ”, Soma);Escrever(“Média = ”, Soma/Contador);

Fim.

Page 8: Estruturas de Repetição

Conceito de Iteração8

O termo iteração é usado para designar cada uma das vezes que as acções dentro de um ciclo são executadas.

Page 9: Estruturas de Repetição

Conceitos de Contador9

Um contador é uma variável que conta o número de iterações ou repetições de um ciclo. No exemplo anterior, vemos uma variável

Contador. Antes de entrarmos na estrutura de repetição atribuímos zero a essa variável: Contador 0;

Dentro do ciclo, temos a instrução: Contador Contador + 1; Esta instrução atribui à variável Contador o valor que

ela tinha anteriormente, depois de somado com uma unidade.

Page 10: Estruturas de Repetição

Conceito de Acumulador [1]10

No que diz respeito ao conceito de acumulador, no algoritmo existe uma variável Soma destinada a efectuar o somatório ou valor acumulado dos valores introduzidos. Antes do ciclo, atribuímos zero à variável

Soma. Dentro do ciclo temos a instrução: Soma←Soma+Valor;

A variável Soma recebe o valor que tinha anteriormente depois de adicionado com o valor que tiver nesse momento.

Page 11: Estruturas de Repetição

Conceito de Acumulador [2]11

Sendo assim, a variável soma vai acumulando o somatório dos vários valores que forem sendo introduzidos até que o ciclo termine. No final, a variável Soma acumulou o somatório de todos os valores introduzidos através da variável Valor.

A variável Soma desempenha aqui o papel de acumulador.

Page 12: Estruturas de Repetição

Conceito de Acumulador [3] Nesta tabela podemos ver uma representação da evolução dos valores

das variáveis Contador, Valor e Soma dentro do ciclo, supondo que os valores introduzidos para a variável foram 500, 400 e 200.

Iterações

do ciclo

ContadorValor

SomaAntes Depois

Antes Depois

1.ª 0 1 500 0 5002.ª 1 2 400 500 9003.ª 2 3 200 900 1100

12

Variáveis Contador: Inteiro;Valor, Soma: Reais;

InícioSoma←0;Contador←0;Repetir

Escrever(“Introduza um valor numérico ”);

Ler(Valor);Soma←Soma+Valor;Contador←Contador+1;

Até que (Soma>1000);Escrever(“Número de valores introduzidos = ”, Contador);Escrever(“Valor da soma = ”, Soma);Escrever(“Média = ”, Soma/Contador);

Fim.

Page 13: Estruturas de Repetição

Exemplo 3 13

Programa que deverá realizar o cálculo de um somatório com um número de parcelas desconhecido. Pretendemos efectuar o somatório de várias

parcelas a introduzir consecutivamente pelo utilizador até que o valor introduzido seja zero.

Após cada valor introduzido, é apresentada a soma acumulada até ao momento.

No final do ciclo, é também apresentado o número de valores que foram introduzidos pelo utilizador (contando com o zero).

Page 14: Estruturas de Repetição

Exemplo 3 - Programa 14

Program Repeat1;Var Conta, Soma, Valor: Integer;Begin

Writeln('Cálculo do somatório de uma série de valores');Writeln('Termine com 0.');Conta:=0;Soma:=0;Repeat

Writeln('Introduza um valor');Readln(Valor);Conta:=Conta+1;Soma:=Soma+Valor;Writeln('Soma: ',Soma);

Until Valor=0;Writeln('Foram introduzidos ', Conta, ' valores.');Readln;

End.

Page 15: Estruturas de Repetição

Exemplo 3 – Iterações do ciclo

15

Program Repeat1;Var Conta, Soma, Valor: Integer;Begin

Writeln('Cálculo do somatório de uma série de valores');Writeln('Termine com 0.');Conta:=0;Soma:=0;Repeat

Writeln('Introduza um valor');Readln(Valor);Conta:=Conta+1;Soma:=Soma+Valor;Writeln('Soma: ',Soma);

Until Valor=0;Writeln('Foram introduzidos ', Conta, ' valores.');Readln;

End.

Iterações

do ciclo

ContaValor

SomaAntes Depois Antes Depois

1.ª 0 1 6 0 62.ª 1 2 10 6 163.ª 2 3 12 16 284.ª 3 4 8 28 365.ª 4 5 0 36 36

Page 16: Estruturas de Repetição

Exemplo 416

Repetição de uma entrada até que o valor recebido seja válido. Um ciclo “Repeat… Until…” em que se

pede a introdução de um número inteiro entre 0 e 100 e só sai do ciclo quando o número introduzido obedecer a essa condição.

Page 17: Estruturas de Repetição

Exemplo 4 - Programa17

Program Repeat2;Var Num: Integer;Begin

RepeatWriteln(‘Introduza um valor inteiro entre 0 a 100’);Readln(Num);If (Num<0) Or (Num>100) ThenWriteln(‘Número não válido!’);Until Num In [0..100];Writeln(‘O seu número é: ’, Num);Readln;

End.

Page 18: Estruturas de Repetição

Estrutura de repetição com a condição de controlo no início do ciclo

Estruturas de repetição controladas por uma condição18

Page 19: Estruturas de Repetição

Estrutura “While … Do”

A palavra que indica o início do ciclo é a palavra “Enquanto”. Segue-se a condição ou expressão lógica que controla a execução das acções dentro do ciclo. Só depois da condição de controlo do ciclo é que surgem as acções a executar.

Como estas acções só serão executadas enquanto a condição se verificar, pode acontecer algo que as acções indicadas no ciclo não sejam executadas sequer uma única vez, bastando para isso que a condição de controlo seja falsa logo na primeira avaliação.

19

Page 20: Estruturas de Repetição

Exemplo 120

Algoritmo para escrever o nome introduzido pelo utilizador quatro vezes.

Em pseudocódigo:

Variável Nome: Char;Variável Contador: Inteiro;Início

Escrever(“Introduz o teu nome”);Ler(Nome);Contador←0;Enquanto (Contador<4) Fazer

Escrever(Nome);Contador←Contador+1;

FimFazer;Fim.

Page 21: Estruturas de Repetição

Exemplo 221

Algoritmo que calcular o produtório de quatro valores.

Em Pseudocódigo:Variáveis valor, contador, multi: Inteiros;Início

contador0;multi1;Enquanto contador<4 FazerEscrever(“Indique um valor”);Ler(valor);multimulti*valor;contadorcontador+1;FimFazer;Escrever(“Produtório: ”, multi);

Fim.

Page 22: Estruturas de Repetição

Exemplo 2 – Iterações do Ciclo

22

Nesta tabela podemos ver uma representação da evolução dos valores das variáveis Contador, Valor e Multi dentro do ciclo, supondo que os valores introduzidos para a variável Valor foram 2, 3, 4 e 2.

Variáveis valor, contador, multi: Inteiros;Início

contador0;multi1;Enquanto contador<4 Fazer

Escrever(“Indique um valor”);

Ler(valor);multimulti*valor;contadorcontador+1;

FimFazer;Escrever(“Produtório: ”, multi);

Fim.

Iteraçõesdo ciclo

Contador Valor Multi

1.ª 0+1=1 2 1*2=2

2.ª 1+1=2 3 2*3=6

3.ª 2+1=3 4 6*4=24

4.ª 3+1=4 2 24*2=48

Page 23: Estruturas de Repetição

Exemplo 323

Cálculo de um somatório de um número de parcelas desconhecido à partida. Pretendemos um programa que peça ao utilizador

que introduza vários números que irão ser adicionados até que o número introduzido seja zero, situação que fará terminar o ciclo. O programa deve começar pela introdução de um primeiro valor e só depois se entrará no ciclo onde são pedidos novos valores; mas só entrará nesse ciclo se o primeiro valor introduzido for diferente de zero.

Page 24: Estruturas de Repetição

Exemplo 3 - Programa24

Program While1;Var Valor, Soma: Real;Begin Writeln('Introduza um valor.'); Readln(Valor); Soma:=0; While Valor<>0 Do Begin Writeln('Introduza um novo valor'); Readln(Valor); Soma:=Soma+Valor; Writeln('Soma: ', Soma:8:2); End; Readln;End.

Page 25: Estruturas de Repetição

Exemplo 3 – Iterações do ciclo

25

A tabela mostra a evolução das variáveis Valor e Soma ao longo da execução do ciclo, supondo que o utilizador introduz os seguintes valores: 6; 10; 12; 8; 0.

Program While1;Var Valor, Soma: Real;Begin Writeln('Introduza um valor.'); Readln(Valor); Soma:=0; While Valor<>0 Do Begin Writeln('Introduza um novo valor'); Readln(Valor); Soma:=Soma+Valor; Writeln('Soma: ', Soma:8:2); End; Readln;End.

Iterações do ciclo Valor Soma

1.ª 6 0+6=62.ª 10 6+10=163.ª 12 16+12=284.ª 8 28+8=365.ª 0 36+0=36

Page 26: Estruturas de Repetição

Exemplo 426

Cálculo da média com um número de parcelas desconhecido à partida. Pretendemos adaptar o programa anterior de

modo que este calcule a média dos números introduzidos (excluindo o zero, que faz terminar o ciclo). Para tal o programa deve procede à contagem dos valores introduzidos, para que no final possa ser efectuada a divisão da soma total pelo número de valores introduzidos.

Page 27: Estruturas de Repetição

Exemplo 4 - Programa27

Page 28: Estruturas de Repetição

Estruturas de repetição controladas com contador automático

28

Page 29: Estruturas de Repetição

Estrutura “For … To/Downto … Do”

O ciclo “For… To… Do…” é uma estrutura de repetição que se baseia numa variável de controlo – um contador automático.

Esta variável tem um determinado valor inicial e é incrementada ou decrementada de forma automática até um outro valor final.

A diferença entre os referidos valores inicial e final determina o número de vezes em que o ciclo será executado.

Nota: Com este ciclo o número de valores a introduzir deve estar definido à partida.

29

Page 30: Estruturas de Repetição

Exemplo 130

Algoritmo para escrever o nome introduzido pelo utilizador cinco vezes.

Em pseudocódigo:

Variável Nome: Char;Variável i: Inteiro;Início

Escrever(“Introduz o teu nome”);Ler(Nome);Para i1 Até 5 Fazer

Escrever(Nome);FimFazer;

Fim.

Page 31: Estruturas de Repetição

Exemplo 231

Soma dos n primeiros números inteiros. Em pseudocódigo: 

Variáveis Contador, Soma, Quantos: Inteiros;Início Soma0; Escrever(“ Quantos números inteiros quer somar? ”); Ler(Quantos); Para Contador1 Até Quantos Fazer SomaSoma+Contador; FimFazer; Escrever(“A soma dos”,Quantos,”primeiros inteiros é:

”,Soma);Fim.

Page 32: Estruturas de Repetição

Exemplo 332

Repetir uma acção um determinado número de vezes. Pretendemos um programa que escreva os

10 primeiros números inteiros no ecrã, de forma crescente e decrescente.

Page 33: Estruturas de Repetição

Exemplo 3 - Programa33

Program For1;Var i:Integer;Begin Writeln('Crescente:'); For i:=1 To 10 Do Writeln(i); Writeln('Decrescente:'); For i:=10 Downto 1 Do Writeln(i); Readln;End.

Page 34: Estruturas de Repetição

Exemplo 434

Cálculo de um somatório e de uma média com um ciclo For.

Page 35: Estruturas de Repetição

Exemplo 535

Cálculo de um determinado número de múltiplos de um número inteiro.

Program Multiplos;Var Num, Quant, i, Mult: Integer;Begin Writeln('Cálculo dos múltiplos'); Writeln('Introduza um número'); Readln(Num); Writeln('Quantos múltiplos quer?'); Readln(Quant); For i:=1 To Quant Do Begin Mult:=i*Num; Writeln(Mult); End; Readln;End.

Page 36: Estruturas de Repetição

Exemplo 5 - Iterações do ciclo

36

A tabela mostra a evolução das variáveis envolvidas no exemplo (i, Num e Mult) para o caso de ter sido introduzido 11 para a variável Num e de terem sido pedidos 5 múltiplos (Quant).

Program Multiplos;Var Num, Quant, i, Mult: Integer;Begin Writeln('Cálculo dos múltiplos'); Writeln('Introduza um número'); Readln(Num); Writeln('Quantos múltiplos quer?'); Readln(Quant); For i:=1 To Quant Do Begin Mult:=i*Num; Writeln(Mult); End; Readln;End.

Iterações do ciclo

i Num Mult

1.ª 1 11 1*11=11

2.ª 2 11 2*11=22

3.ª 3 11 3*11=33

4.ª 4 11 4*11=44

5.ª 5 11 5*11=55

Page 37: Estruturas de Repetição

Ciclos de tipos diferentes podem ser utilizados com os mesmos resultados, desde que tenham em conta algumas adaptações necessárias.

Comparação entre os diferentes ciclos37

Page 38: Estruturas de Repetição

Exemplo 138

Calcular o somatório de um certo número de valores a indicar pelo utilizador.

Page 39: Estruturas de Repetição

“While … Do…” Versus “For … To … Do”

39Program SomatorioWhile;Var Contador, NParcelas: Integer; Valor, Soma: Real;Begin Writeln('Quantas parcelas?'); Readln(NParcelas); Soma:=0; Contador:=1; While Contador<=NParcelas Do Begin

Writeln('Introduza um valor numérico');

Readln(Valor);  Soma:=Soma+Valor; Contador:=Contador+1;

End; Writeln('Valor da soma = ',Soma:8:2); Readln;End.

Program SomatorioFor;Var Contador, Nparcelas: Integer; Valor, Soma: Real;Begin Writeln('Quantas parcelas?'); Readln(NParcelas); Soma:=0; For Contador:=1 To NParcelas Do Begin Writeln('Introduza um valor numérico'); Readln(Valor); Soma:=Soma+Valor; End; Writeln('Valor da soma = ',Soma:8:2); Readln;End.

Page 40: Estruturas de Repetição

Exemplo 240

Utilização conjunta dos ciclos “Repeat… Until…”, “If… Then… Else…” e “For… To… Do…” num programa para o cálculo do maior valor numa série de valores. É necessária a introdução de uma série de dois ou mais valores.

Page 41: Estruturas de Repetição

Exemplo 2 - Programa41