Introduction au langage C pdf


Télécharger Introduction au langage C pdf
3.53.5 étoiles sur 5 a partir de 1 votes.
Votez ce document:

Télécharger aussi :


Introduction au langage C

Premier cours Notions générales

Aurélien Max

•   12 séances de cours de 1h

mercredi 16-17h, salle A203

•   12 séances de TD de

•   Evaluation

– projet noté

– examen final

•   Contact

Organisation du cours

:

1h:

mercredi 10h30-12h30, salle Linux

exercices de TD (éventuellement)

2

•   1972:

programmation structuré mais «

Unix.

•   1978: Brian Kernighan programming language C.

•   1983: l’ANSI

•   1988: 2ème édition de devient la référence du C ANSI.

•   1983:

Historique du langage C

•   Langage universel

•   Langage compact

•   Langage «

mémoire. rapides.

Tour d’horizon Les avantages du langage C

 Dennis Ritchie (Bell Labs) conçoit un langage de près de la machine » pour

développer une version portable du système d’exploitation

et Dennis Ritchie publient The C , livre de référence du standard K&R

commissionne une définition explicite et

indépendante de la machine pour C (standard C ANSI).

The C programming language, qui

 émergence du langage C++ (Bjarne Stroustrup et al.,

AT&T), ajoutant au C ANSI la programmation orientée objet.

3

: C n’est pas orienté vers un domaine

d’application particulier, comme Fortran (applications scientifiques) ou COBOL (applications de gestion).

: le langage est constitué d’un noyau

d’opérateurs et de fonctions prédéfinies limité (formulation simple et efficace): se limite aux fonctionnalités qui peuvent être traduites efficacement en langage machine.

près de la machine »: C offre des opérateurs

qui sont très proches de ceux du langage machine et des fonctions qui permettent un accès direct aux fonctions internes de l’ordinateur, notamment pour la gestion de la permet de développer des programmes efficaces et

4

programmation standard

•   Langage portable

respectée.

•   Langage extensible fonctions ont été développées.

Tour d’horizon Les avantages du langage C

Langage modulaire:

–    modules, ou «

particulier.

Favorise la réutilisabilité

–    exécutable.

Tour d’horizon Les avantages du langage C

Langage indépendant de la machine: C peut être utilisé sur n’importe quel ordinateur disposant d’un compilateur adéquat. C est devenu le langage de pour les micro-ordinateurs.

: un même programme peut être

recompilé sur un autre ordinateur utilisant un autre système d’exploitation si la norme C ANSI est

: en plus des fonctions

standard, de nombreuses bibliothèques de

5

Un programme peut être constitué de plusieurs fichiers sources ».

Un module regroupe les déclarations de types et les définitions de fonctions relatives à un type de données

Favorise la structuration et la compréhensibilité du code. du code.

Chaque fichier source peut être traduit ou compilé en un fichier objet propre à la machine.

La modification d’un fichier source ne nécessite pas la recompilation de tous les fichiers sources.

L’ensemble des fichiers objets définissant un programme sont associés pour constituer un fichier

6

Efficacité et compréhensibilité



for (i = 0; i < n; i++)

printf

} else {

}

}

Tour d’horizon Limitations du langage C

Efficacité et compréhensibilité

void

while

}

void

int while

}

}

Tour d’horizon Limitations du langage C

: il peut être difficile

de concilier ces deux exigences, ex.:

("%6d%c", a[i], (i%10 == 9) ? '\n':' ');

for (i = 0; i < n; i = i + 1) { printf("%6d", a[i]); if ((i%10) == 9) { printf(“\n“);

printf(“ “);

7

(suite):

fonctionObscure(char t1[ ], char t2[ ]) { (*t2++ = *t1++);

copieTableau(char t1[ ], char t2[ ]) { indice;

indice = 0;

(t1[indice] != ‘\0’) { t2[indice] = t1[indice]; i = i + 1;

t2[indice] = ‘\0’;

8

•   Limites de la portabilité

•   Discipline de programmation:

–    compréhensible.

•   Conclusions (partielles):

–    l’expérience.

Tour d’horizon Limitations du langage C

C++ et Java:

– langages.

– important de passer par la « programmation orientée objet.

Pourquoi enseigner le C aujourd’hui? (en 2004)

:

La portabilité est un des grands avantages de C… or le répertoire des fonctions C ANSI est assez limité…

Si l’on souhaite faire appel à des fonctions spécifiques d’une machine on risque de perdre la portabilité.

C offre beaucoup de libertés au programmeur, qui doit donc veiller à adopter un style de programmation solide et

Programmer de façon efficace en langage C nécessite de

Les commentaires et le choix judicieux des noms des identificateurs sont indispensables pour rendre les programmes compréhensibles, et donc utilisables.

9

C est un langage important de l’histoire de l’informatique, dont dérive en partie les langages

nombre des notions de C sont transposables dans ces

case C » avant d’aborder la

Beaucoup de programmes existants sont écrits en C, et doivent être maintenus et mis-à-jour.

C est encore largement utilisé, notamment pour le développement proche de la machine, ex:

systèmes d’exploitation (plus de 90% du noyau d’Unix) compilateurs C et outils de programmation

10

• Un module Module

– un fichier entête,

– un fichier source,

Programmation modulaire

(directive #include

#include “Module1.h“

• ou dans son fichier entête:

#include “Module1.h“

#include “Module2.h"

Notion d’inclusion

est constitué de deux fichiers:

M.h:

déclaration d’un type de données utilisé dans le programme déclaration d’entêtes de fonctions relatives à ce type

Module.c:

définition des fonctions déclarées dans le fichier entête

11

Tout fichier source doit inclure son fichier entête

): ainsi, les définitions des

fonctions correspondent à leur déclaration:

Tout module utilisant un autre module doit inclure le fichier entête de ce dernier dans son fichier source

12

•   (

naissance et une adresse).

•   Modélisation possible:

– Module « chaine.h):

etc.)

– Module « date

date et des fonctions associées.

– Module « étudiant

Exemple de programmation modulaire

exécutable par la machine:

1) compilation:

-

remplacements)

-

-

Module.c, Module.h 2) édition de liens:

