05 outubro 2006

Lógica de programação 9

No último post nós vimos como trocar um número máximo de lâmpadas, e também como trocar apenas as lâmpadas queimadas dentro desse número máximo. Isso é o que nós conseguimos até agora:

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
Como você pode ver, estamos limitando o número de trocas na condição da repetição enquanto que dentro do bloco de código repetido nós usamos um condicional para interromper a repetição quando terminamos de trocar as lâmpadas queimadas. Vamos ver o que acontece se trocarmos as condições de lugar:
trocas = 0
enquanto existir lâmpada queimada faça
se trocas >= 10 então
interrompa
fim se
// todo aquele código que troca uma lâmpada
trocas = trocas + 1
fim enquanto
Veja como as condições se inverteram. Isso aconteceu porque a condição do enquanto deve ser verdadeira durante toda a repetição, até que fica falsa quando a repetição deve terminar; por outro lado, a condição do condicional é falsa durante toda a repetição, ficando verdadeira para sinalizar o fim das trocas de lâmpadas. Se você simular esse código vai descobrir que ele faz exatamente a mesma coisa que o anterior.

Será que existe outra maneira de fazer isso? Claro: nós podemos unir essas duas condições numa expressão só, porque no fundo elas servem para dizer "continue repetindo... continue repetindo... pare!". Se é assim, nós podemos colocá-las no nosso enquanto e mandar aquele condicional passear:
trocas = 0
enquanto existir lâmpada queimada e trocas < 10 faça
// todo aquele código que troca uma lâmpada
trocas = trocas + 1
fim enquanto
Para fazer isso, usamos uma nova palavra reservada: e. Esse tipo de palavra chave (outro nome para palavra reservada) também é conhecido como operador, porque pega expressões, fazendo alguma operação com elas, e retorna o resultado da operação. O operador e retorna um valor verdadeiro se as expressões da cada lado dele (direito e esquerdo) forem verdadeiras ao mesmo tempo. Esse código faz a mesma coisa que os dois anteriores, mas de uma maneira mais elegante e resumida.

Na próxima parte vamos conhecer outros operadores da nossa linguagem.

Nenhum comentário: