Section courante

A propos

Section administrative du site

Procédures et fonctions intégrés

Les procédures et fonctions intégrées d'Apple Pascal sont énormément différent du Pascal Standard. Il n'inclut pas les procédures et fonctions fournies en tant que bibliothèque UNIT, comme par exemples les procédures et les fonctions de graphiques. Les fonctions transcententales (par exemple les fonctions trigonométriques SIN, COS,...) sont un cas particulier. Dans le Pascal Standard, ce sont des fonctions intégrées, mais dans Apple Pascal, elles sont dans une bibliothèque UNIT. Les fonctions ATAN et LOG diffèrent légèrement de Pascal Standard. Les autres transcendantaux ne diffèrent que par le fait que pour les utiliser, votre programme doit inclure une instruction «USES TRANSCEND». Aussi, l'ordre des paramètres de la procédures INSERT sont différents du Turbo Pascal.

Étant donné que certaines de ces procédures et fonctions intégrées ne vérifient pas la validité de l'intervalle des paramètres, elles peuvent facilement entraîner des résultats imprévisibles. Les éléments intégrés étant particulièrement dangereux sont indiqués comme tels dans leurs descriptions. Toutes les vérifications de portée ou de validité nécessaires sont de votre responsabilité.

Intégration de chaîne de caractères

Dans les descriptions suivantes, comme la «valeur de chaîne de caractères» signifie une valeur de chaîne de caractères entre guillemets ou toute fonction ou expression dont la valeur est une chaîne de caractères. Sauf indication contraire, tous les paramètres sont appelés par valeur.

Fonction Length

La fonction LENGTH renvoie la valeur entière de la longueur d'une chaîne de caractères. Le format de sa syntaxe est la suivante :

LENGTH(STRG)

STRG est une valeur de chaîne de caractères. Exemple :

  1. VAR MACHAINE:STRING;
  2. BEGIN
  3.  MACHAINE := '1234567';
  4.  WRITELN(LENGTH(MACHAINE),' ',,LENGTH(''));
  5. END.

on obtiendra le résultat suivant :

7 0

Fonction POS

La fonction POS retourne une valeur entière. Le format de sa syntaxe est la suivante :

POS(SUBSTG,STRG)

SUBSTRG et STRG sont des valeurs de chaîne de caractères. La fonction POS analyse STRG pour trouver la première occurrence de SUBSTRG dans STRG. La fonction POS renvoie l'index dans STRG du premier caractère du modèle correspondant. Si le modèle n'est pas trouvé, la fonction POS renvoie zéro. Exemple :

  1. VAR TRUCS,MOTIF:STRING;
  2. BEGIN
  3.  TRUCS:='PRENEZ LA BATEAU AVEC GLADIR.COM !';
  4.  MOTIF:='GLA';
  5.  WRITELN(POS(MOTIF,TRUCS));
  6. END.

Elle affichera :

23

Fonction CONCAT

La fonction CONCAT renvoie une valeur de chaîne. Le format de sa syntaxe est la suivante :

CONCAT(STRGs)

STRG signifie un nombre quelconque de valeurs de chaîne de caractères séparées par des virgules. Cette fonction renvoie une chaîne étant la concaténation de toutes les chaînes de caractères lui étant collées. Exemple :

  1. VAR SHORTSTRING,LONGSTRING:STRING;
  2. BEGIN
  3.  SHORTSTRING:='C''EST UNE CHAINE DE CARACTERES';
  4.  LONGSTRING:='C''EST UNE CHAINE DE CARACTERES VRAIMENT LONGUE';
  5.  LONGSTRING:=CONCAT('DEBUT ',SHORTSTRING,'-',LONGSTRING);
  6.  WRITELN(LONGSTRING)
  7. END.

On obtiendra le résultat suivant :

DEBUT C'EST UNE CHAINE DE CARACTERES-C'EST UNE CHAINE DE CARACTERES VRAIMENT LONGUE

Fonction COPY

La fonction COPY renvoie une valeur de chaîne de caractères. Le format de sa syntaxe est la suivante :

COPY(STRG,INDEX,COUNT)

STRG est une valeur de chaîne de caractères et INDEX et COUNT sont des valeurs entières. Cette fonction renvoie une chaîne de caractères contenant COUNT caractères copies de STRG commençant à la INDEXème position dans STRG. Exemple :

  1. VAR TL,KEPT:STRING;
  2. BEGIN
  3.  TL:='GARDE QUELQUE CHOSE ICI';
  4.  KEPT:=COPY(TL,POS('Q',TL),9);
  5.  WRITELN(KEPT);
  6. END.

On obtiendra le résultat suivant :

QUELQUE C

Procédure DELETE

La procédure DELETE modifie la valeur d'une variable chaîne de caractères. Le format de sa syntaxe est la suivante :

DELETE(STRG,INDEX,COUNT)

