Vous êtes sur la page 1sur 10

Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

Pour chacun des cas suivants donner l’algorithme :

1) Saisir une chaîne de caractère non vide et de longueur maximale égale à 10.

Program Saisir_Chaine;
Var
chaine: string[10];
begin
WriteLn('Saisir une chaîne de caractère non vide:');
ReadLn(chaine);
WriteLn('Votre chaîne est : ', chaine);
end.

TD N°2 en PASCAL -----1


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

2) Vérifier est-ce qu’une chaîne de caractère donnée est alphabétique ou non.

Program Chaine_Alphabetique;
Var chaine: string;
i: integer;
test: boolean;
Begin
WriteLn('Saisir une chaîne de caractères :');
ReadLn(chaine);
i := 1;
test := true;
While (chaine[i] <> #0) do
Begin
If NOT ((chaine[i] >= 'a') and (chaine[i] <= 'z') or (chaine[i] >= 'A') and (chaine[i] <= 'Z'))
Then test := false;
i := i+ 1;
End;
If(test) then
WriteLn('La chaîne est alphabétique.')
Else
WriteLn('La chaîne n est pas alphabétique.')
End.

TD N°2 en PASCAL -----2


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

3) Compter l'occurrence (nombre d'apparition) d'un caractère dans une chaîne.

Program Verifier_Caractere;
Var
chaine: string;
c: char;
cpt, i: integer;
Begin
WriteLn('Saisir une chaîne de caractères :');
ReadLn(chaine);
WriteLn('Saisir le caractère à rechercher :');
ReadLn(c);
cpt:= 0;
i:= 0;
Repeat
i := i+1;
if (chaine[i] = c) then
cpt := cpt + 1
Until(chaine[i] = #0);
WriteLn('Le caractère ', c, ' apparaît ', cpt, ' fois dans la chaîne ', chaine,’.’);
End.

TD N°2 en PASCAL -----3


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

4) Inverser une chaîne de caractère.


Program Inverser_Chaine;
Var chaine, chaine_inverse: string;
I, cpt: integer;
Begin
WriteLn('Saisir une chaîne de caractères :');
ReadLn(chaine);
cpt :=1;
While(chaine[cpt] <> #0) then
cpt := cpt + 1
chaine_inverse:= '';
For i := 0 to (cpt-1) do
chaine_inverse := chaine_inverse + chaine[cpt - i]
WriteLn('L inverse de chaîne << ‘, chaine ,’ >> est : << ', chaine_inverse,’ >>’);
end.

TD N°2 en PASCAL -----4


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

5)Compter le nombre de voyelles dans une chaîne de caractères

Program Nombre_Voyelles;
Var mot : string;
i, cpt: integer;
Begin
WriteLn('Saisir une chaîne de caractères :');
ReadLn(mot);
cpt :=0;
i:=1;
While(mot[i] <> #0) do
begin
if(mot[i] in [ 'A' , 'a' , 'E' , 'e' , 'I' , 'i' , 'O' , 'o' , 'U' , 'u' , 'Y' , 'y' ]) then
cpt := cpt + 1;
i := i+1;
End;
if(cpt>0) then
WriteLn('le mot << ', mot ,' >> contient ', cpt,' des voyelles')
Else
WriteLn('le mot << ', mot ,' >> ne contient pas des voyelles')
End.

TD N°2 en PASCAL -----5


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

6) Sur les touches (2, 3, 4, 5, 6, 7, 8 et 9) du clavier d’un téléphone portable, sont


inscrites des lettres pour écrire
des messages en plus des chiffres.
Par exemple:
Sur la touche 5 sont inscrites les lettres J, K et L.
Pour taper la lettre J on appuie une seule fois ⇔ ‘5’.
Pour taper la lettre K on tape deux fois ⇔ ‘55’.
Pour taper la lettre L on appuie trois fois ⇔ ‘555’.
Ecrire un programme permettant de déterminer et d’afficher le nombre total
d’appuies sur les touches
du clavier d’un téléphone portable pour saisir un mot donné de N lettres, supposées
non accentuées.
→ Indication : La figure suivante donne la répartition des lettres sur les touches du clavier
d’un téléphone portable.

1 2 3
ABC DEF
4 5 6
GHI JKL MNO
7 8 9
PQRS TUV WXYZ
* 0 #
+ -

TD N°2 en PASCAL -----6


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

Program Message_Chiffre;
Var mot, mot_chiffre : string;
i : integer;
Function Lettre_C(c : char): string;
Begin
Case c Of
'A', 'a': Lettre_C:='2'; 'B', 'b': Lettre_C:='22'; 'C', 'c': Lettre_C:='222';
'D', 'd': Lettre_C:='3'; 'E', 'e': Lettre_C:='33'; 'F', 'f': Lettre_C:='333';
'G', 'g': Lettre_C:='4'; 'H', 'h': Lettre_C:='44'; 'I', 'i': Lettre_C:='444';
'J', 'j': Lettre_C:='5'; 'K', 'k': Lettre_C:='55'; 'L', 'l': Lettre_C:='555';
'M', 'm': Lettre_C:='6'; 'N', 'n': Lettre_C:='66'; 'O', 'o': Lettre_C:='666';
'P', 'p': Lettre_C:='7'; 'Q', 'q': Lettre_C:='77';
'R', 'r': Lettre_C:='777'; 'S', 's': Lettre_C:='7777';
'T', 't': Lettre_C:='8'; 'U', 'u': Lettre_C:='88'; 'V', 'v': Lettre_C:='888';
'W', 'w': Lettre_C:='9'; 'X', 'x': Lettre_C:='99';
'Y', 'y': Lettre_C:='999'; 'Z', 'z': Lettre_C:='9999';
End;
End;
Begin
WriteLn('Saisir un mot');
ReadLn(mot);

i:=1;
mot_chiffre:='';
While(mot[i] <> #0) do
Begin
mot_chiffre := mot_chiffre + Lettre_C(mot[i]) ;
i := i+1;
Bnd;
WriteLn('le mot << ', mot ,' >> en chiffres c est << ', mot_chiffre,' >>');
End.

TD N°2 en PASCAL -----7


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

TD N°2 en PASCAL -----8


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

7)Programme qui permet de dire si deux mots sont anagrammes ou non. Ça veut
dire si elles sont formées par les mêmes caractères. Ex: Chien et Chine sont des anagrammes.
Program Message_Chiffre;
Var ch1,ch2 : string;
i,j : integer;
test : boolean;
Function Test_Caractere (c: char; mot: string): boolean;
Var cpt: integer;
testC : boolean;
Begin
cpt:=1;
testC := false;
While(mot[cpt] <> #0) do
Begin
if(mot[cpt] = c) then testC := true;
cpt := cpt+1;
End;
Test_Caractere:= testC;
End;
Begin
WriteLn('Saisir un le premier mot :');
ReadLn(ch1);
WriteLn('Saisir un le deuxieme mot :');
ReadLn(ch2);
i:=1;
test:=true;
While(ch1[i] <> #0) do
Begin
If (Test_Caractere(ch1[i],ch2) = false) Then test := false;
i := i+1;
End;
If(test = true) Then
WriteLn('le mot << ', ch1 ,' >> et << ',ch2,' >> sont des anagrammes')
Else
WriteLn('le mot << ', ch1 ,' >> et << ',ch2,' >> ne sont pas des anagrammes')
End.

TD N°2 en PASCAL -----9


Cadres des AREF - Informatique 2023 Preparé par: EL HAFIDI Abdelhadi

TD N°2 en PASCAL -----10

Vous aimerez peut-être aussi