8PRO100 Éléments de programmation Les chaînes de caractères.

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Architecture de machines Codage des informations
Introduction au Langage C,C++
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Développement logiciel sur micro-contrôleurs PIC en C
Cours n° 7 Standard Template Library II.
C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
FLSI602 Génie Informatique et Réseaux
Points importants de la semaine Les pointeurs. Les chaînes de caractères.
Langage de Programmation: I - Le Langage C -
Le binaire L’historique.
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
CODES.
Les structures de données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Algorithmique et programmation Informatique Cours 9 12/11/2001.
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006.
CHAINE DE CARACTERES : Définition :
Lecture et écriture de données
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
8PRO100 Éléments de programmation Les types composés.
Les chaînes de caractères
LANGAGE C LP A2I IUT St DIE
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
PHAN Thúc HàoCréé le 02 Octobre 2006 Code source en langage C++ # include # include Void main ( ) { puts (" Bonjour…..! " ); } Processus de compilation.
Types de données fondamentaux
Faculté Polytechnique de Mons
L’essentiel du langage C
Animateur : Med HAIJOUBI
Introduction au C.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Programmer en langage c
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
Représentation des informations
JavaScript.
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Les types.
8PRO107 Éléments de programmation Les chaînes de caractères.
Un survol du language C.
Module I3 algorithmique et programmation
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
8PRO100 Éléments de programmation Les pointeurs de caractères.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Points importants de la semaine Les caractères.
Introduction au langage C Les entrées-sorties
1 Les caractères En informatique, les caractères sont très importants puisqu’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
UE MAREP Cours 12 : Révisions
Langage de programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
Chapitre 5 La représentation des données
Introduction au langage C
Le codage des nombres en informatique
Informatique 2A Langage C 1 ère séance.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

8PRO100 Éléments de programmation Les chaînes de caractères

Les caractères En informatique, les caractères sont très importants puisqu ’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs ne peuvent manipuler que des séquences de bits. les caractères doivent être encodés en binaire. Un des codes les plus utilisés est le code ASCII. Chaque caractère est encodé à l ’aide de 8 bits: ce qui donne 256 possibilités.

Code ASCII

Code ASCII étendu

Les constantes de type caractère En C une constante de type caractère est un nombre entier écrit sous la forme d’un caractère entre apostrophes, comme ‘a’. La valeur d’une constante de type caractère est égale à la valeur du caractère d’après le jeu de caractère de la machine (ex. ASCII). Exemples: ‘a’ vaut 97 ‘A’ vaut 65 ‘B’ vaut 66 ‘0’ vaut 48

Les séquences d’échappement ‘\a’ caractère d’alerte (sonnerie, bell) ‘\b’ retour en arrière (backspace) ‘\f’ saut de page (formfeed) ‘\n’ fin de ligne (newline) ‘\r’ retour de chariot (carriage return) ‘\t’ tabulation horizontale ‘\v’ tabulation verticale ‘\\’ backslash ‘\?’ point d’interrogation ‘\’’ apostrophe ‘\” ’ guillemet ‘\ooo’ nombre octal ‘\xhh’ nombre hexadécimale

Les constantes de type chaîne Un constante de type chaîne est une séquence de caractères, éventuellement vide, placée entre guillemets. Exemple: "Je suis une chaine " "Bonjour groupe!\n" Note: Les guillemets ne font pas partie de la chaîne. "\"Je suis one chaine\""

Les variables de type caractère Pour declarer une variable de type char, on procède de la façon suivante: char c1; /* c1 est une variable de type caractère */ char c2 = ‘a’; /* c2 est une variable de type caractère initialisée à ‘a’ */

Les entrées et sorties #include <iostream.h> /* fichier d’en-tête pour le C++ */ main(){ char c; cin >> c; cout << c; } #include <stdio.h> /* fichier d’en-tête pour le C */ main(){ char c; c = getchar(); putchar(c); }

Les entrées et sorties Le fichier d’en-tête stdio.h: Contient la déclaration des fonctions standards d’entrée et de sortie (en C) Contient aussi la définition de EOF (End of file). int getchar(void) Retourne le caractère suivant (converti en un int). retourne EOF si la fin du fichier est atteinte ou si une erreur survient. int putchar(char c) Écrit le caractère c. Retourne le caractère écrit ou bien EOF en cas d’erreur.

Exemple 1: Copier des fichiers #include <stdio.h> /* copie l’entrée sur la sortie, première version */ main(){ int c; c = getchar(); while (c != EOF) { putchar(c); }

Exemple 1: Copier des fichiers #include <stdio.h> /* copie l’entrée sur la sortie; première version*/ main(){ int c; c = getchar(); while (c != EOF) { putchar(c); } Pourquoi un int?

Qu'est-ce que EOF? Supposons que le fichier contienne trois entiers : 32 8 15

Qu'est-ce que EOF? Supposons que le fichier contienne trois entiers : 32 8 15

Qu'est-ce que EOF? Supposons que le fichier contienne trois entiers : 32 8 15

Qu'est-ce que EOF? Supposons que le fichier contienne trois entiers : 32 8 15

Exemple 1: Copier des fichiers La valeur retourné par getchar() peut être un des 256 caractères ASCII OU la valeur EOF La fonction getchar() peut donc retourner 257 valeurs possibles. Mais un char est un entier de 8 bits et ne peut donc représenter que 256 valeurs possibles. On doit donc utiliser plus de bits (et donc un int) pour faire la différence entre un caractère et EOF.

Exemple 1: Copier des fichiers Sur SUNENS un int est un entier de 32 bits et EOF s’écrit en binaire de la façon suivante: 11111111111111111111111111111111 32 bits Losrque l’on met EOF dans une variable de type char on ne met que les 8 premiers bits, c’est-à-dire 11111111 = 255 Le caractère dont la valeur est 255 est: ÿ

