Buscar

Aula09_Usando contador 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal da Grande Dourados
Faculdade de Ciências Exatas e de Tecnologias
Curso de Bacharelado em Sistemas de Informação
Algoritmos
Usando um contador e um acumulador
Profª Janne Oeiras Lachi
1
Problema 1
` Dada a H e a base de 3 paredes, elaborar um algoritmo 
que escreva quantas áreas são maiores que 100 m2.
` Quais são os dados de entrada do problema?
` Base e H de 3 paredes (6 informações no total)
` Quais são os dados de saída do problema?
` A quantidade de paredes cujas áreas são maiores que 100m2
2
Usando um contador
` Alguns exercícios pedem para informarmos ao final do 
processamento “quanto” foi visto de um determinado 
“tipo”.
` Por exemplo:
` Dada a altura e a base de 3 paredes, elaborar um algoritmo 
que escreva quantas áreas são maiores que 100 m2.
` Faça um Algoritmo que receba a idade e o peso de quatro pes
soas, calcule e mostre a quantidade de pessoas acima de 80k
g e a média de idade das quatro pessoas.
` Dado o sexo e altura de 5 pessoas, calcular e exibir a maior 
altura, a média das alturas femininas, o total de homens.
3
Problema 1: resolução
Dada a altura e a base de 3 paredes, elaborar um algoritmo que 
escreva quantas áreas são maiores que 100 m2.
programa AREA
var
B1, B2, B3: real
H1, H2, H3: real
A1, A2, A3: real
contador: inteiro
início
contador Å 0
escreva “Informe a base da 1ª. parede:”
leia B1
escreva “Informe a H da 1ª. parede:”
leia H1
escreva “Informe a base da 2ª. parede:”
leia B2
escreva “Informe a H da 2ª. parede:”
leia H2
escreva “Informe a base da 3ª. parede:”
leia B3
escreva “Informe a H da 3ª. parede:”
leia H3
4
Problema 1: resolução (cont.)
A1 Å B1 * H1
A2 Å B2 * H2
A3 Å B3 * H3
se (A1 > 100) então
contador Å contador + 1
fim_se
se (A2 > 100) então
contador Å contador + 1
fim_se
se (A3 > 100) então
contador Å contador + 1
fim_se
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim
5
Exemplo 1: resolução COM repetição 
` Vamos modificar a solução anterior para minimizar a 
quantidade de variáveis usadas
` Vamos pensar na solução prevendo que precisamos 
calcular a área de APENAS 1 parede.
6
Exemplo 1: resolução COM repetição
7
Programa AREA
var
BASE, ALTURA, AREA: real
contador: inteiro
início
contador Å 0
escreva “Informe a base da 1ª. parede:”
leia BASE
escreva “Informe a altura da 1ª. parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim
Temos aqui a solução para verificar se a área de 1 parede é
maior que 100 m2. Agora vamos incluir repetição para 
REAPROVEITAR este código para calcular a área de 3 paredes.
Exemplo 1: resolução COM repetição
Programa AREA
var
BASE, ALTURA, AREA: real
contador, I: inteiro
início
contador Å 0
para I de 1 até 3 passo 1 faça
escreva “Informe a base da”, I, “ª parede:”
leia BASE
escreva “Informe a altura da ”, I, “ª parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
fim_para
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim
Note que precisamos declarar a variável I do tipo inteiro 
quando usamos o comando para...fim_para
8
Exemplo 1: resolução COM repetição
Programa AREA
var
BASE, ALTURA, AREA: real
contador, I: inteiro
início
contador Å 0
para I de 1 até 3 passo 1 faça
escreva “Informe a base da”, I, “ª parede:”
leia BASE
escreva “Informe a altura da ”, I, “ª parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
fim_para
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim Precisamos repetir o trecho 3 vezes (de acordo com o que o 
problema pediu) e por isso a faixa de valores deve ir de 1 até 3
9
Exemplo 1: resolução COM repetição
10
Programa AREA
var
BASE, ALTURA, AREA: real
contador, I: inteiro
início
contador Å 0
para I de 1 até 3 passo 1 faça
escreva “Informe a base da ”, I, “ª parede:”
leia BASE
escreva “Informe a altura da ”, I, “ª parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
fim_para
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim Note aqui que aproveitamos o valor dentro de I para pedir 
corretamente a entrada para o usuário:
- Quando I for 1, aparecerá “Informe a base da 1ª parede:”
- Quando I for 2, aparecerá “Informe a base da 2ª parede:”
Exemplo 1: resolução COM repetição
11
Programa AREA
var
BASE, ALTURA, AREA: real
contador, I: inteiro
início
contador Å 0
para I de 1 até 3 passo 1 faça
escreva “Informe a base da ”, I, “ª parede:”
leia BASE
escreva “Informe a altura da ”, I, “ª parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
fim_para
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim
Note que o contador fica FORA do bloco. Por quê? O que ocorre 
se ele ficar dentro do bloco do para..fim_para?
Exemplo 1: resolução COM repetição
12
Programa AREA
var
BASE, ALTURA, AREA: real
contador, I: inteiro
início
contador Å 0
para I de 1 até 3 passo 1 faça
escreva “Informe a base da ”, I, “ª parede:”
leia BASE
escreva “Informe a altura da ”, I, “ª parede:”
leia ALTURA
AREA Å BASE * ALTURA
se (AREA > 100) então
contador Å contador + 1
fim_se
fim_para
escreva “A quantidade de paredes com área maior que 100 m2 é: ”, contador
fim
Note que o comando escreva fica FORA do bloco. Por quê? O 
que ocorre se ele ficar dentro do bloco do para..fim_para?
Exemplo 2
` Faça um Algoritmo que receba a idade e o peso de qua
tro pessoas, calcule e mostre a quantidade de pessoas a
cima de 80kg e a média de idade das quatro pessoas.
` Quais são os dados de entrada do problema?
` Idade de 4 pessoas
` Peso de 4 pessoas
` Quais são os dados de saída do problema?
` Quantidade de pessoas acima de 80Kg
` Média de idade das 4 pessoas
13
Exemplo 2: resolução
Programa PESO_IDADE
var
IDADE1, IDADE2, IDADE3, IDADE4 : inteiro
PESO1, PESO2, PESO3, PESO4 : real
MEDIA_IDADE: real
contador: inteiro
início
contador Å 0
escreva “Informe o peso da 1ª. pessoa:”
leia PESO1
escreva “Informe a idade da 1ª. pessoa:”
leia IDADE1
escreva “Informe o peso da 2ª. pessoa:”
leia PESO2
escreva “Informe a idade da 2ª. pessoa:”
leia IDADE2
escreva “Informe o peso da 3ª. pessoa:”
leia PESO3
escreva “Informe a idade da 3ª. pessoa:”
leia IDADE3
escreva “Informe o peso da 4ª. pessoa:”
leia PESO4
escreva “Informe a idade da 4ª. pessoa:”
leia IDADE4
14
Exemplo 2: resolução (cont.)
se (PESO1 > 80) então
contador Å contador +1
fim_se
se (PESO2 > 80) então
contador Å contador +1
fim_se
se (PESO3 > 80) então
contador Å contador +1
fim_se
se (PESO4 > 80) então
contador Å contador +1
fim_se
escreva “A quantidade de pessoas com peso acima de 80Kg é: ”, contador
MEDIA_IDADE Å (IDADE1 + IDADE2 + IDADE3 + IDADE4) / 4
escreva “A média de idade é: ”, MEDIA_IDADE
fim
15
Exemplo 2: resolução COM repetição 
` Vamos modificar a solução anterior para minimizar a 
quantidade de variáveis usadas
` Vamos pensar na solução prevendo que precisamos 
verificar o peso de apenas 1 pessoa.
16
Exemplo 2: resolução COM repetição
Programa PESO_IDADE
var
IDADE: inteiro
PESO,MEDIA_IDADE: real
contador: inteiro
início
contador Å 0
MEDIA_IDADE Å 0
escreva “Informe o peso da 1ª. pessoa:”
leia PESO
escreva “Informe a idade da 1ª. pessoa:”
leia IDADE
se (PESO > 80) então
contador Å contador +1
fim_se
escreva “A quantidade de pessoas com peso acima de 80Kg é: ”, contador
MEDIA_IDADE Å (IDADE)/ 1
escreva “A média de idade é: ”, MEDIA_IDADE
fim
Solução para 1 pessoa, agora vamos incluir repetição
17
Exemplo 2: resolução COM repetição
18
Programa PESO_IDADE
var
IDADE: inteiro
PESO,MEDIA_IDADE: real
contador: inteiro
início
contador Å 0
MEDIA_IDADE Å 0
para I de 1 até 4 passo 1 faça
escreva “Informe o peso da”, I, “ª. pessoa:”
leia PESO
escreva “Informe a idade da”, I, “ª. pessoa:”
leia IDADE
se (PESO > 80) então
contador Å contador +1
fim_se
MEDIA_IDADE Å MEDIA_IDADE + IDADE
fim_para
escreva “A quantidade de pessoas com peso acima de 80Kg é: ”, contador
escreva “A média de idade é: ”, MEDIA_IDADE/4
fim Note que usamos um contador para contar quantas 
pessoas vemos com peso acima de 80 Kg
Usando um acumulador
` Em alguns exercícios precisamos acumular os valores 
vistos até então.
19
início
contador Å 0
MEDIA_IDADE Å 0
para I de 1 até 4 passo 1 faça
escreva “Informe o peso da”, I, “ª. pessoa:”
leia PESO
escreva “Informe a idade da”, I, “ª. pessoa:”
leia IDADE
se (PESO > 80) então
contador Å contador +1
fim_se
MEDIA_IDADE Å MEDIA_IDADE + IDADE
fim_para
escreva “A quantidade de pessoas com peso acima de 80Kg é: ”, contador
escreva “A média de idade é: ”, MEDIA_IDADE/4
fim
Note que a variável MEDIA_IDADE está acumulando as 
idades vistas até então. No final (fora do laço do para) 
dividimos o valor acumulado.
Exemplo 3
` Dado o sexo e altura de 5 pessoas, calcular e exibir a 
maior altura, a média das alturas femininas, o total 
de homens.
` Quais são os dados de entrada do problema?
` Sexo de 5 pessoas
` Altura de 5 pessoas
` Quais são os dados de saída do problema?
` Maior Altura
` Média das Alturas femininas
` Total de homens
acumulador
contador
20
Exemplo 3: resolução SEM repetição
21
Programa MAIORH_QHOMENS_MEDIAFEM
var
S1, S2, S3, S4, S5 : caractere
H1, H2, H3, H4, H5 : real
MAIOR_H, H_FEM: real
contador: inteiro
início
contador Å 0
escreva “Informe o S da 1ª. pessoa:”
leia S1
escreva “Informe a H da 1ª. pessoa:”
leia H1
escreva “Informe o S da 2ª. pessoa:”
leia S2
escreva “Informe a H da 2ª. pessoa:”
leia H2
escreva “Informe o S da 3ª. pessoa:”
leia S3
escreva “Informe a H da 3ª. pessoa:”
leia H3
escreva “Informe o S da 4ª. pessoa:”
leia S4
escreva “Informe a H da 4ª. pessoa:”
leia H4
escreva “Informe o S da 5ª. pessoa:”
leia S5
escreva “Informe a H da 5ª. pessoa:”
leia H5
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5
1.751.691.670 F M F F M 1.53 1.80
Exemplo 3 : resolução (cont.)
22
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H
1.531.751.691.670 F M F F M 1.53 1.80
Exemplo 3 : resolução (cont.)
23
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.531.751.691.670 F M F F M 1.53 1.80
VERDADEIRO
Exemplo 3 : resolução (cont.)
24
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.53 1.801.751.691.670 F M F F M 1.53 1.80
Exemplo 3: resolução (cont.)
25
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
FALSO
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.801.751.691.670 F M F F M 1.53 1.80
Exemplo 3: resolução (cont.)
26
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
FALSO
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.801.751.691.670 F M F F M 1.53 1.80
Exemplo 3: resolução (cont.)
27
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
FALSO
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.801.751.691.670 F M F F M 1.53 1.80
Exemplo 3: resolução (cont.)
28
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.80 01.751.691.670 F M F F M 1.53 1.80
Exemplo 3: resolução (cont.)
29
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
escreva “A maior H é: ”, MAIOR_H
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1 
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.80 0 1.531.751.691.670 F M F F M 1.53 1.80
FALSO
Exemplo 3: resolução (cont.)
30
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1 
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.80 1.531.751.691.670 F M F F M 1.53 1.80
1
VERDADEIRO
Exemplo 3: resolução (cont.)
31
se (S3 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H3
fim_se
se (S4 =“M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H4
fim_se
se (S5 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H5
fim_se
escreva “A quantidade de homens é: ”, contador
se ((5 – contador) <> 0) então
escreva “A média das Hs femininas é: ”, H_FEM / (5 – contador)
senão
escreva “Não há mulheres!”
fim_se
fim
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.53 0
1.53
3.20
1.80
1.751.691.670 F M F F M 1.53 1.80
1
FALSO
Exemplo 3: resolução (cont.)
32
se (S3 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H3
fim_se
se (S4 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H4
fim_se
se (S5 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H5
fim_se
escreva “A quantidade de homens é: ”, contador
se ((5 – contador) <> 0) então
escreva “A média das Hs femininas é: ”, H_FEM / (5 – contador)
senão
escreva “Não há mulheres!”
fim_se
fim
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.53 0
1.53
3.20
4.89
1.80
1.751.691.670 F M F F M 1.53 1.80
1
FALSO
Exemplo 3: resolução (cont.)
33
se (S3 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H3
fim_se
se (S4 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H4
fim_se
se (S5 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H5
fim_se
escreva “A quantidade de homens é: ”, contador
se ((5 – contador) <> 0) então
escreva “A média das Hs femininas é: ”, H_FEM / (5 – contador)
senão
escreva “Não há mulheres!”
fim_se
fim
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.53 0
1.53
3.20
4.89
1.80
1.751.691.670 F M F F M 1.53 1.80
1
2
VERDADEIRO
Exemplo 3: resolução (cont.)
34
se (S3 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H3
fim_se
se (S4 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H4
fim_se
se (S5 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H5
fim_se
escreva “A quantidade de homens é: ”, contador
se ((5 – contador) <> 0) então
escreva “A média das alturas femininas é: ”, H_FEM / (5 – contador)
senão
escreva “Não há mulheres!”
fim_se
escreva “A maior altura eh:”, MAIOR_H
fim
Variáveis
contador S1 S2 S3 S4 S5 H1 H2 H3 H4 H5 MAIOR_H H_FEM
1.53 0
1.53
3.20
4.89
1.80
1.751.691.670 F M F F M 1.53 1.80
1
2
MAIOR_H Å H1
se (MAIOR_H < H2) então
MAIOR_H Å H2
fim_se
se (MAIOR_H < H3) então
MAIOR_H Å H3
fim_se
se (MAIOR_H < H4) então
MAIOR_H Å H4
fim_se
se (MAIOR_H < H5) então
MAIOR_H Å H5
fim_se
Repetição de comandos
` Note que as soluções propostas até então tem muitos 
comandos repetidos.
Teste da maior altura
Vários “se” sequenciais “repetidos/semelhantes”
35
H_FEM Å 0
se (S1 = “M”) então
contador Å contador +1 
senão
H_FEM Å H_FEM + H1
fim_se
se (S2 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H2
fim_se
se (S3 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H3
fim_se
se (S4 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H4
fim_se
se (S5 = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H5
fim_se
Repetição de comandos
Verificação da quantidade de homens
Verificação da média das alturas femininas
Vários “se... senão” sequenciais “repetidos”
36
Exemplo 3: solução COM repetição
programa MAIORH_QHOMENS_MEDIAFEM
var
S : caractere
H, MAIOR_H, H_FEM: real
contador: inteiro
início
contador Å 0
H_FEM Å 0
MAIOR_H Å 0
escreva “Informe o sexo da 1ª. Pessoa (M ou F):”
leia S
escreva “Informe a altura da 1ª. pessoa:”
leia H
se (MAIOR_H < H) então
MAIOR_H Å H
fim_se
se (S = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H
fim_se
escreva “A quantidade de homens é: ”, contador
escreva “A média das alturas femininas é: ”, H_FEM / (5 – contador)
escreva “A maior altura eh:”, MAIOR_H
fim
Pensar a solução para 1 vez
37
Exemplo 3: solução COM repetição
Programa MAIORH_QHOMENS_MEDIAFEM
var
S : caractere
H, MAIOR_H, H_FEM: real
contador, I: inteiro
início
contador Å 0
H_FEM Å 0
MAIOR_H Å 0
para I de 1 até 5 passo 1 faça
escreva “Informe o sexo da”, I, “ª. pessoa:”
leia S
escreva “Informe a altura da”, I, “ª. pessoa:”
leia H
se (MAIOR_H < H) então
MAIOR_H Å H
fim_se
se (S = “M”) então
contador Å contador +1
senão
H_FEM Å H_FEM + H
fim_se
fim_para
escreva “A quantidade de homens é: ”, contador
escreva “A média das alturas femininas é: ”, H_FEM / (5 – contador)
escreva “A maior altura eh:”, MAIOR_H
fim
Incluindo o comando para. Note a 
indentação dos comandos dentro do 
para.
38
Exemplo 4
` Nem sempre a repetição é explícita no enunciado.
` Faça um algoritmo que receba um número inteiro maior 
que 1, verifique se o número fornecido é primo ou não. 
A saída do seu algoritmo é mostrar uma das duas 
mensagens: “É número primo” ou “Não é número 
primo”.
` Um número natural é um número primo quando ele tem 
exatamente dois divisores: o número um e ele mesmo.
Exemplo 4
programa PRIMO
início
fim
Escreva o corpo mínimo.
Exemplo 4
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
fim
Leia a entrada do problema. 
Exemplo 4
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
fim
Agora é preciso pensar sobre o 
processamento.
Temos que um número é primo se 
tiver 2 divisores: o 1 e ele mesmo.
Então este problema requer que 
contemos todos os divisores que o 
número possui entre 1 e ele mesmo. 
Ou seja uma faixa de valores fixos. 
Por essa razão “vemos” que 
precisaremos do comando para.
Exemplo 4
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
para i de 1 até num passo 1 faça
fim_para
fim
Vamos criar um para a fim de contar 
todos os divisores que o número 
possui entre 1 e ele mesmo. 
Exemplo 4
Os divisores de um número são 
aqueles que quando ocorre a divisão 
o resto é zero. Exemplo: considere o 
número 9, seus divisores são 1, 3 e 9 
porque na faixa entre 1 e 9 somente 
para eles o resto da divisão é zero.
Vamos criar uma variável resto para 
calcular esse valor para cada número 
testado na faixa.
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
para i de 1 até num passo 1 faça
restoÅ num - (num div i) * i
fim_para
fim
Exemplo 4
Agora que temos o valor do resto, 
vamos testar se ele é zero, usando o 
comando de decisão.
Se o resto for igual a zero, isso 
significa que vimos um divisor e 
precisamos contar. Assim, vamos 
usar um contador para guardar 
quantos divisores vimos até então.
Usamos o para com o objetivo de 
testar REPETIDAMENTE se um certo 
número (no caso os valores 
assumidos por i) é divisor do número 
dado como entrada (num).
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
para i de 1 até num passo 1 faça
resto Å num - (num div i) * i
se (resto = 0) então
contador Å contador +1
fim_se
fim_para
fim
Exemplo 4
Após o término do para, precisamos 
testar se o número tem mais de 2 
divisores. Se tiver, não é primo. Caso 
contrário, é primo.
programa PRIMO
início
escreva “Informe um número inteiro >1:”
leia num
para i de 1 até num passo 1 faça
resto Å num - (num div i) * i
se (resto = 0) então
contador Å contador +1
fim_se
fim_para
se (contador > 2) então
escreva “O número não é primo.”
senão
escreva “O número é primo”
fim_se
fim
Exemplo 4
Temos que iniciar o contador, caso 
contrário ele terá “lixo de memória” e 
guardará um valor incorreto. 
Neste problema, podemos iniciá-lo 
com o valor 1, ao invés de zero, poistodo número tem pelo menos um 
divisor: o número 1. Observação: não 
confundir o valor 1 atribuído ao 
contador com o valor 1 que é divisor 
de qualquer número natural.
Assim, como já consideramos o 1 
como divisor de qualquer número, 
temos que começar o para com o 
valor 2.
A lógica consiste em testar se no 
intervalo de 2 até num, o número num
tem mais de 2 divisores, pois nesse 
caso ele não é primo.
programa PRIMO
início
contador Å 1
escreva “Informe um número inteiro >1:”
leia num
para i de 2 até num passo 1 faça
resto Å num - (num div i) * i
se (resto = 0) então
contador Å contador +1
fim_se
fim_para
se (contador > 2) então
escreva “O número não é primo.”
senão
escreva “O número é primo”
fim_se
fim
Exemplo 4
Para terminar, declaramos as 
variáveis usadas na solução.
programa PRIMO
var
contador, num, i, resto: inteiro
início
contador Å 1
escreva “Informe um número inteiro >1:”
leia num
para i de 2 até num passo 1 faça
resto Å num - (num div i) * i
se (resto = 0) então
contador Å contador +1
fim_se
fim_para
se (contador > 2) então
escreva “O número não é primo.”
senão
escreva “O número é primo”
fim_se
fim
Referências
` Algoritmos – Fundamento e Prática. Everton Coimbra de 
Araújo. Florianópolis: Visual Book, 2007.
` Algoritmos - Lógica para desenvolvimento de programação de 
computadores. José Augusto N. G. Manzano, Jayr Figueiredo 
de Oliveira. São Paulo: Érica, 2006.
49
	Algoritmos
	Problema 1
	Usando um contador
	Problema 1: resolução
	Problema 1: resolução (cont.)
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 1: resolução COM repetição
	Exemplo 2
	Exemplo 2: resolução
	Exemplo 2: resolução (cont.)
	Exemplo 2: resolução COM repetição
	Exemplo 2: resolução COM repetição
	Exemplo 2: resolução COM repetição
	Usando um acumulador
	Exemplo 3
	Exemplo 3: resolução SEM repetição
	Exemplo 3 : resolução (cont.)
	Exemplo 3 : resolução (cont.)
	Exemplo 3 : resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Exemplo 3: resolução (cont.)
	Repetição de comandos
	Repetição de comandos
	Exemplo 3: solução COM repetição
	Exemplo 3: solução COM repetição
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Referências

Outros materiais