SlideShare une entreprise Scribd logo
1  sur  5
1
Estruturas de RepetiçãoEstruturas de Repetição -- IIII
Programação I
ALG
2
Variáveis contadoras
Uma variável é chamada de contadora quando
armazena dentro de si um número referente a uma certa
quantidade de elementos ou iterações.
Este tipo de variável é muito comum em estruturas de
repetição, dada as suas diversas aplicações em
problemas que envolvem contagens de valores.
Exemplo:
Imprimir todos os números inteiros de 1 a 100.
3
Variáveis contadoras
Solução
O algoritmo não tem dados de entrada, e fica assim:
Variáveis
valor : inteiro;
Início
escrever “Valores inteiros de 1 a 100”;
valor = 1;
repita
escrever valor;
valor = valor + 1;
até valor > 100;
Fim
É possível resolver
utilizando o ENQUANTO?
4
Programa em VisuAlg
algoritmo "exemplo"
var
valor: inteiro
inicio
escrevaL ("Valores inteiros de 1 a 100")
valor <- 1
repita
escrevaL ( valor )
valor <- valor + 1
ate valor > 100
fimalgoritmo
5
Variáveis contadoras
Solução
Utilizando o ENQUANTO o algoritmo fica assim:
Variáveis
valor : inteiro;
Início
escrever “Valores inteiros de 1 a 100”;
valor = 1;
enquanto valor <= 100 faça
[[
escrever valor;
valor = valor + 1;
]];
Fim
6
Variáveis contadoras
Exercício:
Escrever um programa que leia 10 números inteiros fornecidos
pelo usuário, e exiba quantos números ímpares foram
informados.
2
7
Variáveis contadoras
Solução
Serão necessárias 10 leituras. Podemos criar uma variável
contadora para controlar este laço.
Precisaremos de uma outra variável para contar a quantidade
de números ímpares.
Não podemos deixar para contar após a repetição, pois cada
número fornecido apaga o anterior. Logo precisamos ir contando
após cada entrada, incrementando uma nova variável contadora.
Esta nova variável contadora só é incrementada se o número
informado for ímpar.
8
Variáveis contadoras
Solução
Variáveis
cont, num, qtd_impar : inteiro;
Início
cont = 1;
qtd_impar = 0
enquanto cont <= 10 faça
[[
escrever “Digite um número: ”;
ler num;
se num % 2 <> 0 então
qtd_impar = qtd_impar + 1;
cont = cont + 1;
]];
escrever “O total de ímpares foi “ + qtd_impar;
Fim
A variável é iniciada
como 0 pois o usuário
poderá informar 10
números pares
9
Programa em VisuAlg
algoritmo "exemplo"
var
cont, num, qtd_impar : inteiro
inicio
cont <- 1
qtd_impar <- 0
enquanto cont <= 10 faca
escreva ("Digite um número: ")
leia (num)
se num % 2 <> 0 entao
qtd_impar <- qtd_impar + 1
fimse
cont <- cont + 1
fimenquanto
escrevaL ("O total de ímpares foi " , qtd_impar)
fimalgoritmo 10
Variáveis acumuladoras
Uma variável é chamada de acumuladora quando tem
por característica armazenar dentro de si o resultado
acumulado de uma série de valores.
Quando armazenamos a soma de uma quantidade
pequena de números, a atribuição é direta. Numa
repetição devemos armazenar a soma de diversos
números sucessivos, e para isto utilizamos uma variável
acumuladora.
Exemplo
Calcular a soma de diversos números reais informados pelo
usuário. A entrada de dados termina com o número -999.
11
Variáveis acumuladoras
Solução
O algoritmo fica assim:
Variáveis
num, soma : real;
Início
soma = 0;
escrever “Para sair, entre com -999”;
escrever “Entre com o número: “;
ler num;
enquanto num <> -999 faça
[[
soma = soma + num;
escrever “Entre com o número: “;
ler num;
]];
escrever “A soma foi ”, soma;
Fim
A variável é iniciada
como 0 pois, caso o usuário
forneça -999 na primeira
execução, o valor total da
soma é 0.
12
Variáveis acumuladoras
Exercício
Fazer um programa que leia diversos números reais e exiba
qual foi o maior de todos. O código -1 sinaliza o fim da leitura.
3
13
Variáveis acumuladoras
Solução
Variáveis
num, maior : real;
Início
escrever “Para sair, entre com -1”;
escrever “Entre com o número: “;
ler num;
maior <- num;
enquanto num <> -1 faça
[[
se num > maior então
maior <- num;
escrever “Entre com o número: “;
ler num;
]];
se maior <> -1 então
escrever “O maior número digitado foi ”, maior
senão
escrever “Nenhum número válido foi informado.”;
Fim
14
Variáveis acumuladoras
Exercício:
Traduzir o programa anterior para
VisuAlg.
15
Laços infinitos
Ao trabalhar com repetições, é preciso tomar cuidado
para não criar um laço infinito, ou seja, um laço que não
termina.
Neste tipo de situação a máquina permaneceria
executando o laço indefinidamente, até que ocorra uma
intervenção externa.
Exemplo:
Imprimir os quadrados dos números inteiros de 1 a 10.
16
Laços infinitos
Solução:
Variáveis
valor, quadrado : real;
Início
escrever “Quadrados dos números inteiros de 1 a 10”;
escrever “Entre com o número: “;
valor = 1;
repita
quadrado = sqr(valor);
escrever quadrado;
valor = valor - 1;
até valor > 10;
escrever “Fim da impressão.”;
Fim
Este decremento provoca
um loop infinito.
17
Repetições encadeadas
Da mesma forma que é permitido o encadeamento de
testes, também é possível encadear comandos de
repetição.
Um encadeamento de repetições ocorre quando há
necessidade de efetuar um laço dentro de outro.
Neste tipo de situação, o algoritmo possui repetições
controladas por um teste interno e outro externo.
Exemplo
Imprimir as tabuadas de multiplicação dos números 3, 4, 5 e 6.
18
Repetições encadeadas
Solução
Variáveis
num, mult, cont : inteiro;
Início
num <- 3;
enquanto num <= 6 faça
[[
escrever “Tabuada de ”, num;
cont = 1;
enquanto cont <= 10 faça
[[
mult = num * cont;
escrever num, “x”, cont, “=“, mult;
cont = cont + 1;
]];
num = num + 1;
]];
Fim
4
19
Repetições encadeadas
Exercício
Escreva o algoritmo anterior em VisuAlg e observe o seu
funcionamento. Em seguida, modifique o mesmo para mostrar a
tabuada dos números 1 a 5.
20
Comando PARA
É muito comum a existência de repetições que fazem
uso de variáveis contadoras, especialmente para
contagens de 1 em 1.
Para facilitar a construção deste tipo de laço, pode-se
utilizar um outro comando de repetição complementar
chamada PARA. Sua sintaxe é:
para <var> de <valor_inicial> até <valor_final> faça
<comando>;
21
Comando PARA
Exemplo:
Escrever os números inteiros de 1 a 100.
Solução com o comando PARA:
Variáveis
valor : inteiro;
Início
escrever “Valores inteiros de 1 a 100”;
para valor de 1 até 100 faça
escrever valor;
Fim
22
Comando PARA em VisuAlg
Esta estrutura repete uma seqüência de comandos
um determinado número de vezes.
para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca
<seqüência-de-comandos>
fimpara
OBS: <valor-inicial >, <valor-limite > e <incremento > são avaliados uma
única vez antes da execução da primeira repetição, e não se alteram
durante a execução do laço, mesmo que variáveis eventualmente
presentes nessas expressões tenham seus valores alterados.
23
Comando PARA em VisuAlg
No exemplo a seguir, os números de 1 a 10 são
exibidos em ordem crescente.
algoritmo "Números de 1 a 10“
var
j: inteiro
inicio
para j de 1 ate 10 faca
escreva (j:3)
fimpara
fimalgoritmo
24
Comando PARA em VisuAlg
Importante: Se, logo no início da primeira repetição, <valor-
inicial > for maior que <valor-limite > (ou menor, quando
<incremento> for negativo), o laço não será executado
nenhuma vez. O exemplo a seguir não imprime nada.
algoritmo "Numeros de 10 a 1 (não funciona)"
var
j: inteiro
inicio
para j de 10 ate 1 faca
escreva (j:3)
fimpara
fimalgoritmo
5
25
Comando PARA em VisuAlg
Este outro exempo, no entanto, funcionará por causa
do passo -1:
algoritmo "Numeros de 10 a 1 (este funciona)"
var
j: inteiro
inicio
para j de 10 ate 1 passo -1 faca
escreva (j:3)
fimpara
fimalgoritmo
26
Exemplo 1:
Calcule e exiba a soma de todos os números
pares contidos entre zero e um número
fornecido via teclado (caso o número fornecido
seja par, o mesmo deverá fazer parte da soma).
27
Solução
algoritmo "exemplo1"
var
numero ,i , soma_pares: inteiro
inicio
soma_pares <-0
escreva("Digite um número > 0:")
leia(numero)
se numero >0 entao
para i de 1 ate numero faca
se (i % 2 = 0) entao
soma_pares <- soma_pares + i
fimse
fimpara
escrevaL("A soma dos pares é: ", soma_pares)
senao
escrevaL("Número inválido informado.")
fimse
fimalgoritmo
28
Comando PARA
Exercícios:
Faça um programa para exibir os números 1, 4, 9, 16, 25, 36, ...
, 10000.
Faça um programa que leia 10 valores inteiros e positivos e
depois informe:
Qual o maior valor;
Qual o menor valor;
A média dos números lidos.
DÚVIDAS ?DÚVIDAS ?
Programação I
ALG

