Le Langage C MIAGE 2. Détails techniques Moniteur: Vincent Barreaud Responsable: Laurent.

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

GEF 243B Programmation informatique appliquée
Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Formation universitaire à .NET: Introduction à C#
la programmation en langage C
C.
Outils de développements
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction : Compilation et Traduction
FLSI602 Génie Informatique et Réseaux
6. Les sous-programmes P. Costamagna – ISEN N1.
Langage C Licence Informatique 3ème année
Principes de programmation (suite)
Initiation à la programmation et algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Introduction Langage C
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Introduction à la programmation (Java)
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les constantes de compilation. Les fonctions.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Standard Template Library
LANGAGE C LP A2I IUT St DIE
Procédures et fonctions
La librairie assert.h.
L’essentiel du langage C
Programmer en langage c
Programmation Système et Réseau (sous Linux)
B.Shishedjiev -Débogueur1 Déboguer? Comment trouver et corriger les erreurs?
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
Inclusions & dépendances. C compile texte > objet int main () …
La notion de type revisitée en POO
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Langage C Chapitre I: Initiation à la programmation en C
Autres éléments du langage
Créer des packages.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Les types composés Les enregistrements.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Le Préprocesseur. Sujets abordés: Préprocesseur –Qu’est ce? –Qu’est ce qu’une directive? Les macros –Les définir, les redéfinir, les dé-définir –Les macros.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
S. Domas Système d’Exploitation Make et la construction d’exécutables 1ère annéeIUT Belfort-Montbéliard.
Langage de programmation
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Automne 2002 Martin Dubois Programmation système IFT Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous.
Informatique 2A Langage C 1 ère séance.
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
Transcription de la présentation:

Le Langage C MIAGE 2

Détails techniques Moniteur: Vincent Barreaud Responsable: Laurent Vigneron

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

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 Puis ISO (International Standardisation Organization) et Europe.

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

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.

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

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

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)

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”); }

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; }

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

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

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

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

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

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.

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

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

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

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

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

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