Turbo Pascal possède un type String prédéfini
permettant de déclarer des chaînes de caractères et
fournit tout un ensemble des fonctions et procédures pour les manipuler.
On doit déclarer la longueur maximale de la chaîne.
Type Str80 = String[80];
var s : str80;
s peut être considérée comme un tableau avec des indices de 0 à 80. s[0] contient la longueur effective l de la chaîne ; s[1],s[2]...s[l] contiennent les caractères utiles.
s:='BONJOUR'.
La longueur est comprise entre 0 et 255.
Les opérations fondamentales sur chaînes de caractères.
1. Affectation
chaîne := expression caractère
2. Longueur
Length(chaîne) - renvoie la longueur effective
Length(s) renvoie 7. Length('Bebe') renvoie 4
3. Concaténation - on ajoute les caractères de la deuxième chaîne à la fin de la première.
chaine1 + chaine2
4. Recherche d'une sous-chaîne dans une chaîne
pos (mot1,mot2)
- renvoie la position de la première occurrence du mot1 dans mot2
et 0 si l'occurrence n'existe pas
Pos('JOUR',s) - renvoie 4
Pos('Bon','Belle') - renvoie 0
5. Prendre une sous-chaîne
Copy(mot,pos,n) - renvoie une chaîne qui contient une sous-chaîne du mot qui commence de la position pos et a n caractères
6. Insérer une chaîne
Insert(mot1,mot2,pos) - insère mot1 dans mot2 de la position pos.
7. Effacer une sous-chaîne
Delete(mot,pos,n) - efface n caractères en commençant de position pos.
Exemple: Les palindromes
On appelle un palindrome une phrase qui peut être lue indifféremment à l'endroit et à l'envers. Par exemple: Radar; Elu par cette crapule.
Soit à réaliser un programme qui indique si une chaîne de caractères est un palindrome (on supposera que la phrase est terminée par un point).
Le traitement se fait en 3 phases.
Program Palindromme;
Type str80=String[80]; Var s : str80; p : boolean; i : integer; Procedure LireString(var s : string); Begin Writeln('Une phrase a analyser?'); Readln(s); End; Function EstLettre(c:char):boolean; Begin EstLettre := (c>='A') And (c<='Z') Or (c >='a') And (c<='z'); End; Function EstMiniscule(c:char):boolean; Begin EstMiniscule := (c >='a') And (c<='z'); End; |
|
Function EstPal(var s:string):boolean; Var i,j:integer; Begin{EstPal} {Preparation} i:=1; While i<=length(s) Do If Not EstLettre(s[i]) Then delete(s,i,1) Else Begin If EstMiniscule(s[i]) Then s[i]:=Upcase(s[i]); i := i+1; End; {Test} i:=1; j:= length(s); While (i<j) And (s[i]=s[j]) Do Begin i:=i+1; j:=j-1; End; EstPal := i>=j; End;{EstPal} |
|
Begin {Programme} LireString(s); i := pos('.',s); If i>0 Then delete(s,i,length(s)-i+1); p:=EstPal(s); If p Then Writeln('La phrase est un palindromme') Else Writeln('La phrase n''est pas un ', 'palindromme'); End. |
Exercices: