­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ PROGRAMMATION AMOS : Les structures de programmation ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Bon gré, mal gré, nous avançons petit à petit au travers des méandres de la programmation sous AMOS. Nous avons déjà vu (si vous avez suivi les articles précédents) les bases, quelques "trucs" graphiques ainsi que le moyen de réaliser des effets intéressants à peu de frais. Ce mois-ci, stop ! Nous changeons radicalement de direction. Nous allons (temporairement) abandonner la partie "visible" du langage pour nous pencher sur le ba-b.a. de toute programmation : les terribles et tant redoutées structures de programmation. Bien... Papier, crayons, notez ! Que sont les structures ? En gros, c'est un ensemble de procédés visant à ordonner les différentes parties d'un programme informatique avec de le rendre le plus efficace possible. Il y a toujours moyen, bien sûr, de procéder à une programmation "sauvage" du meilleur style. Ne rougissez pas derrière votre écran, vous ! Nous avons tous, un jour ou l'autre, goûté à ce type de programmation. Elle peut être utile quand on a besoin d'une routine quelconque ou d'un programme vite fait, bien fait. Mais elle ne peut en aucun cas satisfaire à la réalisation d'une application plus sérieuses On arrive dans ce cas à une programmation de type "spaghetti". Le maître mot de la programmation structurée est ... ben si, structurer les programme sources. Comment ? Simplement en appliquant les règles suivantes : - Utiliser des noms de variables clairs et décrivant clairement leur contenu (NOM_PERSONNE$, DATE_RAPPORT$, etc...) - Faire un usage abondant des commentaires. N'oubliez pas qu'un programme doit pouvoir être lu par une autre personne que vous. - Disposer les différentes parties d'un source afin que l'allure générale de votre programme soit clairement discernable. Comme vous le voyez, la simple conformation aux règles énonçées ci-dessus suffit, dans la majeure partie des cas, à faciliter la maintenance d'un programme. Car c'est avant tout ce but que nous visons. Supposons que vous ayez écrit un logiciel. Plusieurs mois après, vous éprouvez soudain un besoin irrépressible modifier ce programme. Si vous avez opté pour une programmation "chaotique", vous aurez toutes les peines du monde à vous retrouver parmi vos propres routines. Par contre, un source "propre" ne vous posera aucune difficulté. LA STRUCTURE SEQUENTIELLE. ­­­­­­­­­­­­­­­­­­­­­­­­­­ Comme son nom l'indique, ce type de structure fait appel à une éxécution séquentielle des instructions, c'est à dire qu'elles sont simplement éxécutées l'une après l'autre. c'est le type le plus souvent rencontré. Ex : ' Programme séquentiel ' -------------------- ' © 1992 P.A.I. ' -------------------- A=12 B=14 C=A+B D=A-B PRINT "A = ";A PRINT "B = ";B PRINT "C = ";C PRINT "D = ";D END Voilà ! Bête comme tout. LA STRUCTURE ALTERNATIVE. ­­­­­­­­­­­­­­­­­­­­­­­­­ Ce type-ci vous permet de réaliser des actions en vous basant sur la réalisation ou la non-réalisation de certaines conditions. La structure alternative utilise principalement et exclusivement le bloc d'instruction IF...THEN...ELSE...ENDIF (en français SI...ALORS...SINON...FIN SI). Ex : ' Programme de test ' structure alternative '---------------------- ' © 1992 P.A.I. INPUT "DONNEZ UN NOMBRE ENTIER : ",A IF A > 0 THEN PRINT "LE NOMBRE EST POSITIF" ELSE IF A < 0 THEN PRINT "LE NOMBRE EST NEGATIF" ELSE PRINT "LE NOMBRE EST NUL" ENDIF ENDIF END Pour plus de facilité, nous allons traduire ce programme en français correct. LIRE la variable A SI A est plus grand que 0 ALORS ECRIRE "Le nombre est positif" SINON SI A est plus petit que 0 ALORS ECRIRE "Le nombre est négatif" FIN SI FIN SI FIN Première remarque : Vous constatez que plusieurs blocs IF-THEN-ELSE-ENDIF -------------------- peuvent être imbriqués les uns dans les autres. Le nombre d'imbrications possibles varie selon le langage. Sur AMOS, la limite est de 30 imbrications. Seconde remarque : La clause "ELSE" est facultative. Vous pourriez très -------------------- bien avoir un programme du genre : A=A+1 IF A=6 THEN PRINT "NOUS EN SOMMES A 6" ENDIF LA STRUCTURE REPETITIVE. ­­­­­­­­­­­­­­­­­­­­­­­­ Un peu plus compliqué. On introduit ici la notion de boucle. Une boucle est définie principalement par : - Une marque de début - Une marque de fin (ou une condition de fin) - Une pas (intervalle) - facultatif. Mettre en oeuvre ce type de structure est plus délicat, car il existe un grand nombre de moyens d'y parvenir. Comme toujours, des exemples vous aideront à mieux le comprendre. Type 1 : POUR = A AVEC UN PAS DE -------- Ex : FOR I = 0 TO 10 STEP 2 PRINT "I = ";I NEXT I => : I = 0 I = 2 I = 4 I = 6 I = 8 I = 10 Ce type de boucle (FOR...TO...STEP...NEXT) fait simplement varier le contenu de la variable "index" de 0 à 10 par pas de 2. Type 2 : TANT QUE FIN TANT QUE -------- Ex : A=0 WHILE A < 5 A=A+1 PRINT A WEND PRINT "FINI." => : 1 2 3 4 5 FINI. L'expression "A<5" représente la condition. Ce bloc va s'éxécuter tant que la variable A est inférieure à 5. Type 3 : REPETER JUSQU'A CE QUE -------- Ex : A=0 REPEAT A=A+1 PRINT A UNTIL A=5 PRINT "FINI". => : 1 2 3 4 5 FINI. Ce bloc va s'éxécuter jusqu'à ce que la variable A soit égale à 5. Type 4 : FAIRE SORTIR SI BOUCLE -------- Ex : A=0 DO A=A+1 PRINT A EXIT IF A=5 LOOP PRINT "FINI." => : 1 2 3 4 5 FINI. La boucle de type "DO...LOOP" est ce que l'on apelle une boucle "infinie". C'est à dire qu'elle s'éxécute sans fin. Il est dès lors nécéssaire de définir une condition de fin de boucle en incluant dans le corps de la boucle une clause "EXIT IF ". A chaque passage par cette clause, l'expression qui constitue la condition sera évaluée et le bloc réagira en conséquence. Dès que la condition est vérifiée, le programme passe directement à l'instruction qui suit immédiatement l'instruction "LOOP". Vous avez sûrement remarqué que, dans tous les exemples fournis, les instructions contenues entre les délimiteurs de structures sont écrites en retrait. Cela n'est absolument pas nécéssaire, et n'a aucun effet sur l'éxécution de la structure. Cette façon de faire est appellée "IDENTATION" (en anglais : INDENT). Cette fonction est utilisée pour rendre les blocs de structure plus lisibles. Notez qu'avec l'interpréteur AMOS, vous pouvez parfaitement taper votre source sans vous préoccuper le moins du monde de l'indentation. Une fois le programme terminé, appuyez simplement dur la touche "F3" (ou sélectionnez "IDENT" dans le menu) et AMOS se charge d'ordonner vos lignes. En même temps, il effectue un contrôle de cohérence syntaxique. Voilà. C'est tout pour cette fois. Le mois prochain, nous nous consacrerons aux sous-routines proprement dites, ainsi qu'aux procédures. D'ici là, nous vous encourageons tester tous les petits sources qui sont dans cet article. On comprend toujours mieux les choses quand on les fait soi-même. Bonne programmation ! Marc.