03 outubro 2006

Lógica de programação 8

Nós já sabemos trocar todas as lâmpadas de uma sala usando repetição (se não lembra veja a parte 6 dessa série), mas digamos que o SINDETROL (Sindicato dos Estagiários Trocadores de Lâmpadas) tenha feito um acordo que limita as trocas de lâmpadas a 10 por dia. Nesse caso, nós vamos ter que contar as trocas de lâmpadas e parar quando chegarmos na décima troca. Para fazer isso podemos usar uma variável:

trocas = 0
enquanto trocas < 10 faça
// todo aquele código que troca uma lâmpada
trocas = trocas + 1
fim enquanto
Vamos tentar entender o que está acontecendo. No começo, o valor inicial da variável trocas é zero, porque ainda não trocamos lâmpadas hoje. Como zero é menor que 10 o código que troca uma lâmpada é executado e trocas é somado com 1. Como 1 ainda é menor que 10, trocamos mais uma lâmpada e trocas passa a ser 2. Isso acontece até que trocas está valendo 9, porque já trocamos 9 lâmpadas, e o código de troca de lâmpadas é executado pela última vez. Depois disso, trocas é incrementado para 10. Como 10 não é menor que 10 a repetição pára e o estagiário vai tomar um cafezinho. Note que só podemos incrementar o valor de trocas depois que realmente fazemos uma troca. Pronto. Fim do tópico.

Não! Como você deve lembrar, a repetição da parte 6 tinha como condição ainda existir alguma lâmpada queimada para ser trocada. Agora estamos trocando 10 lâmpadas sem nem ver se elas estão queimadas ou não! Vamos tentar consertar isso com um comando novo:
trocas = 0
enquanto trocas < 10 faça
se não existir lâmpada queimada então
interrompa
fim se
// todo aquele código que troca uma lâmpada
trocas = trocas + 1
fim enquanto
Agora, enquanto a repetição limita o número de trocas a 10, o condicional que colocamos logo no começo da repetição trata de interromper a repetição se não tiver mais lâmpadas queimadas. Se as lâmpadas queimadas acabaram o comando interrompa cancela a repetição, fazendo com que o computador execute o comando seguinte ao fim da repetição.

Mas essa não é a única forma de fazer isso (dica: o que acontece se usarmos o mesmo mecanismo, mas com as condições da repetição e do condicional trocadas?). Na próxima parte, vamos ver variações desse exemplo.

Nenhum comentário: