Baixe o app para aproveitar ainda mais
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
Compartilhar