Contenu connexe

Tendances

Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlex Camargo
 
08 algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2
08   algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 208   algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2
08 algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2Roney Sousa
 
07 algoritmo - eSTRUTURA DE REPETIÇÃO
07   algoritmo - eSTRUTURA DE REPETIÇÃO07   algoritmo - eSTRUTURA DE REPETIÇÃO
07 algoritmo - eSTRUTURA DE REPETIÇÃORoney Sousa
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoWesley R. Bezerra
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleçãoTácito Graça
 
Programando em python comandos basicos
Programando em python   comandos basicosProgramando em python   comandos basicos
Programando em python comandos basicossamuelthiago
 
Tutorial pascal zim
Tutorial pascal zimTutorial pascal zim
Tutorial pascal zim12anogolega
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticaoYuri Passos
 
Logica Algoritmo 04 Decisao
Logica Algoritmo 04 DecisaoLogica Algoritmo 04 Decisao
Logica Algoritmo 04 DecisaoRegis Magalhães
 

Tendances (20)

Exercicios facebook
Exercicios facebookExercicios facebook
Exercicios facebook
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Algoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em CAlgoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em C
 
08 algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2
08   algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 208   algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2
08 algoritmo - eSTRUTURA DE REPETIÇÃO PARTE 2
 
