SlideShare une entreprise Scribd logo
1  sur  51
1
Introduction au Langage C,C++
Formation Admin INSTA
Source « Université de Metz »
2
Progression
3
Introduction au Langage C,C++
Mon Premier Programme en C
#include <stdio.h>
void main()
{
printf("Bonjour!n");
}
Inclusion de la bibliothèque
contenant la fonction printf
Point d'entré du programme
première
instruction
Début du programme
Fin du programme
4
Introduction au Langage C,C++
Définition d'une variable
nom:
Unique pour chaque variable
Commence toujours par une lettre
Différenciation minuscule-majuscule
type:
Conditionne le format de la variable en mémoire
Peut être soit un type standard ou un type utilisateur
valeur:
Peut évoluer pendant l'exécution
initialisation grâce à l'opérateur d'affectation
5
Introduction au Langage C,C++
Types de variable
charcaractères
int entiers
short [int] entiers courts
long [int] entiers longs
float nombres décimaux
double nombres décimaux de précision
supérieure
long double nombres décimaux encore plus
précis
unsigned int entier non signé
[..] signifie facultatif
6
Introduction au Langage C,C++
Déclaration d'une variable
Type nom_de_la_variable [= valeur]
Exemple:
int nb;
float pi = 3.14;
char c = 'a';
long i,j,k;
double r = 6.2879821365;
7
Introduction au Langage C,C++
Affichage de la valeur d'une variable
en C
printf("format de l'affichage", variables)
Exemple
int i =8;int j = 10;
printf("i vaut: %d j vaut: %d n",i,j);
float r = 6.28;
printf("le rayon = %f n",r);
Autres formats:
%c caractère
%lf double
%s chaîne de caractères
%e réel en notation scientifique
8
Introduction au Langage C,C++
Affichage de la valeur d'une variable
en C++
cout <<chaîne 1 <<variable 1<<chaîne 2 <<variable 2;
Exemple
int i =8;int j = 10;
cout <<"i vaut:" << i <<"j vaut:"<<j <<'n';
float r = 6.28;
cout<<"le rayon = "<< r <<'n';
9
Introduction au Langage C,C++
Instructions de base
opérateurs de base
+,-,*, /  opérateurs arithmétique de base
%  reste d'une division entière
==  test d'égalité
!= test de différence
<, >, <=, >= test de comparaison
!  négation
||  ou logique pour évaluer une expression
&&  et logique pour évaluer une expression
10
Introduction au Langage C,C++
Instructions de base
opérateurs de base
a = 2+3 valeur de a: 5
r = 3%2 valeur de a: 1
a = (3==3) valeur de a: 1
a = (6==5) valeur de a: 0
a = (2!=3) valeur de a: 1
a = (6<=3) valeur de a: 0
a = !1 valeur de a: 0
a =((3==3) || (6<=3)) valeur de a: 1
a =((3==3) && (6<=3)) valeur de a: 0
11
Introduction au Langage C,C++
Instructions de base
boucle pour
for(expr1;expr2;expr3)
{
instructions
}
expr1: évaluée 1 seule fois en début de boucle
expr2: évaluée avant chaque itération. Si vrai alors
les instructions de la boucle sont exécutées sinon
la boucle est terminée
expr3: évaluée à la fin de chaque itération
12
Introduction au Langage C,C++
Instructions de base
boucle pour
exemple
// somme des 100 premiers entiers
int i,s;
s= 0
for(i=0;i<=100;i = i+1)
{
s = s+i; / / ou s+=i;
}
cout <<"s = "<<s<<'n';
13
Introduction au Langage C,C++
Instructions de base
boucle tant que
while (expression)
{
instructions;
}
expression est évaluée avant chaque itération. Si le
résultat est vrai alors les instructions sont exécutées
sinon on sort de la boucle
exemple
i =0;
n = 20;
while (i<n)
{
i++;
}
14
Introduction au Langage C,C++
Instructions de base
boucle répéter
do
{
instructions;
} while (expression)
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions sont exécutées
sinon on sort de la boucle
exemple
i =0;
n = 20;
do
{
i++;
} while(i<n)
15
Introduction au Langage C,C++
Instructions de base
instruction conditionnelle simple si alors
if (expression)
{
instructions;
}
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions sont exécutées
sinon on sort de la boucle.
exemple
int i =5;
int n;
if (i<=20)
{
n =0;
}
16
Introduction au Langage C,C++
Instructions de base
instruction conditionnelle simple si alors sinon
if (expression)
{
instructions1;
} sinon
{
instrutions2;
}
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions1 sont
exécutées sinon on exécute l'ensemble instructions2
exemple
int i =5;int n;
if (i<=20)
n =0;
else
n=5;
17
Introduction au Langage C,C++
Instructions de base
instruction conditionnelle multiple
switch (expression)
{
case valeur1:
instructions1;break;
case valeur2:
instructions2;break;
.
.
.
case valeur3:
instruction3;break;
default:
instruction4;break;
}
expression est évaluée. Si le résultat vaut valeur1, alors
instruction1 est exécutée et on quitte le switch, sinon
si expression vaut valeur2, ……, sinon on va dans
default pour exécuter instruction4.
18
Introduction au Langage C,C++
Instructions de base
instruction conditionnelle multiple
exemple
int c='a';
switch (c)
{
case 'a':
file();break;
case 'b':
save();break;
case 'q':
quitter();break;
default:
beep();break;
}
19
Introduction au Langage C,C++
Instructions de base
l'instruction break
permet d'interrompre prématurément une
boucle et de se brancher vers la première
instruction n'appartenant pas à la boucle
exemple:
int i;int n=20;
for (i=0;i<10;i++)
{
if (n==31) break;
n=n+2;
}
cout <<n<<'n';
Quand n vaut
31 alors la
boucle est
interrompue
20
Introduction au Langage C,C++
Les Pointeurs
Deux manières d'utiliser une variable
Par son nom adressage direct
compilateur réserve de la mémoire pour la variable
exemple:
int x =17;
21
Introduction au Langage C,C++
Les Pointeurs
Par son adresse adressage indirect
une variable de type pointeur contient l'adresse
d'une autre variable
Le lien entre pointeur et la variable pointée est
géré par le programmeur
exemple:
int x =17;
int * px = &x;
px
pointe
vers x
22
Introduction au Langage C,C++
Les Pointeurs
déclaration d'un pointeur
type * nom_du_pointeur
exemples
char *buffer;
int *pf;
float *ppi;
 C'est au programmeur d'initialiser le pointeur