STRG est une variable de chaîne de caractères appelée par référence et modifiée, et INDEX et COUNT sont des valeurs entières. Cette procédure supprime COUNT caractères de STRG à partir de l'INDEX spécifié. Exemple :

  1. VAR REMBOURRAGE:STRING;
  2. BEGIN
  3.  REMBOURRAGE:='CETTE CHAINE DE CARACTERES A VRAIMENT TROP DE CARACTERES.';
  4.  DELETE(REMBOURRAGE,POS('VRAIMENT',REMBOURRAGE),9);
  5.  WRITELN(REMBOURRAGE);
  6. END.

On obtiendra le résultat suivant :

CETTE CHAINE DE CARACTERES A TROP DE CARACTERES.

Procédure INSERT

La procédure INSERT modifie la valeur d'une variable chaîne de caractères. Le format de sa syntaxe est la suivante :

INSERT(SUBSTRG,STRG,INDEX)

SUBSTRG est une valeur de chaîne de caractères, STRG est une variable de chaîne de caractères appelée par référence et INDEX est une valeur entière. Ceci insère SUBSTRG dans STRG à la ème position d'INDEX dans STRG. Exemple :

  1. VAR ID,MORE:STRING;
  2. BEGIN
  3.  ID:='INSERTIONS';
  4.  MORE:=' DEMONSTRATE';
  5.  DELETE(MORE,LENGTH(MORE),1);
  6.  WRITELN(MORE);
  7.  INSERT(MORE,ID,POS('10',ID));
  8.  WRITELN(ID)
  9. END.

On obtiendra le résultat suivant :

INSERT DEMONSTRATIONS

Procédure STR

La procédure STR modifie la valeur d'une variable chaîne de caractères. Le format de sa syntaxe est la suivante :

STR(LONG,STRG)

LONG est une valeur entière et STRG est une variable de chaîne de caractères appelée par référence. Le LONG peut être un LONG INTEGER. Cela convertit la valeur de LONG en une chaîne de caractères. Le résultat est placé dans STRG. Exemple :

  1. VAR 
  2.  INTLONG:INTEGER[20];
  3.  INTSTRING:STRING;
  4. BEGIN
  5.  INTLONG := 102039503;
  6.  STR(INTLONG,INTSTRING);
  7.  INSERT('.',INTSTRING,LENGTH(INTSTRING)-1);
  8.  WRITELN('$',INTSTRING);
  9. END.

On obtiendra le résultat suivant :

$1020395.03

Le segment de programme suivant fournira une routine appropriée en dollars et en cents :

  1. STR(L,S) ; INSERT(',',S,LENGTH(S)-1); WRITELN(S)

L et S sont correctement déclarés.

INPUT et OUTPUT intégré

L'Apple Pascal offre la possibilité d'effectuer des transferts de données vers et depuis tous les périphériques, y compris les lecteurs de disquette, l'écran, le clavier, les imprimantes, ... Il existe également certains périphériques "intégrés" tels que la sortie de contrôle de jeu TTL et le haut-parleur intégré, n'étant pas considérés comme des périphériques d'entrées/sorties.

Les facilités d'entrée/sortie d'Apple Pascal peuvent être considérées comme existant à quatre niveaux différents :