07 algoritmo - eSTRUTURA DE REPETIÇÃO
07   algoritmo - eSTRUTURA DE REPETIÇÃO07   algoritmo - eSTRUTURA DE REPETIÇÃO
07 algoritmo - eSTRUTURA DE REPETIÇÃO
 
04 algoritmo
04   algoritmo04   algoritmo
04 algoritmo
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
 
Algoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - LacosAlgoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - Lacos
 
06 algoritmo
06   algoritmo06   algoritmo
06 algoritmo
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleção
 
Construcao de Algoritmos - Aula 08
Construcao de Algoritmos - Aula 08Construcao de Algoritmos - Aula 08
Construcao de Algoritmos - Aula 08
 
Programando em python comandos basicos
Programando em python   comandos basicosProgramando em python   comandos basicos
Programando em python comandos basicos
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Tutorial pascal zim
Tutorial pascal zimTutorial pascal zim
Tutorial pascal zim
 
python.comandos
python.comandospython.comandos
python.comandos
 
Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03
 
Construcao de Algoritmos - Aula 10
Construcao de Algoritmos - Aula 10Construcao de Algoritmos - Aula 10
Construcao de Algoritmos - Aula 10
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticao
 
Aula 2 aed - pseudocódigo
Aula 2   aed - pseudocódigoAula 2   aed - pseudocódigo
Aula 2 aed - pseudocódigo
 
Logica Algoritmo 04 Decisao
Logica Algoritmo 04 DecisaoLogica Algoritmo 04 Decisao
Logica Algoritmo 04 Decisao
 

Similaire à Alg aula 05-2 - estruturas de-repeticao tp1 (para)

Aula 03 - Estruturas de repetição
Aula 03 - Estruturas de repetiçãoAula 03 - Estruturas de repetição
Aula 03 - Estruturas de repetiçãoEder Samaniego
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoEder Samaniego
 
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)Thalles Anderson
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacaoAislan Rafael
 
