0% ont trouvé ce document utile (0 vote)
19 vues31 pages

C Partie 2

Transféré par

Ali ali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues31 pages

C Partie 2

Transféré par

Ali ali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Techniques de programmation

Partie 2
Pr. Aniss MOUMEN
Module Techniques de programmation
EHTP

1
Plan du Cours – Syllabus C
1) Introduction à la programmation
2) Concepts de base de la programmation
3) Opérateurs et expressions
4) Structures de contrôle
5) Variables structurées
6) Notion de sous programmes
7) Structures de données Volume : 56 H (14 Séances)
8) Traitement des fichiers Cours + TD + TP
9) Préprocesseur Evaluation : Contrôle + Mini-projet avec
Exposé

2
STRUCTURES

3
Structure
DÉFINITION
Les structures permettent de regrouper plusieurs variables
dans une même entité

SYNTAXE EXEMPLE
struct identificateur struct point
{ {
// liste des différents double x;
champs double y;
} variables; };
struct point p;

4
Déclaration - Accès
• Déclaration d’une • Déclaration d’un
variable de type pointeur de type
structure : structure :
Struct Point* pA;
Struct Point A;
• L’accès par l’opérateur
« -> » ou « . » :
• L’accès par l’opérateur « pA->x = 2;
.» ou (*pA).x = 2;
A.x = 2; pA->y = 3;
A.y = 3; ou (*pA).y = 3;

5
Initialisation - Affectation
Exemple : Initialisation :
Struct produit
Struct produit tomate =
{int id;
Int qte;
{ 2, 2000, 2.15 };
Float prix; Affectation :
} oeuf; [Link] = [Link];
L'accès :
[Link]= [Link];
œ[Link] = 1.15;
printf("%f", œ[Link]); [Link] = [Link];
scanf("%f", &œ[Link]);

6
Tableau de structure
Déclaration d’un tableau de ❑courbe[3].x est valide
structure : ❑courbe.x[3] n'a pas de sens.
Struct point ❑courbe[3] est le 4 éme point de la
{char nom[10]; courbe.
int x; ❑courbe est l'adresse du début du
int y}; tableau.
struct point courbe[50];
❑courbe[3].nom[2] pour accéder au 3
❑ courbe est tableau de 50 éme caractère de nom du 4 éme point
éléments de type « point » de la courbe.

INITIALISATION
struct point courbe2[25] = {{'a', 1,2}, {'b', 1, 2}, , {'d', 1, 2}};

7
Structure imbriquée
struct date struct personne
{ {
int jour; char
nom[10];
int mois;
char prenom[10];
int annee; struct date date_embauche;
}; struct date date_poste;
} gaston;

INITIALISATION – AFFECTATION
gaston.date_embauche.annee=1985;
gaston.date_poste.annee= gaston.date_embauche.annee

8
Exercices

9
FICHIERS

10
Fichier
DÉFINITION
Un fichier désigne un ensemble d’informations situé sur une «
mémoire de masse » telle que le disque ou la disquette.
en C, tous les périphériques (disque, disquette, clavier, écran,
imprimante...), peuvent être considérés comme des fichiers.
C. Delannoy

11
Fichier
Gestion d’un fichier
On a besoin :
- L’adresse de l’endroit de la mémoire-tampon où se trouve
le fichier.
- La position de la tête de lecture
- Le mode d’accès au fichier (lecture ou écriture)
- Etc

Ces informations sont rassemblées dans une structure dont le


type, FILE *, est défini dans stdio.h.

12
Fichier
Ouverture
La fonction fopen (ouverture) est de type FILE* ouvre un fichier
et lui associe un flot de données.
SYNTAXE : File *f = fopen("nom-de-fichier","mode")

13
Fichier
Fermeture
La fonction fclose permet de fermer le flot qui a été associé à
un fichier par la fonction fopen.

Syntaxe est : fclose(f)

NB : Les fonctions fopen/fclose retournent une valeur nulle en


cas d’échec de l’ouverture/fermeture.

14
Fichier
Ecrire et lire (Entrée/Sortie formatée)
La fonction fprintf permet d’écrire des données dans un fichier.
Syntaxe :
fprintf(f,"chaîne de contrôle",expression-1, ..., expression-n)
La fonction fscanf permet de lire des données dans un fichier. Syntaxe :
fscanf(f,"chaîne de contrôle",argument-1,...,argument-n)

