Vous êtes sur la page 1sur 8

Module: ASD1 Année universitaire 2022-2023

Section B-L1 Informatique

Chapitre 5 : Les caractères et les chaînes de caractères

I. Introduction

En informatique, une chaîne de caractères est une suite ordonnée de caractères. La chaîne de
caractères est un type de données dans de nombreux langages informatiques. La plupart des
langages de programmation offrent une classe ou un type dédié à la représentation et à la
manipulation des chaînes de caractères.

II. Définition

 Les caractères sont un ensemble de symboles comprenant les 26 lettres de l'alphabet


latin en minuscules et majuscules, les 10 chiffres de 0 à 9, les différents symboles de
ponctuations, l'espace et bien d'autres symboles encore. ils sont au nombre de 256 au
total. En pascal, ils forment le type de données CHAR.

 Les chaînes de caractères sont des séquences finies de caractères. Le nombre de


caractères composant une chaîne de caractères est la longueur de cette chaîne. Une
chaîne de longueur nulle ne comprend aucun caractère : c'est la chaîne vide. En Pascal,
les chaînes de caractères forment le type STRING.

 Il est possible de déclarer des constantes de type STRING. On peut aussi déclarer des
variables de type STRING.

III. Déclaration

Syntaxe

Var <nom_chaine> : string; ou

Var <nom_chaine> : string [<longueur_chaine>];

Exemple
Var nom: string;
Var nom : string [20];
IV .Notation indicielle
Une chaîne de caractères est, par définition, composée de caractères. Ces caractères sont
indexés à partir de 1. Le premier caractère a pour indice 1, le second a pour indice 2, etc . . .
Le dernier caractère a pour indice la longueur de la chaîne.
On accède au caractère d'indice i d'une chaîne S avec la notation S[i].
Si S est une chaîne, alors S[i] est un caractère.

program exemple;
var S : STRING;
c : CHAR;
begin
S := 'algorithme';
c := S[3];
Write ( c );
end.

On peut modifier un caractère d'une chaîne de caractères à l'aide de la notation indicielle.

program exemple;
var S : STRING;
begin
S := 'algurithme';
S[4] := 'o';
write (S );
end.

V. Opérations et fonctions sur les caractères et chaines de caractères


V.1. Les caractères

V.1.1.Fonctions ord et chr


Les caractères sont numérotés de 0 à 255. Par exemple, le caractère 'A' porte le numéro 65 et
le caractère 'a' porte le numéro 97.
En Pascal, la fonction prédéfinie ord associe au caractère qu'on lui passe en paramètre le
numéro ( code) associé à ce caractère.
Exemple
ord('A') =65;
ord('a')= 97;
Inversement, la fonction chr associe à l'entier (compris entre 0 et 255) qu'on lui passe en
paramètre le caractère ayant pour numéro cet entier.

Exemple
chr(65)='A';
chr(97)='a';

V.1.2. Comparaison de caractères

Les opérateurs =, <, <=, > et >= permettent de comparer deux caractères. Si c1 et c2 sont deux
expressions de type CHAR, alors

 c1 = c2 est vrai si et seulement si les deux caractères c1 et c2 sont égaux ;


 c1 < c2 est vrai si et seulement si le numéro (code) du caractère c1 est strictement plus
petit que celui de c2 ;
 c1 <= c2 est vrai si et seulement si le numéro du caractère c1 est inférieur ou égal à
celui de c2 ;

V.2. Les chaînes de caractères

V.2.1. Comparaison de chaînes


Les opérateurs =, <, <=, > et >= permettent de comparer deux chaîne de caractères.
Si chaine_1 et chaine_2 sont deux expressions de type STRING, alors

 chaine_1 = chaine_2 est vrai si et seulement si les deux chaînes de caractères sont
égales ;
 chaine_1 < chaine_2 est vrai si et seulement si la chaîne de caractère chaine_1 vient
strictement avant chaine_2 dans l'ordre lexicographique ;

Exemples

'A' < 'a'


'a' < 'b'
'algo1' < 'algo2'
'12'<'2'

V.2.2. Concaténation
La concaténation est l’opération qui consiste à construire une chaîne de caractères en mettant
bout à bout deux ou plusieurs chaînes de caractères. L'opération de concaténation de chaines
se fait par la fonction :

concat (chaine_1 : string , chaine_2 : string , … , chaine_n : string);

Exemple

Programme qui affiche le nom complet de l'utilisateur en saisissant le nom et prénom


séparément :

program concatener ;
var nom , prenom , nom_complet : string;
begin
write('Saisissez votre nom : ');
readln(nom);
write('Saisissez votre prénom : ');
readln(prenom);
nom_complet := concat(nom, ' ', prenom);
write(nom_complet);
end.
V.2.3. Quelques fonctions prédéfinies sur les chaînes
V.2.3.1. Longueur d'une chaîne
Cette fonction permet de retourner la longueur d'une chaine de caractères ( c'est-à-dire le
nombre de caractères formant cette chaine).Elle est définie comme suit:

length (chaine : string);

Exemple
Affichage de la longueur d'une chaine saisie par l'utilisateur.

