Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 45 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

3.5 Estruturas de Repetição

conta 9 anos. Acima de dois anos, temos de contar 5,2 anos por ano para um

beagle (raça pequena), 5,7 para um golden retriever (raça média) e 7,8 para um

pastor alemão (raça grande). Considere que um cão pequeno pesa até 3 quilos,

um cão médio pesa entre 10 e 23 quilos e um cão grande tem acima de 23 quilos.

Escreva um programa que solicite o peso do cão e a sua idade. Com esses

dados, seu programa deve calcular a “idade humana” do cão usando como

exemplo os cães citados anteriormente.

 

3.5 ESTRUTURAS DE REPETIÇÃO

Como dito anteriormente, os computadores executam muito bem as tarefas repetitivas. Com frequência, temos de executar uma ação enquanto alguma condição seja verdadeira. Assim, por exemplo, quando procuramos um nome em uma lista, devemos ler nomes enquanto o nome lido for diferente daquele que procuramos. O mecanismo em algoritmos para isso é o bloco “Enquanto condição faça comandos”:

Enquanto condição for verdade

execute comandos

Por exemplo, se quiséssemos calcular a soma de todos os

inteiros até determinado número, ou seja, se eu digitar o número 10, meu programa irá somar 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 e dar o resultado da soma. Primeiro, é preciso armazenar o resultado entre cada execução do laço e depois executar o número de vezes determinado pela leitura. Um programa em Python seria:

n = int(input(‘Qual o número final? ‘))

soma = 0

i = 1

while i <= n:

soma = soma + i

i = i + 1

print(‘A soma de 1 até ‘, n, ‘ = ‘, soma)

■ Programa 3.11: soma_numeros.py.

 

Este programa, apesar de funcionar corretamente, ainda apresenta um problema: se você digitar um número igual a zero ou negativo, o programa ainda assim dará uma resposta. Vamos consertar isso fazendo um teste sobre o número lido:

n = int(input(‘Qual o número final? ‘)) if n > 0:

soma = 0

i = 1

while i <= n:

soma = soma + i

i = i + 1

print(‘A soma de 1 até ‘, n, ‘ = ‘, soma)

else:

print(‘Use números positivos’)

 

■ Programa 3.12: soma_numeros_v2.py.

 

Observe como a indentação deixa claro que o bloco ‘while’ está dentro do bloco ‘ if’. Se não for digitado um número positivo, o programa irá emitir uma mensagem e terminar.

Podemos aprimorar este programa e fazer com que termine apenas quando for digitado o número zero. Para tanto, vamos criar mais um nível para os blocos. O algoritmo ficaria:

Leia n

Enquanto n for diferente de 0 faça:

Se n > 0 faça:

soma números

Senão

escreva ‘Use números positivos’

Escreva a soma final

Pergunte por novo n

Intencionalmente, mostrei apenas o que é essencial ao algoritmo, sem entrar em muitos detalhes. Não é necessário. O bloco da soma de números, por exemplo, pode ser implementado de diversas formas e deixando o bloco sem detalhes podemos modificar suas diversas implementações. Em Python, teríamos:

n = int(input(‘Qual o número final? (0 para terminar

‘))

while n != 0:

if n > 0:

soma = 0

i = 1

while i <= n:

soma = soma + i

i = i + 1

print(‘A soma de 1 até ‘, n, ‘ = ‘, soma)

else:

print(‘Use números positivos’)

n = int(input(‘Qual o número final? (0 para termin

ar) ‘))

 

■ Programa 3.13: soma_numeros_v3.py.

 

Perceba que as linhas de carga inicial dos valores de soma e i

foram deslocadas para dentro do laço principal. Outra novidade aqui é o comando

while n != 0:

Em Python, “n != 0” é equivalente a dizer n diferente de 0.

Note como o programa é montado com diversos blocos, cada um

sendo englobado por um bloco mais externo. A Figura 3.8 mostra isso esquematicamente.

Figura 3.8 Blocos do programa 3.13.

 

EXERCÍCIO 3.11

 

Escreva um programa que receba um número inteiro n e calcule a soma dos

quadrados dos números até n-1. Exemplo: se n for igual a 3, seu programa

deve dar o resultado da soma dos números 12 + 22.

 

EXERCÍCIO 3.12

 

Escreva um programa que calcule a média dos números digitados pelo usuário. O

programa deve calcular a média quando o usuário digitar o número zero.

Niklaus E. Wirth – 1934-

Niklaus Wirth é um cientista suíço, pioneiro em assuntos ligados à engenharia de

software. Foi o criador da linguagem Pascal que, graças à sua sólida implementação

dos conceitos da programação estruturada, foi durante anos a linguagem preferida

para o ensino da programação em diversas universidades. Apesar de excelente para o

ensino, Pascal nunca foi considerada uma linguagem bem adaptada a projetos

pro ssionais em programação e, por isso, foi sendo substituída aos poucos por

linguagens mais adequadas tanto ao ensino quanto ao uso pro ssional.

Além de Pascal, Wirth criou diversas outras linguagens, por exemplo, Modula-2 e

Oberon. Por seu trabalho pioneiro em linguagens e sua inestimável contribuição nesta

área, Wirth ganhou em 1984 o Prêmio Turing.

Wirth ainda é autor de importantes textos sobre o ensino da programação, bem

como sobre engenharia de software.

 

Figura 3.9 Niklaus E. Wirth. Fonte: Reproduzida com permissão de Niklaus Wirth.