-



exécutable

Traduction en langage machine

Traduction des fichiers sources en un fichier

prétraitement par le préprocesseur (inclusions et

analyse lexicale et syntaxique et optimisation conversion en langage machine (fichier objet)

Module.o

réunit les différents modules objets et les fonctions de la bibliothèque standard afin de constituer un programme

14

Application: gestion d’un ensemble d’étudiants définis par un nom, un prénom, une date de

chaîne de caractères » ( chaine.c,  définition du type chaîne de caractères et

des fonctions associées (saisie, comparaison, affichage, » ( date.c, date.h ): définition du type

» ( etudiant.c, etudiant.h ):

définition du type étudiant et des fonctions associées.

13

Traduction en langage machine Exemple

source, compris entre la notation de C++

– inclusion de fichiers (directive

#define)

#ifdef)

Traitements du préprocesseur

Enlève les commentaires du texte d’un fichier

/* … */

// commentaire sur une ligne est un ajout

Traite les lignes précédées d’un caractère # pour créer le texte que le compilateur analysera:

#include)

définition de synonymes et de macro-fonctions (directive sélection de partie de texte (autour de la directive

16

15

préprocesseur.

• fichier du début à la fin

(

Compilation

•      pas utiles.

•      l’ordinateur

Optimisation de code

Prend en entrée le texte produit par le

Analyse le texte source en une seule lecture du

Ce type de lecture conditionne les contrôles que le compilateur peut faire: explique pourquoi toute variable ou fonction doit être déclarée avant d’être utilisée.

Le compilateur crée des lignes d’assembleur langage machine) correspondant au texte analysé.

17

Élimine les parties du code assembleur qui ne sont

Remplace certaines séquences d’instructions par des instructions propres au processeur de

produit un code plus compact et optimisé pour le type d’ordinateur sur lequel a lieu la compilation

18

• (

machine)

.o

(liens entre modules

Assembleur

–    compilateur

particulier libc.a

–    programme,

Édition de liens

Prend en entrée le code généré par le compilateur éventuellement optimisé) et génère un fichier en

format compréhensible pour la machine (code

sur les systèmes de type Unix, ces fichiers ont l’extension

les fichiers objets contiennent des références insatisfaites

)

19

Produit un exécutable à partir de fichiers objets: prend en entrée les fichiers objets générés par le prend également en entrée des bibliothèques, en

utilise un fichier objet contenant le code de démarrage du

crt0.o

sur les systèmes de type Unix, l’édition de liens produit par défaut un système exécutable appelé a.out

20

•   Sous Unix, utilisation de GNU), ex:

gcc <

– l’option –c liens), ex:

gcc –c module.c

– l’option –O

exécutable produit, ex: gcc

•   Options propres à

-ansi

-pedantic

Production de fichier exécutable en pratique

•   Un fichier Makefile



compilateur C choisi;

compilation;

création du fichier exécutable.

•   Contraintes du fichier

lorsqu’on invoque l’utilitaire

Gestion de projet en C Makefile

cc ou de gcc (version

options> fichier_source.c arrête après la compilation (pas d’édition de

module.o

optimise le code généré

l’option –o permet de spécifier le nom du fichier

–o monProgrammeGenial module.cgcc:

ne prend pas en compte les extensions du C GNU demande au compilateur de refuser la

compilation de programmes non ANSI

21

permet:

d’assurer une compilation séparée à l’aide d’un de ne recompiler que le code modifié depuis la dernière

Contient les instructions indiquant à la commande make comment exécuter les instructions nécessaires à la

Makefile:

Le fichier doit se trouver dans le répertoire courant make.

Les instructions contenues dans le fichier obéissent à une syntaxe stricte permettant de définir des règles.

22

cible: dependance

commandescible:

dependances:

création de la cible

est plus récent que la cible

-commandes: pour créer la cible:

utiliser \ à ligne de texte

Règles d’un fichier Makefile

# fichier Makefile

all: chaine.o gcc –o gestetud chaine.o: chaine.c gcc –c chaine.c

Exemples d’utilisation sous le shell

> make all

> make

> make chaine.o

Fichier Makefile Exemple

Les règles définissent ce qui doit être exécuté et comment pour construire une cible:

 nom du fichier généré par les commandes qui suivent, ou action générée par ces commandes

 fichiers ou règles nécessaires à la

Si la cible est un fichier, la cible n’est construite que si ce fichier

 suite de commandes du shell exécutées

les commandes sont toujours précédées d’une tabulation

la fin de la ligne si les commandes dépassent une

23

Unix:

24

NOM = VALEUR

•     Appel de macro-commande:

$(NOM)

•     Utilisation possible de « fichier?.c

Fichier Makefile

Macro-commandes

# fichier Makefile

BIN = gestetud

OBJECTS = etudiant.o CC = gcc all: $(OBJECTS)

$(CC) $(OBJECTS) chaine.o: chaine.c

$(CC) –c chaine.c etudiant.o: etudiant.c

$(CC) –c etudiant.c clean: rm –f *.o $(BIN)

Fichier Makefile Exemple plus complet

Déclaration de macro-commande:

jockers », ex.:

25

26



182