LE HP-71, C'EST FACILE

LE HP-71, C'EST FACILE

Par Joseph Horn- Traduit de l'américain par Jean-Daniel Dodin

Abstract

Cette version online est une reprise de fichiers que j'ai retrouvés dans mes archives. Elle est manifestement incomplète 'en particulier, elle ne contient pas le code des programmes lex), mais je n'ai pas pu retrouver de version papier (!) Au point que je me demande si le livre a jamais été publié en français (si vous en avez un, signalez le moi, merci - il semble que si, j'ai mauvaise mémoire :-). Cette mise en ligne est expressément autorisée par l'auteur et par le traducteur.

(c) Éditions du Cagire SARL 77 rue du Cagire 31100 Toulouse France 61 44 03 06. Tous droits réservés. (c) 1985 Synthetix pour l'original (c) 1985 Éditions du Cagire pour la traduction. Reproduction par tous moyens interdite, sauf partiellement, dans un but de compte rendu.

1  INTRODUCTION

Hewlett-Packard appelle le HP-71 une "machine ouverte". Ils ont rendu disponibles au public toutes les spécifications internes (appelées IDS, pour Internal Design Specifications). L'ennui est que le "public" n'est pas la moyenne des utilisateurs de HP-71 !La documentation est disponible en volumes épais et indigestes, et elle coûte la peau des fesses. Même si vous pouvez vous offrir ces volumes ésotériques, vous n'avez sans doute pas l'intention de perdre le reste de votre vie à essayer de les comprendre. Ainsi votre HP-71 n'est toujours pas "ouvert" pour vous...

D'où ce livre. Autant les "IDS" sont peu maniables, autant ce livre à été écrit à votre intention. Son but n'est pas de documenter chaque octet du HP-71, mais de vous donner juste les trucs et astuces du HP-71 que vous pouvez utiliser immédiatement, les secrets que le manuel d'utilisation et le manuel de référence ne vous donnent pas. Le livre contient aussi une collection de programmes qui vous montre comment mettre ces secrets en pratique. Si vous avez quelque question que ce soit à laquelle ce livre ne réponde pas, vous trouverez en fin d'ouvrage une offre formidable : Le service répondeur, gratuit !

N'oubliez-pas que ce livre n'est pas destiné à remplacer le manuel d'utilisation. Il est son complément. Si vous trouvez ces manuels incompréhensibles, commencez à lire ce livre et tout s'éclaircira à mesure que vous progresserez dans vos connaissances sur le HP-71. D'un autre côté, si vous avez trouvé les manuels plutôt clairs, sautez les aspects faciles de ce livre et amusez-vous avez les informations sur PEEK$ et POKE à la fin, et jetez un oeil aux programmes en BASIC et en langage machine. Vous y trouverez votre affaire.

Bien que son contenu ait été soigneusement vérifié, l'auteur (ni le traducteur) ne peut garantir le contenu de ce livre. HP a tous les droits de réviser le système d'exploitation du HP-71, et il est possible que de futurs HP-71 ne répondent pas de la façon indiquée dans ce livre. Si une programmation indépendante des versions vous est essentielle, la seule solution pratique est de travailler avec l'excellent module FORTH/Assembleur combiné aux IDS, ce qui vous permet l'utilisation de points d'entrée dans les fonctions pour lesquels HP a promis qu'ils resteraient inchangés dans les prochaines révisions.

Je dois d'abord remercier mon frère James L. Horn, qui m'a le premier intéressé aux ordinateurs et m'a fait connaître PPC, et qui est toujours une source de support moral et de défi intellectuel. Ce livre lui est dédié. & de chauds remerciements à Karen Dodson, qui a supporté tous les plantages de l'ordinateur du collège, dans les années 70.

Karen est pour moi l'exemple du "vrai programmeur" ; un jour je lui ai proposé avec fierté la liste non commentée de mon dernier programme, pratiquement certain que c'était le code le plus embrouillé et totalement illisible jamais élaboré. Non seulement elle a vu au premier coup d'oeil ce que faisait le programme, mais elle a même suggéré une méthode plus courte et plus rapide de faire la même chose. & également merci au dernier James Davidson, qui a écrit la fameuse bibliothèque de la HP-25, et nous a appris à tous ce qu'est une solution élégante en 49 octets ou moins. & sans Richard Nelson (fondateur de PPC et CHHU, et éditeur de journaux sur les ordinateurs de poche depuis plus de 10 ans), ce livre n'existerait pas. Remerciements du fond du coeur à Richard pour son travail et ses encouragements ; puissent ses disciples se multiplier. & Jeremy Smith mérite un bon remerciement pour tout son enthousiasme qui est si contagieux que parfois je me demande si mon excitation sur ces gadgets n'est pas un peu de la sienne qui aurait fait tâche d'huile ! & finalement je remercie Keith Jarett de publier ce livre, et d'avoir supporté mes retards (ce livre est un exemple concret de la loi de Hofstader : "Les choses prennent plus de temps que vous n'attendiez, même si vous tenez compte de la loi de Hofstader"). Sa patience m'a permis de couper dans le verbiage et de clarifier les obscurités. Ainsi le lecteur lui-même doit des remerciements à Keith Jarett !

Joseph K. Horn (membre de CHHU #13)

St. Michael's Prep.

1042 Star Route

Orange, California USA 92667

SUB ANYTIME @ DISP "(714) 633-2041" @ END SUB

Note du traducteur : si vous appelez Joseph, tenez quand même compte du décalage horaire,

qui est d'environ 12 heures !

Note pour l'édition en ligne : Ce livre est vieux, et il serait discourtois de déranger Joseph sans une raison majeure.

Le traducteur tient à ajouter ses remerciements à sa femme qui supporte sa mauvaise humeur, à ses filles qui le laissent utiliser parfois son ordinateur et à tous ceux qui lui ont facilité son travail.

2  LES TROIS MODES DE TRAVAIL

Quand vous recevez votre HP-71 la première fois, je parie que vous pensez avoir reçu une machine ! (je ne parle pas du fait que la plupart des acquéreurs du HP-71 achètent toute sortes de périphériques !).

Le fait est que le HP-71 est réellement trois machines dans la même boîte. Et vous pouvez utiliser n'importe laquelle ou toutes les trois, à votre guise.

2.1  LE MODE CALCUL

La première machine à laquelle le HP-71 s'apparente est un impressionnant calculateur scientifique avec plus de possibilités que tout autre calculateur, un point c'est tout ! Quand vous placez le HP-71 en mode CALC, il devient un calculateur qui est si simple à utiliser que vous pouvez vous en servir immédiatement, sans aucun entraînement spécial ; il est en fait si puissant qu'après avoir lu ce chapitre sur le mode CALC, vous serez devenu un magicien du clavier !

Le mode CALC ne vous permet pas d'écrire de programme, mais vous pouvez résoudre des formules pour des valeurs différentes en n'ayant à taper la formule qu'une fois ! Vous pouvez résoudre des problèmes similaires sans avoir à tout retaper (il n'y a à changer que ce qui est différent).

Tout ce que vous avez fait avec une calculatrice programmable dans le passé, vous pouvez maintenant le faire plus vite et plus facilement en mode CALC, et cela sans écrire une ligne de programme !

2.2  LE MODE CLAVIER BASIC

L'état normal du HP-71 (l'état après la première mise en place des piles) est le mode CLAVIER BASIC. Dans ce mode vous pouvez taper n'importe quoi à l'affichage, et quand vous pressez la grande touche [ENDLINE], le HP-71 essaye de comprendre ce que vous voulez, et il le fait. Quand c'est fait, il revient au repos, attendant que vous tapiez une nouvelle "commande". Vous êtes Aladin et le HP-71 est le génie de la lampe, il attend vos voeux (vous avez droit à plus de trois !).

Bien sûr vous devez taper vos commandes de la bonne façon. Par exemple, vous devez les épeler correctement. Vous devez aussi utiliser des mots connus du HP-71. Par exemple, si vous tapez la commande "BEEP OR ELSE", le HP-71 ne pourra pas obéir à votre commande parce que ce n'est pas ainsi que la commande BEEP marche.

Le langage que "parle" le HP-71 est appelé BASIC. Le BASIC est extrêmement facile à apprendre, d'où son nom. Il est tellement "Basique" qu'un enfant peut l'apprendre (et

ils le font !). Aussi, si le HP-71 vous parait effrayant, écartez cette crainte car il est seulement en train d'attendre impatiemment vos commandes et apprendre son langage est aussi simple que lire un drôle de petit livre (celui-ci !).

2.3  LE MODE PROGRAMME BASIC

Si vous prenez un lot de commandes BASIC et que vous les chaînez les unes aux autres, vous obtenez ce que l'on appelle un "programme". Juste comme les programmes vendus aux concerts donnent la liste des morceaux de musique dans l'ordre où ils vont être joués, un programme d'ordinateur est une liste de commandes dans l'ordre où elles doivent être exécutées. Quand vous aurez appris à donner des commandes en mode CLAVIER BASIC, vous serez prêt à écrire des programmes !

Ce livre vous dira tout ce que vous devez savoir sur la programmation. Vous y trouverez comment reconnaître les commandes à utiliser, puis comment les écrire sur papier sous forme de programmes, puis comment les enregistrer proprement dans la mémoire du HP-71.

Maintenant la magie commence ! Après avoir stocké les commandes en mémoire, tout ce que vous avez à faire est de presser la touche [RUN] du HP-71 et toutes ces commandes sont exécutées *ZAP* en un éclair ! Et pour recommencer, il suffit de presser [RUN] à nouveau !

La vraie beauté du mode PROGRAMME BASIC n'est pas le temps qu'il vous fait gagner, même si c'est une bonne chose. La meilleure chose est que cette collection de commandes (programmes) marche sur n'importe quel HP-71. Vous posez une question ? "Je n'ai qu'un HP-71" dites-vous. Ah ! Mais il y a des milliers d'autres gens qui ont aussi un HP-71, pensez à tous les programmes qu'ils sont en train d'écrire ! Il est probable qu'un autre acheteur de HP-71 a déjà écrit un programme pour faire exactement ce dont vous avez besoin ! C'est pourquoi l'appartenance à un club d'utilisateurs de HP-71 est mieux que bien.

De fait, beaucoup de gens utilisent leur HP-71 uniquement en mode programme BASIC, parce qu'ils l'ont rempli de programmes faits par d'autres et qu'ils se contentent de les exécuter tout le temps. Ils ont transformé leur HP-71 en une machine personnelle, parfaite pour leurs propres besoins. Ce genre de choses est possible en mode programme BASIC. Pensez à quel point votre HP-71 sera personnalisé quand vous aurez fini de lire ce livre !

2.4  UTILISER LES TROIS MODES

Ce livre se propose une lourde tâche. Non seulement il explique comment utiliser parfaitement le mode CALC, comment parler en mode CLAVIER BASIC, comment utiliser le mode PROGRAMME BASIC, mais il va essayer de clarifier la façon dont ils se recouvrent !

Le HP-71 est un vrai schizoïde. Il n'est pas réellement trois machines, il semble simplement être trois machines en une, pour simplifier la vie. Au bout d'un moment, vous comprendrez comment calculer en mode CLAVIER BASIC. Vous pouvez même exécuter des programmes BASIC en mode CALC ! Ainsi vous en viendrez à considérer le HP-71 non pas comme trois machines, mais comme une seule à la personnalité changeante.

Dès que vous pourrez utiliser le HP-71 comme une seule puissante machine, au lieu d'une collection de trois machines élémentaires, alors vous pourrez être appelé expert en HP-71. Vous ne savez peut-être pas ce qu'il y a sous le couvercle, mais vous savez conduire sur tous les terrains à pleine vitesse, et ça, bon sang, fait de vous un conducteur expert !

Ceci est ma garantie : si vous avez lu ce livre de la première à la dernière page et fait les exemples montrés, je vous garantis personnellement que vous serez un expert en HP-71 !

Commençons par le mode CALC.

3  LE MODE CALC

D'abord, allumez le HP-71 en pressant la touche [ON] dans le coin en bas à gauche. Après l'allumage du HP-71, la touche [ON] ne s'appelle plus ON (l'appareil est déjà allumé !), elle s'appelle [ATTN], pour "ATTentioN". tapez le nombre 12345 (avec les touches numériques), et pressez [ATTN]. Le nombre disparaît ! Pensez à [ATTN] comme le "bouton de panique" ; Quand vous le pressez, tout ce qui était en cours est viré.

En ce moment, vous devez voir un caractère ">" à l'affichage, suivi par un carré clignotant. Le ">" vous indique que vous êtes en mode CLAVIER BASIC. Le carré clignotant est appelé le "curseur". Le curseur vous indique où vous allez taper le prochain caractère. Quand le curseur a la forme d'un bloc, il est appelé le "curseur de remplacement", car tout ce que vous tapez remplace ce qui était déjà là.

Essayez de taper votre nom à l'affichage. La touche [SPC] est utilisée pour entrer les eSPaCes (comme la barre d'espacement des machines à écrire). Avant de presser [ATTN] pour tout effacer, pressez les touches [<-] et [->], entre les touches [RUN] et [SPC] pour prendre l'habitude de déplacer le curseur. Remarquez que presser uniquement les flèches déplace juste le curseur d'une position à gauche ou à droite, mais si vous pressez d'abord la touche [g] bleue, les flèches déplacent le curseur tout au bout, à gauche ou à droite de la ligne. De plus, si vous pressez la touche jaune [f] d'abord, la touche [<-] fait reculer le curseur et efface le caractère de gauche, alors que la touche [->] efface le caractère au dessus duquel se trouve le curseur et déplace le reste pour combler le trou.

A partir de maintenant, dans ce livre, les frappes de touches seront indiquées de façon abrégée. Au lieu de dire "pressez la touche jaune [f] et ensuite la touche flèche à gauche", je dirai [f] [<-]. Plus précisément, cette séquence est appelée [f] [BACK], car la touche jaune [f] utilise toujours les mots écrits en jaune au dessus des touches ; voyez-vous comment "BACK" est écrit au dessus de la flèche à gauche ("BACK" signifie "en arrière" en anglais) ? De la même façon, la touche bleue [g] active ce qui est écrit en bleu sur la face avant des touches. Les touches de lettres n'ont rien d'écrit en bleue ; la touche [g] est la bascule majuscules/minuscules pour les lettres, comme sur une machine à écrire. Si cela vous semble à l'envers (les majuscules d'abord, les minuscules après pressions de [g]), pressez [f] [flèche en haut] pour basculer dans le mode usuel. Cette touche est la touche "LowerCase lock" ("blocage en minuscules") ; elle échange les modes "majuscule d'abord" et "minuscules d'abord".

Remarquez que vous pouvez presser [f] [I/R] pour changer la forme du curseur d'un bloc en une flèche. La flèche est appelée "curseur insertion" parce qu'elle permet l'insertion de ce que vous tapez dans la ligne. Ce curseur est commode quand vous avez accidentellement oublié une lettre ; vous pouvez l'insérer sans avoir à retaper toute la ligne.

Pour éteindre le HP-71, pressez [f] [ATTN], qui est la touche [OFF]. Si vous éteignez en mode CLAVIER BASIC, la prochaine fois que vous l'allumerez, le HP-71 sera toujours en mode CLAVIER BASIC.

3.1  LE MODE CALC DU HP-71

Pour mettre le HP-71 en mode calc, pressez la touche jaune [f], puis la touche virgule [,], qui a le mot CALC écrit en jaune au dessus d'elle. A partir de maintenant, cette séquence de touches sera abrégée en [f] [CALC], ou simplement [CALC]. Vous entrez et vous sortez du mode CALC de la même façon, en pressant [CALC]. Si vous éteignez le HP-71 en mode CALC, vous serez toujours en mode CALC quand vous le rallumerez.

Essayons quelques problèmes en mode CALC. Tapez 12+34+56 et regardez l'affichage. Vos frappes et l'affichage sont :

12+34+56

46+56

(46 est la réponse intermédiaire de 12+34, évidemment)

