Académique Documents
Professionnel Documents
Culture Documents
C ET C++
Titre :
I NITIATION À LA PROGRAMMATION IMPÉRATIVE
Enseignant :
M. NGANMENI L UTHER
IAI DE BAFOUSSAM
PREMIÈRE ANNÉE GÉNIE LOGICIEL
1/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Plan du cours
1 Introduction générale
2 Les outils
3 Les variables
4 Les éléments mathématiques
5 Les structures conditionnelles et les boucles
6 Les fonctions et la programmation modulaire
7 Les pointeurs
8 Les tableaux et les chaines de caractères
9 Les variables personnalisées
10 lire et écrire dans un fichier
11 Allocation dynamique
12 Saisie de texte sécurisée
2/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles Contexte du travail
Les fonctions Objectifs générale
Les pointeurs Objectifs spécifiques
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Introduction
1 Introduction générale
Contexte du travail
Objectifs générale
Objectifs spécifiques
4 Les variables
Contexte de travail
Écrire en C ou C++, c’est comme utiliser une tronçonneuse avec toutes les
protections enlevés." Bob Gray. Auteur.
"Avec C il est facile de se tirer dans le pied. En C++, c’est plus difficile, mais
lorsque vous le faites, vous pulvérisez votre cuisse entière." Bjarne Stroustrup.
Créateur de C++.
4 Les variables
Définition
Programmer
Définition
Programmer
Réaliser des "programmes informatiques"
Processus
Le programme est écrit en un langage dit de haut niveau et le compilateur effectue la
traduction en langage machine moyennant la vérification d’éventuel erreurs.
Nous avons dans l’univers informatique un nombre très élevé de langage et il est fortement
déconseillé pour un informaticien de s’hasarder a avoir ne serai ce qu’un bref aperçu de tout
les langages.
Définition
Code source
Définition
Code source
C’est le code de votre programme écrit dans un langage de haut niveau
Compilateur
Définition
Code source
C’est le code de votre programme écrit dans un langage de haut niveau
Compilateur
Programme servant a traduire un langage de haut niveau en code binaire compréhensible
par la machine
Compilation
Définition
Code source
C’est le code de votre programme écrit dans un langage de haut niveau
Compilateur
Programme servant a traduire un langage de haut niveau en code binaire compréhensible
par la machine
Compilation
processus de traduction d’un langage de haut niveau en un langage compréhensible par la
machine
Exécutable
Définition
Code source
C’est le code de votre programme écrit dans un langage de haut niveau
Compilateur
Programme servant a traduire un langage de haut niveau en code binaire compréhensible
par la machine
Compilation
processus de traduction d’un langage de haut niveau en un langage compréhensible par la
machine
Exécutable
C’est le programme binaire crée par le compilateur
15/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles Qu’entend-on par programmer en C/C++
Les fonctions Élaboration d’un programme
Les pointeurs Pourquoi apprendre le C/C++
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Remarque :
il existe un compilateur différent pour chaque langage de haut niveau.
Un seul langage peut avoir plusieurs compilateur
4 Les variables
6 La structure conditionnelle
Éditeur de texte : C’est un outil logiciel servant a saisir votre code source
Compilateur : outil logiciel servant à transformer (« compiler ») votre source en binaire ;
débogueur : pour vous aider à traquer les erreurs dans votre programme. On n’a
malheureusement pas encore inventé le « correcteur » qui corrigerait tout seul nos erreurs.
Ceci dit, quand on sait bien se servir du débogueur, on peut facilement retrouver ses erreurs !
Choix de l’IDE
Il existe un très grand nombre d’IDE pour programmer en C/C++ parmi lesquelles :
Code : :Blocks
Visual C++
Visual Studio Express
Qt Creator
4 Les variables
Les variables en C/C++
6 La structure conditionnelle
Notion d’adresse
Affectation
int ageDeEtudiant ;
ageDeEtudiant = 15 ;
ageDeEtudiant = 20 ;
char sexeEtudiant ;
sexeEtudiant = ’H’ ;
Création et initialisation
int nbreDeVie = 5 ;
4 Les variables
6 La structure conditionnelle
Exemples
int resultat = 0 ;
resultat = 5+3 ;
resultat = 5/3 ;
resultat = 5-3 ;
31/150 resultat = 5*3Luther
M. NGANMENI ; Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Les différents opérations arithmétique
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Les raccourcis
L’incrémentation, décrémentation, modulo ...
nombre = nombre + 1 ; ⇒ nombre++ ;
nombre = nombre - 1 ; ⇒ nombre– ;
nombre = nombre*2 ; ⇒ nombre*=2 ;
nombre = nombre+4 ; ⇒ nombre+=4 ;
nombre = nombre-4 ; ⇒ nombre-=4 ;
nombre = nombre/4 ; ⇒ nombre/=4 ;
nombre = nombre%4 ; ⇒ nombre%=4 ;
La bibliothèque mathématique
En langage C il existe des bibliothèque dites standard donc qui sont toujours utilisable
comme stdio.h ; et les bibliothèques comme math.h sont utilisé pour effectuer des fonctions
plus poussées en mathématique.
Cette bibliothèque pour l’utiliser on procède de la manière suivante :
32/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Les différents opérations arithmétique
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
4 Les variables
6 La structure conditionnelle
La structure conditionnelle en C
La structure conditionnelle en C
Les différents structure conditionnelles existant en C sont
if
else
else if
Nous aurons aussi a connaitre quelques symboles
== pour l’égalité
> pour la supériorité
< pour l’infériorité
>= supérieur ou égal
<= inférieur ou égal
!= différent de
35/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions La structure conditionnelle en C
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
La structure conditionnelle en C
4 Les variables
6 La structure conditionnelle
7 Les boucles
40/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Généralités
Logique de la boucle
1 L’ordinateur lit les instructions de haut en bas ;
2 puis, une fois arrivé à la fin de la boucle, il repart à la première instruction ;
3 il recommence alors à lire les instructions de haut en bas...
4 ...et il repart au début de la boucle.
Syntaxe de while
Syntaxe de la boucle while (1)
int nombreEntre = 0 ;
while (nombreEntre != 47)
{
printf("Tapez le nombre 47 ! ") ;
scanf("%d", &nombreEntre) ;
}
4 Les variables
6 La structure conditionnelle
7 Les boucles
44/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Généralités
Les fonctions
La programmation modulaire
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Généralité
Tout les programmes en C sont fait des assemblages en petits bouts de codes, et ces petits
bouts de code sont justement ce qu’on appelle des fonctions.
Créer et appeler une fonction
Nous avons vu dans les tout premiers chapitres qu’un programme en C commençait par une
fonction appelée main
Généralité
1 Nous allons apprendre a nous organiser
2 Nous allons découper nos programmes en petits bouts
3 Chaque petit bout de programme sera ce qu’on appelle les fonctions
4 Une fonction effectue une action et renvoie un résultat
5 Une fonction est un morceau de code qui sert à faire quelque chose de précis.
6 fonction possède une entrée et une sortie
Exemple de fonction
Exemple de fonction
Exemple de fonction
Exemple de fonction
Exemple de fonction
Appeler une fonction
Exemple de fonction
Généralité
Généralités
Jusqu’ici nous n’avons travaillé que dans un seul fichier appelé main.c. Pour le moment
c’était acceptable car nos programmes étaient tout petits, mais ils vont bientôt être composés
de dizaines, que dis-je de centaines de fonctions, et si vous les mettez toutes dans un même
fichier celui-là va finir par devenir très long ! C’est pour cela que l’on a inventé ce qu’on
appelle la programmation modulaire. Le principe est tout bête : plutôt que de placer tout le
code de notre programme dans un seul fichier (main.c), nous le « séparons » en plusieurs
petits fichiers.
Prototypes
Le prototype pour annoncer une fonction
On fait en faite une déclaration de la fonction qu’on doit définir plutard a l’en-tête du
fichier main après les includes
Prototypes
Attention
N’oubliez JAMAIS de mettre un point-virgule à la fin d’un prototype. C’est ce qui permet à
l’ordinateur de différencier un prototype du véritable début d’une fonction. Si vous ne le
faites pas, vous risquez d’avoir des erreurs incompréhensibles lors de la compilation.
Headers
Plusieurs fichiers par projet
Il est bon de vous rappeler qu’un projet, c’est l’ensemble des fichiers source de votre
programme.
les chevrons< > sont utilisés pour inclure un fichier se trouvant dans le
répertoire « include » de votre IDE ;
les guillemets " " sont utilisés pour inclure un fichier se trouvant dans le
répertoire de votre projet (à côté des.c, généralement).
Compilation séparée
schéma de compilation
Le préprocesseur
60/150 Compilation
M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Généralités
Les fonctions
La programmation modulaire
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Compilation séparée
schéma de compilation complet
1 Une variable déclarée dans une fonction est supprimée à la fin de la fonction,
elle n’est accessible que dans cette fonction.
2 Une variable déclarée dans une fonction avec le mot-clé static devant n’est pas
supprimée à la fin de la fonction, elle conserve sa valeur au fur et à mesure de
l’exécution du programme.
3 Une variable déclarée en dehors des fonctions est une variable globale,
accessible depuis toutes les fonctions de tous les fichiers source du projet.
4 Une variable globale avec le mot-clé static devant est globale uniquement dans
le fichier dans lequel elle se trouve, elle n’est pas accessible depuis les fonctions
des autres fichier
1 Une fonction est par défaut accessible depuis tous les fichiers du projet, on
peut donc l’appeler depuis n’importe quel autre fichier.
2 Si on veut qu’une fonction ne soit accessible que dans le fichier dans lequel elle
se trouve, il faut rajouter le mot-clé static devant.
4 Les variables
6 La structure conditionnelle
7 Les boucles
70/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
pointeurs quezako ?
Il y a bien de chose que vous ne pouvez pas faire en C si vous mettez de coté les
pointeurs. Un exemple typique est "de faire une fonction qui retourne deux valeurs"
Un autre exemple que nous allons tester tout de suite et que ça ne marchera pas
aussi sans pointeur est "une fonction à laquelle on envoie un nombre de minutes.
Celle-ci renverrait le nombre d’heures et minutes correspondantes :"
Illustration
Illustration
Détail
En fait, quand vous « envoyez » une variable à une fonction, une copie de la
variable est réalisée. Ainsi, la variable heures dans la fonction decoupeMinutes
n’est pas la même que celle de la fonction main ! C’est simplement une copie !
Votre fonction decoupeMinutes fait son job. À l’intérieur de decoupeMinutes,
les variables heures et minutes ont les bonnes valeurs : 1 et 30.
Mais ensuite, la fonction s’arrête lorsqu’on arrive à l’accolade fermante. Comme
on l’a appris dans les chapitres précédents, toutes les variables créées dans une
fonction sont détruites à la fin de cette fonction. Vos copies de heures et de
minutes sont donc supprimées. On retourne ensuite à la fonction main, dans
laquelle vos variables heures et minutes valent toujours 0 et 90. C’est un échec !
Adresse et Valeur
Adresse et Valeur
Quand vous créez une variable age de type int par exemple, en tapant int age =
10 ; votre programme demande au SE la permission d’utiliser un peu de mémoire et
le SE répond en indiquant à quelle adresse il vous laisse le droit d’inscrire votre
nombre.
Pour afficher la variable, on fait ceci : printf("La variable age vaut : %d",
age) ;
pour afficher son adresse on fait plutôt : printf("L’adresse de la variable age
est : %p", &age) ;
age : désigne la valeur de la variable ;
&age : désigne l’adresse de la variable.
74/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Avertissement
Attention à ne pas confondre les différentes significations de l’étoile ! Lorsque vous
déclarez un pointeur, l’étoile sert juste à indiquer qu’on veut créer un pointeur :int
*pointeurSurAge ;.
En revanche, lorsqu’ensuite vous utilisez votre pointeur en écrivant printf("%d",
77/150 *pointeurSurAge)
M. NGANMENI Luther ;, cela ne signifie pas « Je veux créer
Semestre 1 2018 un pointeur » mais : « Je
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Description
1 on affecte 5 à la variable nombre
2 on appelle la fonction triplePointeur et on lui envoie en paramètre l’adresse de
notre variable nombre
3 la fonction triplePointeur reçoit cette adresse dans pointeurSurNombre. A
l’intérieur de la fonction triplePointeur, on a donc un pointeur
pointeurSurNombre qui contient l’adresse de la variable nombre
4 maintenant qu’on a un pointeur sur nombre, on peut modifier directement la
variable nombre en memoire ! il suffit d’utiliser *pointeurSurNombre pour
désigner la variable nombre !
5 de retour dans la fonction main, notre nombre vaut maintenant 15 car la
fonction triplePointeur a modifier directement la valeur de nombre
L’intérêt, là, c’est que de cette manière, en utilisant des pointeurs, on peut modifier
la valeur de plusieurs variables en mémoire (on peut donc « renvoyer plusieurs
79/150 M. NGANMENIvaleurs
Luther »). Nous ne sommes plus limités à une seule valeur !
Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Description
1 Les variables heures et minutes sont créées dans le main.
2 On envoie à la fonction decoupeMinutes l’adresse de heures et minutes.
3 La fonction decoupeMinutes récupère ces adresses dans des pointeurs appelés
pointeurHeures et pointeurMinutes. Notez que là encore, le nom importe peu.
J’aurais pu les appeler h et m, ou même encore heures et minutes. Je ne l’ai pas
fait car je ne veux pas que vous risquiez de confondre avec les variables heures
et minutes du main, qui ne sont pas les mêmes.
4 La fonction decoupeMinutes modifie directement les valeurs des variables
heures et minutes en mémoire car elle possède leurs adresses dans des
pointeurs. La seule contrainte, un peu gênante je dois le reconnaître, c’est qu’il
faut impérativement mettre une étoile devant le nom des pointeurs si on veut
modifier la valeur de heures et de minutes. Si on n’avait pas fait ça, on aurait
modifié l’adresse contenue dans les pointeurs, ce qui n’aurait servi. . . à rien.
82/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Les tableaux dans la mémoire
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
4 Les variables
6 La structure conditionnelle
7 Les boucles
83/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Les tableaux dans la mémoire
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Définition de tableau
Les tableau sont une suite de variable variables de même type, situées dans un
espace contigu en mémoire.
il s’agit de « grosses variables » pouvant contenir plusieurs nombres du même type
(long, int, char, double...).
Les tableaux doivent être représenté dans la mémoire de manière contiguës
Lorsqu’un tableau est créé, il prend un espace contigu en mémoire : les cases
sont les unes à la suite des autres.
Toutes les cases d’un tableau sont du même type. Ainsi, un tableau de int
contiendra uniquement des int, et pas autre chose.
On ne peut pas faire de tableau contenant à la fois des int et des double
Définir un tableau
Manipulations
Manipulations
4 Les variables
6 La structure conditionnelle
7 Les boucles
92/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Définition
Le type char
L’attention particulière sera fait sur le type char. qui est un type qui permet de stocker des
nombres compris entre -128 et 127
Un petit test
Afficher un caractère :
Un petit test
Un petit test
Création et initialisation de la chaine
Pour afficher, on utilise le "%s" comme le "%c" des caractères, mais "%s" renvoie toute la
chaine entré de manière successif
97/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions Introduction
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
4 Les variables
6 La structure conditionnelle
7 Les boucles
102/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Les fonctions
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Définition
les macros
Les condition
Premier exemple
Il peut vous arrivé de réaliser des conditions dans le préprocesseur
4 Les variables
6 La structure conditionnelle
7 Les boucles
108/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Définir une structure
Les fonctions
Les énumérations
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Un petit test
Définition
Définition et exemple
Une structure est un assemblage de variables qui peuvent avoir différents types.
Contrairement au tableaux, vous n’êtes pas obligé de ne créer que de variables de même type
comme dans le tableau. Ceci dit vous pouvez avoir des structures comportant simultanément
des variables long, char, int, double.
Les structures sont généralement définies dans les fichiers .h, au même titre que les
prototypes et les define.
Exemple
Définition
Définition et exemple
Comme vous pouvez le constater, la création des struct n’est pas compliqué, il s’agit juste
d’un assemblage de variables de type de base
Imaginons que vous voulez créer une variable qui stocke les coordonnées d’un point à
l’écran, on pourra créer le struct suivant
Le mot clé struct à la déclaration permet au compilateur de différencier les type élémentaires
des structures mais toutefois les programmeur trouvent un peu lourd de mettre le mot struct
à chaque moment ou il faut créer une variable. Pour resoudre ce probleme, la solution trouvé
a été d’utiliser le "typedef".
113/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Définir une structure
Les fonctions
Les énumérations
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Avec Personne
Initialisation de la structure
Coordonnees point = 0, 0 ;
Personne utilisateur = "", "", "", 0, 0 ;
Les raccourcis
On pourra voir le plus souvent la manipulation des pointeurs de structures. Je puis vous dire
qu’on manipule plus les pointeurs de structures que les structures même. On sera le plus
souvent amené a faire ceci :
(*point).x = 0 ;
Et pour ceci, on pourra faire son raccourcis ainsi :
point->x = 0 ;
Un Exemple
Un petit test
Utilisation de énumérations
Une autre façon de créer ses propres types de variables.
Une énumération ne contient pas de sous variables comme c’était le cas pour les structures.
C’est une liste de valeurs possibles. Une énumération ne prend qu’une case en mémoire et
cette case peut prendre une des valeurs que vous définissez :
Vous avez remarqué que les valeurs possibles de l’énumération est en majuscules.
contrairement a ce que vous pouvez croire il ne s’agit pas exactement de la même chose
que les constante avec les #define
Dans le cas de notre énumération, FAIBLE vaut 0, MOYEN vaut 1 et FORT vaut 2 et c’est
le compilateur qui associe les valeurs a ces non
Son intérêt est de pouvoir rendre le code très lisible ou plus lisible
4 Les variables
6 La structure conditionnelle
7 Les boucles
122/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
Différentes méthodes de lecture / écriture
Les fonctions
Se déplacer dans un fichier
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Fichier
La règle fondamentale est que le pointeur est initialisé a NULL ici. Si vous ne le faites pas,
vous augmenterez considérablement le risque d’erreur par la suite.
Fichier
Recommandations
Il n’est pas nécessaire d’écrire struct FILE* fichier = NULL. donc on a utilisé le typedef
pour créer ce type et il faut comprendre qu’elle peut ne pas comporter les mêmes sous
variables partout. Pour cette raison, on ne modifiera jamais le contenu d’un FILE
directement. On passera par des fonctions qui manipulent le FILE à notre place.
Fichier
Le mode d’ouverture
1 "r" : lecture seule
2 "w" : écriture seule
3 "a" : mode d’ajout(ajout du texte à la fin du fichier)
4 "r+" : lecture et écriture
5 "w+" : lecture et écriture, avec suppression du contenu au préalable
6 "a+" : ajout en lecture/ écriture à la fin. (si le fichier n’existe pas il sera crée.)
Vous pouvez ajouter le "b" après le premier caractère et le fichier est ouvert en mode binaire
Fichier
Exemple
Fichier
Fichier
Exemple
Fermeture de fichier
Exemple
Exemple
Exemple 2
Utilisation de fprintf
le système de curseur vous permet d’aller lire et écrire à une position précise dans le fichier.
ftell : indique à quelle position vous êtes actuellement dans le fichier ;
fseek : positionne le curseur à un endroit précis ;
rewind : remet le curseur au debut du fichier
Le nombre déplacement peut être un nombre positif (pour se déplacer en avant), nul
(= 0) ou négatif (pour se déplacer en arrière).précis ;
Quant au nombre origine, vous pouvez mettre comme valeur l’une des trois constantes
(généralement des define) listées ci-dessous :
1 SEE_SET : indique le début du fichier ;
2 SEEK_CUR : indique la position actuelle du curseur ;
3 SEEK_END : indique la fin du fichier.
Exemple
Renommer un fichier
Prototype
int rename(const char* ancienNom, const char* nouveauNom) ;
La fonction renvoie 0 si elle a réussi à renommer, sinon elle renvoie une valeur différente de
0. Est-il nécessaire de vous donner un exemple ? En voici un : rename("test.txt",
"test_renomme.txt") ;
Supprimer un fichier
Prototype
int remove(const char* fichierASupprimer) ;
La suppression n’entraine pas ici la mise a la corbeille mais la suppression définitive donc il
faudra faire attention car celui-ci se fait sans avertissement et suit la syntaxe :
remove("test.txt") ;
4 Les variables
6 La structure conditionnelle
7 Les boucles
148/150 M. NGANMENI Luther Semestre 1 2018
Introduction générale
C’est quoi programmer ?
Les outils de la programmation
Les variables
Les Calculs de base
La structure conditionnelle
Les boucles
La taille des variables
Les fonctions
Allocation de mémoire dynamique
Les pointeurs
Les tableaux
Les chaines de caractères
Le préprocesseur
Créer vos propres types de variables
Lire et écrire dans des fichiers
Allocation dynamique
Introduction
A cote de la méthode automatique que nous avons utilisé pour déclarer des variables
jusqu’ici, il existe une méthode manuelle pour créer des variables que nous qualifions
d’allocation dynamique
Un des principaux intérêts étant de permettre à un programme de réserver la place nécessaire
au stockage d’un tableau en mémoire dont il ne connaissait pas la taille avant la compilation.
Il est impératif de bien sa voir comment manipuler les pointeurs pour pouvoir bien
comprendre ce chapitre
Selon le type de variable que vous demandez de créer, vous avez besoin de plus ou moins de
mémoire.
Ainsi, un int occupe 4 octets en memoire tandis qu’un double 8 octets.
Pour connaitre la taille d’un int, on fait sizeof (int)
La fonction sizeof est valable aussi bien pour les types de bases que pour les types
personnalisées.
Allocation
Nous aurons ici a utiliser la bibliothèque stdlib.h pour les opérations de demande d’espace
mémoire
malloc (Memory ALLOCation) demande au système d’exploitation la permission
d’utiliser de la mémoire
free (Libérer) : permet d’indiquer à l’OS que l’on n’a plus besoin de la mémoire qu’on a
demandée.
Quand vous faites une allocation manuelle de mémoire, vous devez toujours suivre
ces trois étapes :
1 Appeler malloc pour demander de la mémoire ;
2 vérifier la valeur retournée par malloc pour savoir si l’OS a bien réussi à allouer
la mémoire ;
3 une fois qu’on a fini d’utiliser la mémoire, on doit la libérer avec free. Si on ne
le fait pas, on s’expose à des fuites de mémoire, c’est-à-dire que votre
programme risque au final de prendre beaucoup de mémoire alors qu’il n’a en
réalité plus besoin de tout cet espace.
Tester le pointeur
Si l’allocation a marché, notre pointeur contient une adresse ;
si l’allocation a échoué, notre pointeur contient l’adresse NULL
Il est peu probable qu’une allocation échoue, mais cela peut arriver. (exemple
demande d’utilisation d’un espace mémoire de 34 Go)
Il est recommandé de toujours tester si l’allocation a marché
exemple
Libérer de la mémoire
free
void free(void ∗ pointeur); Cette fonction a juste besoin de l’adresse mémoire à
libérer et on peut avoir :
int ageAmis[15] ;
int amis[nombreDamis] ;
amis = malloc(nombreDAmis*sizeof(int)) ;
4 Les variables
6 La structure conditionnelle
7 Les boucles
159/150 M. NGANMENI Luther Semestre 1 2018