Post on 07-Mar-2016
description
INTRODUÇÃO À PROGRAMAÇÃOEstruturas de Controlo
1
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
Estrutura de repetição com a condição de controlo no fim do ciclo
Estruturas de repetição controladas por uma condição3
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
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 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.
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.
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.
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.
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] 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.
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;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
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.
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.
Estrutura de repetição com a condição de controlo no início do ciclo
Estruturas de repetição controladas por uma condição18
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
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.
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.
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
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.
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.
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
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.
Exemplo 4 - Programa27
Estruturas de repetição controladas com contador automático
28
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
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.
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.
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.
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.
Exemplo 434
Cálculo de um somatório e de uma média com um ciclo For.
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.
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
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
Exemplo 138
Calcular o somatório de um certo número de valores a indicar pelo utilizador.
“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.
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.
Exemplo 2 - Programa41