Leçon n°2:La structure d'un programme

1.Généralités:
Un programme effectue une suite d'opérations préalablement apprises à la HP.Cette suite d'opérations doit évidemment suivre une syntaxe donnée, sans faute, sans quoi une erreur de compilation ou d'exécution apparaît.Je pense qu'il est judicieux de donner la différence entre ces 2 types d'erreurs.

2.Structure de base:
Un programme exécute des instructions dans un ordre donné par lui. D'une manière générale, ces opérations s'effectuent de manière transparente pour l'utilisateur, c'est à dire que l'utilisateur ne les voit pas s'effectuer. Mais pour qu'un programme serve à quelque chose, il faut qu'un résultat soit communiqué à l'utilisateur. Ceci ne se fait pas automatiquement, il faut l'indiquer au  programme. De même certains programmes ne demandent rien à l'utilisateur, mais du coup ils ne servent pas à grand chose. On doit donc pouvoir entrer des données dans le programme. Cette fiche va donc parler de la saisie de données dans les programmes.

3.La saisie la plus simple :
Le type de saisie le plus simple, ne demandant aucune instruction, est la pile opérationnelle. En effet si l'on veut un programme qui fasse l'opération suivante : (a+b)*c, on peut faire un programme allant chercher les arguments dans la pile. On peut mettre c au niveau 3, b au niveau 2 et a au niveau 1. Il suffit ensuite de faire un programme de la sorte :

<< + * >>, puis de l'exécuter. Il ne fera qu'exécuter l'addition et la
multiplication, car les arguments sont tous présents
et dans le bon ordre. Il suffit d'entrer le programme
se trouvant au niveau 1, ou de l'exécuter directement.

Or l'inconvénient de ce type de programmes, est que l'on ne peut entrer des valeurs qu'avant de la lancer, de plus ce n'est pas très facile de savoir ce que réclame le programme. C'est pour palier à cela que l'on utilise les fonctions d'entrées de données.

4.la fonction INPUT :
C'est la fonction de base la plus utilisée pour saisir quelque chose dans un programme. Elle permet d'arrêter le programme et demande à l'utilisateur de saisir quelque chose. Sa syntaxe nécessite 2 arguments :

Attention la fonction INPUT renvoie toujours une chaîne de caractères. Donc si on veut un nombre, il faudra faire un OBJ-> pour transformer cette chaîne en nombre ! Si on veut que la HP demande de saisir a, on peut faire : <<  "Entrer a''  '' ''  INPUT OBJ-> >> Avec cela,en saisissant un nombre dans la ligne d'invite, on obtient ce nombre sur le niveau 1 de la pile:



Fonction INPUT:Illustration

Cependant,cette fonction permet de faire beaucoup plus de choses que notre simple exemple. La ligne d'invite peut être beaucoup plus conviviale. Nous allons donc voir cela en détail :

Elle consiste à mettre le texte sous forme de chaîne et de mettre une chaîne vide après. Le résultat de la saisie est stocké dans la chaîne vide. Exemple : '' ENTRER  A''  '' ''  INPUT  nous donne : ''[ce que l'on a entré]''

Lorsque l'on a besoin de rentrer du texte il est pratique de bloquer le clavier en mode alpha. La fonction INPUT nous permet de le faire. Mais attention on utilise toujours une chaîne pour le texte à afficher, mais on se sert d'une liste pour second argument. Cette liste doit contenir : En premier le caractère alpha qui sera noté ici: "a" .En second toujours une chaîne vide.

Syntaxe :  '' (texte à afficher) ''  {  a  '' ''  }  INPUT Exemple :  '' ENTRER A ''          {  a  '' ''  }  INPUT Si on entre 1 le résultat sera : ''1'' La sortie de la fonction sera toujours une chaîne de caractères.

Attention la saisie multiple ne fonctionne que si l'on a besoin de saisir des réels. Elle ne fonctionne pas avec d'autres types d'objets.Si on a besoin d'entrer 3 valeurs, par exemple A, B et C, on peut faire 3 INPUT 's consécutifs. Mais ce n'est pas très économique en place mémoire. Ce n'est pas la fonction qui permet de faire cela en une fois, mais plutôt une astuce de programmation. En effet on sait que si l'on saisi nos 3 nombres avec un espace entre chacun, la fonction va renvoyer une chaîne contenant ces 3 nombres chacun d'eux étant séparés par un espace. Or pour transformer une chaîne contenant des nombres,en réels on utilise la fonction OBJ->. De plus si notre chaîne contient plus de 1 élément, OBJ->  va découper la chaîne au niveau des espaces. L'ordre dans lequel se retrouvent les éléments est : le dernier élément de la chaîne se retrouve au niveau 1, et le premier se retrouve au dernier niveau.  Exemple : '' 1 2 3 '' en éclatant ceci on obtient au niveau 1 le 3, au niveau 2 le 2, au niveau 3 le 1. La syntaxe est donc la même que pour la fonction de base. Exemple de résultat : <<  '' ENTRER A,B,C ''  '' ''  INPUT  OBJ®  >> si on entre pour A :120, pour B :250, pour C :10 (avec un espace entre chacun). Le résultat est: au niveau 3 :120   au niveau 2 :250


La saisie multiple

Si en plus du texte afficher vous voulez que dans la ligne de saisie, habituellement vide, il y ait un texte affiché et que le curseur de saisie se trouve à la fin de ce texte, c'est possible. Pour cela la seconde chaîne vide est remplacée par une liste contenant 2 éléments : Le premier est une chaîne contenant le texte à afficher dans la ligne de saisie. Le second est la position du curseur. Si le texte fait 5 caractères, pour que le curseur vienne se positionner à la fin du texte il faudra mettre 6.

Sa syntaxe est : '' (texte à afficher) ''  {  ''(texte à mettre dans la ligne de saisie)''  (position du curseur)  } INPUT Exemple : <<  '' ENTRER  A''  { ''A:''  3 }  INPUT  >>  si on saisie 12 va nous donner : ''A:12''.


Texte dans la ligne de saisie

Nous savons donc maintenant demander à l'utilisateur de rentrer une ou plusieurs donnée(s) dans la HP.Dans le prochain numéro, nous verrons comment faire afficher quelque chose à la machine.