Vous êtes sur la page 1sur 10

Algoritmos Aula 3

Variveis Acumuladoras
So variveis que sofrem acumulao positiva ou negativa de um valor no seu contedo atual. Devem ser inicializadas com um valor para que da primeira acumulao, o seu contedo tenha um valor real e no sujeira de memria. Algumas linguagens de programao inicializam com zero uma varivel numrica no momento da sua declarao. Ex: A = A + 2 //somar 2 ao contedo da varivel A e armazenar o resultado em A X = X - Y //subtrair o contedo de Y do contedo da varivel X e armazenar o resultado na varivel X

Estrutura Repetitiva
Permite que um bloco ou conjunto de comandos ou estruturas sejam repetidas enquanto a condio indicada for verdadeira. Declarao: REPITA ENQUANTO condio Bloco com um ou mais comandos ou estruturas FIM REPITA onde, condio a comparao de dois valores que podem ser constantes, contedos de variveis de memria, resultado de expresses aritmticas ou retorno de funes, por meio do uso de operadores relacionais. Aqui pode ser utilizado uma expresso condicional com mais de uma condio relacionada com os operadores E e OU. Se a condio for verdadeira o bloco de comandos ser executado. Ao ser encontrado a clusula FIM REPITA, a execuo do algoritmo retorna ao incio da estrutura para uma nova avaliao da condio. Quando a condio for falsa, o bloco no executado e a execuo do programa continua a partir do prximo comando aps o trmino da estrutura.

Tipos de repeties:
- Indefinida: quando no se sabe a quantidade de vezes que o bloco da estrutura ser executado. A cada execuo a quantidade pode variar. Ex: Receber por digitao uma certa quantidade de nmeros, enquanto o usurio desejar digitar nmeros. Som-los e visualizar o resultado da soma ao final.
Algoritmo VAR: num, soma, continua soma = 0 continua = S REPITA ENQUANTO continua=S Escrever Digite um nmero Ler num soma = soma + num Escrever Deseja continuar S/N Ler continua FIM REPITA Escrever A soma dos nmeros soma //declarao das variveis //inicializa soma com o valor 0 //inicializa continua com S //se verdadeira executa o bloco //envia um texto //armazena o valor digitado em num //acumula o contedo de num em soma //envia um texto //armazena o valor digitado em continua //retorna ao inicio da estrutura //envia o texto e contedo de soma

Fim

Em fluxograma:

A varivel continua utilizada na condio da estrutura para determinar se o bloco ser executado ou no. - Definida: quando se estabelece a quantidade de vezes que o bloco da estrutura ser executado. A cada execuo a quantidade de vezes sempre a mesma. Ex: Receber por digitao 5 nmeros, som-los e visualizar o resultado da soma ao final.
Algoritmo VAR: num, soma, cont soma = 0 cont = 0 REPITA ENQUANTO cont < 5 Escrever Digite um nmero Ler num soma = soma + num cont = cont + 1 FIM REPITA Escrever A soma dos nmeros soma Fim //declarao das variveis //inicializa soma com o valor 0 //inicializa cont com 0 //se verdadeira executa o bloco //envia um texto //armazena o valor digitado em num //acumula o contedo de num em soma //acumula 1 em cont //retorna ao inicio da estrutura //envia o texto e contedo de soma

Em fluxograma:

Foi utilizada a varivel cont na condio da estrutura, como sendo uma varivel contadora do nmero de vezes que o bloco de comandos ser executado.

Exemplo da otimizao de um algoritmo ao utilizar uma estrutura de repetio Visualizar os nmeros de 1 a 500 no vdeo. 1 verso: sem estrutura de repetio
Algoritmo Escrever Escrever Escrever Escrever ---Escrever Escrever Fim Nmeros de 1 a 500 1 2 3 499 500 //envia um texto //envia o nmero 1 para o vdeo //envia o nmero 2 para o vdeo //envia o nmero 3 para o vdeo ---//envia o nmero 499 para o vdeo //envia o nmero 500 para o vdeo

