SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
1
Algorithmique & structures
de données I
1ère IAG
Responsable : Dr. Fadoua Bouafif
Chapitre 7
Les chaînes de caractères
2
Objectifs
ASD II
 Savoir les chaines de caractères et leurs caractéristiques
 Apprendre la manipulation des chaines de caractères en
algorithmique et en langage C
 Définir les fonctions prédéfinies des chaines de caractères en
algorithmique et en langageC
3
Plan
ASD II
1) Introduction
2) Définition & Déclaration
3) Opérations sur les chaînes
4) Fonctions & Opérations prédéfinies
5) Tableaux de chaînes de caractères
6) Conclusion
4
Introduction
 Le type de données chaine de caractères est manipulé comme un tableau
de caractères mais il diffère dans la déclaration.
 Nous allons détailler dans cette partie:
 La declaration
 La manipulation
 Quelques exemples d’utilisation
ASD II
5
Définition-Déclaration
ASD II
 Une chaîne de caractère:
 Est une structure de données homogène,
 Permet le stockage, dans une même variable, un nombre fini d'éléments de types caractères.
 C’est un tableau de caractères qui se termine par le caractère ‘0’ (En C, NULL).
 Syntaxe:
6
En Algorithme En C
var : nom_chaine: chaine[taille]
char nom_chaine [taille]; // taille connue
Ou bien
char * nom_chaine ; // taille non connue
Définition-Déclaration (suite)
ASD II
7
‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘0’
Exemple:
 Pour représenter la chaîne de caractères " bonjour ", un tableau de huit caractères est
définit:
char ch[8] = {‘b’, ’o’, ’n’, ’j’, ’o’, ’u’, ’r’, '0'};
Ou
char ch[8] ="bonjour";
ch:
En Algorithme En C
var : ch : chaine[50]
//chaine de 49 caractères + caractère de fin de
chaine ‘0’
//déclaration d’une chaine sans
initialisation
char ch[50];
char * ch;
//déclaration d’une chaine avec
initialisation
char nom[20]= {‘a’, ‘l’, ‘i’, ‘0’};
ASD II
8
Opérations sur les chaines
 Pour accéder à une case d'une chaine donnée, il faut utiliser:
 le nom (identificateur) de la variable, et
 le numéro de la case.

 Exemples:
ch[3]; // ‘j’
ch[5]; // ‘u’
nomChaine [indice]
‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘0’
ch:
indice: 0 1 2 3 4 5 6 7
Opérations sur les chaines (suite)
ASD II
9
 Toutes les opérations élémentaires peuvent être appliquées sur une chaine de caractères.
 Exemple : En Algorithmique En C
//lire en bloc la chaine "nom"
lire(nom) scanf ("%s", nom) ; ou gets (nom) ;
//afficher en bloc la chaine "nom"
écrire(nom) printf("%s", nom) ; ou puts (nom) ;
//affecter le caractère ‘A’ à la 2ème case de la chaine mot
mot[1]←’A’ mot[1]=‘A’;
//lecture du caractère d’indice 20 de la chaine nom
lire (nom[20]) scanf("%c ", &nom[20]);
//affecter la chaine "ABCD" à la chaine mot
mot ←"ABCD" mot = "ABCD" ;
Remarques en C
ASD II
10
 L’affichage d’une chaine de caractères peut être fait en bloc ou bien caractère par