Exemple 1: Copier des fichiers #include <stdio.h> /* copie l’entrée sur la sortie, seconde version */ main(){ int c; while ((c=getchar()) != EOF) putchar(c); }

Exemple 2: Compter les caractères #include <stdio.h> /* La fonction nbcar compte les caractères en entrée */ int nbcar(){ int nc; nc = 0; while (getchar() != EOF) nc = nc + 1; return nc; }

Exemple 3: Compter les lignes #include <stdio.h> /* La fonction nblignes compte les lignes en entrée */ int nblignes(){ int c, nl; nl = 0; while ((c=getchar()) != EOF) if (c == ‘\n’) /* En fait on compte les nombre de */ nl = nl + 1; /* changement de lignes */ return nl; }

Exemple 4: Compter les mots #include <stdio.h> #define DEDANS 1 /* à l’intérieur d’un mot */ #define DEHORS 0 /* à l’extérieur d’un mot */ /* La fonction nbmots compte les mots en entrée */ int nbmots(){ int c, nm, etat; nm = 0; etat = DEHORS; while ( (c=getchar()) != EOF ) if ( (c == ‘\n’) || (c == ‘ ‘) || (c == ‘\t’) ) else if (etat == DEHORS) { etat = DEDANS; nm = nm + 1; } return nl;

ctype.h Le fichier d’en-tête ctype.h contient la déclaration de fonctions destinées à tester les caractères: isdigit(char c) retourne 1 si c est un chiffre, 0 sinon is lower(char c) retourne 1 si c est une lettre minuscule, 0 sinon isupper(char c) retourne 1 si c est une lettre majuscule, 0 sinon isalpha(char c) retourne 1 si c est une lettre, o sinon isspace(char c) retourne 1 si c est un character d'espacement, 0 sinon et plusieurs autres.

Exemple 5: isdigit(c) #include <stdio.h> int isdigit(char c){ return ( (c >= ‘0’) && (c <=‘9’) ); }

Exemple 6: islower(c) #include <stdio.h> int islower(char c){ return ( (c >= ‘a’) && (c <=‘z’) ); }

Exemple 7: isupper(c) #include <stdio.h> int isupper(char c){ return ( (c >= ‘A’) && (c <=‘Z’) ); }

Exemple 8: isalpha(c) #include <stdio.h> int isalpha(char c){ return ( islower(c) || isupper(c)); }

Remarques Les exemples 5 à 8 pourraient ne pas fonctionner correctement sur un système utilisant un code autre que ASCII Dans ctype.h, ces fonctions prennent un int comme paramètre.

Les chaînes de caractères En C il n’y a pas de variable de type chaîne de caractères. Une chaîne de caractère est un tableau de caractères se terminant par le caractère \0 (le caractère nul ayant la valeur 0) Ainsi la chaîne “Bonjour groupe!” serait représentée de la façon suivante: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 B o n j o u r g r o u p e ! \0

Exemple 9: Lire une ligne #include <stdio.h> /* lireligne: lit une ligne, la met dans s et retourne sa longueur qui doit être au plus lim-1 */ int lireligne( char s[], int lim) { int c, i; for (i=0; i< lim-1 && (c=getchar())!=EOF && c!= ‘\n’; i=i+1) s[i] = c; if (c==‘\n’) { s[i]=c; i = i + 1; } return i;

Exemple 10: Copier une chaîne #include <stdio.h> /* copier: copie le tableau ‘de’ dans le tableau ‘vers’ ; on supose que le tableau vers est assez long */ void copie( char de[], char vers[]) { int i; i = 0; while ( (vers[i] = de[i]) != ‘\0’) i = i + 1; }

Exemple 11: Comparer 2 chaînes #include <stdio.h> /* compare: Retourne -1, 0, ou 1 selon que chaine1 est lexicographiquement plus petite, égale ou plus grande que chaine2. void compare( char chaine1[], char chaine2[]) { int i; i = differe_ou(chaine1, chaine2); /* differe_ou retourne la première position où chaine1 et chaîne2 diffèrent. */ if ( chaine1[i] < chaine2[i] ) return -1; else if ( chaine1[i] > chaine2[i] ) return 1; else return 0; }

Exemple 11: Comparer 2 chaînes #include <stdio.h> /* differe_ou: Retourne la première position où chaine1 et chaîne2 diffèrent. Retourne la position du caractère ‘\0’ si les deux chaînes sont égales. */ int differe_ou( char chaine1[], char chaine2[]) { int i; i = 0; while ( chaine1[i] != ‘\0’ && chaine1[i] = =chaine2[i]) i = i + 1; return i; }

Exemple 12: Initialiser une chaîne #include <stdio.h> char mot1[80]="bonjour"; char mot2[80]={'b', 'o', 'n', 'j', 'o', 'u', 'r', '\0'}; for (i=0; mot1[i]; i++) putchar(mot1[i]); for (i=0; mot2[i]; putchar(mot2[i++]));

string.h Le fichier d’en-tête string.h contient des déclarations de fonctions permettant de manipuler des chaînes de caractères. char* strcpy(char[], char[]) copie la première chaine dans la seconde char* strcat (char[], char[]) concatène les deux chaînes int strcmpr (char[], char[]) compare deux chaînes int strlen(char[]) retourne la longueur d’une chaîne et beaucoup d’autres.

Exemple 13: chercher un mot #include <stdio.h> char mot1[80]="bonjour"; char mot2[80]={'b', 'o', 'n', 'j', 'o', 'u', 'r', '\0'}; for (i=0; mot1[i]; i++) putchar(mot1[i]); for (i=0; mot2[i]; putchar(mot2[i++]));