Obligement - L'Amiga au maximum

Mardi 27 juin 2017 - 21:04  

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 - variables, opérateurs, entrées/sorties
(Article écrit par Xavier Leclercq et extrait d'Amiga News - septembre 1992)


Les commentaires

Un très bon point pour ARexx, c'est qu'il est obligatoire de placer un commentaire en début du listing source. Si vous ne placez pas de commentaires, l'exécution par RX affichera une erreur ! Évidemment, il est toujours payant de placer plus d'un commentaire.

Les variables

Les variables ne doivent pas être déclarées au début de chaque programme. Elles sont de deux types : numériques et alphanumériques. Elles peuvent être globales ou locales (comme en C par exemple). Ce concept ne doit pas vous faire peur et nous en reparlerons plus loin car il est lié aux fonctions.

ARexx
ARexx

On constate que "variable1" contiendra le contenu en majuscules de "Bonjour" ce qui signifie que l'ARexx n'est pas sensible aux minuscules (ARexx est dit "non sensible à la casse"). Une minuscule deviendra une majuscule par défaut. Pour imprimer des accents et des minuscules, il faut obligatoirement placer les variables entre "" ou ''.

La deuxième constatation est une faiblesse dans la rigueur de ce langage : une variable qui, au départ est déclarée numérique '1' va ensuite prendre comme valeur une suite de caractères alphanumériques ! Si le programmeur ne tente pas de résoudre ce problème en utilisant des noms de variables différents et explicites. La lisibilité du source en prendra un sacré coup !

Plus fort : '1' est au départ numérique puis devient alphanumérique car on lui rajoute le contenu "Amiga" et ceci d'une manière implicite car l'opération "+" est ici impossible. Pour réunir le contenu de deux chaînes sans tenir compte des espaces, il faut employer le signe de concaténation "||" :

ARexx

Pour une fois, il est dommage de ne pas obtenir "amiga-" en majuscules et donc pour y remédier, il suffit de taper :

ARexx

Ce qui affiche "AMIGA-NEWS" et non "amiga-NEWS". Nous utilisons pour cela une commande ARexx très puissante : PARSE.

PARSE VAR permet de décomposer une chaîne de caractères en une série de sous-chaînes dont les seuls séparateurs étaient les espaces.

ARexx

...affiche "AMIGA" et donc "variable1" est décomposée en "variable2" et "variable3" contenant respectivement "AMIGA" et "NEWS". Une variable peut contenir au plus 64 ko d'informations ! Si vous dépassez ce chiffre, il vous faudra la décomposer.

Les opérateurs

Nous avons déjà rencontré les signes cabalistiques "||" utilisés comme opérateur de concaténation. Il y a aussi les opérateurs classiques :
  • Addition : "+".
  • Soustraction : "-".
  • Multiplication : "*".
  • Division : "/".
  • Exposant : "**".
  • Affectation : "=".
  • Comparaisons : "==" pour l'égalité, "<", ">", "<=", ">=".
Bref, ceci reste très proche des opérateurs que l'on peut rencontrer en C. Moins évident, il existe les opérateurs suivants :
  • Négation "~" (négation d'un booléen qui prend les valeurs soit 0 soit 1). La négation "~" peut être utilisée lors d'une comparaison par exemple.
  • Le modulo qui est "//" (reste d'une division entière). Exemple : 100 / 8 = 12,5 et 12 * 8 = 96 reste 100 - 96 = 4. Le modulo 100 // 8 est 4.
  • Le résultat entier d'une division qui est "%" : 100 / 8 = 12,5 mais 100 % 8 donnera 12.
  • Les opérateurs logiques "AND", "&", "OR", "|" et "XOR".
ARexx
ARexx

Les entrées/sorties

Pour écrire quelque chose à l'écran, comme vous avez déjà pu le constater, il s'agit de la commande "SAY". Mais évidemment, pour ouvrir un écran personnel afin d'y inscrire quelque chose, manipulation qui peut très facilement être réalisée avec ARexx, on devra procéder autrement. Mais il nous faudra d'abord voir ensemble l'appel de fonctions spécialisées à l'aide d'une bibliothèque.

L'entrée au clavier se pratique soit à l'aide de l'instruction "PARSE PULL" soit à l'aide de l'instruction "PULL" mais qui aura la caractéristique de transformer l'entrée en majuscules.

La commande "SAY" affiche par défaut en majuscules. Pour obtenir les accentuations et la différence majuscules/minuscules, vous devez placer des "" ou des ''. Pour forcer l'entrée en majuscules, on peut rajouter le mot "UPPER" dont le mécanisme de fonctionnement est identique à "PARSE UPPER VAR". "PULL" et "PARSE UPPER PULL" ont donc un fonctionnement similaire.

ARexx

Comme commandes d'entrées/sorties se présentent aussi comme candidats la série des commandes qui permettent de contrôler un fichier :

1. OPEN (Nom_logique, Nom_physique, Attribut). L'ouverture du fichier "BIDON" en lecture se présentera de la manière suivante :

OPEN (Poignée_Fichier, "BIDON", "READ")

La variable qui porte le nom de "poignée_fichier" (handle_file) permet de créer un lien entre le fichier et une autre commande ARexx qui voudrait y accéder comme par exemple l'ordre "READLN". Notez que l'on peut raccourcir l'encodage de l'attribut en ne fournissant que la première lettre par exemple ("R" à la place de "READ") mais ceci rend moins lisible le source !

2. Variable = READLN (Nom_logique). Lecture d'une ligne complète de texte jusqu'à la rencontre d'un retour de chariot ; le nom_logique étant la "poignée_fichier".

3. long = WRITELN (Nom_logique, variable_A_Ecrire). Écrit le contenu de la variable dans le fichier. Dans "long", vous pouvez trouver le nombre de caractères qui ont été écrits. Si vous désirez écrire ou lire une longueur bien définie, il suffit d'utiliser des variantes de "READLN" et "WRITELN" qui sont :

long = WRITECH (Nom_logique, variable_A_Ecrire)

...mais la variable à écrire peut-être un seul caractère.

4. READCH (Nom_logique, nombre_de_caractères_à_lire). Si la fin de fichier est rencontrée, elle peut-être détectée par EOF(nom_logique) qui renvoie "TRUE" si la fin de fichier est détectée.

5. EXISTS("BIDON"). Si le fichier "BIDON" existe dans le répertoire courant alors "EXISTS" retournera la valeur booléenne "TRUE" (vrai).

6. CLOSE (Nom_Logique). Ferme le fichier.

Les alternatives

Prenons le schéma suivant :

ARexx

En ARexx cela donne :

ARexx

Dans le jargon informatique, on appelle le triplet IF/THEN/ELSE une alternative complète. L'obligation est qu'il faut pour chaque "ELSE" un "IF" qui lui corresponde. Vous allez me répliquer à la vitesse de l'éclair qu'il risque d'avoir un problème si on ne veut pas afficher que le "fichier3" n'existe pas ! Mais papa ARexx pense à tout et même à rien : "NOP". Cette commande (comme en assembleur) ne fait rien. Ce qui donne :

ARexx

Il existe au moins un autre moyen de faire parler ARexx et cet instrument de torture est le "SELECT" :

ARexx

Attention, si le premier "WHEN" est "VRAI" le deuxième n'est pas évalué ! "OTHERWHISE" signifie pour "tous les autres cas". Si "A" n'est pas inférieur ou supérieur à B, alors il ne lui reste plus que l'égalité à B !

Listing

Pour finir, je vais vous proposer un tout petit programme ARexx qui sert d'aide mémoire.

ARexx


[Retour en haut] / [Retour aux articles] [Article suivant]