Laços de repetição como fazer
Laços de repetição como fazerLaços de repetição como fazer
Laços de repetição como fazerRodolfo Fonseca
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
Programação Estruturada com Java-Aula05
Programação Estruturada com Java-Aula05Programação Estruturada com Java-Aula05
Programação Estruturada com Java-Aula05Elvis Araújo
 
Aula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdfAula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdfCarlosCarlos73688
 
Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06André Phillip Bertoletti
 
ESTRUTURAS_DE_REPETICAO.ppt
ESTRUTURAS_DE_REPETICAO.pptESTRUTURAS_DE_REPETICAO.ppt
ESTRUTURAS_DE_REPETICAO.pptFabianoVilhete3
 

Similaire à Alg aula 05-2 - estruturas de-repeticao tp1 (para) (20)

Repetir
RepetirRepetir
Repetir
 
Aula 03 - Estruturas de repetição
Aula 03 - Estruturas de repetiçãoAula 03 - Estruturas de repetição
Aula 03 - Estruturas de repetição
 
Aula03
Aula03Aula03
Aula03
 
Laços de repetição
Laços de repetiçãoLaços de repetição
Laços de repetição
 
Algoritmos Aula 08
Algoritmos Aula 08Algoritmos Aula 08
Algoritmos Aula 08
 
Aula05
Aula05Aula05
Aula05
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetição
 
Construcao de Algoritmos - Aula 09
Construcao de Algoritmos - Aula 09Construcao de Algoritmos - Aula 09
Construcao de Algoritmos - Aula 09
 
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
 
05 repeticao
05 repeticao05 repeticao
05 repeticao
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacao
 
Algop - aula 06
Algop - aula 06Algop - aula 06
Algop - aula 06
 
Laços de repetição como fazer
Laços de repetição como fazerLaços de repetição como fazer
Laços de repetição como fazer
 
Algop - aula 07
Algop - aula 07Algop - aula 07
Algop - aula 07
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Programação Estruturada com Java-Aula05
Programação Estruturada com Java-Aula05Programação Estruturada com Java-Aula05
Programação Estruturada com Java-Aula05
 
Aula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdfAula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdf
 
Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06
 
ESTRUTURAS_DE_REPETICAO.ppt
ESTRUTURAS_DE_REPETICAO.pptESTRUTURAS_DE_REPETICAO.ppt
ESTRUTURAS_DE_REPETICAO.ppt
 

Plus de Thalles Anderson (20)

Minipa et 1110
Minipa et   1110Minipa et   1110
Minipa et 1110
 
Minipa et 1001
Minipa et   1001Minipa et   1001
Minipa et 1001
 
Apostila usando multímetro
Apostila usando multímetroApostila usando multímetro
Apostila usando multímetro
 
Informática básica
Informática básicaInformática básica
Informática básica
 
Cabling 96
Cabling 96Cabling 96
Cabling 96
 
Cabos e linhas
Cabos e linhasCabos e linhas
Cabos e linhas
 
Código de cores tabela
Código de cores tabelaCódigo de cores tabela
Código de cores tabela
 
Dimensionamento cabos baixa tensão
Dimensionamento cabos baixa tensãoDimensionamento cabos baixa tensão
Dimensionamento cabos baixa tensão
 
Dimensionamento
DimensionamentoDimensionamento
Dimensionamento
 
Fibras ópticas
Fibras ópticasFibras ópticas
Fibras ópticas
 
Linhas de transmissão
Linhas de transmissãoLinhas de transmissão
Linhas de transmissão
 
Topologias de redes
Topologias de redesTopologias de redes
Topologias de redes
 
Windows xp
Windows xpWindows xp
Windows xp
 
Windows vista
Windows vistaWindows vista
Windows vista
 
Tcp e ip
Tcp e ipTcp e ip
Tcp e ip
 
Sockets
SocketsSockets
Sockets
 
Redes 6
Redes 6Redes 6
Redes 6
 
Redes 5
Redes 5Redes 5
Redes 5
 
Redes 4
Redes 4Redes 4
Redes 4
 
Redes 3
Redes 3Redes 3
Redes 3
 