23
Introduction au Langage C,C++
Les Pointeurs
initialisation d'un pointeur
Il faut lui fournir l'adresse d'une variable existant en
mémoire
Il doit pointer vers une zone mémoire réservée par le
compilateur comme étant une variable
utilisation de l'opérateur d'adressage &
int f;
int *pf,*pg;
pf = &f;
pg =(int*)malloc(sizeof(int));
.
.
free(gf);
création du
lien entre le
pointeur et la
variable allocation
dynamique
d'une variable
de type int
création du
lien entre pg
et l'espace
mémoire
réservé
libération de
l'espace
réservé
24
Introduction au Langage C,C++
Les Pointeurs
utilisation de l'opérateur d'indirection *
travaille la valeur de la variable pointée
exemples
int i =8;
int *pi;
pi = &i;
cout <<*pi<<'n';
*pi = 19;
cout <<i<<'n';
8
19
25
Introduction au Langage C,C++
Les tableaux statiques à 1 dimension
définition
Ensemble de variables de même type, de
même nom caractérisées par un index.
déclaration
type nom_tableau[dimension]
exemples:
char buffer[80];
int mat[10];
doit être
une
constante
26
Introduction au Langage C,C++
Les tableaux statiques à 1 dimension
accès aux éléments du tableau
Nom_tableau[indice]
exemples:
buffer[5] = 'c';
mat[6] = 10;
 le premier élément commence à l'indice 0 !!
 Les valeurs ne sont pas initialisées !!
 Les débordements ne sont pas vérifiés
