CHAPITRE XIII : Caractères et chaînes de caractères

Par Hugo ETIEVANT

  1. Chaînes de caractères (type String)
  2. Caractères seuls (type Char)

 

1. Chaînes de caractères

Le type String défini des variables "chaînes de caractères" ayant au maximum 255 signes, ces derniers appartenant à la table ASCII. Une chaîne peut en contenir moins si cela est spécifié lors de la déclaration où le nombre de signes (compris entre 1 et 255) sera mis en crochet à la suite du type String. Le premier cractère de la chaîne a pour indice 1, le dernier a pour indice 255 (ou moins si spécifié lors de la déclaration).
Syntaxe :

Var chaine : String ;
    
telephone : String[10] ;

Lorsqu'une valeur est affectée à une variable chaîne de caratères, on procède comme pour un nombre mais cette valeur doit être entre quotes. Si cette valeur contient une apostrophe, celle-ci doit être doublée dans votre code.
Syntaxe :

variable := valeur ;
animal := 'l''abeille' ;

Note très importante : le type String est en fait 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. Il est donc possible, une chaîne de caractère étant un tableau de modifier un seul caractère de la chaîne grace à la syntaxe suivante :

chaine[index]:=lettre;

Program Chaine;
Var
nom:String;
BEGIN
nom:='Etiévant';
nom[2]:='Z';
nom[0]:=Chr(4);
WriteLn(
nom);
nom[0]:=Chr(28);
Write(
nom,'-tagada');
END.

L'exemple Chaine remplace la deuxième lettre de la variable nom en un "Z" majuscule, puis spécifie que la variable ne contient plus que 4 caractères. Ainsi la valeur de la variable nom est devenue : EZié. Mais après, on dit que la variable nom a une longueur de 28 caractères et on s'apperçoit à l'écran que les caractères de rang supérieur à 4 ont été conservés et des espaces ont été insérés pour aller jusqu'à 28 ! Ce qui veut dire que la chaîne affichée n'est pas toujours la valeur totale de la chaîne réelle en mémoire.
Attention cependant aux chaînes déclarées de longueur spécifiée (voir Chapitre 20 sur Types simples et structurés exemple: Type nom:String[20];) dont la longueur ne doit pas dépasser celle déclarée en début de programme.

Concat ( s1, s2, s3, ..., sn) ;
Cette fonction concatène les chaînes de caractères spécifiées s1, s2, etc. en une seule et même chaîne. On peut se passer de cette fonction grâce à l'opérateur + : s1 + s2 + s3 + ... + sn. Rappelons que les chaînes de caractères sont généralement définies en string.
Syntaxes :

s := Concat ( s1, s2 ) ;
s := s1 + s2 ;

Copy ( s, i, j ) ;
Fonction qui retourne de la chaîne de caractère s, un nombre j de caractères à partir de la position i (dans le sens de la lecture). Rappelons que i et j sont des entiers (integer).

Delete ( s, i, j ) ;
Procédure qui supprime dans la chaîne nommée s, un nombre j de caractères à partir de la position i.

Insert ( s1, s2, i ) ;
Procédure qui insert la chaîne s1 dans la chaîne s2 à la position i.

Pos ( s1, s2 ) ;
Fonction qui renvoit 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.

FillChar ( s, n, i ) ;
Procédure qui introduit n fois dans la chaîne s la valeur i (de type Byte ou Char).


 

2. Caractères seuls

Un caractère est une variable de type Char qui prend 1 octet (= 8 bits) en mémoire. La table ASCII est un tableau de 256 caractères numérotés de 0 à 255 où les 23 premiers sont associés à des fonction de base de MS-DOS (Suppr, End, Inser, Enter, Esc, Tab, Shift...) et tous les autres sont directement affichables (lettres, ponctuations, symboles, caractères graphiques). Dans un programme en Pascal, on peut travailler sur un caractère à partir de son numéro dans la table ASCII (avec la fonction Chr() ou #n°) ou directement avec sa valeur affichage entre quote ''.
Exemples :

espace :=' ';
lettre :=#80;
carac :=Chr(102);

Table ASCII :
table ASCII

Le type Char défini des variables "caractère seul" ou "lettre" ayant 1 seul signe, ce dernier appartenant à la table ASCII.
Syntaxe :

Var lettre : Char ;

Lorsqu'on donne une valeur à une variable Char, celle-ci doit être entre quotes. On peut aussi utiliser les fonctions Chr et Ord ou même une variable String dont on prend un caractère à une position déterminée.
Syntaxe :

lettre := chaine[position] ;

StrUpper ( s ) ;
Convertit une chaîne de caractères minuscules en MAJUSCULES. S'applique aux tableaux de caractères.
Syntaxe de déclaration :

Var s : Array[1..x] of Char
avec x la longueur maximale de la chaîne.

StrLower ( s ) ;
Convertit une chaîne de caractères MAJUSCULES en minuscules. S'applique aux tableaux de caractères.
Syntaxe de déclaration :

Var s : Array[1..x] of Char
avec x la longueur maximale de la chaîne.

UpCase ( k ) ;
Cette fonction ne s'applique qu'aux caractères seuls (de type Char) pris dans une chaîne s. Convertit un caractère minuscule en MAJUSCULE.
Syntaxe :

For i := 1 To Lenght(s) Do s[i] := UpCase(s[i]) ;

Chr ( x ) ;
Cette fontion renvoit un caractère Char correspondant au caractère d'indice x dans la table ASCII.
Exemple :

k := Chr(64) ;

Ord ( y ) ;
Cette fontion renvoit l'indice (en byte) correspondant au caractère y dans la table ASCII. C'est la fonction réciproque de Chr.
Exemple :

i := Ord('M') ;

 
 
 
 
Partenaires

PlanetHoster
Ikoula