program longueur_chaine;
var chn : string;
begin
write ('veuillez saisir une chaine');
read(chn);
write('La longueur de la chaine est : ', length(chn)) ;
end.

V.2.3.2. Extraction d’une sous-chaîne


La fonction copy Permet d'extraire une partie (sous-chaine) d'une chaine de caractères d'une
longueur donnée à partir d'une position donnée.

copy (chaine: string, position: integer, longueur: integer);


copy(s,d,l) donne la sous-chaîne de longueur l de la chaîne s débutant à l'indice d.

Exemple

Un programme qui affiche le résultat de la copie des 4 premiers caractères d'une chaine saisie
par l'utilisateur.

program copier ;
var chaine_1, chaine_2 : string;
begin
write('Saisissez une chaine: ');
readln(chaine_1);
chaine_2 := copy(chaine_1, 1, 4);
write(chaine_2);
end.

V.2.3.3. Position d'une chaîne dans une autre chaîne

Consiste à rechercher une chaine ch1 dans une autre chaine ch2. Dans le cas où ch1 apparait
dans ch2, alors la position du premier caractère de ch1 dans ch2 est retournée .

Pos(CH1,CH2 : STRING);

pos(CH1,CH2) donne l'indice de la position de la chaîne CH1 dans la chaîne CH2 si elle s'y
trouve, et donne 0 sinon.
Exemple 1

 pos('algo','algorithmique') = 1.
 pos('algu','algorithmique') = 0.

Exemple 2

Programme qui vérifie si la chaine de caractères que vous avez saisi contient le mot
'algorithme' .

program verification ;
var ch : string;
begin
write('Saisissez votre chaine : ');
readln(ch);
if (pos ('algorithme',ch)>0) then
write('le mot existe')
else
write('le mot n''existe pas');
end.

Exercice 1

Ecrire un programme qui permet d'afficher l' inverse d'un mot.

Exercice 2

Ecrire un programme qui permet d'afficher le nombre d'occurrences d'un caractère dans une
chaine de caractères donnée.

Exercice 3

Soit un vecteur T_nom qui contient 20 éléments de type string . Ecrire un programme qui
donne le premier élément dans l'ordre alphabétique et sa position dans le vecteur.

Indication

 Utiliser la comparaison des chaines de caractères.

Exercice 4

Ecrire un programme qui détermine si un mot choisi par l’utilisateur est un palindrome.
Un palindrome est un mot qui se lit de la même manière de gauche à droite et de droite à
gauche.

Exercice 5

Soit une phrase qui se termine par un point.


Ecrire un programme qui détermine si une lettre donnée apparait dans cette phrase .
Solutions

Exercice 1

program inverse ;
Var mot1,mot2: string[20];
i:integer;
begin
write('veuillez saisir un mot');
read(mot1);
mot2:=mot1[length (mot1)];
for i:=length (mot1)-1 downto 1 do
mot2:=concat(mot2,mot1[i]);
write( 'l''inverse du mot est ', mot2);
end.

Exercice 2
program recherche;

Var mot: string [20];


x:char;
occ,i:integer;
begin
write('veuillez introduire votre chaine');
readln (mot);
writeln ('donner le caractère à rechercher');
readln (x);
occ:=0;
for i:=1 to length(mot) do
begin
if (x=mot[i]) then
occ:= occ+1;
end;

if (occ=0) then

write(' le caractére ', x, 'n''existe pas')

else write(' l''occurence du caractére ', x, ' est ', occ);

end.
Exercice 3

program ordre_alphabetique;
var T_nom: array[1..5] of string;
i,ind:integer;
x:string;
begin
writeln('veuillez remplir le tableau');
for i:=1 to 5 do
begin
write ('T_nom[',i,']=');
readln (T_nom[i]);
end;
x:=T_nom[1];
ind:=1;
for i:=2 to 5 do
if (T_nom[i] <x )then
begin
x:=T_nom[i];
ind:=i;
end;
writeln ('le premier élément dans l''ordre alphabétique est ', x);
write ('sa position est ',ind);
end.

Exercice 4
program palindrome ;
var ch:string[50];
pal : boolean;
i,j:integer;
Begin
writeln ('saisir votre chaine');
readln(ch);
i:=1 ;
j:=length(ch) ;
Pal:=true ;
while ( i<j) and Pal do
begin
if (ch[i]<>ch[j] ) then
Pal:=false ;
i:=i+1 ;
j:=j-1 ;
end;

if (pal=true) then writeln ('le mot est un palindrome')


else writeln( 'le mot n''est pas un palindrome');
end.
Exercice 5
program lettre ;
var Ph:string[50];
i:integer;
L:char;
trouve:boolean;
Begin
Writeln('donnez une phrase');
readln(ph);
Writeln('donnez une lettre');
readln(L);
trouve:=false;
i:=1;
while (ph[i]<> '.' ) and (trouve=false) do
begin
if (upcase(ph[i])=upcase(L)) then
trouve:=true
else
i:=i+1;
end;
if (trouve=false) then
Writeln(L,' n apparait pas dans la phrase')
else
Writeln(L,' apparait dans la phrase');
End.

Vous aimerez peut-être aussi