Algorithmique - Séance 6 -Séance 5Séance 7

Dans certains cas, on a besoin dans un programme d’un grand nombre de variables.
Nous pourrions penser par exemple ç un programme de gestions de stock. On peut regrouper ces variables dans des tableau de variables.

Déclarer et utiliser un tableau

VAR tab : ARRAY [index] OF type;

Voici un premier exemple :
VAR table : ARRAY [1..10] OF byte; déclare un tableau de 10 variables de type byte : table[1], table[2], … ,table[10].

table[1]table[2]table[3]table[4]table[5]table[6]table[7]table[8]table[9]table[10]

On peut toutes les utiliser comme des variables classique et leur donner des valeurs :
table[5] := 236; alloue la valeur 236 à la variable table[5].

Attention : le Pascal renverra une erreur si vous dépassez l’index prévu dans la déclaration : table[25] n’existe pas dans notre exemple, et on ne peut pas redimensionner un tableau.
Toutes les variables d’un tableau sont du même type.

On peut aussi déclarer des tableaux à plusieurs dimensions. Il suffit d’adapter l’index :
VAR table : ARRAY [1..5,1..6] OF INTEGER; déclare un tableau de 5 × 6 variables de type integer.

table[1,1]table[2,1]table[3,1]table[4,1]table[5,1]
table[1,2]table[2,2]table[3,2]
table[1,3]
table[1,4]
table[1,5]
table[1,6]table[5,6]

Chaines de caractères

Une chaine de caractère dans le langage courant, on appelle ça un mot. En fait c’est un tableau de type char sur lequel on peut utiliser des fonctions spécifiques.
PASCAL
est une chaine de 6 caractères.

Déclaration :
VAR texte : STRING[nb_char];
nb_char désigne le nombre maximum de caractère dans le texte et vaut au maximum 255.

Pour allouer une valeur, il suffit d’écrire :
texte :=’Mon texte est joli’;

Le type STRING est un tableau de caractères à une dimension dont l'élément d'indice zéro contient une variable de type Char et dont le rang dans la table ASCII correspond à la longueur de la chaîne.
Dans l’exemple précédant, texte[1] vaut ‘M’ et texte[7] vaut ‘x’.

Quelques opérations sur les chaines de caractères

Dans tout la suite, les chaines de caractères ont été préalablement déclarée.
  • Length(s :STRING) :INTEGER : fonction qui renvoie le nombre de caractères d’une chaine.
  • texte :=’Mon texte est joli,’;
    writeln(length(texte));

    affiche 19

  • La concaténation : cette opération consiste à recoller ensemble plusieurs chaine de caractères
  • début :=’Mon texte est joli,’;
    fin:=’mais il faut le finir’;
    texte:=début+fin;

    la variable texte est alors égale à ‘Mon texte est joli,mais il faut le finir’.

  • copy(s:STRING;i,j:INTEGER) : fonction qui copie j charactères de la chaine s à partir de la position i.
  • texte :=’Mon texte est joli,’;
    res:=copy(texte,3,5);

    la variable res est égale à ‘n tex’.

  • delete(s:STRING;i,j:INTEGER) : procédure qui supprimej charactères de la chaine s à partir de la position i.
  • texte :=’Mon texte est joli,’;
    delete(texte,5,9);

    la variable texte est égale à ‘Mon joli’. (il y a deux espaces).

  • insert(s1,s2:STRING;i:INTEGER) : procédure qui insere dans s2 la chaine s1 à la position i.
  • texte :=’Mon texte est joli,’;
    don :=’mais il faut le finir’;
    insert(texte,don,5);

    la variable don est égale à ‘mais Mon texte est joli,il faut le finir’.

  • Pos(s1,s2) : Fonction qui renvoie sous forme de variable byte la position de la chaîne s1 dans la chaîne mère s2. Si la chaîne s1 en est absente, alors cette fonction renvoie 0 comme valeur.

  • Str(x,s) : Procédure qui convertit le nombre (Integer ou Real) x en chaîne de caractère de nom s.

  • Val(x,s,error) : Procédure qui convertit la chaîne de caractère de nom s en un nombre (Integer ou Real) x et renvoie un code erreur error (de type integer) qui est égale à 0 si la conversion est possible.

  • Exercice

    Voici un texte (à copier) :

    « Or donc il advint que la comtesse qui se baigna dans le sang revigorant d une centaine de vierges, fut enterrée vive. Son château théâtre de tant de cruautés, tomba rapidement en ruines. Tout ce qu il en reste est une tour solitaire. »

    Ecrire un programme qui compte le nombre de caractères de ce texte puis un autre qui l’affiche en allant à la ligne tous les 30 caractères.