Racine carrée
GW-Basic, utilisé par PC-Basic
Programme avec Texte Seulement
PC-BASIC
GW-BASIC a une fonction racine carrée ; ça s'appelle SQR. Si vous voulez la racine carrée, disons, du nombre huit, vous devez taper PRINT SQR(8) et vous obtiendrez 2,828427 (la décimale de la sortie se termine, contrairement à la véritable expansion décimale de la racine carrée de huit - qui continue toujours sans modèle, puisque le nombre est irrationnel).
Mais le programme SQRT.BAS fait quelque chose de plus nouveau : il utilise un algorithme récursif pour trouver la racine carrée d'un nombre saisi.
Après avoir entré un nombre à l'invite Racine carrée de, le programme interroge également l'utilisateur pour un nombre de départ, en d'autres termes, un point auquel commencer les itérations. En appuyant sur la barre d'espace, vous pouvez voir chaque étape, car la racine carrée est dirigée jusqu'à ce que, finalement, les nombres cessent de changer et, voilà, votre racine carrée est approchée sous forme décimale.
Quel que soit le nombre choisi comme nombre de départ (dans des limites raisonnables), l'algorithme récursif obtient la racine carrée en seulement quelques étapes.
Examinez attentivement les lignes 40 et 50 : d'abord, la variable M est réduite avec un quotient, puis son résultat est additionné à la variable C, le nombre de départ (qui peut augmenter ou diminuer le nombre).
Le processus se répète ensuite de manière récursive, additionnant de moins en moins à C à chaque fois jusqu'à ce qu'il n'y ait plus de changements apparents, auquel cas la meilleure approximation de la racine carrée a été calculée.
L'algorithme n'est pas, sans surprise, le seul moyen de trouver des racines carrées. Peut-être qu'un programme utilisant plusieurs algorithmes d'enracinement différents (comme la méthode de division longue) est en ordre, avec les étapes clairement affichées à l'écran. De plus, ce serait bien si plus de chiffres après la virgule pouvaient être évalués et affichés.
10 SCREEN 7:COLOR 15,1:KEY
OFF:CLS
15 DIM S,C
20 INPUT "Square Root of:";S
30 INPUT "Nonbre de
départ: ";C
40 CLS:M=((S-C*C)/(2*C))
50 C=C+M
60 PRINT: PRINT
TAB(3);CHR$(251);S;" is ";C:
65 PRINT:PRINT "Appuyez <ESPACE> pour une autre
itération (ou ESCAPE pour Quitter)"
70 I$=INKEY$
75 IF I$=CHR$(32) THEN 40
80 IF I$=CHR$(27) THEN END
90 GOTO 70