27
Introduction au Langage C,C++
Les tableaux statiques à 2 dimensions et
plus
définition
Il s'agit d'un tableau de tableaux
déclaration
type nom_tableau[dim1][dim2]…[dimn]
exemples:
char buffer[20][80];
int mat[6][10];
char livres[100][60][80];
28
Introduction au Langage C,C++
Les tableaux statiques à 2 dimensions
et plus
accès aux éléments
nom_tableau[ind1][ind2]…[indn]
exemples:
livre[30][15][20] = 'c';
mat[5][6] =13;
cout << mat[5][6]<<'n';
29
Introduction au Langage C,C++
Lien entre le nom d'un tableau à 1
dimension et les pointeurs
Nom du tableau = adresse du premier élément
du tableau
nom_tableau[i] peut s'écrire *(nom_tableau+i)
exemples:
char buffer[80];
*buffer = 'C'; accès au premier caractère
*(buffer + 5) = 'V'; accès au 6 ème caractère
30
Introduction au Langage C,C++
Lien entre le nom d'un tableau à 2
dimension et les pointeurs
un tableau 2d est un tableau de tableau de
dimension 1
On peut donc dire que le nom d'un tableau 2d est
l'adresse d'un tableau d'adresse de tableaux de
dimension 1
On dit aussi qu'il s'agit d'un pointeur de pointeur
exemple:
int TAB[6][7];
int **p; déclaration d'un pointeur de pointeur
p = TAB; initialisation du pointeur de pointeur
31
Introduction au Langage C,C++
Lien entre le nom d'un tableau à 2
dimension et les pointeurs
TAB
0
1
2
3
4
5
0 1 2 3 4 5 6
tableaux de pointeurs
vers des tableaux
d'entiers
tableaux d'entiers
32
Introduction au Langage C,C++
Initialisation dynamique d'un tableau
Tableau une dimension
int * t;
t = (int*)malloc(20*sizeof(int));
nom
du
tablea
u
fonction de
calcul
automatiqu
e de la
taille d'un
entier en
octet
fonction
d'allocation
dynamique
de la
mémoire
nombre
d'élément
s dans le
tableau
33
Introduction au Langage C,C++
Initialisation dynamique d'un tableau
Tableau à deux dimensions n*m
déclaration dynamique du tableau de n
pointeurs et des n tableaux à une dimension
de m éléments
quelques lignes de code sont nécessaires
(voir transparent suivant)
34
Introduction au Langage C,C++
Initialisation dynamique d'un tableau
Tableau à deux dimensions n*m
int **TAB,l;
TAB = (int**)malloc(n*sizeof(int*));
for (l=0;l<n;l++)
{
TAB[l] = (int*)malloc(m*sizeof(int));
}
désallocation:
for (l=0;l<n;l++)
free(TAB[l]);
free(TAB);
35
Introduction au Langage C,C++
Les structures de données
intérêt
Rassembler des données hétérogènes
caractérisant une entité pour en faire un
type utilisateur.
exemple:
point dans l'espace 3 entiers
nœud d'un arbre binaire 2 adresses vers les
fils, 3 entiers pour les données du nœud
noms et références des pièces mécaniques
constituant une voiture
600 tableaux de caractères + 600 entiers pour
la référence
36
Introduction au Langage C,C++
Les structures de données
déclaration
struct nom_structure
{
type1 nomchamps1;
type2 nomchamps2;
.
.
.
typeN nomchampsN;
};
37
Introduction au Langage C,C++
Les structures de données
exemple et utilisation
struct pt
{
int x;
int y;
int z;
char nom;
};
main()
{
struct pt p;
}
38
Introduction au Langage C,C++
Les structures de données
simplification de l'écriture
struct pt
{
int x;
int y;
int z;
char nom;
};
typedef struct pt point;
main()
{
point p;
}
typedef struct pt
{
int x;
int y;
int z;
char nom;
} point;
Notations
équivalentes
39
Introduction au Langage C,C++
Les structures de données
accès aux données
Deux cas de figure
On dispose du nom de la variable
Accès par: NomVariable.NomChamps
exemple
main()
{
point p1;
p1.x = 8; p1.y = 9; p1.z = 10;
cout <<p1.x<<p1.y<<p1.z<<'n';
}
40
Introduction au Langage C,C++
Les structures de données
accès aux données
Deux cas de figure
On dispose de l'adresse de la variable (pointeur)
Accès par: NomVariable->NomChamps
exemple
main()
{
point *pp1, p1;
pp1 = &p1;
pp1->x = 8; pp1->y = 9; pp1->z = 10;
cout <<pp1->x<<pp1->y<<pp1->z<<'n';
}
41
Introduction au Langage C,C++
Les fonctions
définition
Ensemble d'instructions pouvant être
appelés de manière répétitive par un nom
déclaration
type arg_ret nom_f( type arg1,type arg2, …type argn)
{
ensemble instructions
}
- arg_ret est l'argument renvoyé par la fonction (instruction
return
- nom_f est le nom de la fonction
- arg1 …argn sont les arguments envoyés à la fonction
42
Introduction au Langage C,C++
Les fonctions
règles d'utilisation
L'ordre, le type et le nombre des arguments
doivent être respectés lors de l'appel de la
fonction
L'appel d'une fonction doit être située après
sa déclaration ou celle de son prototype
(voir exemple transp suivant)
Si la fonction ne renvoie rien alors préciser
le type void
43
Introduction au Langage C,C++
Les fonctions
exemple:
int min(int a, int b);
void main()
{
cout <<min(a,b)<<'';
}
int min(int a, int b)
{
if (a <b) return a;
else return b;
}
Prototype de
la fonction
min
Programme
principal
Fonction min
et son bloc
d'instruction
s
44
Introduction au Langage C,C++
Les fonctions
Les paramètres se passent par valeur
Recopie en mémoire des paramètres dans
des paramètres temporaires.
Toute modification des paramètres dans la
fonction est sans effet sur les paramètres
originelles
Quand on quitte la fonction, les paramètres
temporaires sont effacés de la mémoire
Recopie dans le sous programme appelant de la
valeur du paramètre retourné par la fonction
return.
45
Introduction au Langage C,C++
Les fonctions
exemple:
void permutter(int a, int b)
{
int temp;
temp = a;
a = b;
b= temp;
}
void main()
{
int x=3;int y =5;
permutter(x,y);
cout << "x="<<x<<" y="<<y<<'n';
}
x=3 y=5
Aucune
action sur
les paramètres
x et y
46
Introduction au Langage C,C++
Les fonctions
Passage d'arguments par adresse
On passe non pas la valeur de la variable
mais son adresse
Il est donc possible par les pointeurs de
modifier le contenu de l'adresse, donc la
variable originelle
Permet de modifier plusieurs arguments à
la fois dans une fonction
Permet de passer des tableaux en
argument
47
Introduction au Langage C,C++
Les fonctions
exemple:
void permutter(int *pa, int *pb)
{
int temp;
temp = *pa;
*pa = *pb;
*pb= temp;
}
void main()
{
int x=3;int y =5;
permutter(&x,&y);
cout << "x="<<x<<" y="<<y<<'n';
}
Action sur
les paramètres
x et y
x=5 y=3
48
Introduction au Langage C,C++
Les Fichiers
Les fichiers sont soit:
binaires (un float sera stocké comme il est codé en mémoire
, d'où gain de place mais incompatibilité entre logiciels)
formaté ASCII (un float binaire sera transformé en
décimal puis on écrira le caractère correspondant à chaque
chiffre).
Pour accéder aux données, on le fait
soit:
De manière séquentielle (on accède au contenu dans l'ordre
du stockage)
Par un accès direct (on peut directement accéder à
n'importe quel endroit du fichier)
49
Introduction au Langage C,C++
Les Fichiers
Les Fonctions
Prototypées dans stdio.h, io.h, fcntl.h
Ouverture d’un fichier
handle = open(char *nomfic, int mode);
nomfic: pointeur vers une chaîne de caractère contenant le
chemin, le nom du fichier et l’extension du fichier
mode: variable entière dont chaque bit possède une signification
particulière. Utilisation de constantes prédéfinies
O_RDONLY Ouverture pour lecture seule
O_WRONLY Ouverture pour écriture seule
O_RDWR Ouverture pour lecture et écriture
O_APPEND Ajout des données à la fin du fichier
O_CREAT Crée le fichier s’il n’existe pas
O_BINARY Ouvre le fichier en mode Binaire
(Stockage de l’info comme elle est stockée dans la mémoire de
l’ordinateur)
O_TEXT Ouvre le fichier en mode Texte. (On
mémorise le code ASCII de chaque nombre ou caractère)
50
Introduction au Langage C,C++
Les Fichiers
Les Fonctions
Écriture dans un fichier
int write(int handle, void *bloc, unsigned taille);
Handle: numéro entier caractérisant le fichier (renvoyé lors de
l’ouverture du fichier avec la fonction open)
Bloc: pointeur vers le bloc de données
Taille: taille en octet de ce bloc
Lecture dans un fichier (idem écriture avec fonction
read)
int read(int handle, void *bloc, unsigned taille);
Fermeture d’un fichier
int close(int handle)
51
Introduction au Langage C,C++
Les Fichiers
Exemple
// inclusion des entêtes des fonctions
#include <io.h>
#include <fcntl.h>
#include <string.h>
main()
{
int handle; // numéro caractérisant le fichier
char string[40]; // tableau de caractères
int length; // Variable mémorisant la taille du bloc de données
int x=40; // entier x valant 40
int y=102; // entier y valant 102
// ouverture du fichier Monfichier.txt avec création s'il n'existe pas
// Fichier ouvert en écriture en mode texte
handle = open("c:Monfichi.txt",O_CREAT |O_RDWR |O_APPEND);
// Fonction (idem à printf) qui écrit un message formaté dans un tableau
// de caractères (printf l'écrit vers l'écran)
length=sprintf(string,"valeur de x=%d valeur de y=%d n",x,y);
// Ecriture de la chaîne de caractères dans le fichier
write(handle,string,length);
// Fermeture du fichier
close(handle);
}

Contenu connexe

Similaire à Language-C.ppt

Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en cbenouini rachid
 
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
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Laurent BUNIET
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
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
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 

Similaire à Language-C.ppt (20)

COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Ch02
Ch02Ch02
Ch02
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en 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
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
POO-chapitre2.pptx
POO-chapitre2.pptxPOO-chapitre2.pptx
POO-chapitre2.pptx
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5
 
Cours c#
Cours c#Cours c#
Cours c#
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
Formation python
Formation pythonFormation python
Formation python
 
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
 
Theme 6
Theme 6Theme 6
Theme 6
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 

Dernier

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
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
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxNYTombaye
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
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
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 

Dernier (20)

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
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...
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptx
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
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
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 

Language-C.ppt

  • 1. 1 Introduction au Langage C,C++ Formation Admin INSTA Source « Université de Metz »
  • 3. 3 Introduction au Langage C,C++ Mon Premier Programme en C #include <stdio.h> void main() { printf("Bonjour!n"); } Inclusion de la bibliothèque contenant la fonction printf Point d'entré du programme première instruction Début du programme Fin du programme
  • 4. 4 Introduction au Langage C,C++ Définition d'une variable nom: Unique pour chaque variable Commence toujours par une lettre Différenciation minuscule-majuscule type: Conditionne le format de la variable en mémoire Peut être soit un type standard ou un type utilisateur valeur: Peut évoluer pendant l'exécution initialisation grâce à l'opérateur d'affectation
  • 5. 5 Introduction au Langage C,C++ Types de variable charcaractères int entiers short [int] entiers courts long [int] entiers longs float nombres décimaux double nombres décimaux de précision supérieure long double nombres décimaux encore plus précis unsigned int entier non signé [..] signifie facultatif
  • 6. 6 Introduction au Langage C,C++ Déclaration d'une variable Type nom_de_la_variable [= valeur] Exemple: int nb; float pi = 3.14; char c = 'a'; long i,j,k; double r = 6.2879821365;
  • 7. 7 Introduction au Langage C,C++ Affichage de la valeur d'une variable en C printf("format de l'affichage", variables) Exemple int i =8;int j = 10; printf("i vaut: %d j vaut: %d n",i,j); float r = 6.28; printf("le rayon = %f n",r); Autres formats: %c caractère %lf double %s chaîne de caractères %e réel en notation scientifique
  • 8. 8 Introduction au Langage C,C++ Affichage de la valeur d'une variable en C++ cout <<chaîne 1 <<variable 1<<chaîne 2 <<variable 2; Exemple int i =8;int j = 10; cout <<"i vaut:" << i <<"j vaut:"<<j <<'n'; float r = 6.28; cout<<"le rayon = "<< r <<'n';
  • 9. 9 Introduction au Langage C,C++ Instructions de base opérateurs de base +,-,*, /  opérateurs arithmétique de base %  reste d'une division entière ==  test d'égalité != test de différence <, >, <=, >= test de comparaison !  négation ||  ou logique pour évaluer une expression &&  et logique pour évaluer une expression
  • 10. 10 Introduction au Langage C,C++ Instructions de base opérateurs de base a = 2+3 valeur de a: 5 r = 3%2 valeur de a: 1 a = (3==3) valeur de a: 1 a = (6==5) valeur de a: 0 a = (2!=3) valeur de a: 1 a = (6<=3) valeur de a: 0 a = !1 valeur de a: 0 a =((3==3) || (6<=3)) valeur de a: 1 a =((3==3) && (6<=3)) valeur de a: 0
  • 11. 11 Introduction au Langage C,C++ Instructions de base boucle pour for(expr1;expr2;expr3) { instructions } expr1: évaluée 1 seule fois en début de boucle expr2: évaluée avant chaque itération. Si vrai alors les instructions de la boucle sont exécutées sinon la boucle est terminée expr3: évaluée à la fin de chaque itération
  • 12. 12 Introduction au Langage C,C++ Instructions de base boucle pour exemple // somme des 100 premiers entiers int i,s; s= 0 for(i=0;i<=100;i = i+1) { s = s+i; / / ou s+=i; } cout <<"s = "<<s<<'n';
  • 13. 13 Introduction au Langage C,C++ Instructions de base boucle tant que while (expression) { instructions; } expression est évaluée avant chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; while (i<n) { i++; }
  • 14. 14 Introduction au Langage C,C++ Instructions de base boucle répéter do { instructions; } while (expression) expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; do { i++; } while(i<n)
  • 15. 15 Introduction au Langage C,C++ Instructions de base instruction conditionnelle simple si alors if (expression) { instructions; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle. exemple int i =5; int n; if (i<=20) { n =0; }
  • 16. 16 Introduction au Langage C,C++ Instructions de base instruction conditionnelle simple si alors sinon if (expression) { instructions1; } sinon { instrutions2; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions1 sont exécutées sinon on exécute l'ensemble instructions2 exemple int i =5;int n; if (i<=20) n =0; else n=5;
  • 17. 17 Introduction au Langage C,C++ Instructions de base instruction conditionnelle multiple switch (expression) { case valeur1: instructions1;break; case valeur2: instructions2;break; . . . case valeur3: instruction3;break; default: instruction4;break; } expression est évaluée. Si le résultat vaut valeur1, alors instruction1 est exécutée et on quitte le switch, sinon si expression vaut valeur2, ……, sinon on va dans default pour exécuter instruction4.
  • 18. 18 Introduction au Langage C,C++ Instructions de base instruction conditionnelle multiple exemple int c='a'; switch (c) { case 'a': file();break; case 'b': save();break; case 'q': quitter();break; default: beep();break; }
  • 19. 19 Introduction au Langage C,C++ Instructions de base l'instruction break permet d'interrompre prématurément une boucle et de se brancher vers la première instruction n'appartenant pas à la boucle exemple: int i;int n=20; for (i=0;i<10;i++) { if (n==31) break; n=n+2; } cout <<n<<'n'; Quand n vaut 31 alors la boucle est interrompue
  • 20. 20 Introduction au Langage C,C++ Les Pointeurs Deux manières d'utiliser une variable Par son nom adressage direct compilateur réserve de la mémoire pour la variable exemple: int x =17;
  • 21. 21 Introduction au Langage C,C++ Les Pointeurs Par son adresse adressage indirect une variable de type pointeur contient l'adresse d'une autre variable Le lien entre pointeur et la variable pointée est géré par le programmeur exemple: int x =17; int * px = &x; px pointe vers x
  • 22. 22 Introduction au Langage C,C++ Les Pointeurs déclaration d'un pointeur type * nom_du_pointeur exemples char *buffer; int *pf; float *ppi;  C'est au programmeur d'initialiser le pointeur
  • 23. 23 Introduction au Langage C,C++ Les Pointeurs initialisation d'un pointeur Il faut lui fournir l'adresse d'une variable existant en mémoire Il doit pointer vers une zone mémoire réservée par le compilateur comme étant une variable utilisation de l'opérateur d'adressage & int f; int *pf,*pg; pf = &f; pg =(int*)malloc(sizeof(int)); . . free(gf); création du lien entre le pointeur et la variable allocation dynamique d'une variable de type int création du lien entre pg et l'espace mémoire réservé libération de l'espace réservé
  • 24. 24 Introduction au Langage C,C++ Les Pointeurs utilisation de l'opérateur d'indirection * travaille la valeur de la variable pointée exemples int i =8; int *pi; pi = &i; cout <<*pi<<'n'; *pi = 19; cout <<i<<'n'; 8 19
  • 25. 25 Introduction au Langage C,C++ Les tableaux statiques à 1 dimension définition Ensemble de variables de même type, de même nom caractérisées par un index. déclaration type nom_tableau[dimension] exemples: char buffer[80]; int mat[10]; doit être une constante
  • 26. 26 Introduction au Langage C,C++ Les tableaux statiques à 1 dimension accès aux éléments du tableau Nom_tableau[indice] exemples: buffer[5] = 'c'; mat[6] = 10;  le premier élément commence à l'indice 0 !!  Les valeurs ne sont pas initialisées !!  Les débordements ne sont pas vérifiés
  • 27. 27 Introduction au Langage C,C++ Les tableaux statiques à 2 dimensions et plus définition Il s'agit d'un tableau de tableaux déclaration type nom_tableau[dim1][dim2]…[dimn] exemples: char buffer[20][80]; int mat[6][10]; char livres[100][60][80];
  • 28. 28 Introduction au Langage C,C++ Les tableaux statiques à 2 dimensions et plus accès aux éléments nom_tableau[ind1][ind2]…[indn] exemples: livre[30][15][20] = 'c'; mat[5][6] =13; cout << mat[5][6]<<'n';
  • 29. 29 Introduction au Langage C,C++ Lien entre le nom d'un tableau à 1 dimension et les pointeurs Nom du tableau = adresse du premier élément du tableau nom_tableau[i] peut s'écrire *(nom_tableau+i) exemples: char buffer[80]; *buffer = 'C'; accès au premier caractère *(buffer + 5) = 'V'; accès au 6 ème caractère
  • 30. 30 Introduction au Langage C,C++ Lien entre le nom d'un tableau à 2 dimension et les pointeurs un tableau 2d est un tableau de tableau de dimension 1 On peut donc dire que le nom d'un tableau 2d est l'adresse d'un tableau d'adresse de tableaux de dimension 1 On dit aussi qu'il s'agit d'un pointeur de pointeur exemple: int TAB[6][7]; int **p; déclaration d'un pointeur de pointeur p = TAB; initialisation du pointeur de pointeur
  • 31. 31 Introduction au Langage C,C++ Lien entre le nom d'un tableau à 2 dimension et les pointeurs TAB 0 1 2 3 4 5 0 1 2 3 4 5 6 tableaux de pointeurs vers des tableaux d'entiers tableaux d'entiers
  • 32. 32 Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau une dimension int * t; t = (int*)malloc(20*sizeof(int)); nom du tablea u fonction de calcul automatiqu e de la taille d'un entier en octet fonction d'allocation dynamique de la mémoire nombre d'élément s dans le tableau
  • 33. 33 Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau à deux dimensions n*m déclaration dynamique du tableau de n pointeurs et des n tableaux à une dimension de m éléments quelques lignes de code sont nécessaires (voir transparent suivant)
  • 34. 34 Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau à deux dimensions n*m int **TAB,l; TAB = (int**)malloc(n*sizeof(int*)); for (l=0;l<n;l++) { TAB[l] = (int*)malloc(m*sizeof(int)); } désallocation: for (l=0;l<n;l++) free(TAB[l]); free(TAB);
  • 35. 35 Introduction au Langage C,C++ Les structures de données intérêt Rassembler des données hétérogènes caractérisant une entité pour en faire un type utilisateur. exemple: point dans l'espace 3 entiers nœud d'un arbre binaire 2 adresses vers les fils, 3 entiers pour les données du nœud noms et références des pièces mécaniques constituant une voiture 600 tableaux de caractères + 600 entiers pour la référence
  • 36. 36 Introduction au Langage C,C++ Les structures de données déclaration struct nom_structure { type1 nomchamps1; type2 nomchamps2; . . . typeN nomchampsN; };
  • 37. 37 Introduction au Langage C,C++ Les structures de données exemple et utilisation struct pt { int x; int y; int z; char nom; }; main() { struct pt p; }
  • 38. 38 Introduction au Langage C,C++ Les structures de données simplification de l'écriture struct pt { int x; int y; int z; char nom; }; typedef struct pt point; main() { point p; } typedef struct pt { int x; int y; int z; char nom; } point; Notations équivalentes
  • 39. 39 Introduction au Langage C,C++ Les structures de données accès aux données Deux cas de figure On dispose du nom de la variable Accès par: NomVariable.NomChamps exemple main() { point p1; p1.x = 8; p1.y = 9; p1.z = 10; cout <<p1.x<<p1.y<<p1.z<<'n'; }
  • 40. 40 Introduction au Langage C,C++ Les structures de données accès aux données Deux cas de figure On dispose de l'adresse de la variable (pointeur) Accès par: NomVariable->NomChamps exemple main() { point *pp1, p1; pp1 = &p1; pp1->x = 8; pp1->y = 9; pp1->z = 10; cout <<pp1->x<<pp1->y<<pp1->z<<'n'; }
  • 41. 41 Introduction au Langage C,C++ Les fonctions définition Ensemble d'instructions pouvant être appelés de manière répétitive par un nom déclaration type arg_ret nom_f( type arg1,type arg2, …type argn) { ensemble instructions } - arg_ret est l'argument renvoyé par la fonction (instruction return - nom_f est le nom de la fonction - arg1 …argn sont les arguments envoyés à la fonction
  • 42. 42 Introduction au Langage C,C++ Les fonctions règles d'utilisation L'ordre, le type et le nombre des arguments doivent être respectés lors de l'appel de la fonction L'appel d'une fonction doit être située après sa déclaration ou celle de son prototype (voir exemple transp suivant) Si la fonction ne renvoie rien alors préciser le type void
  • 43. 43 Introduction au Langage C,C++ Les fonctions exemple: int min(int a, int b); void main() { cout <<min(a,b)<<''; } int min(int a, int b) { if (a <b) return a; else return b; } Prototype de la fonction min Programme principal Fonction min et son bloc d'instruction s
  • 44. 44 Introduction au Langage C,C++ Les fonctions Les paramètres se passent par valeur Recopie en mémoire des paramètres dans des paramètres temporaires. Toute modification des paramètres dans la fonction est sans effet sur les paramètres originelles Quand on quitte la fonction, les paramètres temporaires sont effacés de la mémoire Recopie dans le sous programme appelant de la valeur du paramètre retourné par la fonction return.
  • 45. 45 Introduction au Langage C,C++ Les fonctions exemple: void permutter(int a, int b) { int temp; temp = a; a = b; b= temp; } void main() { int x=3;int y =5; permutter(x,y); cout << "x="<<x<<" y="<<y<<'n'; } x=3 y=5 Aucune action sur les paramètres x et y
  • 46. 46 Introduction au Langage C,C++ Les fonctions Passage d'arguments par adresse On passe non pas la valeur de la variable mais son adresse Il est donc possible par les pointeurs de modifier le contenu de l'adresse, donc la variable originelle Permet de modifier plusieurs arguments à la fois dans une fonction Permet de passer des tableaux en argument
  • 47. 47 Introduction au Langage C,C++ Les fonctions exemple: void permutter(int *pa, int *pb) { int temp; temp = *pa; *pa = *pb; *pb= temp; } void main() { int x=3;int y =5; permutter(&x,&y); cout << "x="<<x<<" y="<<y<<'n'; } Action sur les paramètres x et y x=5 y=3
  • 48. 48 Introduction au Langage C,C++ Les Fichiers Les fichiers sont soit: binaires (un float sera stocké comme il est codé en mémoire , d'où gain de place mais incompatibilité entre logiciels) formaté ASCII (un float binaire sera transformé en décimal puis on écrira le caractère correspondant à chaque chiffre). Pour accéder aux données, on le fait soit: De manière séquentielle (on accède au contenu dans l'ordre du stockage) Par un accès direct (on peut directement accéder à n'importe quel endroit du fichier)
  • 49. 49 Introduction au Langage C,C++ Les Fichiers Les Fonctions Prototypées dans stdio.h, io.h, fcntl.h Ouverture d’un fichier handle = open(char *nomfic, int mode); nomfic: pointeur vers une chaîne de caractère contenant le chemin, le nom du fichier et l’extension du fichier mode: variable entière dont chaque bit possède une signification particulière. Utilisation de constantes prédéfinies O_RDONLY Ouverture pour lecture seule O_WRONLY Ouverture pour écriture seule O_RDWR Ouverture pour lecture et écriture O_APPEND Ajout des données à la fin du fichier O_CREAT Crée le fichier s’il n’existe pas O_BINARY Ouvre le fichier en mode Binaire (Stockage de l’info comme elle est stockée dans la mémoire de l’ordinateur) O_TEXT Ouvre le fichier en mode Texte. (On mémorise le code ASCII de chaque nombre ou caractère)
  • 50. 50 Introduction au Langage C,C++ Les Fichiers Les Fonctions Écriture dans un fichier int write(int handle, void *bloc, unsigned taille); Handle: numéro entier caractérisant le fichier (renvoyé lors de l’ouverture du fichier avec la fonction open) Bloc: pointeur vers le bloc de données Taille: taille en octet de ce bloc Lecture dans un fichier (idem écriture avec fonction read) int read(int handle, void *bloc, unsigned taille); Fermeture d’un fichier int close(int handle)
  • 51. 51 Introduction au Langage C,C++ Les Fichiers Exemple // inclusion des entêtes des fonctions #include <io.h> #include <fcntl.h> #include <string.h> main() { int handle; // numéro caractérisant le fichier char string[40]; // tableau de caractères int length; // Variable mémorisant la taille du bloc de données int x=40; // entier x valant 40 int y=102; // entier y valant 102 // ouverture du fichier Monfichier.txt avec création s'il n'existe pas // Fichier ouvert en écriture en mode texte handle = open("c:Monfichi.txt",O_CREAT |O_RDWR |O_APPEND); // Fonction (idem à printf) qui écrit un message formaté dans un tableau // de caractères (printf l'écrit vers l'écran) length=sprintf(string,"valeur de x=%d valeur de y=%d n",x,y); // Ecriture de la chaîne de caractères dans le fichier write(handle,string,length); // Fermeture du fichier close(handle); }