Obs: ser necessrio introduzir no algoritmo 500 comandos de escrever um nmero. Se o algoritmo for alterado para a visualizao de 1000 nmeros ser necessrio adicionar-se mais 500 comandos desse tipo. 2 verso: com estrutura de repetio
Algoritmo VAR: num num = 1 Escrever Nmeros de 1 a 500 REPITA ENQUANTO num <= 500 Escrever num num = num + 1 FIM REPITA Fim //declarao da varivel //inicializa num com o valor 1 //envia um texto //se verdadeira executa o bloco //envia o nmero para o vdeo //acumula 1 em num //retorna ao inicio da estrutura

Obs: para o uso da estrutura ser necessrio a criao da varivel num, que aps ser inicializada com 1, tem o seu valor adicionado de 1 toda vez que o seu contedo for visualizado. A varivel num utilizada na condio para se determinar a quantidade de vezes que o bloco ser repetido. Se o algoritmo for alterado para a visualizao de 1000 nmeros ser necessrio apenas a alterao da condio, que ficaria: num <= 1000.

Exerccios
1 Visualizar os nmeros de 1 a 500, com exceo dos nmeros mltiplos de 3. 2 Visualizar os nmeros de 1 a 500 na ordem inversa. 3 Visualizar os nmeros de 1 at um nmero recebido por digitao. 4 Escrever os nmeros em ordem crescente ou decrescente, entre dois nmeros digitados inclusive, de acordo coma a ordem dos valores destes.

Exemplo
Uma pesquisa de mercado entrevistou 100 pessoas para saber a preferncia pelos produtos A, B e C. Receber por digitao as preferncias dessas pessoas e visualizar ao final a quantidade de preferncias de cada tipo de produto.
Algoritmo VAR: prod, cont, totA, totB, TotC cont = 0 totA = 0 totB = 0 totC = 0 REPITA ENQUANTO cont < 100 Escrever Digite o produto Ler prod SE prod = 'A' OU prod = 'a' totA = totA + 1 SENO SE prod = 'B' OU prod = 'b' totB = totB + 1 SENO SE prod = 'C' OU prod = 'c' totC = totC + 1 FIM SE cont = cont + 1 FIM REPITA Escrever Qtde de produtos A: totA Escrever Qtde de produtos B: totB Escrever Qtde de produtos C: totC Fim //declarao das variveis //inicializa cont com o valor 0 //inicializa totA com o valor 0 //inicializa totB com o valor 0 //inicializa totC com o valor 0 //se verdadeira executa o bloco //envia o texto //armazena o produto digitado em prod //acumula 1 na varivel totA //acumula 1 na varivel totB //acumula 1 na varivel totC //acumula 1 em cont //retorna ao inicio da estrutura //envia o texto e contedo de totA //envia o texto e contedo de totB //envia o texto e contedo de totC

Exerccios
5 Receber por digitao de cada aluno de uma turma de 1 grau com 30 alunos, as seguinte informaes: sexo (M, F) idade srie Determinar e informar ao final: Quantidade de meninas com 10 anos que esto na 3 srie. Quantidade de meninos entre 10 e 13 anos que esto na 6 srie Quantidade de alunos entre 9 e 12 anos que cursam a 4 ou 5 srie 6 Receber por digitao 30 nmeros inteiros. Determinar e informar quantos nmeros existem em cada uma das seguintes faixas: Faixa 1 2 3 4 Valor 0 30 31 60 61 90 > 90

7 Para uma certa quantidade de vendas de uma loja, cuja quantidade ser recebida por digitao, receber os seguintes dados de cada uma das vendas: tipo de venda (P prazo, V vista) valor da venda Calcular e informar: Total das vendas prazo Total das vendas vista Quantidade de vendas prazo menores que R$ 500,00 Quantidade de vendas vista maiores que R$ 3000,00

