Page 1

1

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


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

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.


3

Estruturas de repetição controladas por uma condição Estrutura de repetição com a condição de controlo no fim do ciclo


Estrutura “Repeat … Until” 4

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.


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.


Exemplo 2 6

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.


Exemplo 2 - Pseudocódigo 7

Variáveis Contador: Inteiro; Valor, Soma: Reais; Início Soma←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.


Conceito de Iteração 8

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


Conceitos de Contador 9

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. 


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.


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.


Conceito de Acumulador [3] 12 

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.

Variáveis Contador: Inteiro; Valor, Soma: Reais; Início Soma←0; Contador←0;

Iterações do ciclo

Contador Antes

Depois

Soma Valor

Repetir

Antes

Depois

Escrever(“Introduza um valor numérico ”); Ler(Valor); Soma←Soma+Valor;

1.ª

0

1

500

0

500

Contador←Contador+1;

2.ª

1

2

400

500

900

3.ª

2

3

200

900

1100

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


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).


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.


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; Iterações do ciclo Soma:=0; Repeat 1.ª Writeln('Introduza um valor'); 2.ª Readln(Valor); 3.ª Conta:=Conta+1; 4.ª Soma:=Soma+Valor; Writeln('Soma: ',Soma); 5.ª Until Valor=0; Writeln('Foram introduzidos ', Conta, ' valores.'); Readln; End.

Conta

Soma

Antes

Depois

0

1

1

Valor

Antes

Depois

6

0

6

2

10

6

16

2

3

12

16

28

3

4

8

28

36

4

5

0

36

36


Exemplo 4 16

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.


Exemplo 4 - Programa 17

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


18

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


Estrutura “While … Do” 19

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.


Exemplo 1 20

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.


Exemplo 2 21

 

Algoritmo que calcular o produtório de quatro valores. Em Pseudocódigo: Variáveis valor, contador, multi: Inteiros; Início contador0; multi1; Enquanto contador<4 Fazer Escrever(“Indique um valor”); Ler(valor); multimulti*valor; contadorcontador+1; FimFazer; Escrever(“Produtório: ”, multi); Fim.


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 contador0; multi1; Enquanto contador<4 Fazer Escrever(“Indique um valor”); Ler(valor); multimulti*valor; contadorcontador+1; FimFazer; Escrever(“Produtório: ”, multi); Fim.

Iterações do 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=4 8


Exemplo 3 23

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.


Exemplo 3 - Programa 24

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.


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 1.ª 2.ª 3.ª 4.ª 5.ª

Valor

Soma

6 10 12 8 0

0+6=6 6+10=16 16+12=28 28+8=36 36+0=36


Exemplo 4 26

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.


Exemplo 4 - Programa 27


28

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


Estrutura “For … To/Downto … Do” 29

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.


Exemplo 1 30

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 i1 Até 5 Fazer Escrever(Nome); FimFazer; Fim.


Exemplo 2 31

 

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

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


Exemplo 3 32

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.


Exemplo 3 - Programa 33

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.


Exemplo 4 34

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


Exemplo 5 35

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.


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 1.ª 2.ª 3.ª 4.ª 5.ª

i 1 2 3 4 5

Num 11 11 11 11 11

Mult 1*11=11 2*11=22 3*11=33 4*11=44 5*11=55


37

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


Exemplo 1 38

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


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

Program 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.


Exemplo 2 40

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.


Exemplo 2 - Programa 41

Estruturas de Repetição  

aplicações informáticas b

Read more
Read more
Similar to
Popular now
Just for you