Doubler votre argent

GW-Basic, utilisé par PC-Basic

Programme avec Texte Seulement

PC-BASIC

Il y a une ancienne légende d'un échiquier et d'un grain de riz. Bien qu'il existe de nombreuses versions, cela ressemble plus ou moins à ceci : Un roi, perdant une bataille d'esprit face à un adversaire intelligent, décide de donner au vainqueur ce qu'il souhaite.

« Mettez un grain de riz sur la première case d'un échiquier », dit-il au roi. Puis deux grains sur le deuxième carré, quatre sur le troisième, et ainsi de suite, en doublant le nombre de grains avec chaque carré successif.

Le roi, presque insulté par la demande apparemment dérisoire, accepte volontiers le choix d'un prix par l'homme intelligent. Cependant, il devient rapidement évident qu'en raison de la croissance exponentielle, il faudrait plus de grains de riz qu'il n'en existe sur la Terre pour répondre à la demande de l'homme intelligent.

Le roi résout néanmoins le problème : il décapite l'homme. Au lieu de grains de riz, MONEY.BAS.

Le programme MONEY.BAS répertorié ci-dessous commence votre salaire dans un nouvel emploi à court terme pour la modique somme d'un centime, mais le salaire double chaque jour. Appuyez sur la barre d'espace pour avancer dans le temps : un centime au total, trois centimes au total, sept centimes au total, etc. Bien que le travail ne dure que vingt et un jours, à la fin, vous avez gagné un joli montant.

Après avoir déclaré (informellement) deux variables en leur attribuant des valeurs initiales, le programme efface l'écran, donne un peu de contexte et attend que l'utilisateur appuie sur la barre d'espace pour calculer les totaux d'argent grâce à la puissance de la croissance exponentielle (si seulement il étaient si faciles dans la vraie vie !).

Notez que INKEY$ attend " ", ce qui signifie un appui sur la barre d'espace (nous verrons une alternative aux guillemets effrayants lorsque nous examinerons les codes ASCII plus tard). Notez également l'instruction PRINT USING, qui permet à la sortie d'être spécialement formatée, dans ce cas, en tant qu'argent.

À la ligne 60, la variable DAY est incrémentée de un et la variable MONEY est doublée (et l'argent précédemment gagné est ajouté au total).

1 REM MONEY
2 DAY=1:MONEY=0.01
10 CLS
20 PRINT "Si vous commencez avec un centime et que vous obtenez le double chaque jour, la somme d'argent que vous gagnerez sera astronomique !"
25 PRINT "Appuyez sur la barre d'espace pour augmenter le jour et gardez à l'esprit que l'argent total est l'argent gagné depuis le début du travail (total = 21 jours de travail)."
30 LOCATE 15,1:PRINT"DAY:";DAY
35 LOCATE 16,1:PRINT"TOTAL $: ";MONEY
40 I$=INKEY$
50 IF I$=" " THEN GOTO 56
55 GOTO 40
56 IF DAY=21 THEN GOTO 40
60 DAY=DAY+1:MONEY=(MONEY*2)+MONEY
70 LOCATE 15,1:PRINT"DAY:";DAY
75 LOCATE 16,1:PRINT USING"$########.##";MONEY
80 GOTO 40

La limitation la plus flagrante du programme est la nature à court terme de l'emploi. Vingt et un jours ne sont pas près de correspondre aux soixante-quatre cases de l'échiquier décrites dans l'histoire ancienne. Le problème est que GW-BASIC recourt à la notation scientifique (en utilisant la notation E plutôt que l'élégante puissance dix) alors que les nombres deviennent très grands, finissant par arrêter avec une erreur "Overflow" lorsque le total sort trop grand.

Il existe cependant des solutions de contournement; par exemple, reportez-vous au programme ADD.BAS, qui peut ajouter deux nombres de dizaines de chiffres de longueur.

 

 

 

 

 

 

 

Recherche personnalisée