Obligement - L'Amiga au maximum

Mardi 30 mai 2017 - 03:29  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · 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 in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : ARexx - itératives, tableaux, chaînes
(Article écrit par Xavier Leclercq et extrait d'Amiga News - novembre 1992)


Dans la première partie nous avons parlé du lancement d'ARexx, des commentaires, des variables, des opérateurs, des verbes d'entrées/sorties et des alternatives.

Entrons dès lors dans le vif du sujet sans préambule pour aborder le point suivant.

Les itératives

Mais d'abord, que signifie le mot "itérative" ? Strictement parlant, il s'agit d'une alternative masquée...

ARexx

Un langage de programmation à la base n'a donc pas besoin d'itératives. L'important est de posséder une structure alternative et un moyen de branchement seulement. Algorithmiquement parlant, une manière correcte de représenter l'itérative est :

ARexx

Ce qui signifie que la partie algorithmique comprise entre les mots "répéter" et "jusqu'à ce que" doit être répétée tant que la condition spécifiée après le "jusqu'à ce que" ne soit pas vraie.

ARexx reconnaît une série de commandes pour piloter ses itératives. La règle générale est que toute itérative est incluse entre les mots DO ... END.

ARexx

Le "DO FOR x" est efficace à condition de connaître à l'avance le nombre d'itérations qu'il faudra effectuer.

ARexx

Le "DO FOREVER" boucle indéfiniment. Pour interrompre ce cycle infernal nous devrons utiliser "BREAK".

ARexx

Le verbe ARexx "BREAK" permet d'introduire ce que l'on nomme la rupture de séquence et permet de quitter la boucle pour continuer à la première ligne qui suit le "END" de la boucle (on peut utiliser également l'instruction "LEAVE" à cet usage).

Pour éviter l'initialisation de départ "I = 1" on peut employer la structure itérative suivante :

ARexx

L'incrémentation de "I" est de plus automatique. Plus besoin de la séquence "I = I + 1".

ARexx

Cette forme "DO UNTIL condition" est assez proche de la forme algorithmique classique vue plus haut :

ARexx

Cette forme est un peu le contraire de la précédente : "faire tant que la condition se réalise".

ARexx

"ITERATE" a pour fonction de passer directement à l'itération suivante. Dans ce cas très spécial SAY "On m'oublie" ne connaîtra jamais la joie de s'afficher à l'écran.

Les tableaux

ARexx ne gère pas les tableaux comme la plupart des langages. Un tableau est déclaré comme suit :

ARexx

Nom du tableau + un point + ordre dans le tableau permet l'accès à un élément. Les tableaux peuvent être à plusieurs dimensions :

ARexx
ARexx

Les fonctions de conversion

Elles sont au nombre de six et permettent une conversion :
  • D'une base binaire vers un caractère : B2C.
  • D'un caractère vers une base binaire : C2B.
  • D'un caractère vers une base décimale : C2D.
  • D'une base décimale vers un caractère : D2C.
  • D'un caractère vers une base hexadécimale : C2X.
  • D'une base hexadécimale vers un caractère : X2C.
ARexx

Manipulations de chaînes

Voici les fonctions qui manipulent des chaînes et des mots :
  • REVERSE(CHAINE) : inverse l'ordre des lettres dans la phrase.
  • RIGHT(CHAINE,LONGUEUR) : extraire une portion à droite de la chaîne.
  • LEFT(CHAINE,LONGUEUR) : extraire une portion à gauche de la chaîne.
  • LASTPOS(SOUS-CHAINE,CHAINE) : recherche la dernière position de la sous-chaîne enfermée dans la chaîne.
  • INDEX(CHAINE,SOUS_CHAINE) : recherche la première position de la sous-chaîne enfermée dans la chaîne.
  • COMPARE(CHAINE1,CHAINE2) : retournera une valeur qui correspond à la position du premier caractère qui diffère.
  • WORD(CHAINE,N) : extraire le énième mot de la chaîne.
  • WORDINDEX(CHAINE,N) : informe de la position du énième mot de la chaîne.
  • WORDLENGTH(CHAINE,N) : retourne la longueur du énième mot de la chaîne.
  • WORDS(CHAINE) : compte le nombre de mots de la chaîne.
ARexx
ARexx

Fonctions numériques

Peu nombreuses, mais encore assez courante dans d'autres langages, donc indispensables :
  • ABS(NBRE) : retourne la valeur absolue du nombre.
  • MAX(N1,N2,N3,...) : renseigne sur le plus grand des nombres.
  • MIN(N1,N2,N3,...) : renseigne sur le plus petit des nombres.
  • SIGN(NBRE) : retourne "1" si le nombre est positif, et "-1" si le nombre est négatif.
ARexx

L'instruction "SIGNAL"

Elle permet un branchement automatique à un label spécifié dès qu'un événement spécial se produit.
  • SIGNAL ON BREAK_X : X représente une des quatre touches de "Ctrl" qui sont maîtrisables via ARexx : Ctrl-C, Ctrl-D, Ctrl-E, Ctrl-F (X = C OU D OU E OU F).
Il s'agit d'une redirection du compteur de programme. Si en cours d'exécution vous appuyez sur "Ctrl_C" et que "SIGNAL ON BREAK_C" existe, le programme se branchera automatiquement au label "BREAK_C".

ARexx

Certains langages (BASIC) possèdent l'instruction "ON ERROR GOTO", ARexx a dans son bagage quelque chose de similaire : "SIGNAL ON SYNTAX".

ARexx

Si maintenant vous vient à la tête de manipuler une variable non encore définie, ARexx vous préviendra :

ARexx
ARexx

Instructions diverses
  • EXIT n : sort du programme en transmettant au CLI/Shell la valeur "n" (Si N = 0 pas d'erreur).
  • INTERPRET(X) : commande très puissante puisqu'elle permet d'interpréter une variable ! Vous pouvez ainsi paramétrer un fichier qui une fois lu pourra être "traduit" en ARexx par "INTERPRET".
ARexx
  • TIME() : affiche l'heure courante.
  • SETCLIP(CLIP,VALEURS) : si vous avez connu l'époque du Commodore 128 vous allez comprendre sans difficulté cette notion. Il s'agit de banques de données qui sont visibles par tous les programmes ARexx. "CLIP" est un nom, "VALEUR" est une suite de données.
  • GETCLIP(CLIP) : recherche les données stockées.
  • PRAGMA('DIRECTORY ') : retourne le répertoire courant.
ARexx

Exemple récapitulatif

Il existe encore quelques instructions que nous étudierons plus tard, mais en gros vous connaissez déjà l'ABC du langage. Si vous prenez un listing source publié dans cet article, vous allez donc vous étonner de ne pas tout comprendre. Ceci est tout à fait normal. En effet, Cédric Beust ouvrait dès le départ une bibliothèque spéciale qui elle-même contient des fonctions spécifiques qui ne sont pas des instructions ARexx... Nous étudierons cela ensemble la prochaine fois.

Exemple : gérez vos disquettes Fish

Le programme suivant crée le catalogue de vos AmigaLibDisks. Vous introduisez vos Fred Fishs une à une dans n'importe quel ordre. Le programme ARexx se chargera de les trier et de créer un catalogue commun (par ordre croissant). Vous devrez spécifier le chemin + nom_du_fichier_catalogue à la fin de l'introduction de vos FF. Bon coding !

Notes :
  • D2C(10) -> produit un retour de chariot.
  • D2C(9) -> une tabulation.
  • D2C(12) -> un "Form Feed" qui efface l'écran.
ARexx


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