IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours de Turbo Pascal 7


précédentsommairesuivant

Chapitre 13 - Caractères et chaines de caractères

Caractères

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 des caractères de contrôle, associés à des fonctions 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(n) ou #n) ou directement avec sa représentation entre apostrophes ''.

Exemples :

 
Sélectionnez
Espace := ' ';
Lettre := #80;
Carac := Chr(102);

Table ASCII :

Table ASCII

Syntaxe :

 
Sélectionnez
Var Lettre : Char;

Lorsqu'on donne une valeur à une variable de type Char, celle-ci doit être entre apostrophes. On peut aussi utiliser les fonctions Chr et Ord ou même une variable String (voir plus loin) dont on prend un caractère à une position déterminée.

Syntaxe :

 
Sélectionnez
Lettre := Chaine[Position];

Voyons à présent quelques fonctions :

 
Sélectionnez
Upcase (k);

Cette fonction convertit un caractère minuscule en MAJUSCULE.

Exemple :

 
Sélectionnez
for i := 1 to Lenght(s) do 
  s[i] := Upcase(s[i]);
 
Sélectionnez
Chr (n);

Cette fonction renvoie le caractère d'indice n dans la table ASCII.

Exemple :

 
Sélectionnez
k := Chr(64);
 
Sélectionnez
Ord (k);

Cette fonction renvoie l'indice (en bytes) correspondant au caractère k dans la table ASCII. C'est la fonction réciproque de Chr.

Exemple :

 
Sélectionnez
i := Ord('M');

Chaines de caractères

Le type String définit des variables « chaines de caractères » ayant au maximum 255 signes, ces derniers appartenant à la table ASCII. On peut cependant définir des chaines dont la longueur maximale sera moindre (de 1 à 255). Le premier caractère de la chaine a pour indice 1, le dernier a pour indice 255 (ou moins si spécifié lors de la déclaration).

Syntaxe :

 
Sélectionnez
Var 
  Chaine : String;
  Telephone : String[10];   { Chaine d'une longueur maximale de 10 caractères }

Lorsqu'une valeur est affectée à une variable chaine de caractères, on procède comme pour un nombre, mais cette valeur doit être entre apostrophes. Si cette valeur contient une apostrophe, celle-ci doit être doublée dans votre code.

Exemple :

 
Sélectionnez
Animal := 'l''abeille';

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 dont la valeur numérique correspond à la longueur de la chaine.

Il est donc possible, une chaine de caractères étant un tableau, de modifier un seul caractère de la chaine grâce à la syntaxe suivante :

 
Sélectionnez
Chaine[Index] := Lettre;

Exemple :

 
Sélectionnez
Program Exemple14;
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 Exemple14 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'aperçoit à l'écran que les caractères de rang supérieur à 4 ont été conservés ! Ce qui veut dire que la chaine affichée n'est pas toujours la valeur totale de la chaine réelle en mémoire.

Attention cependant aux chaines déclarées de longueur spécifiée (voir chapitre 20 sur les 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.

 
Sélectionnez
Concat (s1,s2,s3,...,sn);

Cette fonction concatène les chaines de caractères spécifiées s1, s2, etc. en une seule et même chaine. On peut se passer de cette fonction grâce à l'opérateur + : s1 + s2 + s3 + ... + sn.

Exemples :

 
Sélectionnez
s := Concat (s1,s2);
s := s1 + s2;
 
Sélectionnez
Copy (s,i,j);

Cette fonction retourne de la chaine 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).

 
Sélectionnez
Delete (s,i,j);

Cette procédure supprime, dans la chaine nommée s, un nombre j de caractères à partir de la position i.

 
Sélectionnez
Insert (s1,s2,i);

Cette procédure insère la chaine s1 dans la chaine s2 à la position i.

 
Sélectionnez
Pos (s1,s2);

Cette fonction renvoie, sous forme de variable de type byte, la position de la chaine s1 dans la chaine s2. Si la chaine s1 en est absente, alors cette fonction renvoie 0.

 
Sélectionnez
Str (n,s);

Cette procédure convertit la variable numérique n en sa représentation chaine telle qu'elle serait affichée par Write(Ln).

 
Sélectionnez
Val (s,n,Error);

Cette procédure convertit la chaine de caractères s en un nombre (de type numérique simple) n et renvoie un code d'erreur error (de type integer) qui est égal à 0 si la conversion est possible.


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2001-2013 Hugo Etievant. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.