Les fichiers INPUT, OUTPUT et KEYBOARD sont prédéfinis et n'ont pas besoin d'être déclarés dans un programme. Tous les autres fichiers doivent d'abord être déclarés dans la section VAR d'un programme, puis doivent être ouverts au moyen de RESET ou REWRITE avant de pouvoir être utilisés de quelque manière que ce soit. L'ouverture d'un fichier est un moyen d'associer l'identifiant du fichier (déclaré dans le programme) à son titre (utilisé par le système d'exploitation). Si le fichier à utiliser n'existe pas déjà, ouvrez-le avec REWRITE; oblige le système d'exploitation à créer une entrée de répertoire pour le fichier. Si REWRITE est utilisé avec le titre d'un fichier existant, le fichier existant est détruit et une nouvelle entrée de répertoire est créée. La procédure RESET est utilisé pour ouvrir un fichier existant et peut également être pour replacer le pointeur de fichier au début d'un fichier qui est déjà ouvert. Une procédure CLOSE est également fournie. Il offre plusieurs options pour la disposition du fichier lorsque le programme est en train de l'utiliser.

Si l'opération d'entrées/sorties échoue, le système d'exploitation terminera normalement l'exécution du programme. Cependant, il existe une option du compilateur pour désactiver cette fonctionnalité. La fonction IORESULT permet au programme lui-même de vérifier l'état de l'opération d'entrée/sortie la plus récente et de prendre les mesures appropriées.

Procédure REWRITE

La procédure REWRITE permet de créer un nouveau fichier et de marquer le fichier comme ouvert. Comme expliqué ci-dessous, il peut également être utilisé pour ouvrir un fichier existant. Le format de sa syntaxe est la suivante :

REWRITE(FILEID,TITLE)

FILEID est l'identificateur d'un fichier précédemment déclaré et TITLE est une chaîne de caractères contenant n'importe quel titre de fichier légal. Si le périphérique spécifié dans TITLE n'est pas une disquette, alors le fichier est ouvert à la fois pour l'entrée et la sortie : si TITLE indique un fichier de disquette, REWRITE crée un nouveau fichier et l'ouvre pour l'entrée et la sortie. Si le fichier est déjà ouvert une entrée/sortie ouverte, une erreur d'entrée/sortie se produit (voir IORESULT). Le fichier reste ouvert.

Procédure RESET

La procédure RESET ouvre un fichier existant pour la lecture et l'écriture. Il existe deux syntaxes :

RESET(FILEID,TITLE)
RESET(FILEID)

FILEID est l'identificateur d'un fichier précédemment déclaré et TITLE est une chaîne de caractères contenant n'importe quel titre de fichier légal.

Si un TITLE est utilisé et que le fichier spécifié est déjà ouvert, une erreur d'entrée/sortie se produit (voir IORESULT). L'état du fichier reste inchangé. Si le fichier n'existe pas, une erreur d'entrée/sortie se produit. Un RESET sans TITLE ne peut être utilisé que sur un fichier ouvert; l'effet est simplement de repositionner le pointeur de fichier comme si le fichier venait d'être ouvert.

Si le fichier n'est pas de type INTERACTIVE, RESET effectue automatiquement une action GET, c'est-à-dire qu'il charge le premier enregistrement du fichier dans la variable de tampon du fichier et fait avancer le pointeur de fichier vers le deuxième enregistrement. Si le fichier est INTERACTIVE, aucun GET n'est exécuté; la valeur de la variable tampon n'est pas définie et le pointeur de fichier pointe vers le premier enregistrement.

Notez que le RESET un fichier non INTERACTIVE vers un périphérique de sortie uniquement, tel que PRINTER:, peut provoquer une erreur d'exécution en raison de la GET automatique provoquée par RESET.

Lorsqu'un fichier existant est ouvert avec RESET et est ensuite utilisé pour la sortie, seuls les enregistrements de fichier réellement écrits sont affectés.

Procédure CLOSE

La procédure CLOSE ferme un fichier précédemment ouvert avec RESET ou REWRITE. Le format de sa syntaxe est la suivante :

CLOSE(FILEID,[,OPTION])

FILEID est l'identifiant d'un fichier précédemment déclaré, et OPTION peut être l'un des suivants :

Valeur Description
NORMAL Une fermeture normale est effectuée, c'est-à-dire que CLOSE définit simplement l'état du fichier sur fermé. Si le fichier a été ouvert à l'aide de REWRITE et qu'il s'agit d'un fichier disque, il est supprimé du répertoire.
LOCK Le fichier est créé perManent dans le répertoire si le fichier est sur un disque et le fichier a été ouvert avec un REWRITE; sinon une fermeture NORMAL est effectuée. Si le TITLE correspond à un fichier de disquette existant, le contenu original du fichier est perdu.
PURGE Si le fichier est un fichier de disquette, il est supprimé du répertoire. Dans le cas particulier d'un fichier de disquette existant déjà et est ouvert avec REWRITE, le fichier d'origine reste dans le répertoire, inchangé. Si le fichier n'est pas un fichier de disquette, l'unité associée passera hors ligne.
CRUNCH C'est comme LOCK sauf qu'il verrouille la fin du fichier au point du dernier accès, c'est-à-dire que tout après le dernier élément accédé est jeté. Si le TITLE correspond à un fichier de disquette existant, le contenu original du fichier est perdu.

Si OPTION est omis, la fermeture NORMAL est effectuée. Toutes les fermetures indépendamment de l'option marqueront le fichier comme fermé et rendront la variable de tampon de fichier FILEID^ indéfinie. La procédure CLOSE sur un fichier fermé n'entraîne aucune action.

Fonction EOF

La fonction EOF renvoie une valeur BOOLEAN pour indiquer si la fin d'un fichier spécifié a été atteinte. Lorsque EOF est TRUE, rien de plus ne peut être lu à partir du fichier. Le format de sa syntaxe est la suivante :

EOF[(FILEID)]

Si (FILEID) n'est pas présent, le INPUT est supposé. La fonction EOF est FALSE immédiatement après l'ouverture du fichier et TRUE sur un fichier fermé. Chaque fois que EOF(FILEID) est TRUE, FILEID^ n'est pas défini. Après un GET, EOF est TRUE si le GET a tenté d'accéder à un enregistrement se trouvant après la fin du fichier. Après un PUT ou WRITE, EOF est TRUE si le fichier ne peut pas être développé pour prendre en charge PUT ou WRITE (en raison de l'espace disque limité, par exemple).

Lorsque EOF devient TRUE pendant une opération READ ou GET, la valeur de FILEID^ n'est pas définie. Lorsque la saisie au clavier est en cours de lecture (via les fichiers prédéfinis INPUT ou KEYBOARD), EOF ne devient TRUE que lorsque le caractère de fin de fichier est tapé. Le caractère de fin de fichier est Ctrl+C (ASCII 3). EOF reste TRUE jusqu'à ce que le fichier INPUT ou KEYBOARD soit RESET, et aucun autre caractère typé ne peut être lu tant que cela n'est pas fait.



Dernière mise à jour : Dimanche, le 28 mars 2021