NB:
- f est le flot de données retourné par la fonction fopen.
- chaine de contrôle : peut être une chaine de caractère et/ou les
formats des variables - fprintf et fscanf sont analogue à printf et
scanf : Ne pas oublier les formats des variables et leurs adresses
(pour scanf)
15
Fichier
Exemple :
Ecriture dans un fichier
#include<stdio.h>
main()
{
char nom_fich[21];
int n;
FILE *f;
printf(" Entrez un nom de fichier :");
scanf("%20s", nom_fich);
f = fopen(nom_fich, "w");
do
{
printf("donnez un entier (0 pour finir) : ");
scanf("%d", &n);
if(n != 0) 16
Fichier
Lecture/Ecriture d’un caractère (chaine de caractère)

Similaires aux fonctions getchar et putchar (ou gets et puts pour les
chaines de caractère), les fonctions fgetc et fputc (ou gets et puts)
permettent respectivement de lire et d’écrire un caractère (ou
chaine de caractère) dans un fichier.
int fgetc(FILE* flot); ou fgets(chaine, int n, FILE* flot);
int fputc(caractere, FILE *flot); ou fputs (chaine, FILE *flot);
NB :
- fgetc/fputc, retourne la valeur lu/ecrit ou la constante EOF
lorsqu’elle détecte la fin du fichier.
- Pour détecter la fin du fichier on peut utiliser la fonction feof(f)

17
Fichier
EXEMPLE

18
Fichier
Autre fonction de lecture/écriture pour les fichiers binaires

Fread(void *pointeur, taille, nombre, FILE *flot);


fwrite(void *pointeur, taille, nombre, FILE *flot);

pointeur : est l’adresse du début des données à transférer.


taille : la taille des objets à transférer ( on utilise sizeof).
nombre : leur nombre.
flot : le flot de donnée ouvert par fopen

La fonction fread lit les données sur le flot et la fonction fwrite les écrit.

19
Fichier

-Utiliser wb et rb lors de l’ouverture du fichier


-Sinon, il faut lire des caractères

20
Fichier
Mode d’accès & Positionnement dans un fichier

Les fonctions d’entrées-sorties permettent d’accéder à un fichier en mode


séquentiel : les données du fichier sont lues ou écrites les unes à la
suite des autres.
En mode direct, on peut se positionner à n’importe quel endroit du fichier.
La fonction fseek permet de se positionner à un endroit précis ; elle a pour
prototype : int fseek(FILE *flot, long deplacement, int origine);
deplacement détermine (en nombre d’octets) la nouvelle position dans le
fichier par rapport `a l’origine qui peut prendre trois valeurs :
– SEEK SET (égale à 0) : début du fichier ;
– SEEK CUR (égale à 1) : position courante ;
– SEEK END (égale à 2) : fin du fichier

21
Fichier

22
Fichier
Autres fonctions de positionnement

int rewind(FILE *flot);

permet de se positionner au début du fichier fseek(flot, 0, SEEK SET);

long ftell(FILE *flot);

retourne la position courante dans le fichier (en nombre d’octets depuis


l’origine).

23
Exercices

24
PREPROCESSEURS

25
Préprocesseur
DÉFINITION
Un préprocesseur est d’un programme qui est exécuté
automatiquement avant la compilation et qui transforme
votre fichier source à partir d’un certain nombre de
directives.
Une directive toujours introduites par un mot précis
commençant par le caractère « # ».

Exemple :
#include inclure une librairie ou fichier (.h)
#define définir une constante (un symbole)

26
Préprocesseur
Directive #include
Permet d’incorporer, avant compilation, le texte figurant dans un
fichier quelconque. Syntaxe :
#include <nom_fichier>
Recherche le fichier mentionné dans un emplacement défini par
l’implémentation (exemple les bibliothèques standards
stdio.h…).
#include "nom_fichier"
Recherche le fichier mentionné dans le même emplacement que
celui où se trouve le programme source.
Exemple d’utilisation : on peut regrouper les prototypes des
fonctions utilisées dans le main() d’un programme, dans un
fichier (.h) et l’incorporer au programme avec #include.
27
Préprocesseur

le contenu de fichier.h est copié à l’intérieur du fichier.c, à


l'endroit où il y a la directive #include fichier.h.

Cas d’utilisation : créer un fichier.h, ou il y a que les signatures


et définition des fonctions , pour l’inclure au fichier.c

28
Préprocesseur
Directive #define

Elle offre en fait deux possibilités :


● définition de symboles.
● définition de macros.
Définition de symboles : substitution d’un symbole par un texte de
remplacement dans l’ensemble du code, exemple :
#define nbmax 5
demande de substituer au symbole nbmaxle texte 5, et cela chaque
fois que ce symbole apparaîtra dans la suite du fichier source.

29
Préprocesseur
Directive #define

Définition de macro : Idem que symbole, avec l’introduction de la


notion paramètre
Exemple :
#define carre(a) a*a

Le préprocesseur remplacera dans la suite tous les textes de la


forme : carre(x) dans lesquels x représente en fait un symbole
quelconque, par : x*x

30
Techniques de programmation
Partie 2
Pr. Aniss MOUMEN
Module Techniques de programmation
EHTP
amoumen@[Link]

31

Vous aimerez peut-être aussi