Obligement - L'Amiga au maximum

Mercredi 24 avril 2024 - 15:02  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : AmigaBasic - Procédures et paramètres
(Article écrit par un auteur inconnu et extrait d'Amiga News Tech - mars 1990)


Oui, je sais : ce n'est pas la peine de crier comme ça ! Je sais que cela fait déjà quatre mois que vous avez été privés de la partie préférée de votre mensuel favori, j'ai nommé bien sûr l'initiation à l'AmigaBasic. Qu'est-ce qu'on y peut ? Michel Descoins est parti on ne sait où, à la recherche de l'Amiga idéal (non, là je plaisante, car il est sous mes doigts cet amiga-là !).

Trêve de plaisanterie. Le dernier article paru vous promettait de travailler avec les paramètres. Cela va être fait mais avant de parler paramètres, il faut causer procédure. Alors, qu'est-ce qu'une procédure ? Eh bien, c'est tout simplement un programme tout à fait indépendant du programme principal et qui peut être appelé par son nom. Mais non, ne jetez pas votre revue, voici un exemple : imaginons une procédure qui remplisse l'écran de petites étoiles :

SUB   RemplirEcran STATIC
      WIDTH 80
      FOR I=1 to 2000
         PRINT "*";
      NEXT I
      PRINT
END   SUB

Si cette procédure est présente dans le programme, il vous suffit de taper "remplir écran" pour que l'écran se remplisse d'étoiles. Vous pouvez même directement le taper dans la fenêtre de commande : le BASIC considérera votre procédure comme une de ses instructions.

Psst, ah oui ! l'instruction WIDTH : c'est une instruction d'intérêt secondaire, qui dit à l'ordinateur combien il peut afficher de caractères sur une ligne.

Et les paramètres là-dedans ?

Vous en connaissez beaucoup, vous, des commandes BASIC qui ne demandent aucun paramètre ?
  • Print "bonjour", il y a un paramètre, c'est "bonjour".
  • CLS (nettoyer l'écran) : ici, il n'y a pas de paramètre.
  • IMPUT a,b$,c,d% : je compense, ici, il y a quatre paramètres !
Bon, alors, hein ! Qu'est-ce que je vous disais ? Il y a seulement une différence de taille entre les paramètres des instructions BASIC et ceux de vos futures procédures (car si vous êtes déjà capables d'en faire, je ne vois pas l'intérêt que vous avez à lire ces lignes), cette différence, c'est la souplesse des instructions BASIC. Tiens, l'instruction PRINT par exemple, on peut lui coller autant de paramètres que l'on désire et, de plus, n'importe quel type ! C'est-y pas merveilleux, ça ? Nos pauvres procédures, c'est tout le contraire : pour elles, la rigueur est de rigueur. Non seulement on devra les appeler (on dit bien : "appeler une procédure") avec le nombre voulu de paramètres, ni plus, ni moins et en outre, ces paramètres devront être du même type dans la déclaration de la procédure que dans son appel.

Mais non, ce n'est pas très difficile, tout ça ! Et d'ailleurs voici un exemple. Reprenons notre procédure de remplissage d'écran, mais cette fois-ci, en transmettant comme paramètre le nombre de caractères à placer et le caractère qui servira pour le remplissage, la déclaration de la procédure sera la suivante :

SUB RemplirEcran(Ncar%,Caractèr$) STATIC

Mais il n'y aura pas trente-six manières de l'appeler. Surtout, n'essayez pas (ou bien si, essayez, ce n'est pas ça qui va griller les puces de votre machine favorite) :

RemplirEcran "*",2000
RemplirEcran 2000,"*",&
RemplirEcran 2000,0,"*"
RemplirEcran 2000,0

Dans le premier cas, vous inversez les paramètres. Dans le deuxième, vous en mettez un de plus (et donc un de trop). Dans le troisième, 2000 est un réel et non un entier court comme il aurait fallu et dans le dernier cas, le "0" n'est pas le caractère "0" (souvenez-vous de ce qui a été dit dans l'article de juillet 1989). L'appel de procédure correct est : RemplirEcran 2000"*".

Statique ou dynamique ? Non, statique obligatoirement (il n'existe pas en BASIC de procédures dynamiques comme en PASCAL). D'ailleurs, les plus malins d'entre vous auront déjà essayé de supprimer le STATIC à la fin des déclarations de procédure et ils se seront plantés. Quoi qu'il en soit, la syntaxe correcte pour un appel de procédure est la suivante :

SUB Nom de procédure (Paramètres séparés par des virgules)
  STATIC
SHARED Noms de variables séparés par des virgules
  Développement de la procédure
END SUB

Aïe, aïe, aïe, encore une instruction de plus ! Que vient faire ce "SHARED" dans ma belle procédure ? C'est une très bonne question et je me remercie de me l'être posée, mais à part ça, la réponse euh... Alors accrochez-vous !

AmigaBasic
AmigaBasic

Paramètres formels, actuels et tutti quanti

Regardez un peu plus haut notre procédure "RemplirEcran" : les paramètres qui y sont déclarés sont des paramètres formels, c'est-à-dire que leur nom est purement formel car il n'est utilisé qu'à l'intérieur de la procédure. Lors de l'appel de la procédure, les paramètres cités sont dits actuels (parce qu'en anglais, "actual" veut dire réel) et ce sont leurs valeurs qui seront réellement utilisées dans la procédure.

Exemple :

Vous appelez la procédure de cette manière : RemplirEcran i%,a$. Les paramètres "i%" et "a$" seront ceux qui seront utilisés dans la procédure, même si lorsqu'on a écrit celle-ci, on a utilisé les variables "Ncar%" et "caractères". Autrement dit, si avant d'appeler ma procédure, je déclare "Ncar%" comme étant égal à 100 mais que je déclare "i%" à 2000, dans la procédure, "Ncar%" sera égal à 2000. Essayez, vous verrez bien. Le problème, c'est que quelquefois (et même très souvent), il y a des paramètres qui doivent revenir de la procédure au programme. Ce sont alors des paramètres partagés (shared), dont le nom est identique dans le programme principal et dans la procédure.

Bon, maintenant, comme un petit dessin vaut mieux qu'un grand discours, voici un petit programme qui vous aidera à remettre vos idées en place.

Le mois prochain, il y aura encore quelques points à éclaircir sur le BASIC en général, mais dans deux mois, nous pourrons passer aux commandes qui manipulent toutes les capacités de l'Amiga.


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