Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRaphael Dumas Modifié depuis plus de 9 années
1
Le Langage C MIAGE 2
2
Détails techniques Moniteur: Vincent Barreaud barreaud@loria.fr barreaud@loria.fr http://www.loria.fr/~barreaud Responsable: Laurent Vigneron vigneron@loria.fr vigneron@loria.fr
3
Détails techniques(cont.) 14 heures de cours (un support d’initiation) 15 heures de TP/TD Un projet(binôme) et un examen. Possibilité de corrections
4
Le C ANSI C créé en 1972 par Denis Ritchie pour developper UNIX. Définition rigoureuse en 1978 (Kernighan & Ritchie). Normalisation ANSI (American National Standard Institut) en 1988. Puis ISO (International Standardisation Organization) et Europe.
5
Les atouts du C L’un des langages les plus utilisés Instructions et structures de haut niveau un code rapide grâce à –un compilateur performant. –Des instructions proches du langage machine
6
Objectifs de la normalisation Améliorer et sécuriser le langage. Assurer l’ascendance (d’anciens programmes peuvent encore tourner). Exemple de problèmes: déclaration de fonctions.
7
Créer un premier programme 1.Ecrire le code source Editeur de texte(emacs) Décomposer le problème Définir les échanges 2.Créer un executable Précompilation Code objet Edition de lien
8
Premier programme(Texte) /*----------------------- Paletuviers.c V.B -17/09/02- Affiche “Ecoutez les paletuviers’’ -------------------------*/ #include #define TVA 18.6 Int main(void){ printf(“Ecoutez les ”); printf(“paletuviers\n”); Return 0; } Commentaires Directives préprocesseur (#) –Inclure un fichier, définir une constante,... –=Traitement de texte
9
Premier programme(Main) /*----------------------- Paletuviers.c V.B -17/09/02- Affiche “Ecoutez les paletuviers’’ -------------------------*/ #include Int main(void){ printf(“Ecoutez les ”); printf(“paletuviers\n”); Return 0; } Main: point d’entrée, invoquée par SE Peut invoquer d’autres fonctions –De ce fichier –D’un autre fichier –D’une bibliotheque inclusion Peut prendre des paramètres Rend une valeur au SE (0=OK)
10
Dans une définition de fonction Liste d’arguments entre parentheses Liste d’instructions entre accolades Une valeur de retour typée Premier programme(Fonction) int main(void){ printf(“Ecoutez les paletuviers\n”); return 0; } double ajoute_d (double a, double b){ return((double)(a+b)); } void imprime(int nbr){ int i; for(i=0;i<nbr;i++) printf(“ni!\n”); }
11
Déclarations de variable Type liste_var_de_ce_type; Affectations de variables(=) Manipulations –Fonctions de la librairie standard –Expressions IMPORTANT: Tout objet (fonction, variable) doit être déclaré avant d’être utilisé! Premier programme(instruction) /*----------------------- tva.c -V.B -17/09/02- Calcule et affiche un prix ttc -------------------------*/ #include #define TVA 18.6 Int main(void){ float ht,ttc; puts(“entrez le prix HT.”); scanf(“%f”,&ht); ttc=ht*(1+(TVA/100)); printf(“prix TTC: %f\n”,ttc); return 0; }
12
Premier programme(décomposer) Fichier: monProg.c #include #include “imprime2.h” void imprime1(void); int main(void){ imprime1(); imprime2(); return 0; } void imprime1(void){ printf(“Ecoutez les ”); } Fichier: imprime2.c #include “imprime2.h” void imprime2(void){ printf(“paletuviers\n”); } Fichier: imprime2.h #include void imprime2(void); Intérêt de la modularité: Lisibilité Travail en commun Code réutilisable
13
Création d’un executable Trois étapes assurées par gcc (Gnu C Compiler) 1.précompilation 2.Création du code objet 3.Edition de lien
14
préprocesseur Substitution de texte –#include –#include “graph.h” –#define TVA 18.6 –#undef TVA –#define max(a,b) ((a)>(b)?(a):(b)) Instructions de compilation –#if(expression) –#else –#endif –#ifdef nom –#ifndef nom
15
Préprocesseur(exemple) #ifndef entier #define entier int #endif #ifdef biblio_graphique entier initialise_ecran(void); entier efface-ecran(); entier trace_dessin(); #else Puts(“dommage:pas de lib graph.”); #endif
16
Module objet (fichier.o) Le compilateur s’assure que: –La syntaxe est correcte –Les variables sont bien déclarées (headers) –Les fonctions bien utilisées (headers) Ne s’assure pas que: –La mémoire est bien gérée (initialisation, segmentation faults,...) Convertit en langage machine
17
Edition de lien Le fichier objet n’est pas exécutable: –Ne contient pas de main –Dépend de fonctions ou variables externes –... L’edition de lien combine les fichiers objets contenant les réalisations de tout les modules pour former l’exécutable.
18
Edition de lien (standard) definitions Main()Code objet bibliotheque executable compilation Edition de lien stdio.h prog.c libc.a prog.oprog gcc prog.c –o prog
19
Edition de lien (plusieurs fichiers sources) definitions Main() Code objet bibliotheque executable stdio.h monProg.c libc.a monProg.o monProg Code source definition imprime.c imprime.h Code objet imprime.o
20
Options de compilation Compilation sans édition de lien gcc –c imprime2.c imprime2.c => imprime2.o Création de l’exécutable gcc monProg.c imprime1.o –o monProg Ou bien gcc monProg.o imprime1.o –o monProg Par défaut, le nom de l’exécutable est a.out
21
Remarque compilation Inclusion: –Fichiers headers utilisateurs recherche en priorite dans le repertoire courant –Indiquer autre repertoire par –I gcc –c imprime2.c –I/global/headers/ Bibliotheques –Préciser la bibliothèque ) à charger lors de la compilation gcc calcul.c -lm
22
Options de compilation(2) -ansicompiler en norme ANSI -lc, -lmajoute les bibliotheques -csans édition de lien -Iajouter un chemin de header -Wallafficher tout les warnings -Epréprocesseur seul -Psupprime les lignes # -gappel ultérieur du debugger
23
Les erreurs Erreurs de compilation –Erreur de syntaxe, déclaration manquante, parenthèse manquante,... Erreur de liens –appel a des fonctions dont les bibliothèques sont manquantes Erreur d’exécution –Segmentation fault, overflow, division par zéro Erreur logique
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.