Maintenant, supposons que vous réalisez que vous avez fait une erreur, il ne fallait pas taper 56 mais 52. Vous pouvez presser [ATTN] et repartir à zéro. Mais il y a mieux !

Pressez seulement [BACK]. Et regardez l'affichage :

[BACK]

46+5

Maintenant pressez 2 et vous avez exactement ce que vous vouliez :

2

46+52

Ainsi, corriger une erreur à l'extrémité droite de l'affichage est simple avec la touche [BACK].

Voici une astuce commode : Si vous voulez presser [BACK] plusieurs fois, ne pressez pas la touche [f] plusieurs fois, maintenez-la simplement puis pressez [BACK] autant de fois que vous voulez, en tenant toujours la touche [f] pressée. En fait, si vous maintenez la touche [BACK] pressée plus d'une seconde environ, elle se répète automatiquement à toute vitesse, ce qui fait que vous n'avez pas à user votre doigt à la frapper !

La touche jaune [f] et la touche bleue [g] agissent de deux façons : comme de vraies touches préfixe (presser et lâcher pour changer la signification de la prochaine frappe) ET de vraies touches majuscules (presser et maintenir pressée pour changer le sens de la prochaine frappe).

Le problème maintenant, dans le HP-71, est 12+34+52. Comment le voir ? Voici un nouveau truc commode : n'importe quand dans un calcul, si vous voulez voir tout le problème, pressez juste la touche flèche en haut, puis [ENDLINE] (pas flèche en bas !) pour revenir au point de départ :

[HAUT]

12-34+52

[ENDLINE]

46+52

Maintenant, supposons que vous réalisez que vous avez fait une autre erreur. Ce n'était pas 12 mais 19 qu'il fallait taper, par exemple. Que faire ? N'utilisez-pas [BACK] ! ce serait trop long et, de plus, démolirait tout le calcul ! Pressez simplement à nouveau la touche flèche en haut [HAUT], utilisez les touches [<-] et [->] pour déplacer le curseur jusqu'au chiffre en cause et tapez la valeur correcte. Simple !

[HAUT] [->] 9

19+34+52

Bien sûr, il suffit de presser [ENDLINE] pour continuer :

[ENDLINE]

53+52

ce qui est juste ce que nous voulions. Pour avoir la réponse finale, pressez [ENDLINE] :

[ENDLINE]

105

3.2  UTILISER LE DERNIER RÉSULTAT DANS LES CALCULS SUIVANTS AVEC RES

Maintenant, supposons que vous vouliez cette réponse, 105, dans votre prochain calcul. Il y a 4 façons de l'obtenir.

La première et la plus évidente façon d'utiliser 105 dans votre prochain calcul est de le taper chaque fois que vous en avez besoin. Cela marche, mais c'est la méthode la plus pénible !

La seconde méthode pour obtenir 105 dans votre prochain calcul est d'utiliser la fonction RES. RES (pour RESultat) est automatiquement mis à la valeur de la dernière réponse que vous avez reçue. Dans votre cas 105 (RES est semblable à la fonction Lastx des calculatrices HP).

Vous pouvez taper RES au clavier (cela prend trois frappes de touches) ou presser [RES], en pressant la touche jaune [f] puis [ENDLINE] qui a RES écrit en jaune au dessus d'elle (cela fait deux pressions de touches). Les deux façons marchent pareil, même si vous tapez "res" en minuscules !

Essayons d'évaluer 105+5*105/(105-30) avec RES :

RES+

105+

Avez-vous vu comment la valeur de RES est amenée automatiquement ? Continuons :

5*RES/

105+525/

et finissons par

(RES-30

105+525/(105-30)

Si vous voyez 110-30 au lieu de la ligne ci-dessus, vous avez oublié d'ouvrir la parenthèse ! Dans ce cas, pressez la flèche en haut et insérez la dans le calcul après avoir pressé [I/R].

Si vous pressez [ENDLINE] dès maintenant, vous avez la réponse finale. Mais allons plus lentement pour voir ce qui se passe. Remarquez que le curseur clignote au dessus de la parenthèse fermante. Il "sait" que vous devez fermer une parenthèse ! Voyons la réponse intermédiaire en fermant cette parenthèse :

)

105+525/(75)

Voici un truc spécial au mode CALC ! La touche [RUN] est magique. Au lieu de presser [ENDLINE] et de tomber à toute vapeur dans la solution finale, regardez ce qui arrive quand vous pressez [RUN] à la place :

105+7

Qu'est-ce que c'est que ça ? Nous voyons le résultat intermédiaire de 525/75. Finissons :

[ENDLINE]

112

3.3  UTILISER LA VALEUR DE RES EN TAPANT ()

Une propriété commode du mode CALC est qu'une paire de parenthèses vide est automatiquement remplie par la valeur du dernier RESultat. Comme RES est maintenant 112 (notre résultat ci-dessus), remettons le à 105, comme précédemment.

Pour mettre RES à 105, tapez juste 105 et pressez [ENDLINE] :

105 [ENDLINE]

105

Maintenant, calculons, comme précédemment, 105+5*105/(105-30). Mais cette fois, en utilisant () au lieu de RES :

()+

105+

Voyez vous comment () est rempli par 105 ? Continuons :

5*()/

105+525/

