Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : GFA Basic - les boucles
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - juillet 1991)
|
|
Aujourd'hui, ça déménage, même si le code n'est ici pas compilé. La compilation permettrait de traduire le code en
langage machine et donc de l'accélérer encore. Celle-ci n'est pas toujours nécessaire. J'ai même dû ici temporiser
les routines pour les rendre visibles en GFA avant compilation. En effet, à la différence du C, tout le GFA a été
écrit en assembleur et est donc particulièrement rapide.
Résumé des épisodes précédents : Frédéric Autechaud est parti en reportage dans son Tibet natal. Avant son départ, il a
transmis à Super OctetoPhage une faible partie de son immense savoir. Celui-ci sait donc qu'il faut écrire en
français, mettre un maximum de commentaires synthétiques, éviter toutes les abréviations et faire des copies
très régulières de notre travail sur plusieurs disquettes. Il commence aussi à comprendre l'intérêt de la
programmation modulaire. Elle lui permet d'avoir une vision plus structurée du programme.
La programmation modulaire avait fait le succès du C. Son mode de raisonnement rejoint la logique humaine :
elle tend à tout résumer. Ainsi, on dira "je vais boire un café" sans nous encombrer de décrire toutes les
innombrables actions que cela nécessite depuis la mise en route de la cafetière jusqu'au maniement de la
cuillère dans la tasse. En globalisant, on s'aperçoit qu'il est souvent plus judicieux de ne réaliser qu'un seul
type d'action en même temps. A l'inverse, on arrive vite à la confusion puis au drame quand on a renversé le café
sur la lettre qu'on écrivait. GFA préfère donc la programmation procéduriale. Nous créons nous-mêmes les routines
générales et un bon programme GFA ne comporte qu'une seule instruction :
programme! Les actions demandées
|
Il y a ensuite une procédure programme, elle-même divisée en plusieurs instructions :
Dans la partie codage suivant ce cahier des charges, il y a encore et toujours trois erreurs. La première n'est qu'une
simple faute de syntaxe que nous signalera aussitôt GFA. La deuxième est réalisée par un type d'esprit torturé
au point de mélanger gras et italique. Cela ne plante pas le programme. Le programmeur qui reprendra quelques
semaines plus tard la liste des instructions risque cependant de ne plus bien comprendre à la logique du code.
Oui ! Elle est signalée dans les remarques.
Nous avons beaucoup de chance avec la troisième, car elle devrait planter le système sans la mansuétude de Franck. Pour
cette histoire, On s'est rappelé que tout le monde ne connaissait pas les limitations physiques de l'écran. Il sait que
le plaisir du codage commence parfois avec un bandeau sur les yeux.
L'avez-vous trouvé ? Oui ! C'est dans le bloc de lecture lettre par lettre. Le résultat sur écran n'est pas tout
à fait ce qui est écrit dans les remarques. La programmation structurée par module vous permet de cibler rapidement
ce que je viens de dire.
Un intérêt supplémentaire de la structuration est de se constituer en ASCII une bibliothèque de routines dont
on est particulièrement sûr pour les réutiliser sans devoir les recoder. Cela autorise aussi des temps d'écriture
très rapide lors de la traduction en assembleur Devpac comme le montre Annabella I dans l'exercice1_1.
J'y mets en évidence les différents types de boucles "DO LOOP". "REPEAT UNTIL" et "FOR NEXT" grâce à une explication
utilisant l'assembleur à l'usage des futurs pro. Annabella 4 va encore plus loin avec une disquette entière sur
tous les genres de blocs conditionnels.
La partie suivante montre le passage de GFA à Devpac. Elle est particulièrement rapide à écrire grâce au respect
de cette structuration. Attention, l'assembleur est moins lisible et plus complexe. Voici la fonction "TEXT"
qui suppose une fenêtre déjà ouverte. En macro, mettez donc le listing assembleur suivant.
|