Alg aula 05-2 - estruturas de-repeticao tp1 (para)

  • 1. 1 Estruturas de RepetiçãoEstruturas de Repetição -- IIII Programação I ALG 2 Variáveis contadoras Uma variável é chamada de contadora quando armazena dentro de si um número referente a uma certa quantidade de elementos ou iterações. Este tipo de variável é muito comum em estruturas de repetição, dada as suas diversas aplicações em problemas que envolvem contagens de valores. Exemplo: Imprimir todos os números inteiros de 1 a 100. 3 Variáveis contadoras Solução O algoritmo não tem dados de entrada, e fica assim: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; valor = 1; repita escrever valor; valor = valor + 1; até valor > 100; Fim É possível resolver utilizando o ENQUANTO? 4 Programa em VisuAlg algoritmo "exemplo" var valor: inteiro inicio escrevaL ("Valores inteiros de 1 a 100") valor <- 1 repita escrevaL ( valor ) valor <- valor + 1 ate valor > 100 fimalgoritmo 5 Variáveis contadoras Solução Utilizando o ENQUANTO o algoritmo fica assim: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; valor = 1; enquanto valor <= 100 faça [[ escrever valor; valor = valor + 1; ]]; Fim 6 Variáveis contadoras Exercício: Escrever um programa que leia 10 números inteiros fornecidos pelo usuário, e exiba quantos números ímpares foram informados.
  • 2. 2 7 Variáveis contadoras Solução Serão necessárias 10 leituras. Podemos criar uma variável contadora para controlar este laço. Precisaremos de uma outra variável para contar a quantidade de números ímpares. Não podemos deixar para contar após a repetição, pois cada número fornecido apaga o anterior. Logo precisamos ir contando após cada entrada, incrementando uma nova variável contadora. Esta nova variável contadora só é incrementada se o número informado for ímpar. 8 Variáveis contadoras Solução Variáveis cont, num, qtd_impar : inteiro; Início cont = 1; qtd_impar = 0 enquanto cont <= 10 faça [[ escrever “Digite um número: ”; ler num; se num % 2 <> 0 então qtd_impar = qtd_impar + 1; cont = cont + 1; ]]; escrever “O total de ímpares foi “ + qtd_impar; Fim A variável é iniciada como 0 pois o usuário poderá informar 10 números pares 9 Programa em VisuAlg algoritmo "exemplo" var cont, num, qtd_impar : inteiro inicio cont <- 1 qtd_impar <- 0 enquanto cont <= 10 faca escreva ("Digite um número: ") leia (num) se num % 2 <> 0 entao qtd_impar <- qtd_impar + 1 fimse cont <- cont + 1 fimenquanto escrevaL ("O total de ímpares foi " , qtd_impar) fimalgoritmo 10 Variáveis acumuladoras Uma variável é chamada de acumuladora quando tem por característica armazenar dentro de si o resultado acumulado de uma série de valores. Quando armazenamos a soma de uma quantidade pequena de números, a atribuição é direta. Numa repetição devemos armazenar a soma de diversos números sucessivos, e para isto utilizamos uma variável acumuladora. Exemplo Calcular a soma de diversos números reais informados pelo usuário. A entrada de dados termina com o número -999. 11 Variáveis acumuladoras Solução O algoritmo fica assim: Variáveis num, soma : real; Início soma = 0; escrever “Para sair, entre com -999”; escrever “Entre com o número: “; ler num; enquanto num <> -999 faça [[ soma = soma + num; escrever “Entre com o número: “; ler num; ]]; escrever “A soma foi ”, soma; Fim A variável é iniciada como 0 pois, caso o usuário forneça -999 na primeira execução, o valor total da soma é 0. 12 Variáveis acumuladoras Exercício Fazer um programa que leia diversos números reais e exiba qual foi o maior de todos. O código -1 sinaliza o fim da leitura.
  • 3. 3 13 Variáveis acumuladoras Solução Variáveis num, maior : real; Início escrever “Para sair, entre com -1”; escrever “Entre com o número: “; ler num; maior <- num; enquanto num <> -1 faça [[ se num > maior então maior <- num; escrever “Entre com o número: “; ler num; ]]; se maior <> -1 então escrever “O maior número digitado foi ”, maior senão escrever “Nenhum número válido foi informado.”; Fim 14 Variáveis acumuladoras Exercício: Traduzir o programa anterior para VisuAlg. 15 Laços infinitos Ao trabalhar com repetições, é preciso tomar cuidado para não criar um laço infinito, ou seja, um laço que não termina. Neste tipo de situação a máquina permaneceria executando o laço indefinidamente, até que ocorra uma intervenção externa. Exemplo: Imprimir os quadrados dos números inteiros de 1 a 10. 16 Laços infinitos Solução: Variáveis valor, quadrado : real; Início escrever “Quadrados dos números inteiros de 1 a 10”; escrever “Entre com o número: “; valor = 1; repita quadrado = sqr(valor); escrever quadrado; valor = valor - 1; até valor > 10; escrever “Fim da impressão.”; Fim Este decremento provoca um loop infinito. 17 Repetições encadeadas Da mesma forma que é permitido o encadeamento de testes, também é possível encadear comandos de repetição. Um encadeamento de repetições ocorre quando há necessidade de efetuar um laço dentro de outro. Neste tipo de situação, o algoritmo possui repetições controladas por um teste interno e outro externo. Exemplo Imprimir as tabuadas de multiplicação dos números 3, 4, 5 e 6. 18 Repetições encadeadas Solução Variáveis num, mult, cont : inteiro; Início num <- 3; enquanto num <= 6 faça [[ escrever “Tabuada de ”, num; cont = 1; enquanto cont <= 10 faça [[ mult = num * cont; escrever num, “x”, cont, “=“, mult; cont = cont + 1; ]]; num = num + 1; ]]; Fim
  • 4. 4 19 Repetições encadeadas Exercício Escreva o algoritmo anterior em VisuAlg e observe o seu funcionamento. Em seguida, modifique o mesmo para mostrar a tabuada dos números 1 a 5. 20 Comando PARA É muito comum a existência de repetições que fazem uso de variáveis contadoras, especialmente para contagens de 1 em 1. Para facilitar a construção deste tipo de laço, pode-se utilizar um outro comando de repetição complementar chamada PARA. Sua sintaxe é: para <var> de <valor_inicial> até <valor_final> faça <comando>; 21 Comando PARA Exemplo: Escrever os números inteiros de 1 a 100. Solução com o comando PARA: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; para valor de 1 até 100 faça escrever valor; Fim 22 Comando PARA em VisuAlg Esta estrutura repete uma seqüência de comandos um determinado número de vezes. para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca <seqüência-de-comandos> fimpara OBS: <valor-inicial >, <valor-limite > e <incremento > são avaliados uma única vez antes da execução da primeira repetição, e não se alteram durante a execução do laço, mesmo que variáveis eventualmente presentes nessas expressões tenham seus valores alterados. 23 Comando PARA em VisuAlg No exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente. algoritmo "Números de 1 a 10“ var j: inteiro inicio para j de 1 ate 10 faca escreva (j:3) fimpara fimalgoritmo 24 Comando PARA em VisuAlg Importante: Se, logo no início da primeira repetição, <valor- inicial > for maior que <valor-limite > (ou menor, quando <incremento> for negativo), o laço não será executado nenhuma vez. O exemplo a seguir não imprime nada. algoritmo "Numeros de 10 a 1 (não funciona)" var j: inteiro inicio para j de 10 ate 1 faca escreva (j:3) fimpara fimalgoritmo
  • 5. 5 25 Comando PARA em VisuAlg Este outro exempo, no entanto, funcionará por causa do passo -1: algoritmo "Numeros de 10 a 1 (este funciona)" var j: inteiro inicio para j de 10 ate 1 passo -1 faca escreva (j:3) fimpara fimalgoritmo 26 Exemplo 1: Calcule e exiba a soma de todos os números pares contidos entre zero e um número fornecido via teclado (caso o número fornecido seja par, o mesmo deverá fazer parte da soma). 27 Solução algoritmo "exemplo1" var numero ,i , soma_pares: inteiro inicio soma_pares <-0 escreva("Digite um número > 0:") leia(numero) se numero >0 entao para i de 1 ate numero faca se (i % 2 = 0) entao soma_pares <- soma_pares + i fimse fimpara escrevaL("A soma dos pares é: ", soma_pares) senao escrevaL("Número inválido informado.") fimse fimalgoritmo 28 Comando PARA Exercícios: Faça um programa para exibir os números 1, 4, 9, 16, 25, 36, ... , 10000. Faça um programa que leia 10 valores inteiros e positivos e depois informe: Qual o maior valor; Qual o menor valor; A média dos números lidos. DÚVIDAS ?DÚVIDAS ? Programação I ALG