La suite est une astuce. Vous avez ouvert les parenthèses pour le dénominateur (105-30), mais vous utilisez aussi () pour 105. Aussi vous devez taper ( deux fois :

(()-30

105+525/(105-30)

Cela ne vous semble-t-il pas familier ? pressez [ENDLINE] pour retrouver la réponse, toujours 112.

Cette propriété de () en mode CALC peut être utilisée de toute sortes de manières. Elle est particulièrement agréable quand le HP-71 fournit les parenthèses automatiquement.

Par exemple, nous avons maintenant 112 comme dernier résultat. Supposons que nous voulons en trouver la racine carrée. Tout ce que vous avez à faire est de presser :

[SQR] [ENDLINE]

10.5830052443

Si c'est arrivé trop vite, essayez ceci. Tapez 112 [ENDLINE] pour avoir à nouveau 112 comme résultat. Maintenant continuons de cette façon :

[SQR]

SQR()

avec le curseur clignotant au dessus de la parenthèse fermante. Maintenant pressez :

)

SQR(112)

Avez-vous vu comment 112 est venu entre les parenthèses ? Maintenant pressez :

[RUN]

10.5830052443

Ceci amène un point très important au sujet de la touche [RUN] en mode CALC. Nous avons la réponse à SQR(112) à l'affichage, mais il est toujours du côté calcul (côté droit) de l'affichage. Le HP-71 attend toujours d'autres math et ne sait pas que nous avons fini. C'est parce que nous n'avons pas encore pressé la touche [ENDLINE], bien sûr.

Mais remarquez ce que cela signifie au sujet de RES. Nous ne l'avons pas encore changé, c'est toujours 112 ! Pour prouver cela, pressez [ON] pour effacer l'affichage, puis :

()

(112)

Ceci peut être utilisé avec grand avantage ! Si vous voulez exécuter un lot de calculs sur RES sans changer sa valeur, assurez-vous simplement d'obtenir chaque réponse en pressant [RUN], et ne pressez jamais [ENDLINE]. De cette façon, RES ne changera jamais, puisqu'il ne change que quand vous pressez [ENDLINE] !

Voici une autre caractéristique agréable du mode CALC. Vous n'avez même pas besoin de RES ou de () pour voir la valeur de RES. Effacez juste l'affichage en pressant [ATTN], puis pressez [ENDLINE].

[ATTN] [ENDLINE]

112

3.4  UTILISER DES VARIABLES DANS LES CALCULS

Si vous voulez vraiment conserver une valeur disponible pour des usages multiples, vous n'avez pas à utiliser RES ou (). Vous pouvez sauver n'importe quel nombre sous son propre nom et utiliser ce nom chaque fois que vous avez besoin du nombre.

Par exemple, supposons que vous voulez utiliser la racine carrée de 2 plusieurs fois. Vous n'allez sûrement pas vous mettre à taper 1.41421356237 à chaque fois !

Vous n'aurez pas non plus à taper SQR(2) à chaque fois ! Tout ce que vous avez à faire est de sauver cette valeur sous un nom (une lettre), puis utiliser ce nom.

Appelons le "R" pour Racine carrée. Tout ce que vous avez à faire est :

R=SQR(2 [ENDLINE]

1.41421356237

(Rappelez-vous, le mode CALC ferme pour vous toutes les parenthèses en attente quand vous pressez [ENDLINE] ! Vous n'avez pas à les fermer vous-même).

Nous avons juste fait trois choses : calculé la racine carrée de 2, affiché cette racine, et sauvé celle-ci sous le nom "R". C'est le "R=" ci-dessus qui a effectué la sauvegarde ; le reste effectue le calcul. Chaque fois que vous voulez sauver un nombre, vous avez juste à taper son nom suivi de = puis du nombre (ou du calcul).

Maintenant, chaque fois que vous voudrez utiliser la racine carrée de 2, il vous suffira de taper la lettre R. Calculons SQR(2)+17-SQR(2)/12. En utilisant R pour SQR(2), ceci est exprimé par:

R+17-R/12 [ENDLINE]

18.2963624322

Avez-vous remarqué comment R s'est changé en 1.41421356237 chaque fois que nous l'avons utilisé ? C'est bien plus facile que de taper le nombre, n'est-ce pas ? Nous avons assigné cette valeur à R et elle la gardera aussi longtemps que nous voudrons, même si nous éteignons le HP-71 (sortir du mode CALC et exécuter un programme BASIC risque de l'effacer, cependant).

Nous pouvons changer la valeur de R pour tout ce que nous voulons, simplement en disant R=. Comme sa valeur peut varier de cette façon, R est appelé une "variable", comme en algèbre.

Note pour les intellectuels : Dans l'exemple ci-dessus, R contient 1.41421356237. Il ne contient pas SQR(2). Quand vous utilisez R, elle prend seulement sa valeur sur une étagère, elle ne la recalcule pas à chaque fois. Aussi, si vous définissez R=A+B, R se voit assignée la valeur de valeur courante de A plus valeur courante de B ; on ne lui assigne pas en tous temps et en tous lieux la valeur A+B. Sinon, changer la valeur de A changerait la valeur de R ! Non seulement cela serait extrêmement confus, mais cela ralentirait le calcul avec variables. Si vous voulez réellement que la valeur des variables change quand celle d'autres variables change, alors vous voulez ce que l'on appelle des "fonctions utilisateurs" dont nous discuterons quand nous parlerons du BASIC. Ces fonctions marchent en mode CALC !

Les variables, en mode CALC, peuvent être n'importe quelle lettre de l'alphabet. Si ce n'est pas suffisant (!), vous pouvez aussi utiliser des lettres suivies d'un seul chiffre entre 0 et 9. Ainsi L, U, K et E sont d'excellentes variables parce que ce sont des lettres simples. On peut en dire autant de C3, P0, R2 et D2, parce qu'elles sont une lettre simple suivie par un seul chiffre. Mais AA n'est pas bon, parce qu'il y a deux lettres. Si vous essayez d'utiliser AA en mode CALC, la deuxième lettre sera virée et un avertissement émis. De la même façon 3M n'est pas bon, parce que le chiffre est devant. T42 ne marche pas mieux parce qu'il y a deux chiffres. Essayez d'affecter à de nombreuses variables tout un tas de choses et de les utiliser dans les calculs, à votre guise.

Des variables indicées, comme X(8), peuvent aussi être utilisées, mais elles gaspillent la mémoire et sont malcommodes en mode CALC. Nous verrons leur usage quand nous attaquerons le BASIC.

Si jamais vous voulez sauvegarder la valeur courante du RESultat dans une variable, vous n'avez pas besoin d'utiliser X=RES ou X=(). Comme une simple pression de [ENDLINE] donne la valeur de RES, tout ce que vous avez à faire est de presser X= et de presser [ENDLINE] !

Essayez : tapez 1+2 [ENDLINE] pour mettre 3 dans RES. Maintenant, tapez X= et pressez [ENDLINE]. Vous avez juste sauvegardé 3 dans X ! Après des calculs pénibles, c'est commode à savoir.

3.5  LES NOMBRES NÉGATIFS

Comment allez-vous calculer 12 fois l'opposé de 5 ? Vous pouvez utiliser 12*(-5), mais vous gaspillez une pression de touche. Il est plus simple d'utiliser :

12*-5

-60

Cela fait drôle de voir 12*-5, mais pourquoi pas ? La division par des nombres négatifs marche aussi bien : 12/-5.

MAIS !!! (et c'est un GROS MAIS) N'essayez pas d'èlever des nombres à une puissance négative de cette façon ! 12 élevé à la puissance négative de 5 ne peut pas être tapé comme 12-5. Voyons ce qui arrive :

12-

WRN:ILLEGAL CONTEXT

(si le message d'erreur est passé trop vite pour que vous puissiez le lire, pressez et maintenez pressée la touche [ERRM], c'est une touche très commode !)

Pour utiliser des puissances négatives, vous devez enfermer la puissance entre parenthèses :

12(-5 [ENDLINE]

4.01877572016E-6

Le résultat, bien sûr, est si petit que le HP-71 l'affiche en notation scientifique. Cela signifie 4.01877572016 fois 10 à la puissance -6, ce qui est écrit normalement comme ceci :

0.00000401877572016

mais le pauvre HP-71 ne peut pas manipuler des nombres aussi longs ! La raison pour laquelle 12(-5) est si petit est que 12(-5) est la même chose que 1/125.

Si vous vous demandez pourquoi vous pouvez multiplier et diviser par des nombres négatifs mais pas élever à des puissances négatives sans avoir recours à des parenthèses, c'est simplement à cause de l'ordre dans lequel le HP-71 travaille les math. Voilà l'astuce.

Comment auriez-vous calculé sur le papier ce problème : 1+2*34  ? Bien sûr, vous commencez par calculer 34 , pour obtenir 81 ; puis vous le multipliez par 2, obtenant 162 et finalement vous ajoutez 1 obtenant 163, la réponse. Remarquez que vous n'avez pas calculé ce problème de gauche à droite, alors que c'est le sens normal de lecture. Pourquoi ? Parce que l'élévation à une puissance est plus importante que la multiplication et la multiplication plus importante que l'addition.

Cette "importance" est appelée hiérarchie algébrique, ou ordre des opérations. Le HP-71 a une hiérarchie algébrique incorporée et elle doit vous être familière pour que vous puissiez l'utiliser correctement. Dans le tableau suivant, les opérations au sommet sont les plus "importantes" et elles ont le pas sur celles qui sont après elles dans le tableau.

3.6  LA HIÉRARCHIE ALGÉBRIQUE DU HP-71

  1. Parenthèses. (les plus imbriquées d'abord, du centre vers l'extérieur.
  2. Les fonctions (SQR, SIN, MOD, etc...).
  3. (puissance).
  4. - (négation), +(positif), et NOT.
  5. * (multiplication), / (division), % (pourcentage) et ou DIV (division entière).
  6. + (addition) et - (soustraction)
  7. < (inférieur à), = (égal à), > (supérieur à),# (non égal à), ? (non classable avec) et toute combinaison de ceux-ci.
  8. AND
  9. OR et EXOR

Noter que ceci répond au dilemme posé par les puissances négatives. 12*-5 marche bien parce que la négation a priorité sur la multiplication. Aussi le HP-71 commence par prendre l'opposé de 5, obtenant 12*(-5), puis multiplie.

Mais les puissances ont priorité sur les négations. 12-5 ne marche pas parce que le HP-71 essaye d'effectuer l'élévation à la puissance avant de prendre l'opposé de 5. 12-5 a autant de sens pour le HP-71 que 125. Autant dire absolument aucun sens.

La raison pour laquelle la puissance a priorité sur la négation est de s'assurer que des expressions comme -124 soient évaluées correctement. -124 ne signifie pas moins douze puissance 4, mais prendre l'opposé de douze puissance 4. Essayez-le ; -124 donne -20736, comme de juste. ceci est différent de (-12)4.

Bien que la fonction + (positif) soit listée dans la table ci-dessus, c'est une fonction complètement inutile. Taper 12*+5 est OK, mais marche tout juste comme si vous aviez omis le +. C'est au point que dans un programme BASIC, si vous tapez ce + en excès, le HP-71 l'enlève poliment !

3.7  FONCTIONS A ARGUMENTS MULTIPLES

La plupart des fonctions, comme LOG, SIN, FACT etc... opèrent sur un seul nombre. Par exemple, tapez :

[FACT] 14 [ENDLINE]

87178291200

Qui est la factorielle de 14 (et s'écrit 14!). La fonction FACT prend 14 et rend 14!, un très gros nombre. Le nombre qu'une fonction prend entre parenthèses est appelé "argument". Ici l'argument de la fonction FACT était 14.

La plupart des fonctions n'ont qu'un seul argument. Mais plusieurs ont deux arguments ou plus et il est habituellement important de mettre les bons chiffres dans le bon ordre.

Par exemple, la fonction RMD donne le reste après une division. Supposons que l'on coupe une grande pizza en 15 morceaux. Quatre personnes prennent chacune le même nombre de morceaux jusqu'à ce qu'il n'y en ait plus assez pour tout le monde. Combien de morceaux reste-t-il ? C'est le reste de 15 divisé par 4. En BASIC HP-71 (et en mode CALC), il est exprimé comme RMD(15,4):

RMD(15,4 [ENDLINE]

3

Ainsi il reste trois morceaux de pizza, et 4 pauvres étudiants attendant patiemment qu'ils refroidissent (ils sont au collège pour apprendre à résoudre des problèmes de cet ordre de difficulté !).

Remarquez que nous avons écrit RMD(15,4). L'ordre des nombres est important ! essayez RMD(4,15) et voyez ce qui arrive. Bien sûr, cela vous donne le reste de 4 divisé par 15, qui est 4.

3.8  LA PILE DE COMMANDE

Comme nous l'avons vu, presser le bouton flèche vers le haut en mode CALC vous permet d'éditer le calcul en cours. Ce qu'il fait en réalité est de vous placer en bas(niveau le plus récent) de la "pile de commande". Chaque fois que vous pressez[ENDLINE] en mode CALC, non seulement RES change, mais la pile de commande change aussi.Votre calcul entier, quel qu'il soit, est poussé dans le bas de la pile, faisant monter les autres commandes les unes après les autres, jusqu'à ce que la plus haute tombe dans le trou noir affamé qui avale les commandes trop vieilles pour se maintenir sur la pile.

Essayez dès maintenant de presser la touche [HAUT] (flèche en haut) plusieurs fois. Vous verrez en premier votre précédente commande. Au dessus de celle-ci, vous verrez celle d'avant. Chaque étage supérieur de la pile de commande est une commande plus ancienne, jusqu'à ce que vous ayez atteint le sommet de la pile (faites attention de ne pas tomber dans le trou noir !), qui contient votre plus ancienne commande.

Non seulement le HP-71 vous permet de regarder ces commandes, mais il vous permet aussi de les ré-utiliser tant que vous voulez !

Si vous voulez ré-exécuter un ancien calcul, amenez-le simplement à l'affichage en pressant la flèche jusqu'à le voir, puis pressez [ENDLINE]. Non seulement il est exécuté, mais il est extrait de la pile et replacé en dessous pour vous !

Encore mieux, vous pouvez aussi corriger l'ancienne commande. Si vous voulez exécuter à nouveau un ancien calcul avec un seul nombre changé, retrouvez-le dans la pile, corrigez-le comme vous voulez puis pressez [ENDLINE]. Inutile de retaper tout le calcul !

La pile de commande a 5 niveaux dans un HP-71 normal. Mais il y a des moyens de la rendre plus haute, pour qu'elle puisse contenir plus de commandes. Elle peut être augmentée jusqu'à 16 niveaux ! La théorie nécessaire et un programme pour le faire sont présentés plus loin dans ce livre. Mais nous devons d'abord comprendre le BASIC, ce qui est une autre affaire.

Ceci est le mode CALC du HP-71. Il bat l'AOS, et il bat même la notation polonaise inverse quand vous avez pris l'habitude de la pile de commande. Quelques heures de pratique seront payées par de nombreuses heures épargnées quand vous survolerez de nombreux calculs qui vous faisaient ch... Tout est visible ; pas de nombre caché, pas d'opération cachée. Tout est logique, pas de mélange bizarre entre notation préfixée et post fixée comme dans l'AOS (la logique des calculateurs de Texas Instrument). Tout est clair, pas de nouvelle logique bizarre à apprendre comme la Notation Polonaise Inverse (la logique des calculatrices Hewlett-Packard) (Note du traducteur : La responsabilité de ces affirmations est laissée toute entière à l'auteur qui est seul habilité à recevoir les colis piégés).

Prêt à essayer des exemples d'applications pratiques ?

3.9  DES APPLICATIONS PRATIQUES DU MODE CALC

3.9.1  EXEMPLE 1

Le fermier SILAS livre des tomates deux fois par jour à la fabrique de conserves. Lundi il livre 25 tonnes et 27 tonnes. Mardi il livre 19 tonnes et 23 tonnes. Ces deux jours, la fabrique lui paye 550F la tonne, moins 2% pour les tomates abîmées. Mercredi, Silas livre 26 et 28 tonnes et la fabrique le paye 575F par tonne, moins 3%. Quelle est la recette totale du fermier de Lundi à Mercredi ? (Ndt : ça doit vous rappeler de mauvais souvenirs !!!!).

Solution : Écrire le problème sous forme algébrique :

Valeur des tomates Lundi et Mardi : M=550*(25+27+19+23)

Déduction pour Lundi et Mardi, tomates abîmées : 2%M

Valeur des tomates le Mercredi : W=575*(26+28)

Déduction pour Mercredi, tomates abîmées : 3%W

Recette totale : M-2%M+W-3%W

Ensuite, tapez le calcul dans l'ordre indiqué :

1 : M=550*(25+27+19+23)

2 : W=575*(26+28)

3 : M-2%M+W-3%W --> 80784.50

Réponse : Recettes nette 80784.50 F

3.9.2  EXEMPLE 2

L'ingénieur P. Bord a déterminé que, dans un circuit RC, l'impédance totale est de 77,8 Ohms et le retard du courant 36,5º. quelles sont la valeur de la résistance et la réactance capacitive du circuit ?

Solution : Utilisez la formule X=rCOS(a) & Y=rSIN(a) pour la conversion polaire-rectangulaire. Dans notre cas :

R=77,8 (l'impédance totale, ici la valeur du rayon polaire)

A=-36,5 (le retard du courant, ici l'angle)

Résistance=R*COS(A)

Réactance capacitive=R*SIN(A)

Tapez les calculs dans l'ordre indiqué :

1 : R=77.8

2 : A=-36.5

3 : R*COS(A) --> 62.54

4 : R*SIN(A) -->-46.28

Réponse : La résistance est de 62,54 Ohms et la réactance de -46,28 Ohms.

Autre solution : si vous avez le module Math branché dans le HP-71, vous pouvez faire la transformation polaire-rectangulaire en un seul pas :

1 : RECT((77.8,-36.5))

--> (62.54,-46.28)

3.9.3  EXEMPLE 3

Cinq étudiants font un test et obtiennent des notes de 95, 90, 88, 94 et 93. Quelle est la note moyenne ?

Solution : Moyenne = (somme des éléments)/(nombre des éléments)

1 : (95+90+88+94+93)/5 --> 92

Réponse : La moyenne est 92.

3.9.4  EXEMPLE 4

Vous voulez trouver la somme des nombres de 1 à 50 et vous avez oublié la formule. Plutôt que de perdre du temps à essayer de retrouver la formule, vous attrapez votre HP-71 et vous commencez à additionner en mode CALC 1+2+3+4+5...

Malheureusement, quand vous pressez 36, le HP-71 bippe, annonce "Line Too Long" (ce qui signifie : "Ligne Trop Longue") et semble devenir capricieux.

Le HP-71 ne peut manipuler que des lignes comportant au plus 96 caractères. C'est vrai également en mode CALC. Si vous devez exécuter un calcul qui ne tient pas dans la ligne, décomposez-le en éléments plus petits et utilisez RES ou () pour relier les éléments.

Dans cet exemple, vous pouvez ajouter des morceaux de l'addition à faire, et utiliser () pour avoir des sous-totaux :

1 : 1+2+3+4+5+6+7+8+9+10 --> 55

2 : ()+11+12+13+14+15+16+17+18+19+20 --> 210

3 : ()+21+22+23+24+25+26+27+28+29+30 --> 465

4 : ()+31+32+33+34+35+36+37+38+39+40 --> 820

5 : ()+41+42+43+44+45+46+47+48+49+50 --> 1275

Réponse : 1+2+3+4+...+49+50=1275

Solution de rechange : Vous vous rappelez tout à coup la formule : la somme des nombres de 1 à n est N/2*(N+1) :

1 : 50/2*(50+1) --> 1275

C'est beaucoup plus facile ! En général, si vous butez sur le message "Line Too Long", vous n'employez pas la bonne méthode et vous devriez essayer d'en trouver une meilleure.

Note : Si vous obtenez le message "Line Too Long", le HP-71 fera de son mieux pour vous gagner du temps. Il vous place automatiquement en bas de la pile de commande, ce qui vous permet de voir toute la ligne en cours de frappe. Presser [g] [->] et corrigez l'extrémité droite de la ligne, puis pressez [ENDLINE] pour avoir un sous-total ou un résultat intermédiaire, puis utilisez RES ou () pour continuer .

3.9.5  EXEMPLE 5

Vous voulez évaluer 7x5 - 12x4 + 54x3 - 22x2 + 11x - 1 avec des valeurs de x {0;0,1;0,2}. Vous savez le faire sur une calculatrice Hewlett-Packard à logique polonaise inverse. Vous voudriez utiliser la méthode de Horner pour éviter les élévations à une puissance et les erreurs d'arrondi, mais la méthode avec le HP-71 n'est pas évidente.

Comment faire.

Solution : Utilisez la méthode de Horner ! Enlevez 1 à la valeur de la plus haute puissance et tapez ce nombre de parenthèses. Continuez à partir de là :

1 : X=0

2 : ((((7*X-12)*X+54)*X-22)*X+11)*X-1 --> -1

3 : X=.1

4 : [HAUT] [HAUT] [ENDLINE] --> -.06713

5 : X=.2

6 : [HAUT] [HAUT] [ENDLINE] --> .73504

Réponse : (0)=-1, (0,1)=0,06713, (0,2)=0,73504.

Note : Nous avons utilisé ici la pile de commande de façon astucieuse. Nous avons utilisé une variable (X) pour représenter 0, 0,1 et 0,2 pour ne pas avoir à taper plusieurs fois l'équation. Nous avons alors donné à X ses différentes valeurs et utilisé la formule sans la modifier à partir de la pile. Chaque fois que vous aurez à répéter un calcul avec des valeurs à peine différentes, faites-le de cette façon. Vous serez bientôt un fan de la pile de commande !

3.9.6  EXEMPLE 6

Derek Lobos, le décorateur d'intérieur, a 4 supports de tableaux dans sa salle de séjour, et il achète 7 tableaux encadrés. Pour garder un regard neuf, il veut modifier la disposition des tableaux chaque mois et à chaque fois sortir un tableau de la réserve et en ranger un. Ceci offre de nombreuses possibilités de permutations ! Combien de temps se passera-t-il avant que tous les arrangements possibles aient été utilisés ? Quand Derek devra-t-il aller acheter une nouvelle toile?

Solution : La formule pour la permutation de X objets pris par Y à la fois est X!/(X-Y)!. Le point d'exclamation marque la fonction factorielle, qui sur le HP-71 est notée FACT. Comme Derek veut refaire l'arrangement tous les mois et qu'il y a 12 mois dans l'année, nous devons diviser le nombre de permutations par 12 pour voir combien d'années Derek peut attendre avant d'aller faire les courses :

1 : FACT(7)/FACT(7-4)/12 --> 70

Réponse : Derek est paré pour les 70 prochaines années !

3.9.7  EXEMPLE 7

Le haut d'une gouttière de 8 mètres de haut cède, sur le coté de l'hôtel Fonch à San Placebo, en Californie. Elle tombe en pivotant autour de son point de fixation au sol. Elle finit par heurter le mur de la banque de Clutch Cargo, de l'autre côté de la route. Aussi surprenant que cela puisse paraître, le tuyau ne se casse pas et ne plie même pas. La rue fait 6 mètres de large. Soudain l'hôtel Fonch prend feu. Une voiture de pompiers, de 2,3 mètres de haut et de 2,6 mètres de large doit passer sous la gouttière. Le peut-elle ?

Solution : Le tuyau forme l'hypothénuse d'un triangle rectangle dont la rue est un côté de l'angle droit. Pythagore nous dit comment trouver l'autre côté, qui est la hauteur du point d'appui de la gouttière sur le mur de la banque. Nous pouvons utiliser un calcul de proportion pour calculer la hauteur du tuyau à 2,6 mètres du mur (la largeur de la voiture de pompier). Si elle dépasse 2,3 mètres, la voiture pourra passer sous le tuyau.

1 : W=SQR(82-62) --> 5.29

2 : (6-2.6)*W/6 --> 3.00

Réponse : Oui. Le tuyau s'appuie sur le mur de la banque à 5,29 mètres de haut, et la hauteur du tuyau à 2,6 mètres du mur est 3 mètres de haut, ce qui donne largement la marge nécessaire au passage de la voiture de pompiers. Le fameux hôtel Fonch est sauvé, et ils vivront heureux pour toujours.

3.10  LES FONCTIONS QUI MARCHENT EN MODE CALC

La liste de fonctions suivante n'est qu'une fraction des nombreuses commandes que le HP-71 peut utiliser. Mais elles sont les seules utilisables en mode CALC. Pour faire réellement un bon usage du mode CALC, parcourez cette liste et essayez les exemples proposés. Quand vous connaîtrez ces fonctions, vous connaîtrez le mode CALC ! Si vous avez le module math ou d'autres modules, qui ajoutent d'autres fonctions au mode CALC, vérifiez sur le guide de poche du module les exemples de fonctions.

[+]Réalise l'addition de deux nombres. 1+3 donne 4
[-]Réalise la soustraction de deux nombres, ou donne l'opposé d'un seul

[7-3]donne 4
[-7]donne -7
[-7-3]donne -10
[-7-3]donne -4 (-7-(-3)=-7+3=-4)

(NdT : si vous tapez en succession des + ou des -, à l'affichage chaque signe semble remplacer le précédent ; un examen plus approfondi montre que ce remplacement suit la règle des signes : deux - successifs donnent +... ; par contre tous les signes tapés sont accumulés et peuvent être vus en tapant [HAUT])

[*]Réalise la multiplication de deux nombres 3*4 donne 12 (1+2)*(3+4) donne 21 (3 fois 7) 12/2*2 donne 12 12/(2*2) donne 3
[/]Réalise la division de deux nombres 12/2/2 donne 3 (12 divisé par 2, le tout divisé par 2) 12/22 donne 3 (12 divisé par 2 au carré =12/4) 12/2+2 donne 8 (12 divisé par 2, plus 2) (3+4+6+7)/(1+2+3+4) donne 2
[]Élève le premier nombre à la puissance du deuxième 25 donne 32 (2 à la puissance 5) FACT(10)/28 donne 14175 (factorielle 10 divisée par 2 puissance 8) Remarquez que vous pouvez utiliser pour extraire des racines : 65536(1/4) donne 16 (65536 élevé à la puissance 1/4, c'est la racine quatrième de 65536)
[%]Est comme *, mais divise le résultat par 100 6%24 donne 1.44 (6 pourcent de 24 = 1,44) 24+6%24 donne 25.44 (24 plus 6%) ABS(x) Renvoie la valeur absolue de x :
[ABS(-3)]donne 3

[ABS(0)]donne 0
[ABS(5)]donne 5

[ACOS(x)]Renvoie l'angle dont le cosinus est x

[ACOS(.5)]donne 60 (en mode DEGREES)
[ACOS(0)]donne 90
[ACOS(-1)]donne 180

[ACS(x)]Est équivalent à ACOS(x) vu ci-dessus
[AF]Renvoie le facteur de précision de l'horloge
[AF(x)]Fait la même chose, mais de plus règle le facteur de précision à la valeur x

[AF(1537)]donne l'ancienne valeur de AF puis le règle sur 1537

[AND]Réalise un ET logique sur deux nombres :

[0 AND 0]donne 0
[0 AND 2]donne 0 (2 ou tout nombre différent de 0)
[3 AND 0]donne 0
[4 AND 5]donne 1
[AND]signifie "ni l'un ni l'autre ne sont nuls"

[ANGLE(x,y)]Retourne l'angle entre l'axe des x et le point de coordonnées (x,y)

[ANGLE(3,4)]donne 53.13 (en mode DEGREES)
[ANGLE(.5,SQR(3)/2)]donne 60
[ANGLE(-1,0)]donne 180

[ASIN(x)]Renvoie l'angle dont le sinus est x

[ASIN(.5)]donne 30 (en mode DEGREES)
[ASIN(0)]donne 0
[ASIN(-1)]donne -90
[ASN(x)]Est équivalent à ASIN(x) vu ci-dessus

[ATAN(x)]Renvoie l'angle dont la tangente est x (pente)

[ATAN(1)]donne 45 (en mode DEGREES)
[ATAN(SQR(3))]donne 60
[ATAN(INF)]donne 90
[ATN(x)]Est équivalent à ATAN(x) vu ci-dessus

[CEIL(x)]Renvoie l'entier immédiatement supérieur ou égal à x

[CEIL(-1.7)]donne -1
[CEIL(-1)]donne -1
[CEIL(1)]donne 1
[CEIL(1.7)]donne 2

[CLASS(x)]Renvoie la "classe" de x

[CLASS(INF)]donne 4, le code pour +INF
[CLASS(MINREAL)]donne 2, le code des nombres dénormalisés

[CORR(x,y)]Retourne un coefficient de corrélation

[CORR(2,4)]donne la corrélation entre les variables nº2 et 4 du tableau statistique courant. Il doit y avoir un tableau statistique valide et contenant des données. La création du tableau statistique ne peut pas être fait en mode CALC

[COS(x)]Renvoie le cosinus de l'angle x

[COS(60)]donne .5 (en mode degré)
[COS(180)]donne -1
[COS(0)]donne 1

[DATE]Renvoie la date dans le format YYDDD ; YY=year (année), DDD=day# (nº de jour)
[DEG(x)]Convertit x radians en degrés

[DEG(PI)]donne 180 puisque PI radians=180º

[DIV]Divise deux nombres, renvoie uniquement le quotient (division entière), le reste est perdu

[12 DIV 5]donne 2 (5 est contenu 2 fois dans 12)
[DATE DIV 1000]donne l'année courante
[Remarque]: le caractère "" (en anglais "backslash", code ASCII 92) peut être assigné à une touche comme aide à la frappe et utilisé à la place de DIV avec le même effet

[DVZ]Renvoie -7, le numéro du drapeau Division-Par-Zéro

[DVZ]donne -7
[FLAG(DVZ)]donne 1 si une division par zéro a eu lieu, 0 sinon FLAG(DVZ,0) fait la même chose, mais baisse également le drapeau
[FLAG(0,FLAG(DVZ))]visualise la division par zéro dans le flag 0
[TRAP(DVZ)]donne la valeur de la trappe Division-Par-Zéro courante
[TRAP(DVZ,2)]fait de même, mais de plus, met la trappe à 2

[EPS]Renvoie 1.E-499, le plus petit nombre positif normalisé

[ABS(CLASS(x)=2)=(ABS(x)<EPS)]renvoie 1, parce que si un nombre est plus petit que EPS, il est dénormalisé et a donc un numéro de classe de 2

[ERRL]Renvoie le numéro de ligne de programme BASIC où a eu lieu la dernière erreur

[ERRL]donne 0 si aucune erreur n'a eu lieu

[ERRN]Renvoie le numéro de code de la dernière erreur

[ERRN]donne 4 si on a essayé de calculer TAN(90) parce que l'erreur nº4 est "TAN=Inf"
[ERRN]donne 11 si on a essayé de calculer ASIN(2)

[EXOR]Exécute un OU exclusif logique entre deux nombres

[0 EXOR 0]donne 0
[0 EXOR 1]donne 1 (1 ou tout nombre non nul)
[1 EXOR 0]donne 1
[1 EXOR 1]donne 0
[EXOR]signifie "l'un ou l'autre, mais pas les deux"

[EXP(x)]Renvoie e (2,718281828...) élevé à la puissance x

[EXP(1)]donne e
[EXP(27.6310211159)]donne 999999999971

[EXPM1(x)]est équivalent à EXP(x)-1, mais plus précis

[EXPM1(PI/1E7)]donne 3.14159314707E-7 (précision 12 digits)
[EXP(PI/1E7)-1]donne .00000031416 (précision 5 digits)
[Utilisez]EXPM1 quand x est voisin de zéro

[EXPONENT(x)]Renvoie l'exposant (puissance de 10) de x

[EXPONENT(10)]donne 1
[EXPONENT(100)]donne 2
[EXPONENT(999)]donne 2
[EXPONENT(1000)]donne 3
[EXPONENT(x)]est plus précis que IP(LOG10(x)) :

[EXPONENT(10/3*3)]donne 0, qui est correct
[IP(LOG10(10/3*3)]donne 1, qui est faux

[FACT(x)]Renvoie la factorielle de x

[FACT(6)]donne 720 qui est 6*5*4*3*2*1
[FACT(8)]donne 40320 qui est 8*7*6*5*4*3*2*1
[FACT(0)]est 1

(NdT : FACT(253) donne 5.17346099264E499, le HP-71 est, en 1985, l'appareil de poche qui calcule le plus loin et le plus vite cette fonction ; très commode pour épater les copains)

[FLAG(x)]Renvoie la valeur (0 ou 1) du drapeau x

[FLAG(0)]donne la valeur du drapeau 0 ; celui-ci est montré à l'affichage si il est levé (valeur 1)
[FLAG(INX)]donne la valeur du drapeau INeXact
[FLAG(-3)]donne la valeur du drapeau d'affichage continu
[FLAG(x,y)]Renvoie le drapeau x puis lui donne la valeur y
[FLAG(-2,0)]met hors service le bipper
[FLAG(-2,1)]remet le bipper en service (1 ou tout autre valeur différente de zéro)
[FLAG(-10,1)]place le HP-71 en mode radian
[FLAG(-10,0)]place le HP-71 en mode degré

[FLOOR(x)]Renvoie l'entier immédiatement inférieur à x

[FLOOR(-1.7)]donne -2
[FLOOR(-1)]donne -1
[FLOOR(1)]donne 1
[FLOOR(1.7)]donne 1

[FNvar]Avec "var" remplacé par toute variable valide, fonction définie par l'utilisateur
[FP(x)]Renvoie la partie fractionnaire de x

[FP(-1.7)]donne -.7
[FP(-1)]donne -0 (n'ayez pas peur, -0=0 donne bien 1)
[FP(1)]donne 0
[FP(1.7)]donne .7

[INF]Renvoie la valeur Inf (infini mathématique)

[SQR(INF)]donne Inf
[1/0]donne Inf après TRAP(DVZ,2)
[FACT(255)]donne Inf après TRAP(OVF,2)

[INT(x)]Renvoie le nombre entier le plus élevé qui soit inférieur ou égal à x. Semblable à FLOOR(x)

[INX(x)]Renvoie -4, le code du drapeau Résultat Inexact Utilisé juste comme DVZ

[IP(x)]Renvoie la partie entière de x

[IP(-1.7)]donne -1
[IP(-1)]donne -1
[IP(1)]donne 1
[IP(1.7)]donne 1

[IVL]Renvoie -8, le code du drapeau Opération Invalide Utilisé comme DVZ
[KEYDOWN]Renvoie 1 si une touche vient d'être pressée, 0 sinon. N'est utile en mode CALC que dans une fonction utilisateur FN
[LET]Assigne une valeur à une variable. Forme implicite uniquement. On ne peut pas taper LET X=1 en mode CALC, il faut se contenter de X=1

[X=1+2+3+4]donne 10 et assigne cette valeur à la variable X
[F3=FLAG(3)]enregistre l'état du drapeau 3 dans la variable F3
[N(3,4)=153]enregistre 153 dans le troisième rang, quatrième colonne de N

[LGT(x)]Renvoie le logarithme base 10 de x

[LGT(10)]donne 1
[LGT(100)]donne 2
[LGT(1000)]donne 3
[LGT(105)]donne 5
[LGT(999)]donne 2.99956548823

[LN(x)]Renvoie le logarithme naturel (népérien) de x

[LN(10)]donne 2.3
[LN(100)]donne 4.6
[LN(1000)]donne 6.9
[LN(EXP(5))]donne 5

[LOG(x)]Est équivalent à LN(x). Ce n'est pas un logarithme base 10 !
[LOGP1(x)]Est équivalent à LOG(x+1) en plus précis

[LOGP1(PI/1E12)]donne 3.14159265359E-12 qui est juste
[LOG(PI/1E12+1)]donne 0, qui est faux

Utilisez LOGP1(x) quand x est voisin de zéro

[LOG10(x)]Est équivalent à LGT(x)
[MAX(x,y)]Renvoie le plus grand des nombres x ou y

[MAX(2,3)]donne 3
[MAX(3,2)]donne 3 (l'ordre n'a pas d'importance)
[MAX(-7,-8)]donne -7
[MAX(A,MAX(B,C))]donne le plus grand des nombres A, B ou C
[MAX(X,0)]est équivalent à X*(X>0)

[MAXREAL]Renvoie la plus grand nombre fini positif

[MAXREAL]donne 9.99999999999E499

[MEAN]Donne la moyenne de la première variable de votre tableau statistique. Il doit y avoir un tableau statistique défini et contenant des données. La création du tableau statistique ne peut pas être fait en mode CALC
[MEAN(x)]Renvoie la moyenne de la variable nºx, voir ci-dessus
[MEM]Renvoie le nombre d'octets libres en mémoire vive
[MEM(x)]Comme MEM, mais pour la mémoire vive ou morte dans le port x. Le nombre d'octets libres en mémoire morte est sans intérêt
[MIN(x,y)]Renvoie le plus petit nombre de x ou de y

[MIN(2,3)]donne 2
[MIN(3,2)]donne 2
[MIN(-7,-8)]donne -8
[MIN(A,MIN(B,C))]donne le plus petit de A, B ou C
[MIN(X,0)]est équivalent à X*(X<0)

[MINREAL]Donne le plus petit nombre positif affichable

[MINREAL]est un nombre dénormalisé.
[MINREAL]génère une erreur si TRAP(UNF) est différent de 2
[MINREAL]donne 0.00000000001E-499 après TRAP(UNF,2)

[MOD(x,y)]Renvoie x MODULO y (défini comme x-y*INT(x/y))

[MOD(x,y)]donne toujours un nombre entre 0 et y
[MOD(12,5)]donne 2 (parce que si l'on enlève plusieurs fois 5 a 12, le nombre que l'on obtient entre 0 et 5 est 2)
[MOD(-12,5)]donne 3 (parce que si on ajoute plusieurs fois 5 à -12, le nombre que l'on obtient entre 0 et 5 est 3)
[MOD(12,-5)]donne -3 (parce que quand vous ajoutez plusieurs fois -5 à 12, le nombre que vous obtenez entre -5 et 0 est -3)

[NAN]Renvoie NaN (Not a Number, Pas un Nombre), une valeur qui n'a pas de valeur (!)
[0/0]renvoie une erreur quand TRAP(IVL) est différent de 2

[0/0]renvoie NaN après TRAP(IVL,2)

[NOT]x (ou NOTx) Renvoie le NON logique de x

[NOT]x donne 1 si x=0, 0 dans tous les autres cas
[FLAG(0,NOT]FLAG(0)) inverse le flag 0

[OR]Exécute un OU logique sur deux nombres

[0 OR 0]donne 0
[0 OR 2]donne 1 (2 ou toute valeur non nulle)
[3 OR 0]donne 1
[4 OR 5]donne 1
[OR]signifie "l'un ou l'autre ou les deux"

(NdT : l'entrée des fonctions logiques en mode CALC est curieux. Par exemple, il n'est pas possible de taper [3] [SPC] [O] [R] ... le [SPC] ne donne aucun résultat, le O restant collé au 3 sous la forme 3O, d'où la façon d'écrire la fonction que j'utilise. Mais si l'espace ([SPC]) vous manque, il vous suffit de le taper après la fonction logique :

[3] [O] [R]

3OR [SPC] [4]

3 OR 4

ou bien

[3] [O] [R] [4]

3 OR 4

[[SPC]] 

3 OR 4)

[OVF]Renvoie -6, le code du drapeau de dépassement de capacité supérieur Utilisé juste comme DVZ
[PI]Renvoie 3.14159265359, douze chiffres de pi

[PI*R2]donne l'aire du cercle de rayon R

Note : PI n'est pas égal à "pi". PI s'arrête au douzième chiffre alors que pi est un nombre irrationnel qui a un nombre de décimales infini. Aussi, en mode RADIANS, SIN("pi")=0, mais SIN(PI) n'est pas nul

[PREDV(x)]Renvoie une valeur statistique prévue basée sur x

[PREDV(x)]utilise le tableau statistique courant et les variables choisies pour la régression linéaire pour prévoir la valeur de y à partir de x. Il doit y avoir un tableau statistique défini et contenant des données, et la fonction LR doit être active. La création du tableau statistique et l'activation de la fonction LR ne peuvent pas être faits en mode CALC.

[RAD(x)]Convertit x degrés en radians

[RAD(180)]donne PI parce que 180º=pi radians

[RED(x,y)]Retourne x réduit par y (défini par x-y*IROUND(x/y))

[RED]donne toujours un nombre entre -y/2 et y/2
[IROUND,]dans la définition, est l'entier le plus proche
[RED(12,5)]donne 2 parce que si vous enlevez plusieurs fois 5 à 12, le nombre le plus proche de zéro que vous obtenez est 2
[RED(13,5)]donne -2 parce que....(cf ci-dessus)... est -2

[RES]Retourne la valeur du dernier résultat En mode CALC, RES est ajusté chaque fois que vous pressez [ENDLINE]

[()]est un autre moyen d'obtenir la valeur de RES
[13PI]donne 3159.04819859
[RES(1/PI)]donne 13 (si fait juste après le calcul précédent)

[RMD(x,y)]Renvoie le reste de x/y, défini par x-y*IP(x/y)

[RMD(x,y)]donne toujours un nombre entre 0 et y*SGN(x). Le signe de la réponse est le même que le signe de x
[RMD(12,5)]donne 2 parce que 12 divisé par 5 laisse un reste de 2
[RMD(-12,5)]donne -2 parce que 12 divisé par 5 donne un reste de 2 et que -12 est négatif

[RND]Renvoie un nombre aléatoire compris entre 0 inclus et 1 exclus

[RND<RND]donne 0 la moitié du temps et 1 le reste du temps

[SDEV]Renvoie l'écart type échantillon pour la variable n°1
[SDEV]donne l'écart type ( Sn-1 ) de l'échantillon de données accumulées dans la variable n°1 de votre tableau statistique. Si les données ne sont pas un échantillon, mais la population entière, l'écart type ( Sn ) peut être calculé après avoir ajouté (ADD) la moyenne (MEAN). Pour que SDEV marche il doit y avoir un tableau statistique défini et contenant des données. La création du tableau statistique et l'accumulation des données dans le tableau ne peuvent pas être faits en mode CALC
[SDEV(x)]Est équivalent à SDEV, mais sur la variable n°x
[SGN(x)]Renvoie le signe de x

[SGN(-37)]donne -1
[SGN(0)]donne 0
[SGN(-0)]donne -0
[SGN(153)]donne 1

[SIN(x)]Renvoie le sinus de l'angle x

[SIN(30)]donne .5 (en mode DEGREES)
[SIN(90)]donne 1
[SIN(180)]donne 0
[SIN(270)]donne -1

[SQR(x)]Renvoie la racine carrée de x

[SQR(9)]donne 3
[SQR(25)]donne 5
[SQR(12345654321)]donne 111111
[SQRT(x)]Est identique à SQR (NdT : attention, utilisateurs de PASCAL!)

[TAN(x)]Renvoie la tangente de l'angle x

[TAN(45)]donne 1 (en mode DEGREES)
[TAN(90)]donne une erreur ou MAXREAL ou Inf, selon l'état de la trappe TRAP(DVZ)

[TIME]Renvoie le nombre de secondes depuis Minuit

[TIME]donne un nombre entre 0 et 86399.99
[RMD(TIME,60)]donne la seconde courante au cadran de la montre
[RMD(TIME,3600)]DIV 60 donne les minutes au cadran
[TIME]DIV 3600 donne l'heure au cadran (sur 24 heures)

[TOTAL]Donne le total de la première variable statistique

[TOTAL]donne la somme des données accumulées dans la première variable de votre tableau statistique. Pour que TOTAL marche, il doit y avoir un tableau statistique contenant des données. La création du tableau statistique et l'accumulation des données dans celui-ci ne peut pas être fait en mode CALC

[TOTAL(x)]Fait la même chose, mais pour la variable n°x
[TRAP(x)]Retourne la valeur courante de la trappe nºx

[TRAP(INX)]donne 0 si la Trappe de Résultat Inexact est à 0, 1 si la trappe est à 1 et 2 si la trappe est à 2

[TRAP(x,y)]Fait de même mais ajuste la trappe à y

[TRAP(INX,2)]donne la valeur de la Trappe Résultat Inexact puis l'ajuste à 2

[UNF]Renvoie -5, le code du drapeau de dépassement de capacité inférieur UNF donne -5

[FLAG(UNF)]donne 1 si un dépassement de capacité inférieur a eu lieu, 0 sinon
[FLAG(UNF,0)]fait de même, mais ajuste également le drapeau à 0
[TRAP(UNF,2)]donne la valeur de la trappe de dépassement inférieur de capacité, puis l'ajuste à 2

4  MODE CLAVIER BASIC

Quand vous êtes en mode CALC, il y a un petit signe "CALC" à l'affichage. Il est appelé "l'indicateur de mode CALC" parce qu'il annonce que vous êtes en mode CALC. Il y a d'autres indicateurs, mais nous passerons ce pont quand nous l'aurons atteint. Pour l'instant, s'il vous plaît, sortez du mode calc si vous y êtes en pressant [f] [CALC]. L'indicateur de mode CALC doit disparaître.

Dès lors que l'indicateur de mode CALC n'est pas apparent, vous êtes en mode BASIC. De la même façon que le mode CALC attendait de vous des calculs mathématiques, le mode BASIC attend de vous que vous tapiez des commandes du langage BASIC.

Si vous êtes en mode BASIC et que vous avez besoin d'effectuer des calculs, vous avez deux options. Vous pouvez entrer en mode CALC, effectuer vos calcul puis retourner en mode BASIC. Vous pouvez aussi effectuer les calculs en mode BASIC !

Par exemple essayons les même calculs que ceux déjà faits. C'était :

105+5*105/(105-30)

Pour faire cela en mode BASIC, tapez simplement l'ensemble tel que vous le voyez, mais ne pressez pas encore [ENDLINE]. Vous devez voir :

>105+5*105/(105-30)

à l'affichage. Rappelez-vous, le ">" signifie que vous êtes en mode CLAVIER BASIC. Remarquez que BASIC ne vous donne aucune réponse intermédiaire, contrairement au mode CALC. Voici une règle générale :

Le mode CLAVIER BASIC vous ignore tant que vous n'avez pas pressé [ENDLINE]

Comme 105+5*105/(105-30) est une commande du BASIC du HP-71, dès que vous aurez

pressé [ENDLINE], le HP-71 l'interprètera et obéira à votre commande :

[ENDLINE]

112

Si vous voulez utiliser la pile de commande en mode BASIC, vous ne pouvez pas vous contenter de presser la touche [HAUT] comme vous le faites en mode CALC. Vous devez presser d'abord [g] [CMDS] pour entrer dans la pile de commande. Vous pouvez alors monter et descendre dans la pile avec les touches à flèches.

Essayez dès maintenant. Presser [ENDLINE] quand vous êtes dans la pile de commande réexécute la commande affichée. Vous pouvez utiliser [->] et [<-] pour déplacer le curseur dans la commande, ce qui vous permet de la modifier avant de l'exécuter ! n'oubliez pas le curseur d'insertion (pressez [f] [I/R] pour l'obtenir) qui vous permet d'insérer des choses...

Voici une autre règle à retenir :

LE HP-71 EST FACILE A UTILISER PARCE QU'IL A UNE PILE DE COMMANDE

Aussi, plus vite vous apprendrez à jongler avec la pile de commande, plus vite vous utiliserez le HP-71 au doigt et à l'oeil.

4.1  LE LANGAGE DE BASE DU HP-71

L'affichage doit apparaître comme ceci :

>

Le ">" signifie "Hé, Je suis BASIC, que voulez-vous ?". Le pavé clignotant (le curseur de remplacement) signifie "tapez au-dessus de moi".

Avant d'essayer quelque commande que ce soit, assurez-vous que la Clé Minuscules est active. C'est facile à faire. Pressez n'importe quelle lettre. Si c'est une majuscule, pressez [f] [LC]. Pressez [ATTN] pour effacer l'affichage. A partir de maintenant, je supposerai que vous laissez la Clé Minuscule active.

Nous y sommes ! Pressez ces touches de lettres : [B] [E] [E] [P]. Vous devez voir:

BEEP C'est une commande du BASIC qui dit a l'ordinateur de faire un bruit qu'un sourd-muet pourrait confondre avec une note de musique! Alors, pourquoi l'ordinateur n'a-t-il pas bippé ? Rappelez-vous, la commande est ignorée jusqu'à ce que vous pressiez [ENDLINE] ! Allez-y, pressez [ENDLINE] maintenant et écoutez le magnifique bip.

Remarquez que BEEP est sur votre clavier, imprimé en jaune au dessus de la touche [L]. Comme vous vous en doutez, vous pouvez obtenir la commande BEEP sans la taper, simplement en pressant la touche [f] puis la touche [L]. Ceci en abrégé [f] [BEEP] ou même simplement [BEEP]. Remarquez que cette aide à la frappe affiche BEEP en majuscule, sans égard pour l'état de la Clé Minuscules. Ainsi vous pouvez savoir, dans ce livre, si vous avez à taper vous même (ce sera en minuscules) ou s'il y a une aide à la frappe (ce sera en majuscules).

Comme vous devez presser [ENDLINE] pour exécuter quelque commande que ce soit, à partir de maintenant je ne me soucierai plus de vous dire de presser [ENDLINE]. Si je vous dis d'exécuter la commande BEEP, ou si je vous dis simplement que vous devez faire BEEP, vous devez taper BEEP et presser [ENDLINE]. Je ne veux pas dire, bien sûr, que vous devez bipper. Vous pouvez, si vous voulez, mais c'est une autre question...

Pour voir la puissance de BASIC, exécutez cette commande :

FOR x=1 TO 10 @ x @ NEXT x

Vous avez juste dit au HP-71 de compter de 1 à 10, ce qu'il a fait ! (nous étudierons FOR, TO et NEXT plus tard). Si cela a semblé terriblement lent (environ une demi-seconde par nombre), c'est parce que le HP-71 se ralentit pour vous donner le temps de voir les nombres. Si vous voulez l'accélérer jusqu'à 1/10º de seconde par nombre, utilisez cette commande :

delay .1

Maintenant entrez dans la pile de commande en pressant [g] [CMDS], montez dans la pile jusqu'à retrouver la commande FOR que vous venez de taper ci-dessus, et pressez [ENDLINE] pour l'exécuter à nouveau. Voyez à quelle vitesse la HP-71 compte jusqu'à 10 maintenant! Essayez DELAY 0, et voyez le se défoncer ! En général, la commande DELAY demande simplement au HP-71 de ralentir l'affichage du nombre de secondes que vous spécifiez.

Il y a plusieurs autres commandes en BASIC qui contrôlent l'affichage. CONTRAST en est une intéressante qui vous permet de modifier le contraste de l'affichage. Si l'affichage vous semble trop pâle, essayez d'exécuter :

contrast 12

ou même un contraste plus élevé. Si l'affichage est trop sombre, avec tous les points apparents, essayez :

contrast 6

ou même un contraste plus bas. Le contraste "normal" (après la première mise en place des batteries) est CONTRAST 9. Je conserve mon HP-71 réglé sur CONTRAST 7, parce que je suis avachi sur ma chaise. Vous trouverez certainement vous aussi votre contraste favori. Si vous travaillez tantôt assis tantôt debout, vous réglerez sans doute le contraste bas quand vous serez assis et haut quand vous serez debout.

Jusqu'ici, tous nos calculs ont été faits avec l'affichage du HP-71 en mode standard. C'est-à-dire que les 12 chiffres de la réponse sont montrés, sauf s'il s'agit de zéros non significatifs, qui sont bien sûr éliminés. Par exemple, 1/4 donne .25 (pas . 250000000000), mais 1/7 donne .142857142857 (pas .14).

Il y a trois autres modes d'affichage disponibles, si vous en voulez. Pour avoir des réponses en monnaie, vous pouvez taper :

fix 2

Ce que cela fait est d'indiquer au HP-71 de montrer toujours deux chiffres après le point décimal, sans considération de leur valeur. Aussi 1/4 vaut toujours 0.25, mais 1/7 vaut maintenant 0.14, le reste ayant disparu. Remarquez bien ! ce mode "FIX" n'affecte que l'affichage ! Il ne fait rien disparaître à l'intérieur. Il est juste comme la fonction FIX des calculatrices HP, Texas, Casio ou autres.

Pour revenir à l'affichage précédent, exécutez :

std

ce qui ramène l'affichage à la normale. Sont aussi disponible SCI et ENG, identiques à ceux des calculatrices scientifiques. Si vous tapez:

sci 4

les réponses sont affichées en notation scientifique avec 4 chiffres après le point décimal. De même eng 3 dispose l'affichage pour qu'il montre toutes les réponses en notation ingénieur (analogue à la notation scientifique, mais l'exposant est toujours un multiple de 3), avec 3 chiffres après le premier. Remarquez que ces modes d'affichages continuent à marcher en mode CALC. Mais pour les changer, il faut être en mode BASIC.

Jusqu'à ce que vous soyez au chapitre sur le mode PROGRAMME BASIC, je vais supposer que vous essayez tous les exemples donnés directement au clavier. Vous ne pouvez pas commencer à écrire des programmes BASIC tant que vous ne connaissez pas le mode CLAVIER BASIC. les prochains chapitres vous montreront comment utiliser le CLAVIER BASIC à fond.

La leçon de ce chapitre a été que vous êtes en mode CLAVIER BASIC quand vous devez taper les commandes en BASIC et presser [ENDLINE] avant que quoi que ce soit arrive. Dans les chapitres suivants nous allons voir les règles fondamentales de la grammaire BASIC.

4.2  VOCABULAIRE DE BASE DU BASIC

Contrairement au français, qui a des tonnes de catégories de mots (noms, pronoms, verbes, adjectifs, adverbes,...), le BASIC du HP-71 n'a que 4 types de mots. Ces 4 types sont :

(1) COMMANDES

Quand vous tapez BEEP, vous commandez au HP-71 d'émettre un son. Vous n'attendez aucune sorte de réponse, vous voulez juste dire à la machine de faire quelque chose de façon interne. Tous les mots et expressions qui disent au HP-71 de faire quelque chose sans qu'il vous renvoie en échange un nombre ou une chaîne, sont appelés des "commandes".

Si une analogie avec le français peut vous aider, vous pouvez penser aux commandes en termes de verbes, verbes à la forme impérative : Hé, vous, BEEPez ! Parfois les commandes admettent des chiffres comme argument, pour modifier l'action de la commande. Par exemple, BEEP 1000 émet un bip deux fois plus haut que le bip normal. Remarquez que le 1000 n'est pas entre parenthèses. Les commandes n'exigent jamais de parenthèses.

(2) FONCTIONS

Quand vous tapez SIN(45), vous attendez une réponse à un problème mathématique : le sinus de 45º. la partie SIN est la fonction, la partie 45 est l'argument de la fonction et les parenthèses montrent le début et la fin de l'argument. Aussi SIN(45) est très différent de SIN(45)+45. Dans notre analogie avec le français, les fonctions sont comme les adjectifs, leurs arguments étant comme des noms. Quand je dis "maison bleue", bleue est un adjectif agissant sur le nom maison. Le mot "bleue" est une fonction qui rend bleu son argument ! SIN est un adjectif qui modifie le nom 45 et le transforme en sinus. Les fonctions qui ont des arguments exigent toujours des parenthèses.

(3) SUFFIXES

Quand vous tapez CFLAG ALL, vous commandez au HP-71 de baisser tous les drapeaux utilisateurs (de 0 à 63). Le mot CFLAG est une commande, comme dit plus haut. Le mot ALL n'est pas une commande, car par lui même il ne signifie rien, il ne représente pas une expression valide. Il est autorisé après CFLAG parce qu'il modifie la commande CFLAG. Comme ces mots sont toujours placés après les commandes, je les appelle "suffixes" dans ce livre. En français nous modifions les verbes avec des adverbes, en BASIC nous modifions les commandes avec des suffixes. CFLAG ALL en français : Hé, vous, baissez (de Clear, effacer) les drapeaux (de FLAG, drapeau) complètement (de ALL, tout). En BASIC, les suffixes ne modifient que des commandes, pas des fonctions. Ne soyez donc pas trop à cheval sur cette analogie entre suffixes et adverbes!

(4) OPÉRATEURS

Les "opérateurs" (+, -, *, /, etc...) sont comme les prépositions en français. Comme les prépositions, ils ne viennent jamais à la fin d'une phrase, et peuvent débuter des phrases simples ou compliquées. Leur utilisation est presque identique à la façon courante d'écrire l'algèbre, comme 1+2*(3-7) qui se traduit en français par "un plus deux par trois moins sept". Malheureusement, comme en français, quelques mots BASIC peuvent être utilisés de plusieurs façons. OFF seul est une commande, mais BEEP OFF utilise OFF comme suffixe ! ANGLE est à la fois une fonction (comme dans ANGLE(x,y)) et un suffixe (comme dans OPTION ANGLE DEGREES) ! Aussi il est inutile d'apprendre par coeur quels mots sont des commandes, quels sont des fonctions, quels sont des suffixes ou quels sont des opérateurs. C'est leur usage qui détermine ce que sont les mots.

Quelques mots admettent plusieurs usages. Toutes ces catégories de mots vous sont familières. Il n'y en a qu'un que j'avais tenu secret. C'est le symbole "@". Il est exactement parallèle aux mots "et ensuite" en français. Supposons que je veuille demander à l'ordinateur "BEEP et ensuite BEEP 1000".

Plutôt que de taper deux lignes, je peux faire juste :

BEEP @ BEEP 1000

Le symbole "@" "concatène" (assemble) les deux commandes en une seule longue commande. Vous pouvez utiliser @ aussi souvent que vous voulez, vous pouvez taper des commandes les unes derrière les autres jusqu'à 96 caractères de long. Mais OYEZ MON AVERTISSEMENT ! Le symbole @ est aussi dangereux que "et ensuite" en français ! Vous devez connaître ces gens qui vous racontent une histoire, puis une autre, puis s'embrouillent dans des détails inutiles, puis racontent comment leur tante se porte etc, etc... La conversation avec ce genre de gens est pour le moins frustrante. Les phrases sans fin ont causé plus de maux de tête, de pertes de sang froid, de mariages brisés et de meurtres que toutes les autres causes combinées ! Si vous commencez à parler à votre HP-71 de cette façon, soyez prudent, un jour il refusera peut-être de s'allumer !

Sérieusement, n'abusez-pas de @. C'est bien, c'est même parfois nécessaire, comme pour les boucles FOR-NEXT tapées au clavier (davantage là-dessus plus tard). De plus cela vous permet de mettre dans la pile de commande des tonnes de commandes ! Mais ne prenez pas l'habitude de taper @ chaque fois que vous devez presser [ENDLINE]. Sinon, vos programmes seront écrits de la même façon, et leur mise au point sera plus difficile.

Davantage là-dessus quand nous arriverons au chapitre sur le mode PROGRAMME BASIC.

Dans ce chapitre, nous avons vu les règles de la grammaire BASIC. Dans le prochain, nous verrons comment utiliser le BASIC pour manipuler les variables par des méthodes inutilisables en mode CALC.

4.3  VARIABLES EN CLAVIER BASIC

En mode CALC, nous avons vu comment assigner des valeurs aux variables. Par exemple, nous avons tapé W=SQR(222-182) pour placer 12,65 dans W, la hauteur de la gouttière de l'hôtel Fonch après sa chute contre le mur de la banque. Ça marche aussi en mode BASIC. En fait, les variables conservent leurs valeurs quand on passe du mode CALC au mode BASIC ! Si vous affectez une variable dans un mode, vous pouvez utiliser sa valeur dans les autres modes. C'est un des recouvrements entre les modes CALC et BASIC.

Mais les variables sont plus puissantes en mode BASIC qu'en mode CALC. Par exemple, en BASIC, vous pouvez demander au HP-71 de considérer X non pas seulement comme un nombre, mais comme le nom d'une liste de nombres (disons 100 nombres), tous cachés sous le nom X. Vous pouvez aussi effacer toutes vos variables en un éclair ! Vous pouvez charger des variables dans un "fichier" en mémoire, à l'abri du danger, pour pouvoir les rappeler plus tard du fichier (comme sur un lecteur de disquettes incorporé !). Mieux que tout, vous pouvez aussi mettre des mots français ou n'importe quel autre texte dans des variables!

4.3.1  DÉCLARER LES VARIABLES

En mode CALC, nous avons utilisé des variables pour représenter des nombres. Ces variables, comme la fonction PI, ont toujours 12 chiffres de long. Aussi, si vous tapez X=1/3, puis X, vous verrez que le contenu de X est 0,333333333333, ce qui n'est pas réellement 1/3 ; ce sont seulement les 12 premiers chiffres de 1/3 (ce qui est la valeur la plus voisine de la valeur réelle de 1/3 que l'ordinateur peut manipuler). Si vous tapez X=1/4, alors X contient .25, ce qui fait toujours 12 chiffres, mais les dix derniers sont des zéros.

Ainsi X contient 12 chiffres. C'est la précision maximale qu'une variable peut avoir dans le HP-71. Mais les variables peuvent avoir moins de précision si vous le désirez. Si vous voulez qu'une variable ait toute sa précision de 12 chiffres, vous devez en informer le HP-71. On dit qu'on "déclare" la précision de la variable. La façon de déclarer une précision de 12 chiffres pour une variable X est de taper :

real x

Si nous l'appelons "real" ("réelle" en français), c'est parce que, pour autant que l'ordinateur est concerné, 12 chiffres de précision vous donnent la réponse réelle (NdT : disons que la représentation à 12 chiffres est la plus proche de ce que les mathématiciens appellent un nombre réel). Peu importe à l'ordinateur que tout ce qu'il y a après le douzième chiffre soit fichu, il fait ce qu'il peut. Aussi il appelle le nombre un nombre réel. Plus tard nous discuterons les fonctions trappe et drapeau qui vous permettront de découvrir exactement quand le HP-71 élimine quelque chose après le douzième chiffre et quand il ne le fait pas. Pour la plupart des gens 12 chiffres est plus qu'il n'en faut.

Mais supposons que 12 chiffres soient trop pour vous et que tous ces chiffres encombrant l'écran vous fassent horreur ! Supposons que vous voulez juste 5 chiffres de précision. Vous avez deux options. Une option est de changer le mode d'affichage en FIX 5, ce qui montre tout avec 5 chiffres de précision. Cette méthode a deux inconvénients : D'une part elle montre tout avec 5 chiffres, même quand il y a des zéros non significatifs et cela peut devenir très gênant. D'autre part FIX 5 est uniquement un mode d'affichage, dans la machine les nombres ont toujours 12 chiffres de long, ce qui fait que ce que vous voyez n'est pas exactement ce que vous avez, ce qui peut entraîner des confusions.

Par exemple, en mode FIX 5 assigner 1/3 à X met dans X . 333333333333. Maintenant, 3*X affiche 1.00000, mais RES-1 (qui apparemment devrait donner 0) donne -1.00000E-12, qui est la notation scientifique pour -0,000000000001. La raison de cette "erreur" est évidente en mode d'affichage STD.

L'autre option est en fait de forcer X à n'avoir que 5 chiffres de précision, de cette façon :

short X

Après l'exécution de cette commande, X sera nul. Essayez le, puis faites X=1/3.

Remarquez que X ne contient pas l'habituel .333333333333 (12 chiffres), mais .33333 (5 chiffres). Ceci n'est pas un mode d'affichage ; X ne contient bien que les 5 premiers digits de 1/3 !

Maintenant, en mode STD, notre problème d'avoir 3*X affiché comme 1 est résolu. 3*X donne .99999 ce qui n'est visiblement pas 1. L'erreur d'arrondi, pratiquement invisible en précision réelle devient évidente en précision courte (SHORT) (NdT : Il y a un petit défaut à signaler dans l'explication qui précède, en effet FIX 5 n'affiche pas 5 chiffres significatifs mais 5 chiffres après la virgule ; 123.45678 est un nombre valable en FIX 5, pas en précision SHORT).

Il y a encore un type de précision, appelé INTEGER (entier). Si vous tapez :

integer x

X ne peut plus contenir le moindre chiffre après la virgule, elle ne peut être qu'entière et, de plus, seulement entre -99999 et 99999. Aussi, si vous faites X=1/3, X ne contient que 0 (1/3 est plus voisin de 0 que de 1). Par contre, si vous tapez X=2/3, X contient 1 (2/3 est plus près de 1 que de 0).

Note importante ! Vous pouvez changer la précision d'une variable n'importe quand, mais dans ce cas, il faut se rappeler trois choses :

Premièrement, chaque fois que vous changez la précision d'une variable en déclarant une nouvelle précision, son ancienne valeur est perdue et sa nouvelle valeur est 0.

Deuxièmement, changer la précision d'une variable n'affecte que cette variable et n'affecte absolument rien d'autre !

Par exemple, même si c'est à une variable SHORT que vous affectez 1/3, RES contient quand même la précision complète de 12 chiffres de 1/3, même si la variable n'en prend que 5 chiffres.

Les variables peuvent avoir différentes précisions, mais les calculs du HP-71 (comme la fonction PI) sont toujours exécutés avec 12 chiffres (en fait, si cela vous intéresse, sachez que les calculs sont effectués avec une précision de 15 chiffres de façon interne, et quelquefois même avec une précision plus grande, mais après la fin du calcul le résultat est arrondi à 12 chiffres).

Troisièmement, et c'est le plus important, les variables conservent leur précision et leur valeur quand vous passez du mode CALC au mode BASIC et vice-versa. Vous êtes donc prévenus que la précision de vos calculs en mode CALC dépend de la précision déclarée des variables que vous utilisez ! Vous ne pouvez pas espérer que X=2/3 marche correctement si X est une variable entière.

Test. Après avoir tapé ce qui suit, que montre l'affichage ? Pourquoi ? Essayez.

short x

x=1/3

1/3-x

4.3.2  DIMENSIONNER LES VARIABLES

Jusqu'ici nous avons utilisé X pour représenter un seul nombre (même si c'est un nombre variable). Mais supposez qu'on veuille enregistrer toute une liste de nombres dans l'ordinateur, par exemple le montant des timbres pour l'expédition de lettres urgentes, en fonction du poids. Il n'est pas nécessaire d'utiliser plein de variables différentes comme ceci :

A=2.20

B=3.90

C=5.00

D=10.70

E=13.4

F=17.90

G=24.00

.....

Vous pouvez faire comme ça si vous voulez, mais il y a un meilleur système. En mathématiques, nous utilisons souvent des expressions comme P1 , P2 ou P3 pour indiquer différents nombres. De fait, vous pouvez utiliser Pn pour indiquer le "nième" nombre de la liste P (dans cet exemple, P3 est 3ième prix du tarif, Pn est le nième prix du tarif).

Cette notation est appelée "notation indicée" parce que le nombre est écrit en petit après la variable. Une liste de nombres sous le même nom est généralement appelée un tableau.

En BASIC, nous avons aussi des variables indicées, et elles sont aussi appelées tableaux. Avant de pouvoir utiliser un tableau, nous devons le déclarer. De cette façon, l'ordinateur peut prévoir la mémoire nécessaire pour stocker toutes les variables dont vous allez avoir besoin. La quantité de mémoire dépend de la longueur du tableau et ceci ne dépend que de vous.

Supposons que vous vouliez un tableau contenant les sept nombres ci-dessus. Décidez d'abord de quelle précision vous avez besoin. Comme les 7 nombres sont courts, nous pouvons aussi bien utiliser la précision courte (qui épargne de la mémoire). La façon de déclarer un tableau de nombres courts appelé P et contenant 7 nombres est :

short p(7)

Le nombre entre parenthèses après p dit à l'ordinateur combien il y a de nombres dans le tableau. De la même façon, vous tapez l'indice entre parenthèses :

p(1)=2.20

p(2)=3.90

p(3)=5.00

p(4)=10.70

p(5)=13.40

p(6)=17.90

p(7)=24.00

Aussi, si vous voulez trouver le prix du port pour une lettre de 100 grammes, tapez juste p(3), et voilà, c'est 5,00F. De même, pour trouver P4 , vous tapez p(4). Et devinez quoi ? Vous pouvez même faire comme en math, retrouver Pn en tapant p(n). Essayez ceci : n=5, puis p(n). Vous devez voir 13.40, parce que Pn = 13.40 quand n=5.

D'étranges gens ne se satisfont pas de listes de nombres en ligne, appelées tableaux, ils veulent tout un carré de nombres appelé "matrice". Par exemple, ils veulent enregistrer cet arrangement de nombres :

1    2  -3  -4

2    3  -4     5

5 -6     7  -8

dans une seule variable, comme en mathématiques avancées. Comme c'est une matrice, appelons-la M. En math, nous appelons le nombre du premier rang, première colonne M1,1 = 1 et le nombre du troisième rang, quatrième colonne M3,4 = -8 . Voyez ça ! Le HP-71 marche avec les matrices exactement comme avec les tableaux ! Tout ce que vous avez à faire est de spécifier combien de rangs et combien de colonnes vous voulez. Comme les matrices nécessitent en général beaucoup de précision, créons une matrice 3 par 4 de précision réelle et appelons-la M :

real m(3,4)

Pour remplir M, faisons comme pour le tableau :

m(1,1)=1

m(1,2)=2

m(1,3)=-3

m(1,4)=-4

m(2,1)=2

m(2,2)=3

m(2,3)=-4

m(2,4)=5

m(3,1)=5

m(3,2)=-6

m(3,3)=7

m(3,4)=-8

Combien vaut M2,3  ? Tapez simplement m(2,3) et -4 sera affiché. Si une variable à un indice est appelée tableau et une variable avec deux indices matrice, comment est appelée une variable avec 3 indices ? Elle n'est pas appelée du tout, car le HP-71 ne peut pas la traiter. Mais remarquez que les manuels HP se réfèrent aux indices comme à la "dimension" des variables. Les tableaux sont des variables à une dimension, les matrices sont des variables à 2 dimensions. Aussi, un autre terme pour "déclarer" une variable est de la "dimensionner". En fait, REAL X(100) et DIM X(100) sont des commandes identiques ! Vous pouvez utiliser DIM à la place de REAL si vous voulez. N'oubliez jamais que DIM fait plus que dimensionner la variable, il déclare aussi une précision réelle.

Mais comment appelle-t-on une de nos vieilles, ordinaires, simples variables sans aucun indice ? Elle est appelée une variable "scalaire". Une variable scalaire contient un nombre scalaire : un simple nombre, sans bénéfice accessoire. Les scalaires sont tout ce dont la plupart des simples mortels ont besoin la plupart du temps. Si vous avez besoin d'un tableau une fois par hasard, ou même d'une matrice, c'est quand même bien que le HP-71 puisse les manipuler aussi facilement.

De fait, si vous achetez le module math du HP-71, il vous permettra de travailler avec les tableaux et les matrices de façon fantastique. Il vous permet d'additionner des tableaux, de multiplier ou d'inverser des matrices, de résoudre des systèmes d'équations, le tout en une seule commande. Il réalise des transformations de Fourrier finies, trouve les racines d'une fonction, et plus encore en un clin d'oeil. Si vous êtes un utilisateur sérieux de tableaux et de matrices, l'achat du module math doit vous intéresser, rien que pour ses performances dans l'utilisation des tableaux.

Note : Si vous essayez d'utiliser une variable dans un sens contraire à son type déclaré, vous aurez un message d'erreur. Si P est un tableau, vous ne pouvez pas faire P=4. Si vous le faites, vous verrez le message d'erreur "Data Type". Si vous voulez supprimer complètement de la mémoire un tableau ou une matrice, utilisez la commande DESTROY. Pour supprimer votre tableau P et votre matrice M, tapez :

destroy p,m

La commande DESTROY ne se contente pas d'effacer une variable, elle la détruit complètement ! La variable n'est plus une matrice, un tableau, un scalaire ou rien d'autre. Elle n'existe plus. Si vos tableaux et vos matrices commencent à encombrer la mémoire, vous pouvez avoir à en détruire un ou deux pour éviter l'erreur dramatique "Insufficient Memory" (mémoire insuffisante).

Si vous êtes vraiment très à court de mémoire, vous pouvez détruire toutes vos variables d'un coup par cette commande :

destroy all

Même si cette commande semble inquiétante (la seule qui soit encore plus inquiétante est END ALL, discuté plus loin), n'hésitez pas à l'utiliser, elle ne détruit que vos variables, et rien d'autre.

4.3.3  DONNÉES DE TYPE COMPLEXE

Le HP-71 a été étudié avec 5 types de bases pour les variables. Nous avons déjà vu les types REAL, SHORT et INTEGER (qui permettent tous des indices). Le quatrième type de variable est appelé COMPLEX et représente des nombres "complexes" comme 3-4i (où "i" représente la racine carrée de -1).

Malheureusement, quand le groupe d'étude de HP a fini d'écrire le système d'exploitation du HP-71, il faisait 80K de long, et il n'y avait de place que pour 64K. Aussi ils on dû supprimer quelques propriétés du système d'exploitation et les mettre dans un module optionnel que vous pouvez acheter. Une de ces propriétés qui a disparu était le type de données complexe. Le HP-71 peut avoir des variables complexes, mais à moins que vous ayez le module math, vous ne pouvez rien en faire. La commande qui déclare les variables complexes est elle-même dans le module math !

Aussi si vous avez besoin de nombres complexes (aussi appelés "imaginaires"), achetez le module math, qui peut les manipuler même mieux que ne le fait une HP-15. Comme mentionné précédemment, n'oubliez pas que les variables conservent leur précision quand on entre dans le mode CALC ou quand on en sort. Elle gardent aussi leur dimension. Si vous avez besoin d'un tableau en mode CALC, dimensionnez-le simplement en BASIC, puis retournez en mode CALC !

Note finale : Si vous "redimensionnez" un tableau, c'est à dire si vous déclarez la même précision mais un nombre différent d'éléments, alors le tableau n'est PAS rempli automatiquement de zéros ! Il est simplement raccourci (auquel cas quelques valeurs sont perdues) ou rallongé (avec des zéros). La même chose est vraie pour les matrices ; si la matrice est redimensionnée, les valeurs sont ré-arrangées (rang par rang, pas colonne par colonne) mais pas effacées. Il n'y a pas de restriction sur le redimensionnement des tableaux et des matrices. Si la précision est changée, cependant, toutes les valeurs sont effacées. Essayez ceci avec quelques petits tableaux et quelques petites matrices pour en prendre l'habitude.

4.3.4  VARIABLES CHAÎNES

Toutes les variables discutées ci-dessus ont une chose en commun : elles contiennent des nombres. Mais comment faire si vous voulez enregistrer votre nom, ou un mot français, dans une variable ?

Quand vous enregistrez un nombre dans une variable réelle, vous enregistrez combien de chiffres ? 12. Toujours. Même si vous voulez seulement enregistrer le nombre 3 dans la variable réelle X, X contient toujours 12 chiffres (dont 11 zéros). Vous le savez déjà.

X est juste un nombre, contenant 12 chiffres. Mais si vous voulez enregistrer, disons, le mot "Hello" dans une variable, vous n'avez aucun chiffre à enregistrer. Vous voulez enregistrer cinq lettres chaînées l'une à l'autre. Comme vous ne voulez pas un nombre mais une "chaîne" de caractères, la variable qui les contient est appelée une "variable chaîne".

Les variables chaînes ressemblent aux variables (numériques) habituelles, mais elles ont un symbole "$" écrit juste après elles. Par exemple, essayez ceci :

N$="Hello"

N$ (prononcez "N dollar") est la variable chaîne, et nous y avons mis la chaîne "Hello". Pour voir ce que N$ contient, il faut faire comme pour les variables numériques, juste taper N$ et presser [ENDLINE].

Vous pouvez être surpris de ce que nous avons affecté "Hello" à N$ mais que quand vous regardez le contenu de N$ vous ne voyez que Hello, sans guillemets autour. Les guillemets dans notre instruction d'assignation originale, N$="Hello" ne sont là que pour dire à l'ordinateur que Hello est une chaîne, pas un nombre. Si vous tapez PI, vous avez le nombre 3,14159265359. Mais si vous tapez "PI", vous avez le mot PI. Essayez.

4.3.5  DÉCLARER DES VARIABLES CHAÎNE

Si vous ne déclarez pas la précision d'une variable numérique, le HP-71 suppose que vous voulez la précision REAL. De la même manière, le HP-71 suppose que votre variable chaîne doit contenir 32 caractères. Vous pouvez taper N$="Hello" sans dimensionner N$ parce que "Hello" fait moins de 32 caractères de long. Mais si vous deviez taper ceci :

N$="C'est le temps qui façonne l'homme"

vous auriez une erreur "String Ovfl" ("string overflow", dépassement de capacité chaîne) parce que N$ ne peut pas contenir plus de 32 caractères. Si vous voulez une chaîne de plus de 32 caractères, vous devez la dimensionner. Si vous voulez que N$ contienne jusqu'à 100 caractères, tapez :

DIM N$[100]

Remarquez les crochets. Les crochets, pour le HP-71, ont rapport à la position d'un caractère dans une chaîne. Aussi DIM N$[100] signifie "allouer de la mémoire pour N$ jusqu'au centième caractère". Si vous voulez un tableau de chaînes, rappelez-vous simplement que la dimension vient d'abord, entre parenthèses normales et la taille des chaînes en second, entre crochets, comme ceci:

DIM N$(7)[100]

qui prépare la mémoire pour 7 chaînes contenant jusqu'à 100 caractères chacune. On s'y réfère par N$(1), N$(2) etc... Le HP-71 ne permet pas les matrices de chaînes, mais, si vous en avez besoin, nous verrons un moyen de les simuler quand nous arriverons au chapitre sur le mode PROGRAMME BASIC. Vite ! Que fait DIM N$[96],X,Y,Z ? Juste ! Il déclare N$ à 96 caractères de long et X,Y et Z en précision réelle.

4.3.6  FONCTIONS CHAÎNES SPÉCIALES

Les fonctions qui opèrent sur des nombres sont appelées fonctions numériques (surprise !), et les fonctions qui opèrent sur des chaînes sont appelées (tous en choeur avec moi !) fonctions chaînes ! Il y a beaucoup moins de fonctions chaînes que de fonctions numériques. N'ayez crainte ! Le HP-71 est d'abord une machine à traiter les nombres. Il préfère calculer SQR(X) ou FACT(253). Il n'apprécie pas qu'on lui demande SQR("FRED") ou FACT("Hello"). Comme il ne s'agit pas d'expressions valides, le HP-71 le dit.

Essayez. Remarquez aussi que le mode CALC est strictement pour le traitement des nombres, il n'admet aucune chaîne ou fonction chaîne.

Une fonction chaîne très utile est LEN. Elle vous donne la longueur de la chaîne spécifiée. Par exemple, essayez :

len(n$)

qui vous donne la longueur de N$, qui doit être 5, puisqu'elle est égale à "Hello" qui a 5 caractères de long. Les fonctions numériques discutées plus haut ont toutes une chose en commun : Elle peuvent utiliser une variable numérique comme argument, par exemple SIN(Y), ou vous pouvez utiliser un nombre écrit tel que, par exemple SIN(17.7). La même chose est vraie des fonctions chaînes. Vous pouvez utiliser une variable chaîne, par exemple LEN(N$), ou vous pouvez utiliser une chaîne utilisée telle que (entre guillemets). Une expression utilisée telle que, épelée "littéralement" est appelée un "littéral". Un exemple de littéral numérique est 1537. Un exemple de littéral chaîne est "Hello". Vous pouvez utiliser aussi bien les guillemets (") que les apostrophes(') pour délimiter les littéraux chaînes (c'est une habitude anglo-saxonne), mais ne les mélangez pas ! Si vous débutez une chaîne avec des guillemets, finissez avec des guillemets ; si vous commencez avec une apostrophe, finissez avec une apostrophe. Le HP-71 semble parfois changer les guillemets en apostrophe (nous en verrons des exemples dans les assignations de touches et dans les labels de programmes) mais vous pouvez taper ce qu'il vous plaira.

Note aux philosophes : Remarquez que PI n'est ni une variable (il ne varie pas) ni un littéral (il ne contient pas de chiffre). C'est une fonction. Un philosophe des mathématiques dirait "Il y a une contradiction dans les termes ; les fonctions doivent être des fonctions de quelque chose, mais PI n'a pas d'argument et donne toujours la même valeur, donc ce n'est pas une fonction, mais une constante". J'approuve de tout coeur. PI devrait être appelé une constante, mais ce n'est pas le cas. Il est appelé une fonction. Ceci résout le dilemme de savoir comment appeler des fonctions similaires comme RES.

RES agit comme une constante (il donne une valeur mais n'a pas d'argument), mais il varie. Il ne peut pas être appelé une variable, cependant, parce que la méthode d'affectation d'une valeur aux variables ne marche pas avec RES (essayez RES=1234 et voyez ce qui arrive). Aussi contentez-vous de l'appeler une fonction.

Quand à RES, remarquez que RES n'est jamais une chaîne. La valeur de RES est changée chaque fois qu'une variable numérique se voit assigner une valeur (ou chaque fois qu'une valeur est affichée ou imprimée). RES n'est jamais changé par une opération sur les chaînes.

4.3.7  CROCHETS ET SOUS-CHAÎNES

Tapez ces commandes :

DIM N$[96]

N$="C'est le remps qui faconne l'homme"

N$[10,26]

Que voyez-vous ? Vous devez voir trois mots. Les crochets aux extrémités de la chaîne sont des opérateurs spéciaux qui indiquent quelle part de la chaîne utiliser. Le 10 signifie "débutez au 10 ème caractère" et le 26 signifie "arrétez au 26ème caractère". Ainsi nous obtenons une partie de N$, du 10ème au 26ème caractères (inclus). Une petite chaîne extraite d'une plus grosse est appelée une sous-chaîne. Si vous n'utilisez qu'un nombre, il est pris comme valeur de départ. A l'aide de la pile de commande, pour ne pas avoir à le retaper, essayez cette expression :

N$[10]

C'est ce qu'il y a de mieux dans les sous-chaînes. Supposons que vous ne vouliez pas "remps" dans cette chaîne, mais "temps". A l'aide des sous-chaînes, vous pouvez changer une partie de N$ en quelque chose d'autre :

N$[10,10]="t"

N$

Maintenant, vous voyez "C'est le temps qui faconne l'homme". Essayez ceci :

N$[11,11]="a"

N$[14,14]="on"

N$[30,31]="e tr"

N$[35,37]="u"

N$

Vous devez voir une nouvelle phrase au sujet d'un travail de maçon !

Bien que ce ne soit pas mentionné dans les documents HP, remarquez que les crochets peuvent modifier non seulement les chaînes, mais les sous-chaînes ! Essayez ça :

N$[LEN(N$)/2][4,5]

Ceci veut dire que vous voulez les caractères du 3ème au 5ème de la deuxième moitié de N$, ce qui donne "fa". Comme ceci met en jeu deux concepts de sous-chaîne ("deuxième moitié" et "du 3ème au 5ème caractère"), le faire avec des crochets doubles est logique. Le faire en suivant les manuels HP aurait donné :

N$[LEN(N$)/2+4,LEN(N$)/2+5]

Remarquez, cependant, que les commandes d'assignement ne peuvent avoir qu'un jeu de crochets à gauche du signe égal. N$[10,20]="XYZ" est bon, mais N$[10,20][2,4]="!" n'est pas autorisé.

Il y a un autre truc qui n'est pas indiqué dans le manuel. Vous pouvez avoir besoin d'insérer quelque chose au milieu d'une chaîne. Pour ce faire, spécifiez une chaîne qui part de là où vous voulez, mais qui n'a pas de longueur :

N$[10,0]="Texte inséré"

Pour insérer du texte au tout début d'une chaîne, vous pouvez utiliser N$[1,0] ou N$[0,0], comme vous voulez.

Test ! Supposons que I$="123456789".

Que vaut I$[3,6] ? I$[6] ? Que fait I$[3,7]="-" à I$ ? Réfléchissez. Essayez.

Note pour les curieux : Le HP-71 utilise une notation algébrique homogène en mode CALC ; toutes les fonctions viennent avant le nombre utilisé et tous les opérateurs viennent entre. La même chose est vraie pour toutes les fonctions du HP-71, même les fonctions chaîne... sauf pour les crochets.

Ils viennent toujours à la fin. Si vous avez l'habitude de la façon dont les autres BASIC travaillent sur les sous-chaînes (avec des fonctions comme MID$, LEFT$ et RIGHT$), les crochets vous donneront un peu de mal avant que vous y soyez habitués. Si vous n'avez jamais travaillé auparavant avec BASIC, vous trouverez les crochets commodes d'usage.

4.3.8  LE ET COMMERCIAL &

De la même façon que les crochets vous permettent de raccourcir des chaînes en chaînes plus petites, le "et commercial" (&) vous permet d'assembler des chaînes en chaînes plus longues. Par exemple :

"ABC"&"123"

donne un résultat de "ABC123". Le "&" peut être vu comme un ET ; il rassemble les deux chaînes. Certaines personnes voient le "&" comme un "+", comme si il additionnait les deux chaînes. Ceci peut être mal compris. Quand vous additionnez 1+2, vous n'obtenez pas 12, mais "1"&"2" donne "12". Plutôt que +, le symbole & ressemble au symbole @ qui rassemble des instructions sur une même ligne.

L'opération faite par "&" pourra être appelée "concaténation".

Notez que vous pouvez combiner les crochets et le & de façon surprenante. Par exemple :

"ABCDEFG"[2,6]&"1234567"[3,5]

donne

"BCDEF345

parce que nous avons concaténé les caractères 2 à 6 de "ABCDEFG" avec les caractères 3 à 5 de "1234567". Mais remarquez que :

("ABCDEFG"[2,6]&"1234567")[3,5]

donne "DEF" parce qu'il s'agit des caractères 3 à 5 de :

"ABCDEFG"[2,6]&"1234567"

Cette utilisation des parenthèses est la seule façon qui permet d'appliquer les crochets à plus que la chaîne immédiatement précédente. Vous rappelez-vous la hiérarchie algébrique que nous avons apprise pour les fonctions mathématiques ? La multiplication "a priorité" sur l'addition. Pareil ici, les crochets "ont priorité" sur "&" dans l'évaluation des chaînes. Je présume qu'on peut appeler cela une hiérarchie des fonctions chaîne, mais personne ne le fait, je n'en ferai donc rien. Rappelez-vous seulement que les parenthèses sont plus importantes que les crochets et les crochets plus importants que &.

4.3.9  CHR$ ET NUM

CHR$ (CHaRacter, caractère, prononcez "cé hache ere dollar") est une fonction commode qui transforme un nombre en chaîne d'un caractère. Par exemple, essayez ceci :

CHR$(74)&CHR$(72).

Vous devez voir "JH" à l'affichage. Ceci parce que le 74ème caractère connu du HP-71 est "J" et le 72ème "H". Ces nombres sont appelés les codes ASCII (prononcez "aski") des caractères correspondants. Quand le HP-71 enregistre une chaîne, il enregistre en fait une suite de codes ASCII; quand vous affichez la chaîne, il convertit chaque code dans le caractère correspondant. Je n'ai pas inclus une table des codes ASCII dans ce livre, parce qu'il y en a une très bonne qui vous est fournie avec le HP-71, pages 43 à 47 de l'aide mémoire du HP-71, que vous avez tout intérêt à conserver en permanence dans l'étui du 71.

Vous pouvez objecter que vous pouvez obtenir "JH" en tapant "JH", à quoi peut donc bien servir CHR$ ? Vous en avez besoin pour les caractères que vous ne pouvez pas taper. Par exemple la barre de fraction inversée () qui n'est pas au clavier. Elle a le code ASCII 92. Si vous voulez l'afficher, tapez CHR$(92).

Ainsi, CHR$ prend un code ASCII et vous donne le caractère correspondant. La fonction inverse est appelée NUM ("NUMber", nombre). NUM prend un caractère et vous donne son code ASCII. Par exemple, NUM("J") donne 74, parce que le code ASCII pour J est 74.

Remarquez que les majuscules ont un code différent des minuscules. NUM ne regarde que le premier caractère de son argument, aussi vous pouvez lui envoyer des chaînes longues. Par exemple, NUM("Jack Horner") donne aussi 74. Tout ce qu'il y a après le premier caractère est ignoré par NUM.

Vous pouvez utiliser CHR$ et NUM pour comprimer beaucoup de nombres dans peu de place. Par exemple, si vous avez 100 nombres à stocker, allant de 0 à 255, vous pouvez les stocker ensembles dans une chaîne de caractères ASCII. Ceci prend seulement une fraction de la mémoire qui serait nécessitée par un tableau.

Exemple : Faisons le d'abord avec un tableau, puis voyons comment on fait avec une chaîne. Pour faire un tableau nommé "A" de 100 entiers, vous devez taper integer A(100). Pour rendre le 17ème égal à 153, vous devez taper A(17)=153. Pour récupérer le 17ème, vous avez juste à taper A(17). Maintenant faisons-le avec une chaîne. Pour créer une chaîne nommée A$, de 100 caractères de long, tapez DIM A$[100]. pour rendre le 17ème caractère égal au code ASCII 153, tapez A$[17,17]=CHR$(153).

Pour récupérer le code ASCII du 17ème caractère, tapez NUM(A$[17]).

4.3.10  STR$ ET VAL

Avez-vous remarqué que, chaque fois que vous affichez un nombre, le HP-71 ajoute un espace devant et derrière ? Essayez ceci : X=153 @ "Prix =";X;"F". Ce que nous nous attendons à voir, c'est :

Prix =153F

mais ce n'est pas ce que nous obtenons. A la place, nous avons :

Prix = 153 F

avec un espace entre = et 153 et un espace entre 153 et F. Nous pouvons nous en débarrasser en utilisant la fonction STR$ ("STRing", chaîne, prononcer "esse té ere dollar"). La fonction STR$ prend un nombre et renvoie une chaîne qui ressemble exactement au nombre comme il serait affiché, sauf qu'elle n'ajoute pas ces espaces inutiles ! Aussi, tapez "Prix =";STR$(X);"F" et vous verrez :

Prix =153F

L'utilisation de STR$ uniquement pour éliminer les espaces, cependant, est comme d'utiliser le HP-71 uniquement en mode CALC. C'est bien, mais quel gaspillage de puissance! La vraie puissance de STR$ réside dans la façon dont elle vous permet d'utiliser des nombres comme des chaînes. Beaucoup de fonctions ne travaillent que sur des chaînes, aussi si vous voulez utiliser cette fonction avec un nombre, utilisez d'abord STR$. Par exemple, la fonction LEN ne vous donne que la longueur d'une chaîne, pas la longueur des nombres. Supposons que vous vouliez trouver la longueur prise par l'affichage de X. Vous pouvez l'afficher et compter le nombre de positions d'affichage. Vous pouvez aussi utiliser LEN(STR$(X)). Essayez. Ce principe s'applique à toutes les fonctions chaînes. Pour les utiliser sur des nombres, utilisez d'abord STR$ pour transformer le nombre en chaîne.

La fonction opposée est VAL (VALeur). VAL prend une chaîne et la transforme en nombre. Par exemple, tapez A$="153". Maintenant, supposez que vous voulez récupérer le nombre 153 dans la chaîne A$. Vous ne pouvez pas utiliser NUM ; cela ne donnerait que des codes ASCII, dont nous n'avons que faire. Utilisez VAL(A$) ; cela vous renvoie 153. Mais VAL est beaucoup plus puissante que cela ! Elle peut aussi évaluer des expressions mathématiques complètes. Par exemple, si A$="1+2*34", alors VAL(A$) est 163, comme si vous aviez tapé 1+2*34 en mode CALC.

Mais voici la vraie conclusion sur la fonction VAL. Vous pouvez lui envoyer des chaînes contenant des variables, et elle les évalue correctement ! Par exemple, faites A$="PI*R2". C'est la formule qui donne l'aire d'un cercle de rayon R. Pour trouver l'aire d'un cercle de rayon 7, faites R=7 puis tapez VAL(A$) pour voir 153.938040026, l'aire. Pour utiliser des chaînes compliquées, avec de nombreuses variables, assurez-vous d'avoir dimensionné la chaîne d'abord. Cette capacité de VAL d'évaluer des expressions est le coeur de quelques un des plus puissants programmes écrits pour le HP-71.

Note : Même si nous n'avons pas encore discuté de programmation, nous avons vu deux façons de "programmer" le HP-71 pour faire des calculs répétitifs. La première méthode, en mode CALC, est d'utiliser la pile de commande. Les expressions utilisant des variables sont évaluées en mode CALC, puis les variables modifiées, l'expression retrouvée dans la pile de commande et ré-évaluée. La seconde méthode vient juste d'être discutée. Les expressions sont placées dans des chaînes, évaluées avec la fonction VAL, les variables changées puis les chaînes ré-évaluées avec la fonction VAL.

De ces deux méthodes, CALC est la plus simple pour une ou deux fonctions. Mais la pile de commande n'est pas assez haute si vous avez beaucoup de fonctions à évaluer. Dans ce cas, utilisez la méthode VAL/chaîne de caractères. Il n'y a presque pas de limite au nombre d'expressions chaîne que vous pouvez avoir en mémoire en même temps. Par exemple, vous pouvez stocker une expression dans A$, une autre dans B$, etc... Le truc est de se rappeler le nom de chacune ! vous pouvez toujours regarder A$, bien sûr ! tout ce que vous avez à faire est de taper A$ et de presser [ENDLINE].

4.3.11  POS, UPRC$ ET VER$

Il n'y a que trois autres fonctions chaînes, sans relation entre elles. La première est POS ("POSition"), et elle est utilisée pour trouver des sous-chaînes dans des chaînes plus longues.

Tapez A$="C'est le tamps qui faconne l'homme"

Remarquez l'orthographe : elle aurait dû être "temps" et non pas "tamps". Nous avons déjà vu comment changer le "a" en "e", avec les crochets, mais il faut savoir où est le "a" dans la chaîne. Le faire à la main est pénible. Laissons donc l'ordinateur le faire !

Tapez POS(A$,"a") et vous verrez 11. Ceci signifie que le "a" que nous voulons est le 11ème caractère de la chaîne A$. POS cherche dans la chaîne que vous spécifiez et vous dit où est la première apparition du caractère dans la chaîne. Heureusement, le "a" que nous voulons est le premier dans la chaîne ! pour le changer en "e", comme il doit être, tapez :

A$[RES,RES]="e" @ A$

J'utilise RES parce que la mémoire de RES est meilleure que la mienne ! Truc : habituez-vous à beaucoup utiliser RES. C'est une fonction commode. Juste comme les bons utilisateurs de HP-41 utilisent LASTx pour un oui ou pour un non. J'attends encore de voir un programme qui fasse un usage significatif de RES, mais cela va sûrement changer avec l'augmentation d'expérience des utilisateurs de HP-71.

Maintenant, que faire si vous voulez trouver non pas le premier "m" dans la chaîne, mais le second ? Il y a deux façons de le faire. Vous pouvez spécifier juste une partie de la chaîne dans la fonction POS en utilisant des crochets ; POS(A$[13],"m") cherche pour "m" du treizième au dernier caractère de la chaîne A$. L'autre moyen est de spécifier dans POS elle-même quelle portion de la chaîne explorer. POS(A$,"m",13) cherche "m" dans A$ à partir du 13ème caractère. Aussi, pour trouver le deuxième "m" dans A$, tapez POS(A$,"m",POS(A$,"m")+1), qui doit donner 32, parce que nous avons dit à l'ordinateur de trouver le premier "m", d'ajouter 1 puis de chercher à nouveau pour "m" à partir de cette nouvelle position.

N'oubliez jamais que les fonctions ne sont pas limitées à de timides nombres comme arguments, elles peuvent utiliser des expressions aussi formidables de complexité que vous pouvez les rêver ! A mesure de l'accroissement de votre expertise en BASIC, vous trouverez plus facile d'utiliser des arguments imbriqués comme ceux-ci, comme vous utilisez en français des formes grammaticales qui sont difficiles à comprendre pour les étudiants étrangers. Grâce à Dieu, le HP-71 parle BASIC mieux qu'aucun de nous le fera jamais.

Remarque mal intentionnée : La HP-41 a une capacité limitée de traitement des chaînes ASCII. Si vous créez un fichier ASCII (texte) en mémoire d'extension consistant en un seul enregistrement contenant 253 "A" suivis d'un seul "B", puis utilisez la fonction POSFL pour trouver une sous-chaîne formée de 23 "A" suivis d'un "B", la HP-41 met une minute et 7 secondes à la trouver. Le HP-71 mange des chaînes de caractères au petit déjeuner. Utiliser la fonction POS pour trouver 23 "A" suivis d'un "B" dans une chaîne de 253 "A" suivis par un "B" prend moins de trois dixièmes de seconde ! (le HP-75 met 0,53s) Si vous êtes un expert en HP-41, ne vous souciez pas du temps mis par le HP-71 pour exécuter les fonctions chaîne. Elle n'en mettent pas. Elle sont même plus rapides que les fonctions du BASIC Microsoft_H(R) trouvés sur la plupart des ordinateurs familiaux, du TRS-80 (R) à l'IBM (R) PC.

Une autre fonction chaîne commode est UPRC$ ("UPpeRCase", majuscule, prononcer "u pé ere cé dollar"). Si vous voulez voir en majuscules toutes les minuscules de A$, faites simplement UPRC$(A$). Notez bien : UPRC$ ne change pas son argument, elle renvoie simplement la version majuscule de celui-ci. Si vous voulez changer A$ elle même en majuscules, tapez A$=UPRC$(A$). Ceci est vrai de toutes les fonctions, elle ne changent pas leur argument mais simplement renvoient quelque chose basé sur l'argument. Supposons que vous voulez trouver le premier "e" d'une chaîne, qu'il soit en majuscule ou en minuscule. Voici comment faire:

POS(UPRC$(A$),"E")

qui balaye la version majuscule de A$ à la recherche de "E". Remarquez que A$ elle-même n'est pas changée en majuscules ! Cette méthode est souvent utilisée dans les programmes.

Une fonction chaîne de plus : VER$

("VERsion"). Tapez VER$ et voyez le résultat.

Si vous voyez seulement HP71:1BBBB, alors vous avez un HP-71 tout nu, original sans rien de branché dans les ports. Si vous voyez autre chose après la version du HP-71, cela indique que vous avez d'autres fichiers LEX branchés dans les ports ou flottant quelque part dans la mémoire vive et vous pouvez probablement estimer ce qu'ils sont en voyant ce qui est affiché par VER$. Les BBBB indiquent la version des quatre modules internes du HP-71. La première version commercialisée du HP-71 était la version BBBB (si vous avez une version AAAA, vous n'avez aucun besoin de lire ce livre). Un HP-71 acheté plus tard peut avoir des lettres plus hautes. Des modèles futurs du HP-71 (par exemple HP-71C) auront certainement des versions plus hautes.

Par exemple, la HP-41C a eu plusieurs versions, puis est venu un modèle avec davantage de mémoire vive incorporée, puis est sorti le modèle HP-41CX qui a plus de mémoire vive et de mémoire morte. Ma HP-41CX est la CX originale et les lettres de version de ses trois modules internes sont NFL ! Ainsi VER$ deviendra une fonction importante avec le temps. HP pourra mettre à jour vos modules internes pour la nouvelle version pour un prix nominal.

Comprenez-vous les fonctions chaîne ? Les programmes, les routines, les suggestions qui les utilisent toutes se trouvent après le chapitre sur le mode PROGRAMME BASIC.

4.3.12  LET

Pour l'instant, quand nous avons voulu assigner une valeur à une variable, nous avons simplement écrit l'égalité. Par exemple, pour rendre X égal à PI, nous avons simplement écrit X=PI. Il y a une autre façon d'écrire la même chose, que les débutants trouvent moins confuse :

LET X=PI (que X soit égal à PI)

La commande "LET" en BASIC signifie quelque chose comme "Que la fête commence" ou "Qu'ils mangent les gateaux". Personnellement, je pense qu'on aurait dû utiliser SET (mettre, au lieu de LET, laisser). Et il pleuvrait de la bière. Mais ce n'est pas le cas !

Comment ajouter 1 à X ? Bien sûr vous devez taper X=X+1. Ce genre d'instruction fiche la frousse aux mathématiciens. Comment au monde, X peut-il être égal à X+1 ! Si vous êtes un puriste, vous pouvez taper LET X=X+1 à la place, les deux commandes sont identiques.

La commande LET est toujours facultative.

4.3.13  FOR / NEXT

Supposons que vous ayez une commande à exécuter plusieurs fois. Vous avez deux possibilités. La solution évidente est d'aller de l'avant et de le faire vous même plusieurs fois. Par exemple, pour bipper dix fois, vous pouvez taper BEEP et presser [ENDLINE] dix fois. Évidemment vous pouvez utiliser la pile de commande pour simplifier votre travail.

Il y a une meilleure façon. Tout ce qu'il vous faut c'est un compteur qui compte de 1 à 10 et bippe pendant ce temps. Vous pouvez utiliser n'importe quelle variable comme compteur. Utilisons X, parce que c'est ma variable favorite. Voici le scénario. Je dis au 71 de bipper pour toutes les valeurs de X de 1 à 10. Le 71 met alors X à 1, bippe, passe à la valeur suivante de X (soit 2), bippe, passe à la valeur suivante de X (soit 3), bippe, etc... Jusqu'à ce qu'il bippe pour une valeur de X égale à 10 et stoppe. Essayez ceci :

FOR X=1 TO 10 @ BEEP @ NEXT X

(les espaces, ici, comme toujours, sont facultatifs). Rappelez-vous que le symbole @ est le "concaténateur de commandes" qui chaîne les commandes les unes à la suite des autres.

Nous avons ici trois commandes. FOR X=1 TO 10 signifie "utilisez X comme compteur de 1 à 10". En elle même cette instruction ne fait que mettre le compteur à 1. Mais si elle est suivie, sur la même ligne, par NEXT X, le X comptera de 1 à 10 et toutes les instructions chaînées entre le FOR et le NEXT seront exécutées pendant ce temps ! Essayez de changer 10 par un autre nombre (utilisez la pile de commande !). Essayez de changer BEEP par une autre commande (essayez X tout seul). Cette faculté de "boucler" à partir du clavier est très utile, spécialement quand vous utilisez la valeur du compteur lui-même.

Supposons que vous vouliez effacer une partie d'un tableau. Voyez-vous pourquoi :

FOR X=10 TO 20 @ M(X)=0 @ NEXT X

effacerait M(10), M(11), M(12),... ,M(20) en les mettant à 0 ?

En plus des points de départ et de fin du comptage, vous pouvez spécifier de combien il faut compter à la fois :

FOR X=200 TO 2000 STEP 100 @ BEEP X @ NEXT X

chante une bête chansonnette. Essayez-la et rendez votre chat fou. Ce qui arrive, évidemment, c'est que le HP-71 a bippé à une fréquence de 200 Hertz, puis 300 Hz, 400 Hz, etc... jusqu'à 2000 Hz. "STEP 100" signifie "ajoutez 100 au compteur chaque fois que vous calculez la valeur suivante". Si aucun STEP (pas) n'est spécifié, comme précédemment, une valeur par défaut de 1 est utilisée.

Parfois une boucle infinie est utile. Essayez ceci :

FOR X=1 TO INF @ TIME$ @ NEXT X

Comment cela ! Nous avons une montre digitale en état de marche et nous n'avons même pas écrit un programme ! Si l'affichage semble clignotant (quelques secondes restent trop longtemps, d'autres pas assez), tapez DELAY 0,0 ce qui ordonne au HP-71 de n'utiliser aucun délai entre l'affichage des différents éléments. Normalement il y a 1/2 seconde entre les affichages. Pour ramener l'affichage à son délai normal, tapez :

DELAY .5

La boucle FOR/NEXT est un des aspects les plus puissants du BASIC. Il n'y a pas de limites à son usage. Supposons que vous voulez additionner les nombres de 1 à 100, que vous avez oublié la formule, ne voulez pas la chercher ni vous ennuyer à faire l'addition vous-même. Essayez ceci :

T=0 @ FOR X=1 TO 100 @ T=T+X @ NEXT X @ T

Ceci signifie "Effacer le total courant, ajouter les nombres de 1 à 100 au total courant, puis afficher celui-ci". En moins de deux secondes, le total (5050) est affiché !

Vous pouvez aussi compter à l'envers dans une boucle ! Utilisez simplement un pas (STEP) négatif. Après avoir tapé DELAY 1, tapez ce qui suit sur une seule ligne puis pressez [ENDLINE] :

FOR X=10 TO 1 STEP -1 @ "T MOINS";X;"SECONDES"

@ NEXT X @ "Decollez !"

Le seul problème est "1 secondes", mais que voulez-vous ? Une bonne grammaire ou un bon temps ? Pouvez-vous trouver comment corriger pour qu'il dise "1 seconde" ? Une solution peu élégante est :

FOR X=10 TO 2 STEP -1 @ "T MOINS";X;"SECONDES" @

NEXT X @ "T MOINS 1 SECONDE" @ "Decollez !"

Essayez d'inventer des boucles FOR/NEXT folles et sauvages à votre guise. Presque tous les gros utilisateurs de variables sont inévitablement des gros utilisateurs de boucles FOR/NEXT. Non seulement elle font gagner du temps, mais elles sont amusantes !

Dans ce chapitre, nous avons vu comment utiliser des variables pour retenir des données, à partir du clavier. Dans le prochain chapitre nous allons voir d'autres façons plus permanentes de stocker des variables dans le HP-71.

5  LES FICHIERS DE DONN