.CPICIG%
.CPICIG%
2TÃ 2T ÃRCT RCT Ã Ã GVRTÃ GVRT ÃUGPV UGPVÃ Ã RCT RCT /$GPEJTKHC
/$GPEJTKHC
Année Universitaire 2006/2007
7PKXGTUKV
7PKXGTUKVÃ Ã /QJCOOGF8 /QJCOOGF 8 #IFCN #IFCN (CEWNV
(CEWNVÃ Ã FGUUEKGPEGUFG4CDCV FGUUEKGPEGUFG4CDCV
&
& ÃRCTVGOGPVFG/CVJ Ã RCTVGOGPVFG/CVJÃ ÃOCVKSWGGV+PHQTOCVKSWG OCVKSWGGV+PHQTOCVKSWG
6CDNGFGOCVK
6CDNGFGOCVKÂ ÂTGU TGU
CHAPITRE 1 CHAPITRE 1 : : Introduction Introduction
Historique du langage C Historique du langage C
Caract Caracté éristiques du langage C ristiques du langage C
Diff Diffé érentes phases de la programmation en C rentes phases de la programmation en C
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 2 CHAPITRE 2 : : Notions de base Notions de base
Premier programme en langage C Premier programme en langage C
Composantes d Composantes d’ ’un programme en C un programme en C
Discussion du programme Discussion du programme premier_prog premier_prog
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 3 CHAPITRE 3 : : Types de base, Opé Types de base, Op érateurs et expression rateurs et expression
Les types simplesLes types simples
DéDéclaration des variables simplesclaration des variables simples
Les opéLes opérateurs standardsrateurs standards
Les expressions et les instructionsLes expressions et les instructions
PrioritéPrioritéet associativitet associativitéédes opédes opérateursrateurs
Les conversions de typeLes conversions de type
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 4 CHAPITRE 4 : : Lire & Ecrire des donné Lire & Ecrire des donn ées es
Ecriture formatéEcriture formatée de donne de donnéées : es : printfprintf()()
Lecture formatéLecture formatée de donne de donnéées : es : scanfscanf()()
Ecriture d’Ecriture d’un caractun caractèère : re : putcharputchar()()
Lecture d’Lecture d’un caractun caractèère : re : getchargetchar()()
CHAPITRE 5 CHAPITRE 5 : : Structures de contrôle Structures de contrôle
Structure de choix Structure de choix L'instruction
L'instruction if if ; L'instruction d'aiguillage switch ; L'instruction d'aiguillage switch
Structures ré Structures r ép pé étitives titives L'instruction d'it
L'instruction d'ité ération ration while while ; L'instruction d'ité ; L'instruction d'it ération ration do do… …while while ; L'instruction d'ité ; L'instruction d'it ération ration for for
Les instruction break Les instruction break et continue et continue
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 6 CHAPITRE 6 : : Tableaux Tableaux
Dé D éfinition finition
Tableaux à Tableaux à une dimension une dimension (Vecteurs) (Vecteurs)
DDééclaration ; Mclaration ; Méémorisation ; morisation ; ……
Tableaux à Tableaux à plusieurs dimensions plusieurs dimensions
D Dé éclaration : claration :
Tableaux Tableaux à à deux dimensions deux dimensions (matrices) : (matrices) :
DDééclaration ; Mclaration ; Méémorisation ; morisation ; ……
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 7 CHAPITRE 7 : : Pointeurs Pointeurs
DéDéfinition finition
DéDéclaration dclaration d’’un pointeurun pointeur
OpéOpérations rations éélléémentaires sur les pointeursmentaires sur les pointeurs
Pointeurs et tableauxPointeurs et tableaux
Pointeurs et tableaux àPointeurs et tableaux àdeux dimensionsdeux dimensions
Tableaux de pointeursTableaux de pointeurs
Allocation dynamique de la mAllocation dynamique de la méémoire moire
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
%*#2+64' %*#2+64' $ $
CHAPITRE 9 CHAPITRE 9 : : Chaî Cha înes de caract nes de caractè ères res
DéDéfinitionfinition
DéDéclaration et mclaration et méémorisation morisation
ChaîChaînes de caractnes de caractèères constantesres constantes
Initialisation d’Initialisation d’une chaune chaîîne ne ààla déla définitionfinition
Ordre alphabéOrdre alphabétique et lexicographiquetique et lexicographique
Manipulation des chaîManipulation des chaînes de caractnes de caractèères res
Tableaux de chaîTableaux de chaînes de caractnes de caractèères res
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
%*#2+64' %*#2+64' %& %& $ $ "'( ( "'( ( '' ''
!" # !" #
!" # !" #
!" !" # #
!" "" #" !" "" # "
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
CHAPITRE 11 CHAPITRE 11 : : Fichiers Fichiers
Dé D éfinitions et propri finitions et proprié ét t és é s
La mé La m émoire tampon moire tampon
Fichiers de texte Fichiers de texte et fichiers binaires et fichiers binaires
Fichiers standards Fichiers standards
Dé D éclaration d claration d’ ’un fichier un fichier
Ouverture Ouverture et et fermeture fermeture d’ d ’un fichier un fichier
Traitement du contenu d’ Traitement du contenu d ’un fichier un fichier
Dé D étection de la tection de la fin de fichier fin de fichier
Dé D éplacement placement dans le fichier dans le fichier
Gestion des erreurs Gestion des erreurs
Quelques complé Quelques compl éments ments
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
%$
%$
1. Historique du langage C 1. Historique du langage C
EnEn1972, dans les 1972, dans les ‘‘Bell Bell LaboratoriesLaboratories’’, Ritchie a con, Ritchie a conççu le u le langage C pour d
langage C pour déévelopper une version portable du systvelopper une version portable du systèème me dd’’exploitation UNIX.exploitation UNIX.
En 1978En 1978, le duo , le duo KernighanKernighan/ Ritchie a publi/ Ritchie a publiééla déla définition finition classique du langage C,
classique du langage C,
En 1983En 1983, le , le ‘‘AmericanAmericanNational Standards National Standards InstituteInstitute’’(ANSI) (ANSI) chargeait une commission de mettre au point
chargeait une commission de mettre au point ‘‘une dune dééfinition finition explicite et ind
explicite et indéépendante de la machine pour le langage Cpendante de la machine pour le langage C’’. Le . Le rréésultat sultat éétait le standard tait le standard AnsiAnsi--CC..
%$ %$ 2. Caracté 2. Caract éristiques du langage C ristiques du langage C
C
Cest un langage :est un langage :
universeluniversel: permet aussi bien la programmation systè: permet aussi bien la programmation système que la me que la programmation de divers applications (scientifique, de gestion, programmation de divers applications (scientifique, de gestion,
…
…))
de haut niveaude haut niveau: C est un langage structur: C est un langage structuréé(offre plusieurs (offre plusieurs structures de contrôle) et typ
structures de contrôle) et typéé(d(déclarations obligatoires)éclarations obligatoires)
prpréés de la machines de la machine: offre des op: offre des opéérateurs qui sont trrateurs qui sont trèès proches de s proches de ceux du langage machine
ceux du langage machine……
PortablePortable: en respectant le standard ANSI-: en respectant le standard ANSI-C, il est possible C, il est possible d
d’’utiliser le même programme sur dutiliser le même programme sur d’’autres compilateurs.autres compilateurs.
……
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
Edition
Programme objet (.OBJ) Compilation
Edition de lien
Programme exécutable (.EXE) Programme source (.C)
#include…
#include…
#include<graphics.h>
#include<math.h>
…main() { … } Fichiers en-tête
(.h)
graphics.h /* déclarations */
math.h /* déclarations */
…
Bibliothèques précompilées (.lib)
%$)* %$)* Diff Diffé érentes phases de la programmation en C rentes phases de la programmation en C
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
1. Premier programme en langage C 1. Premier programme en langage C
##includeinclude<stdio.h<stdio.h>>
intintmain( )main( ) {{
printf
printf("Bonjour tout le monde("Bonjour tout le monde\\n");n");
return 0 ; return 0 ; }}
Ce programme affiche le message :"Ce programme affiche le message :"Bonjour tout le mondeBonjour tout le monde".".
CHAPITRE 2 CHAPITRE 2 : : Notions de base Notions de base
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
En C, les programmes sont compos
En C, les programmes sont composéés essentiellement de s essentiellement de fonctionsfonctionset de variableset de variables..
2.1 Les fonctions2.1 Les fonctions::
DéDéfinition d'une fonction en C :finition d'une fonction en C :
<
<TypeRTypeRéésultatsultat> <> <NomfonctionNomfonction>>((<<TypePar1TypePar1>, <>, <TypePar2TypePar2>, >, ……)) {{
<
<ddééclarations localesclarations locales> ;> ;
<<instructionsinstructions> ;> ; }
}
En C, une fonction est déEn C, une fonction est définie par :finie par :
une ligne une ligne ddééclarativeclarativequi contient :qui contient :
<<TypeRTypeRéésultatsultat> : type de r> : type de réésultat de la fonctionsultat de la fonction
<<NomfonctionNomfonction> : nom de la fonction> : nom de la fonction
<TypePar1> <NomPar1>, <TypePar1> <NomPar1>, ……: types et noms des paramè: types et noms des paramètres de la fonctiontres de la fonction unun bloc d'instructionsbloc d'instructionsddéélimitlimitéépar les accolades {}, contenant :par les accolades {}, contenant :
<d<dééclarations locales> : dclarations locales> : dééclarations des donnclarations des donnéées locales (c.es locales (c.--àà--d. des donnd. des donnéées uniquement es uniquement connues
connues ààl'intél'intérieur de la fonction).rieur de la fonction).
<instructions> : liste des instructions qui d<instructions> : liste des instructions qui dééfinit l'action qui doit être exfinit l'action qui doit être exéécutcutéée.e.
RemarqueRemarque::
En C, toute instruction simple est terminEn C, toute instruction simple est terminéée par un point virgule ( ; ).e par un point virgule ( ; ).
ExempleExemple::
printfprintf("Bonjour tout le monde") ;("Bonjour tout le monde") ;Composantes dComposantes d’’un programme en Cun programme en C
Chap Chap 2 : 2. Composantes d’ 2 : 2. Composantes d ’un programme en C un programme en C
2.2 La fonction main :
Une fonction et une seule s'appelle main.
C'est la fonction principale des programmes en C ; elle se trouve obligatoirement dans tous les programmes.
L'exécution d'un programme entraîne automatiquement l'appel de la fonction main.
Le type du résultat de main est toujours int (entier). Il n'est pas déclaré explicitement.
L'instruction return 0 ; indique à l'environnement que le programme
Chap
Chap 2 : 2. Composantes d’ 2 : 2. Composantes d ’un programme en C un programme en C
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
2.3 Les variables :
Contiennent les valeurs utilisées pendant l'exécution du programme.
Les noms des variables sont des identificateurs quelconques.
Toute variable doit être déclaréeavant les instructions et son typespécifié dès la déclaration.
Les différents types de variables simples seront discutés dans le chapitre suivant.
Chap Chap 2 : 2. Composantes d’ 2 : 2. Composantes d ’un programme en C un programme en C
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007
2.4 Les identificateurs:
Les noms des fonctions et des variables en C sont composés d'une suite de lettres et de chiffres, plus le caractère souligné ( _ ).
Le 1er caractère doit être une lettre.
Exemples :
Remarques :
Le caractère souligné est aussi considéré comme une lettre.
Ces identificateurs sont réservés :
auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while.
C distingue les minuscules et les majuscules. PGCD et Pgcd sont deux identificateurs différents.
Chap
Chap 2 : 2. Composantes d’ 2 : 2. Composantes d ’un programme en C un programme en C
M. Benchrifa : cours du langage C : Filière SMI : Semestre 3 : 2006/2007 2.5 Les commentaires :
$
$
un commentaire sur une ligne commence par les caractères //.
un commentaire multilignes commence par les caractères /* et se termine par */.
Al’intérieur de ces délimiteurs, vous avez droit à toute suite de caractères (sauf évidemment */).
attention : on ne peut donc pas imbriquer des commentaires.
/***********************************/
/* ce programme vous dit bonjour */
/***********************************/
/* fichier d’entete pour utiliser la fonction printf
*/#include <stdio.h>
/* la fonction principale main */
int main()
{printf(‘‘Bonjour’’); // afficher Bonjour return 0;
}
Chap Chap 2 : 2. Composantes d’ 2 : 2. Composantes d ’un programme en C un programme en C
2.6 Discussion du programme Premier_prog
Le programme ne contient pas de variables, donc le bloc de déclarations est vide.
la fonction main contient deux instructions :
l'appelde la fonction printf avec l'argument "Bonjour tout le monde\n" qui affiche le message Bonjour tout le monde.
L'instruction return 0 ; qui retourne la valeur 0 comme code d'erreurà l'environnement.
La séquence de symboles '\n' ordonne un passage à la ligne suivante.
La fonction printf fait partie de la bibliothèque de fonctions standard <stdio>, qui gère les entrées et les sorties de données.
La 1ère ligne du programme #include <stdio.h> : informe le compilateur d'inclure le fichier "stdio.h" dans le texte du programme. Ce fichier contient les informations nécessaires pour utiliser les fonctions de la bibliothèque standard <stdio>.