caractère.
Exemple1: Affichage d’une chaine caractère par caractère
void main()
{
char ch[20]="cours programmation"; /* déclaration d'une chaine initialisée*/
printf("la valeur de la chaine est:");
for(int i=0; ch[i] != '0’; i++) /* parcourir la chaine ch */
printf("%c", ch[i]); /* affichage caractère par caractère */
}
Remarques en C (suite)
ASD II
11
Exemple2: Affichage d’une chaine en bloc
 Les chaines de caractères peuvent être comparées sur la base de l'ordre des codes ASCII de
chacun des caractères qui la constituent.
void main()
{
char ch1[20] ; //déclartion d'une chaine de taille max=20
printf("donner une chaine :") ;
scanf("%s", ch1) ; //ou gets(ch1) ; // Saisie d'une chaine
char ch2[14]= "Programmation" ; // déclaration d'une chaine initialisée
printf (" la chaine est : %s",ch2) ; //ou puts(ch2) ; //Affichage de la chaine
}
Fonctions et opérations prédéfinies
 Les opérateurs en algorithmique
 Les fonctions en algorithmique
 Les fonctions en C
ASD II
12
Les opérateurs en Algorithme
ASD II
13
 La concaténation (+) : permet de concaténer deux chaines (en C n’existe pas)
Exemple :
var : ch1, ch2 : chaine[20] // déclaration de deux chaines
ch1←"bonjour" // initialiser ch1 à la chaine "bonjour "
ch2←"à tous" // initialiser ch2 à la chaine "à tous "
ch1←ch1+ch2 // concaténer ch1 et ch2 dans la variable ch1
écrire (ch1) // afficher le contenu de ch1  "bonjour à tous"
Les opérateurs en Algorithme (suite)
ASD II
14
 Ajout d'un caractère (°) : permet d'ajouter un caractère à droite ou à gauche d'une chaine
définie.
Exemple :
var : ch1 : chaine[20] // déclaration de ch1
ch1←"onjou" // initialiser ch1 à la chaine "onjou "
ch1←'B' ° ch1 // Ajouter le caractère ‘B’ à gauche de ch1
écrire (ch1) // afficher le contenu de ch1  "Bonjou"
ch1← ch1 ° ‘r’ // Ajouter le caractère ‘r’ à droite de ch1
écrire (ch1) // afficher le contenu de ch1  "Bonjour"
Les fonctions en Algorithme
ASD II
15
 longueur (chaine) : renvoie le nombre de caractère d'une chaine sans le caractère de fin de la
chaine ’0’.
Exemple :
var : ch : chaine[10]
L : entier
……
ch←"bonjour"
L ← longueur(ch)
écrire("longueur de ch=", L)  L=7
Les fonctions en Algorithme (suite)
ASD II
16
 souschaine(chaine, position, n) : renvoie une sous-chaine (extrait de la chaine), de n
caractères, à partir d’une position donnée.
Exemple :
var : mot, ch : chaine[255]
……
mot ← "bonjour"
ch ← souschaine(mot, 1, 3) "onj"
Les fonctions en Algorithme (suite)
ASD II
17
 gauche(chaine, n) : renvoie les n caractères les plus à gauche dans une chaine.
Exemple:
var : mot, ch : chaine[255]
…..
mot ← "bonjour"
ch ← gauche(mot, 3)  "bon"
Les fonctions en Algorithme (suite)
ASD II
18
 droit(chaine, n) : renvoie les n caractères les plus à droite dans une chaine.
Exemple :
var : mot, ch : chaine[255]
…….
mot ← "bonjour"
ch ← droit(mot, 4) "jour"
Les fonctions en Algorithme(suite)
ASD II
19
 trouve(chaine1, chaine2):
 renvoie la position de chaine2 dans chaine1.
 renvoie 0 si chaine 2 n'existe pas dans chaine 1.
Exemple :
var : ch1, ch2 : chaine[255]
x : entier
…..
ch1 ← "bonjour"
ch2 ← "jour"
x ← trouve (ch1, ch2) // x = 3
Les fonctions en C
ASD II
20
 Toutes les fonctions de manipulation des chaines de caractères en C nécessitent l’utilisation de
la bibliothèque « string.h »
 strlen(ch) : renvoie le nombre de caractère de la chaine « ch » sans le caractère fin de la
chaine ’0’.
Exemple:
char ch[10] = "bonjour";
int L;
L= strlen(ch);
printf("longueur ch=%d", L); /*  longueur ch= 7 */
Les fonctions en C (suite)
ASD II
21
 strcpy (chaine2, chaine1) : permet de copier chaine1 vers chaine2
Exemple:
char ch1[20], * ch2;
ch1= "bonjour" ;
strcpy (ch2, ch1);
puts (ch2); //  bonjour
 strncpy (chaine2, chaine1,n) : permet de copier n caractères de chaine1 vers chaine2
Exemple:
char ch1[20], * ch2;
ch1= "bonjour" ;
strncpy (ch2, ch1, 3);
printf ("ch2=%s", ch2); //  "bon"
Les fonctions en C(suite)
ASD II
22
 strcat (chaine1, chaine2) : Ajoute chaine2 à la fin de chaine1
Exemple:
char ch1[20] = "bon";
char ch2[20] = "jour";
strcat(ch1, ch2);
puts(ch1); // “bonjour”
 strncat (chaine1, chaine2, n) : copier n caractères de la chaîne chaine2 à la fin de la chaîne1
(même le caractère ‘0’)
Exemple:
char ch1[20] = "bonjour";
char ch2[20] = "monsieur";
strncat(ch1, ch2, 2);
printf(" ch1=%s", ch1); //  ch1 = “bonjourmo”
Les fonctions en C(suite)
ASD II
23
 strcmp(chaine1, chaine2): permet de comparer lexicographiquement deux chaines: chaine1 et
chaine2. La fonction retourne R:
 R = 0 si chaine1 == chaine2
 R < 0 si chaine1 précède chaine2
 R > 0 si chaine1 suit chaine2
Exemple:
char ch1[20], ch2[20];
int res;
ch1= "bon"; ch2= "jour";
res=strcmp(ch1, ch2);
printf("%d", res); // res = -1
Activité1
Ecrire un algorithme (programme C) qui permet d’afficher les caractères
d’une chaine dans l’ordre inverse
Exemple: entrée: "bonjour" sortie: "ruojnob"
ASD II
24
Activité 2
Ecrire un programme qui lit deux chaine A et B et ajoute la chaine B à la fin de
la chaine A sans utilisé la fonction strcat() .
Utiliser deux pointeurs pA et pB pour effectuer l’opération.
ASD II
25
Activité: correction
ASD II
26
Pointeurs & chaine de caractères
27
 L'utilisation des pointeurs vers les chaînes est aussi très courante (tout comme avec les tableaux)
pour des raisons de commodité de notation, efficacité et rapidité d'exécution.
Exemple : La fonction copiage permet de copier une chaîne source dans une chaine destination
Sans pointeur Avec pointeur
void copiage ( char dest[ ], char
source[ ])
{
int i ;
for (i = 0 ; source[i] ! =‘0' ; i++ )
dest[i] = source[i] ;
dest[i] =‘0';
}
void copiage ( char *dest, char
*source)
{
for (; *source != ‘0' ; source++, dest++)
*dest = *source ;
*dest =‘0' ;
}
Les tableaux de chaines de caractères
ASD II
28
 Un tableau de chaines de caractères est un tableau dont chaque élément est une chaine. Chaque case
contient ainsi un tableau de caractères.
 Tableau à deux dimensions de caractères.
 Déclaration:
 Exemples:
 char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};
 7 chaines de longueur max 9 caractères
 char * MOIS [12] = {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};
 12 chaines de longueurs inconnues
char nomtableau [Nbr_chaine ][Nbr_caractères_par_chaine]
Les tableaux de chaines de caractères(suite)
ASD II
29
Exemple : char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};
char * MOIS [12] = {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};
 Afficher une chaine :
printf("%s", JOUR[2])  permet d’afficher "mercredi"
printf("%s", MOIS[0])  permet d’afficher "jan"
 Afficher des caractères :
for (i=0 ;i<7 ;i++)
printf("%c", JOUR[i][0]) ;  permet d’afficher le premier caractère de chaque chaine
 Affectation : pas d’affectation directe
JOUR [4] = "vendredi" ; => Utiliser strcpy : strcpy(JOUR[4], "vendredi") ;
Conclusion
 Dans ce chapitre nous avons :
 Présenter la définition et la déclaration d’une chaine de caractères
 Détailler les différentes fonctions prédéfinie en algorithme et en C pour
la manipulation des chaines de caractères
 Montrer la relation entre pointeur et chaine de caractères
 Manipuler les tableaux de chaines de caractères
ASD II
30

Contenu connexe

Tendances

Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CAbdelouahed Abdou
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheRiadh Harizi
 
Modificateurs d'accès en java
Modificateurs d'accès en javaModificateurs d'accès en java
Modificateurs d'accès en javaMohamed Bah
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Fabio Hernandez
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Conception web et ses elements créer un site web
Conception web et ses elements   créer un site webConception web et ses elements   créer un site web
Conception web et ses elements créer un site webStabl Web
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: MatriceInforMatica34
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxHathat10
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfFadouaBouafifSamoud
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Fabio Hernandez
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 

Tendances (20)

Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
 
Info reseaux
Info reseaux Info reseaux
Info reseaux
 
Modificateurs d'accès en java
Modificateurs d'accès en javaModificateurs d'accès en java
Modificateurs d'accès en java
 
Initiation au html
Initiation au htmlInitiation au html
Initiation au html
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Conception web et ses elements créer un site web
Conception web et ses elements   créer un site webConception web et ses elements   créer un site web
Conception web et ses elements créer un site web
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptx
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdf
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 

Similaire à ch7_les chaines de caractères.pdf

Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxFerdawsBNasrBSalah
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Chapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfChapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfShiniGami0o0
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage CFahad Golra
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationkamalomari2
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4Régis Lutter
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 

Similaire à ch7_les chaines de caractères.pdf (20)

1763685
17636851763685
1763685
 
chapitre1.ppt
chapitre1.pptchapitre1.ppt
chapitre1.ppt
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Chapitre1
Chapitre1Chapitre1
Chapitre1
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptx
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Chapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfChapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdf
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'application
 
Pointeuren c
Pointeuren cPointeuren c
Pointeuren c
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Initiation r
Initiation rInitiation r
Initiation r
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Le langage C
Le langage CLe langage C
Le langage C
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 

Plus de FadouaBouafifSamoud

Plus de FadouaBouafifSamoud (8)

Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
ch6 les sous programmes.pdf
ch6 les sous programmes.pdfch6 les sous programmes.pdf
ch6 les sous programmes.pdf
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdf
 
ch4_les listes.pdf
ch4_les listes.pdfch4_les listes.pdf
ch4_les listes.pdf
 
ch3_les variables_dynamiques.pdf
ch3_les variables_dynamiques.pdfch3_les variables_dynamiques.pdf
ch3_les variables_dynamiques.pdf
 
Ch2_ la récursivité.pdf
Ch2_ la récursivité.pdfCh2_ la récursivité.pdf
Ch2_ la récursivité.pdf
 
Ch1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdfCh1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdf
 

Dernier

MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfssuser40e112
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurdinaelchaine
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxpopzair
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 

Dernier (20)

MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteur
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptx
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 

ch7_les chaines de caractères.pdf

  • 1. 1 Algorithmique & structures de données I 1ère IAG Responsable : Dr. Fadoua Bouafif
  • 2. Chapitre 7 Les chaînes de caractères 2
  • 3. Objectifs ASD II  Savoir les chaines de caractères et leurs caractéristiques  Apprendre la manipulation des chaines de caractères en algorithmique et en langage C  Définir les fonctions prédéfinies des chaines de caractères en algorithmique et en langageC 3
  • 4. Plan ASD II 1) Introduction 2) Définition & Déclaration 3) Opérations sur les chaînes 4) Fonctions & Opérations prédéfinies 5) Tableaux de chaînes de caractères 6) Conclusion 4
  • 5. Introduction  Le type de données chaine de caractères est manipulé comme un tableau de caractères mais il diffère dans la déclaration.  Nous allons détailler dans cette partie:  La declaration  La manipulation  Quelques exemples d’utilisation ASD II 5
  • 6. Définition-Déclaration ASD II  Une chaîne de caractère:  Est une structure de données homogène,  Permet le stockage, dans une même variable, un nombre fini d'éléments de types caractères.  C’est un tableau de caractères qui se termine par le caractère ‘0’ (En C, NULL).  Syntaxe: 6 En Algorithme En C var : nom_chaine: chaine[taille] char nom_chaine [taille]; // taille connue Ou bien char * nom_chaine ; // taille non connue
  • 7. Définition-Déclaration (suite) ASD II 7 ‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘0’ Exemple:  Pour représenter la chaîne de caractères " bonjour ", un tableau de huit caractères est définit: char ch[8] = {‘b’, ’o’, ’n’, ’j’, ’o’, ’u’, ’r’, '0'}; Ou char ch[8] ="bonjour"; ch: En Algorithme En C var : ch : chaine[50] //chaine de 49 caractères + caractère de fin de chaine ‘0’ //déclaration d’une chaine sans initialisation char ch[50]; char * ch; //déclaration d’une chaine avec initialisation char nom[20]= {‘a’, ‘l’, ‘i’, ‘0’};
  • 8. ASD II 8 Opérations sur les chaines  Pour accéder à une case d'une chaine donnée, il faut utiliser:  le nom (identificateur) de la variable, et  le numéro de la case.   Exemples: ch[3]; // ‘j’ ch[5]; // ‘u’ nomChaine [indice] ‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘0’ ch: indice: 0 1 2 3 4 5 6 7
  • 9. Opérations sur les chaines (suite) ASD II 9  Toutes les opérations élémentaires peuvent être appliquées sur une chaine de caractères.  Exemple : En Algorithmique En C //lire en bloc la chaine "nom" lire(nom) scanf ("%s", nom) ; ou gets (nom) ; //afficher en bloc la chaine "nom" écrire(nom) printf("%s", nom) ; ou puts (nom) ; //affecter le caractère ‘A’ à la 2ème case de la chaine mot mot[1]←’A’ mot[1]=‘A’; //lecture du caractère d’indice 20 de la chaine nom lire (nom[20]) scanf("%c ", &nom[20]); //affecter la chaine "ABCD" à la chaine mot mot ←"ABCD" mot = "ABCD" ;
  • 10. Remarques en C ASD II 10  L’affichage d’une chaine de caractères peut être fait en bloc ou bien caractère par caractère. Exemple1: Affichage d’une chaine caractère par caractère void main() { char ch[20]="cours programmation"; /* déclaration d'une chaine initialisée*/ printf("la valeur de la chaine est:"); for(int i=0; ch[i] != '0’; i++) /* parcourir la chaine ch */ printf("%c", ch[i]); /* affichage caractère par caractère */ }
  • 11. Remarques en C (suite) ASD II 11 Exemple2: Affichage d’une chaine en bloc  Les chaines de caractères peuvent être comparées sur la base de l'ordre des codes ASCII de chacun des caractères qui la constituent. void main() { char ch1[20] ; //déclartion d'une chaine de taille max=20 printf("donner une chaine :") ; scanf("%s", ch1) ; //ou gets(ch1) ; // Saisie d'une chaine char ch2[14]= "Programmation" ; // déclaration d'une chaine initialisée printf (" la chaine est : %s",ch2) ; //ou puts(ch2) ; //Affichage de la chaine }
  • 12. Fonctions et opérations prédéfinies  Les opérateurs en algorithmique  Les fonctions en algorithmique  Les fonctions en C ASD II 12
  • 13. Les opérateurs en Algorithme ASD II 13  La concaténation (+) : permet de concaténer deux chaines (en C n’existe pas) Exemple : var : ch1, ch2 : chaine[20] // déclaration de deux chaines ch1←"bonjour" // initialiser ch1 à la chaine "bonjour " ch2←"à tous" // initialiser ch2 à la chaine "à tous " ch1←ch1+ch2 // concaténer ch1 et ch2 dans la variable ch1 écrire (ch1) // afficher le contenu de ch1  "bonjour à tous"
  • 14. Les opérateurs en Algorithme (suite) ASD II 14  Ajout d'un caractère (°) : permet d'ajouter un caractère à droite ou à gauche d'une chaine définie. Exemple : var : ch1 : chaine[20] // déclaration de ch1 ch1←"onjou" // initialiser ch1 à la chaine "onjou " ch1←'B' ° ch1 // Ajouter le caractère ‘B’ à gauche de ch1 écrire (ch1) // afficher le contenu de ch1  "Bonjou" ch1← ch1 ° ‘r’ // Ajouter le caractère ‘r’ à droite de ch1 écrire (ch1) // afficher le contenu de ch1  "Bonjour"
  • 15. Les fonctions en Algorithme ASD II 15  longueur (chaine) : renvoie le nombre de caractère d'une chaine sans le caractère de fin de la chaine ’0’. Exemple : var : ch : chaine[10] L : entier …… ch←"bonjour" L ← longueur(ch) écrire("longueur de ch=", L)  L=7
  • 16. Les fonctions en Algorithme (suite) ASD II 16  souschaine(chaine, position, n) : renvoie une sous-chaine (extrait de la chaine), de n caractères, à partir d’une position donnée. Exemple : var : mot, ch : chaine[255] …… mot ← "bonjour" ch ← souschaine(mot, 1, 3) "onj"
  • 17. Les fonctions en Algorithme (suite) ASD II 17  gauche(chaine, n) : renvoie les n caractères les plus à gauche dans une chaine. Exemple: var : mot, ch : chaine[255] ….. mot ← "bonjour" ch ← gauche(mot, 3)  "bon"
  • 18. Les fonctions en Algorithme (suite) ASD II 18  droit(chaine, n) : renvoie les n caractères les plus à droite dans une chaine. Exemple : var : mot, ch : chaine[255] ……. mot ← "bonjour" ch ← droit(mot, 4) "jour"
  • 19. Les fonctions en Algorithme(suite) ASD II 19  trouve(chaine1, chaine2):  renvoie la position de chaine2 dans chaine1.  renvoie 0 si chaine 2 n'existe pas dans chaine 1. Exemple : var : ch1, ch2 : chaine[255] x : entier ….. ch1 ← "bonjour" ch2 ← "jour" x ← trouve (ch1, ch2) // x = 3
  • 20. Les fonctions en C ASD II 20  Toutes les fonctions de manipulation des chaines de caractères en C nécessitent l’utilisation de la bibliothèque « string.h »  strlen(ch) : renvoie le nombre de caractère de la chaine « ch » sans le caractère fin de la chaine ’0’. Exemple: char ch[10] = "bonjour"; int L; L= strlen(ch); printf("longueur ch=%d", L); /*  longueur ch= 7 */
  • 21. Les fonctions en C (suite) ASD II 21  strcpy (chaine2, chaine1) : permet de copier chaine1 vers chaine2 Exemple: char ch1[20], * ch2; ch1= "bonjour" ; strcpy (ch2, ch1); puts (ch2); //  bonjour  strncpy (chaine2, chaine1,n) : permet de copier n caractères de chaine1 vers chaine2 Exemple: char ch1[20], * ch2; ch1= "bonjour" ; strncpy (ch2, ch1, 3); printf ("ch2=%s", ch2); //  "bon"
  • 22. Les fonctions en C(suite) ASD II 22  strcat (chaine1, chaine2) : Ajoute chaine2 à la fin de chaine1 Exemple: char ch1[20] = "bon"; char ch2[20] = "jour"; strcat(ch1, ch2); puts(ch1); // “bonjour”  strncat (chaine1, chaine2, n) : copier n caractères de la chaîne chaine2 à la fin de la chaîne1 (même le caractère ‘0’) Exemple: char ch1[20] = "bonjour"; char ch2[20] = "monsieur"; strncat(ch1, ch2, 2); printf(" ch1=%s", ch1); //  ch1 = “bonjourmo”
  • 23. Les fonctions en C(suite) ASD II 23  strcmp(chaine1, chaine2): permet de comparer lexicographiquement deux chaines: chaine1 et chaine2. La fonction retourne R:  R = 0 si chaine1 == chaine2  R < 0 si chaine1 précède chaine2  R > 0 si chaine1 suit chaine2 Exemple: char ch1[20], ch2[20]; int res; ch1= "bon"; ch2= "jour"; res=strcmp(ch1, ch2); printf("%d", res); // res = -1
  • 24. Activité1 Ecrire un algorithme (programme C) qui permet d’afficher les caractères d’une chaine dans l’ordre inverse Exemple: entrée: "bonjour" sortie: "ruojnob" ASD II 24
  • 25. Activité 2 Ecrire un programme qui lit deux chaine A et B et ajoute la chaine B à la fin de la chaine A sans utilisé la fonction strcat() . Utiliser deux pointeurs pA et pB pour effectuer l’opération. ASD II 25
  • 27. Pointeurs & chaine de caractères 27  L'utilisation des pointeurs vers les chaînes est aussi très courante (tout comme avec les tableaux) pour des raisons de commodité de notation, efficacité et rapidité d'exécution. Exemple : La fonction copiage permet de copier une chaîne source dans une chaine destination Sans pointeur Avec pointeur void copiage ( char dest[ ], char source[ ]) { int i ; for (i = 0 ; source[i] ! =‘0' ; i++ ) dest[i] = source[i] ; dest[i] =‘0'; } void copiage ( char *dest, char *source) { for (; *source != ‘0' ; source++, dest++) *dest = *source ; *dest =‘0' ; }
  • 28. Les tableaux de chaines de caractères ASD II 28  Un tableau de chaines de caractères est un tableau dont chaque élément est une chaine. Chaque case contient ainsi un tableau de caractères.  Tableau à deux dimensions de caractères.  Déclaration:  Exemples:  char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};  7 chaines de longueur max 9 caractères  char * MOIS [12] = {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};  12 chaines de longueurs inconnues char nomtableau [Nbr_chaine ][Nbr_caractères_par_chaine]
  • 29. Les tableaux de chaines de caractères(suite) ASD II 29 Exemple : char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; char * MOIS [12] = {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};  Afficher une chaine : printf("%s", JOUR[2])  permet d’afficher "mercredi" printf("%s", MOIS[0])  permet d’afficher "jan"  Afficher des caractères : for (i=0 ;i<7 ;i++) printf("%c", JOUR[i][0]) ;  permet d’afficher le premier caractère de chaque chaine  Affectation : pas d’affectation directe JOUR [4] = "vendredi" ; => Utiliser strcpy : strcpy(JOUR[4], "vendredi") ;
  • 30. Conclusion  Dans ce chapitre nous avons :  Présenter la définition et la déclaration d’une chaine de caractères  Détailler les différentes fonctions prédéfinie en algorithme et en C pour la manipulation des chaines de caractères  Montrer la relation entre pointeur et chaine de caractères  Manipuler les tableaux de chaines de caractères ASD II 30