8- Receber por digitao para cada uma das 30 crianas de uma escola infantil, o perodo que esta freqenta (P parcial, I integral) e a quantidade de refeies dirias utilizadas. Apresentar o valor total a ser pago mensalmente, sabendo-se que este dever se calculado conforme a tabela a seguir: Perodo P - Parcial I - Integral Calculo da mensalidade 1,8 salrios mnimos 3,75 salrios mnimos Valor da refeio R$ 5,00 R$ 6,00

O valor total incorpora o valor da mensalidade e o valor das refeies. Receber por digitao o valor do salrio mnimo Apresentar ao final a quantidade de crianas que cursam cada um dos perodos

Exemplos de Teste de Mesa


1 - Dado o seguinte algoritmo:
Algoritmo var: x1, x2, y, k, m, b, c escrever Digite um numero ler x1 escrever Digite outro numero ler x2 y = 7 k = 0 m = 0 c = 1 repita enquanto y >= x1 k = k + x1 + 1 se k > 7 c = c + 2 seno c = c + 3 fim se b = 1 repita enquanto b < x2 m = m + 2 b = b + 1 c = c + 1 fim repita y = y 1 fim repita escrever c escrever k escrever m Fim

Realizar teste de mesa com os valores abaixo para uma execuo:


a) x1 = 4 x2 = 4

x1
4

x2
4

y
7 6 5 4 3

k
0 5 10 15 20

m
0 2 4 6 8 10 12 14 16 18 20 22 24

b
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

c
1 4 5 6 7 9 10 11 12 14 15 16 17 19 20 21 22

b) x1 = 5 x2 = 2
x1 5 x2 2 y 7 6 5 4 k 0 6 12 18 m 0 2 4 6 b 1 2 1 2 1 2 c 1 4 5 7 8 10 11

c) x1 = 4 x2 = 1

x1 4

x2 1

y 7 6 5 4 3

k 0 5 10 15 20

m 0

b 1 1 1 1

c 1 4 6 8 10

Exerccios de Teste de Mesa


1- Dado o seguinte algoritmo:
Algoritmo var: a, b, c, d, e, i, j, tot escrever digite um numero ler a escrever digite outro numero ler b escrever digite outro numero ler c tot = 0 d = 1 e = 0 i = 1 repita enquanto i < a tot = tot + d + 2 e = e + c j = 1 repita enquanto j < b se e > 8 d = d + e + 1 seno d = d + e fim se j = j + 1 fim repita i = i + 1 fim repita escrever tot escrever d escrever e Fim

Realizar teste de mesa com os valores abaixo para uma execuo:


a) a = 3 b = 3 c = 2 b) a = 2 b = 2 c = 5

2 - Seja o seguinte algoritmo:


Algoritmo var: n1, n2, x, y, sub, tot escrever Digite um numero ler n1 escrever Digite outro numero ler n2 sub = 1 x = 0 tot = 0 repita enquanto n1 > x sub = 1 + x + sub y = 0 repita enquanto n2 > y tot = tot + sub sub = sub + 2 y = y + 1 fim repita se sub > 10 tot = tot + 1 fim se x = x + 1 fim repita escrever tot escrever sub Fim

Realizar teste de mesa com os valores abaixo para as execues:


a) n1 = 3 n2 = 2 b) n1 = 2 n2 = 4

3- Seja o seguinte algoritmo:


Algoritmo var: v1, v2, v3, x, y, w, z, s escrever Digite um numero ler v1 escrever Digite outro numero ler v2 escrever Digite outro numero ler v3 s = 0 x = 1 z = 0 repita enquanto x < v1 z = z + v1 y = 6 repita enquanto y >= v2 s = s + y 1 se s > 9 z = z - 2 seno z = z + 2 fim se w = 1 repita enquanto w <= v3 s = s + 1 w = w + 1 fim repita y = y - 1 fim repita x = x + 1 fim repita escrever c escrever k escrever m Fim

Realizar teste de mesa com os valores abaixo para as execues:


a) v1 = 3 v2 = 5 v3 = 2 b) v1 = 2 v2 = 4 v3 = 3