domingo, 6 de dezembro de 2009

Problema 8.8

Num post anterior apresentámos a solução para o problema 8.7. Chamámos a função principal hang87. Com base nisso vamos mostrar a solução para este problema.

01.def hang88():
02.    print 'Vamos jogar!'
03.    jogar = True
04.    while jogar:
05.        hang87()
06.        mais= raw_input('Jogar mais? [S/N]: ')
07.        if mais == 'N':
08.            print 'Adeus, até à vista...'
09.            jogar = False

Como se pode ver não alterámos o nosso programa principal. Apenas definimos um programa envolvente (os ingleses chamam-lhe wrapper). Claro que esta solução é muito simplista, e pressupõe que tudo o que não for N significa que se quer continuar a jogar. Mas podemos melhorar a solução.
01.def hang88b():
02.    print 'Vamos jogar!'
03.    jogar = True
04.    while jogar:
05.        jogar = continuar(jogar)
06.             
07.def continuar(jogar):
08.    mais = raw_input('mais? [S/N]: ')
09.    while mais not in ['S','N', 's','n','sim','não']:
10.        mais = raw_input('A resposta tem que ser [S/N]. A sua  resposta: ')
11.    if mais in ['N','n','não']:
12.            print 'Adeus, até à vista...'
13.            jogar = False
14.    return jogar


Deixamos ao leitor a tarefa de fazer à sua maneira. A moral desta solução era apenas a de que não foi preciso alterar o nosso programa principal.


Ao longo da vida de um programador a tarefa mais comum é ter que manter um programa, seja devido a erros seja devido a alterações na especificação. Quanto melhor tiver sido construído o nosso programa, mais fácil serão estas tarefas!

Sem comentários:

Enviar um comentário