Obligement - L'Amiga au maximum

Dimanche 23 septembre 2018 - 10:00  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : AmigaBasic - Les boucles et les sauts (2e partie)
(Article écrit par Michel Descoins et extrait d'Amiga News Tech - octobre 1989)


Où en étions-nous restés, le mois dernier ? Ah oui, ça me revient : aux boucles et aux sauts. Ça tombe bien, il y a encore quelques petites choses à approfondir de ce côté-là...

Rappel sur les labels

Avant de commencer, je voudrais savoir ceux qui, dans la salle, ont tout compris au petit programme du mois dernier ? M'enfin, il est pourtant très simple : nous avons défini ce que l'on appelle "un label", c'est-à-dire une marque dans notre programme, à laquelle nous pourrons nous référer plus tard, pour effectuer, justement, des sauts. Si j'osais une comparaison hardie, je dirais que le label est au programme ce que le code postal est à la lettre : il permet au préposé aux PTT de savoir à quelle agglomération la missive est destinée. Lorsqu'il rencontre par exemple 42160, le facteur sait qu'il doit déposer le courrier à Grézolles, dans la Loire (vous pouvez vérifier !). Dans un programme, c'est la même chose : lorsqu'il rencontre un "GOTO", l'interpréteur effectue un saut, le label étant la destination de ce saut.

Mais revenons à nous moutons. Notre label était ici dénommé "Menu". On reconnaît que c'est un label parce qu'il est suivi du double-point ":". Vient alors l'affichage des différentes options que notre menu propose, puis l'attente de la réponse de l'utilisateur. Bien que nous n'avons pas explicitement effectué un test de la validité de cette réponse, les lignes suivantes permettent de détecter une éventuelle erreur. Lesdites lignes sont donc destinés à tester le choix effectué, et à se brancher (sauter) à l'option correspondante. Les tests sont bien entendus réalisés par l'instruction "IF... THEN".

Si le nombre entré n'était ni 1, ni 2, ni 3, ni 4, ni 5, on retourne alors au menu. Le reste du programme, c'est-à-dire le corps des options lui-même, est laissé à votre discrétion.

Branchements multiples

Cette méthode est claire et nette ; mais imaginez qu'au lieu de cinq options, le programme en propose 20, voire 30 ou même 40... Cela représenterait un certain nombre de lignes de programme à écrire, toutes de la forme : IF x=y THEN GOTO Label. Il doit y avoir plus simple.

Le "plus simple" en question, c'est l'instruction "ON... GOTO". Elle permet de tester une valeur quelconque, soit explicite, soit implicite (c'est-à-dire calculée), et de se brancher, suivant le résultat de ce test, à l'un des labels dont elle est suivie. Reprenons le même exemple, pour plus de clarté :

Assembleur

Si vous comparez ce programme avec celui du mois dernier, vous ne trouverez que peu de différence... Pour être tout à fait objectif, elle ne tient qu'à une seule ligne, celle où figure l'instruction "ON... GOTO".

L'utilisation même de cette instruction renseigne plus avant sur son utilité et son emploi. Dans notre exemple, la valeur de la variable "Choix" est testée ; si cette valeur est égale à 1, on se branche au label "Option1", sinon, si elle est égale à 2, on se branche au label "Option2", sinon... Et ainsi de suite tant qu'il y a des labels spécifiés (et il peut y en avoir jusqu'à 255 !). Pratique, non ?

Avant de voir un type particulier de branchement, les sous-programmes pour ne pas les nommer, il me faut signaler, mais vous vous en étiez sans doute déjà aperçu, que GOTO peut servir à réaliser des boucles infinies. Le programme suivant - qui est totalement idiot, ne le tapez pas - en est l'illustration vivante (ou presque) :

BoucleInfinie
GOTO BoucleInfinie

Ridicule, non ?

Les sous-programmes

Qu'est-ce donc qu'un sous-programme ? Pour simplifier, il s'agit d'une portion du programme que l'on peut appeler à maintes reprises depuis divers endroits du programme, et qui possède la particularité de "retourner à l'envoyeur".

Assembleur

Si vous exécutez ce programme, vous verrez s'afficher à l'écran les nombres 2, 4, 16 et 256. Le sous-programme "Carre" est appelé par l'instruction "GOSUB Carre" : il calcule le carré du nombre x, avant de retourner continuer l'exécution du programme juste après l'instruction GOSUB qui l'a appelé.

Vous vous en doutez certainement, les sous-programmes simplifient énormément la programmation. Ils permettent de rendre un programme structuré, c'est-à-dire composé de modules pour ainsi dire indépendants, avant chacun une tâche particulière à accomplir (calcul, attente d'une entrée au clavier, graphisme, musique, etc.).

D'ailleurs, l'usage veut que l'on proscrive tant que possible l'instruction GOTO, considérée, à juste titre à mon avis, comme le symbole de la programmation "spaghetti" (comme les westerns du même nom). Cela n'a bien sûr rien d'obligatoire, mais c'est un bon exercice que de l'éviter chaque fois que vous le pouvez. On s'en sort toujours par un WHILE ou un GOSUB.

Les sous-branchements multiples

Hé oui, il fallait s'en douter ; de même que GOTO, GOSUB permet la programmation de branchements multiples, grâce à l'instruction "ON... GOSUB". Reprenons une fois de plus notre menu :

Assembleur

Le résultat est le même, mais la programmation est "plus propre". De plus, il sera toujours plus facile d'apporter d'éventuelles modifications au programme par la suite (ajout ou retrait d'option(s).

A bientôt

Cela suffit pour aujourd'hui. Nous aborderons dès le mois prochain le délicat problème des paramètres (transmission, variables locales et globales, etc.). Un sujet conséquent mais ô combien passionnant.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]