Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples



Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


Introduction au langage C

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

UE C avancé cours 1: introduction et révisions

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation en langage C

SUPPORT DE COURS. Langage C

UE Programmation Impérative Licence 2ème Année

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation C. J.-F. Lalande. 15 novembre 2012

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Rappels Entrées -Sorties

Programmer en JAVA. par Tama

Java Licence Professionnelle CISII,

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Support de Cours de Langage C. Christian Bac

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Cours d Algorithmique et de Langage C v 3.0

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Claude Delannoy. 3 e édition C++

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Cours d initiation à la programmation en C++ Johann Cuenin

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Introduction à l algorithmique et à la programmation M1102 CM n 3

Bases de programmation. Cours 5. Structurer les données

Notions fondamentales du langage C# Version 1.0

Cours de programmation avancée. Le langage C. Université du Luxembourg

Conventions d écriture et outils de mise au point

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Le langage C. Introduction, guide de reference

Langage Éric Guérin 5 octobre 2010

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Plan du cours. Historique du langage Nouveautés de Java 7

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

STAGE IREM 0- Premiers pas en Python

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Chapitre 1 : La gestion dynamique de la mémoire

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Les structures. Chapitre 3

Initiation. àl algorithmique et à la programmation. en C

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Les structures de données. Rajae El Ouazzani

Programmation C++ (débutant)/instructions for, while et do...while

ALGORITHMIQUE ET PROGRAMMATION En C

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Introduction à MATLAB R

Langages et Concepts de Programmation Introduction à la programmation en langage C

Cours 1: Java et les objets

Programmation système I Les entrées/sorties

TP : Gestion d une image au format PGM

Cours Programmation Système

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Programmation Structurée en Langage C

INF 321 : mémento de la syntaxe de Java

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Algorithmique et programmation : les bases (VBA) Corrigé

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmation Classique en langage C

Recherche dans un tableau

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Introduction au Langage de Programmation C

Les chaînes de caractères

Présentation du langage et premières fonctions

Les processus légers : threads. Système L3, /31

INITIATION A LA PROGRAMMATION

COMPARAISONDESLANGAGESC, C++, JAVA ET

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Programmation en Java IUT GEII (MC-II1) 1

TD3: tableaux avancées, première classe et chaînes

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Utilisation d objets : String et ArrayList

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Notions de Langage C

Solutions du chapitre 4

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

I. Introduction aux fonctions : les fonctions standards

Algorithmique, Structures de données et langage C

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Analyse de sécurité de logiciels système par typage statique

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

INF 104 (SELC) Introduction au langage C

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Corrigé des TD 1 à 5

Le langage C. Séance n 4

Transcription:

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et

Objectifs du cours Apprentissage de la programmation C, sans oublier les acquis d IAP1 : conception descendante, spécifier à l aide d interfaces éventuellement de code OCaml cas de test découpage d un programme en fonctions paramétrées Écriture de programmes plus conséquents Implémenter de différentes façons des structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 2 / 44 et

Contenu du cours présentation du langage C, comparaison entre OCaml et C, structures de données simples (listes, piles, files) manipulation d outils : débogueur, graphes d appels, documentation automatique profileur... Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 3 / 44 et

Le langage C vieux langage, simple et efficace 1972, Bell Labs (AT&T), B. Kernighan et D. Ritchie, écriture d Unix langage de bas niveau, qui produit des programmes efficaces langage de haut niveau langage compilé langage très souple : peu de vérifications et d interdits, hormis la syntaxe la tentation est grande d utiliser cette caractéristique pour écrire le plus souvent des atrocités langage portable langage modulaire langage normalisé en 1989 (norme ANSI), 1990 (norme ISO) et 1999 (1ère révision) Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 4 / 44 et

Caractéristiques langage impératif (affectation, séquence, itération) typé récursivité variables locales, variables globales toute variable doit être déclarée définir avant d utiliser pas d imbrications de fonctions différents modes de passages des paramètres tableaux, pointeurs langage compilé Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 5 / 44 et

Structure d un programme C Directives du preprocesseur /* pour l instant: - inclusion de bibliotheques - definitions de constantes */ Declarations de types et de variables globales Declarations de fonctions int main(void) { Declarations de variables locales Instructions return 0; } Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 7 / 44 et

Exemple de programme #include <stdio.h> /* directives au preprocesseur */ #define DEBUT -10 #define FIN 10 #define MSG "Programme de demonstration\n"; /* Interface: carre: int -> int */ int carre(int x) { /* definition de la fonction carre */ return x * x; } /* Interface: cube: int -> int */ int cube(int x) { /* definition de la fonction cube */ return x * carre(x); } int main() /* programme principal */ { /* debut du bloc de la fonction main */ int i; /* definition des variables locales */ printf(msg); for ( i = DEBUT; i <= FIN ; i++ ) { printf("%d carre: %d cube: %d\n", i, carre(i), cube(i) ); } /* fin du bloc for */ return 0; } /* fin du bloc de la fonction main */ Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 9 / 44 et

Exemple de programme C illisible International Obfuscated C Code Contest 1988 Compilation et execution : affichage de la valeur 0.250 #define _ -F<00 --F-OO--; int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() { _-_-_- -_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_-_-_-_-_- -_-_-_-_-_-_- -_-_-_ } } Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 11 / 44 et

Règles d écriture des programmes C ne jamais placer plusieurs instructions sur une même ligne, utiliser des identificateurs significatifs, faire ressortir la structure syntaxique du programme, laisser une ligne blanche entre la dernière ligne des déclarations et la première ligne des instructions, une accolade fermante est seule sur une ligne et fait référence, par sa position horizontale, au début du bloc qu elle ferme. aérer les lignes de programme en entourant par exemple les opérateurs avec des espaces. commenter les listings (éviter les commentaires triviaux) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 12 / 44 et

Déclarations de variables Définir une variable : définir son type réserver une place en mémoire initialiser la variable Syntaxe : nom du type nom de la variable ; nom du type nom de la variable = valeur ; Exemple : int ma var = 2; Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 13 / 44 et

Les types en C surcharge d opérateurs : 2 + 3.5 est une expression de type float règles de conversion implicites hiérarchie des types : selon l usage fait d une variable, une valeur de type caractère peut être considérée comme étant un entier pas d inférence de types un type particulier : void désigne le type vide utile pour les fonctions sans argument ou sans retour rôle particulier dans l utilisation des pointeurs types élémentaires déjà rencontrés : int, f loat, char pas de type string prédéfini (cf. suite du cours) l espace occupé par chaque type dépend de la machine sur laquelle est implémenté le compilateur Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 14 / 44 et

Les booléens et les entiers en C pas de type bool prédéfini utilisation du type int avec 1 codant true et 0 codant false une expression est fausse si elle s évalue à 0, et vraie sinon opérateurs sur les booléens :, &&, <, >, mais aussi ==,!=,! évaluation paresseuse pour && et attention aux effets de bord autres opérateurs sur les entiers : +, -, *, /, % Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 15 / 44 et

qualificateurs short (en général, 2 octets : compris entre 2 15 et 2 15 1) et long (en général, 4 octets : compris entre 2 31 et 2 31 1) tailles des types entiers définies dans <limits.h> signed (par défaut) et unsigned ex. short, unsigned short, unsigned, long, unsigned long sizeof(short) sizeof(int) sizeof(long) Quelques exemples de constantes de type entier 0177 nombre octal valant 127 en base 10 0xff nombre hexadécimal valant 255 en base 10 18 1L (1l), 0x1faL entiers longs 8U (8u) entier non signé 1UL entier long non signé Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 16 / 44 et

Les réels Type float (flottants simple précision : en général, 4 octets) Pour obtenir davantage de précision : double (double précision, en général, 8 octets) long double (précision étendue, plus de 8 octets) tailles des types réels définies dans <float.h> sizeof(float) sizeof(double) sizeof(longdouble) Opérateurs +, -, *, / Notations : 12.3, 12.3f, 12.3d, 12e-3, +12E-3 Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 17 / 44 et

Les caractères Type char notations des constantes : a, \0, \x0, \n type implémenté par un entier (ordre ASCII) : d - a vaut 3 mêmes opérations que sur les entiers Quelques fonctions (#include <ctype.h>) : tolower, toupper, isalpha, isdigit, isxdigit, islower, isupper Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 18 / 44 et

Quelques fonctions de la bibliothèque standard #include <stdlib.h> abs: int -> int -> int div: int -> int -> int ceil: double -> double -> double floor: double -> double -> double #include <math.h> + option -lm pow: double -> double -> double exp: double -> double log: double -> double sin: double -> double sqrt: double -> double Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 20 / 44 et

Compatibilité des types Les types entier, caractère, réel sont compatibles entre eux. Dans une expression, des valeurs de ces types peuvent être mélangées. Conversions implicites : conversion dans le type le plus fort promotion entière conversion dans une affectation Peut produire de l indétermination ou une perte de précision. Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 21 / 44 et

Type enregistrement Règle de formation : si t 1, t 2,... t n sont des types, ils peuvent être regroupés séquentiellement dans un enregistrement. Syntaxe : struct nom de structure facultatif { liste des données contenues dans la structure } Exemples : struct point { struct Tpoint { int x; int x; int y; int y; long couleur; long couleur; }; } vpoint; accès aux champs : vpoint.couleur initialisation : vpoint = {1,2,512} ; Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 22 / 44 et

Déclaration de fonctions Syntaxe : / Interface nom fonction : type1 >... typen > type de retour / type de retour nom fonction (type1 arg1,... typen argn) { déclarations des variables locales à la fonction instructions } Procédure : fonction dont le type de retour est void Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 23 / 44 et

Exemple de fonction / Interface carre: int > int / int carre( int x) { return x x; } puis dans une autre fonction 1+carre(2)*carre(x) Exemple de procédure void affiche bonjour(void) { printf ( Bonjour ); } Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 24 / 44 et

Rôle des variables Une variable désigne un emplacement de la mémoire Une variable prend différentes valeurs lors de l exécution d une fonction Utilisation d un environnement mis à jour en chaque point de programme Distinction entre lvalues et constantes lvalue : expression qui doit délivrer une variable constante : identificateur possédant une valeur qui n est pas modifiée Affectation et instruction de lecture Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 25 / 44 et

Un premier opérateur d affectation lvalue désigne un objet en mémoire Syntaxe : lvalue = exp Sémantique : exp est évaluée, sa valeur est affectée à la variable désignée par lvalue effet de bord cette valeur est celle de l expression lvalue = exp Conversion éventuelle de type (vers celui de lvalue) Exemples x=1.5 x=1 x=y+6 x=y=z=3 Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 26 / 44 et

D autres opérateurs d affectation x += y équivalent à x = x+y -= *= /= %= Opérateurs d incrémentation ++ et de décrémentation -- s appliquent à une lvalue : ++(x+2) n a pas de sens x++ et ++x équivalents à x = x+1 x=y++ équivalent à x = y puis y = y+1 x=++y équivalent à y = y+1 puis x = y attention aux effets de bord int i=0; int j=0; i++&& j++; / i=1 et j=0 / j++&& i++; / i=0 et j=1 / Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 27 / 44 et

Les constantes Syntaxe #define ma constante reste de la ligne Sémantique : le préprocesseur remplace les occurrences de ma constante par reste de la ligne Convention : écrire les constantes en majuscules Exemples : #define MAX 10 #define VRAI 0==0 #define FAUX 0==1 Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 28 / 44 et

Les instructions les plus utilisées Instructions-expressions Blocs Conditionnelles Boucles Exécution en séquence : rôle du délimiteur ; Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 29 / 44 et

Les instructions-expressions Syntaxe : exp; Sémantique : exp est évaluée et sa valeur est ignorée N a d intérêt que si exp ; réalise un effet de bord Exemples : x + 1; y = x + 1; Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 30 / 44 et

Les blocs Syntaxe : {liste d instructions} Sémantique : exécution de chaque instruction de la liste Permet de considérer une séquence d instructions comme étant une seule instruction Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 31 / 44 et

L instruction if Syntaxe : i f (exp) instruction1 else instruction2 Sémantique : évaluation de exp puis exécution de instruction1 si sa valeur n est pas nulle ou de instruction2 si sa valeur est nulle Partie sinon optionnelle Exemples i f (x==y) y=2; if (x=y) y=2; else y=6; Expressions conditionnelles exp1? exp2 : exp3 Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 32 / 44 et

L instruction switch Syntaxe : switch (exp) { case valeur1: instruction1; break; / ou rien / case valeur2: instruction2; break; / ou rien /... case valeurn: instructionn; break; default: instruction0; break; } Sémantique : évaluation comme une valeur entière de exp puis évaluation des valeurs des case puis exécution de l instruction associée au case dont la valeur correspond à l expression (ou de l instruction associée à default si aucune des valeurs de case ne correspond à l expression) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 33 / 44 et

Exemple switch (lettre) { case a : case A : i=j ; break; case u : i++; break; case z : j=i ; break; default: i=j=0; break; } Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 34 / 44 et

Les boucles Répétition d instructions tant qu une condition est vérifiée jusqu à ce qu une condition soit vérifiée un certain nombre de fois Boucles infinies Équivalences entre les trois formes Imbrication des boucles Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 35 / 44 et

Les boucles tant que Syntaxe : while (exp) instruction Sémantique : exp est évaluée, si sa valeur s interprète comme vraie (non nulle), instruction est exécutée, et ceci tant que exp vaut vrai. Exemple int x = 0; / affichage des entiers de 0 a 9 / while (x!= 10) { printf( %d, x); x++; } Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 36 / 44 et

Les boucles répéter Syntaxe : do instruction while (exp) Sémantique : instruction est exécutée, puis exp est évaluée. Si sa valeur s interprète comme vraie (non nulle), instruction est exécutée à nouveau et ainsi de suite. Exemple int x = 1; int somme = 0 / somme des entiers de 1 a 10 / do { somme+= x; x++; } while (x<= 10) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 37 / 44 et

Les boucles pour Syntaxe : for (exp1 ; exp2 ; exp3) instruction Sémantique : exp1 est évaluée (initialisation des variables de la boucle). Puis exp2 est évaluée et si sa valeur s interprète comme vraie (non nulle), instruction est exécutée, et ceci tant que la valeur de exp2 s interprète comme vraie. De plus, exp3 est évaluée après chaque exécution d instruction. Exemples for( ; ; ) / exp2 qui n existe pas est supposée vraie / ; / boucle infinie ne faisant rien / for ( i=0 ; i<n ; i++) for ( i=0, j=n ; i<j ; i++, j ) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 38 / 44 et

Comparaison entre les trois sortes de boucles for (exp1 ; exp2 ; exp3) instruction équivaut à { exp1; while (exp2) { instruction ; exp3; } do instruction while (exp) équivaut à instruction while(exp) { instruction } Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 39 / 44 et

La fonction printf fait partie de la bibliothèque standard : #include <stdio.h> affichage de valeurs en les transformant en chaînes de caractères format décrivant une telle transformation = une chaîne de caractères dans laquelle des caractères représentent les variables à écrire : "%d plus %d vaut %d" Syntaxe : printf(format, exp1,... expn) ; Sémantique : les expi sont évaluées et les valeurs correspondantes sont affichées sur la sortie standard (à l écran) selon format. L appel à printf renvoie le nombre de caractères imprimés. Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 40 / 44 et

Spécification de conversion commence par % et se termine par un caractère de conversion entre les deux on peut écrire dans l ordre suivant : - cadrage à gauche un nombre minimal de caractères écrits un point un nombre indiquant la précision de la valeur affichée h (resp. l) pour short (resp. long) Exemples : %d %f %c %s %8.4f Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 41 / 44 et

Compilation d un programme C préprocesseur (cpp) : supprime les commentaires prend en compte les lignes commençant par # compilateur C : lecture unique du fichier source optimiseur de code (c2) : élimination du code inutile traduction en instructions propres au processeur optimisation des sauts assembleur (as) éditeur de liens (ld) : résolution des références insatisfaites, utilisation de la bibliothèque standard (libc.a) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 42 / 44 et

Le compilateur Gnu C Compilation gcc -ansi -pedantic -W -Wall -o mon executable mon prog.c -ansi : vérification C ANSI sans extensions de langage correspondant au C GNU -pedantic : refus de compiler un programme non ANSI -W -Wall : maximum de messages (erreurs ou avertissements) Autres options -g : permet d utiliser le débogueur -l nom bibliotheque : spécification de bibliothèques (ex. -lm) Exécution : mon executable (ou./mon executable) Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 43 / 44 et

Édition d un programme C sous Emacs Mode Emacs pour C : contrôles de validitié du parenthésage indentation automatique (ou à la demande) commande de compilation compilation du fichier source le plus récent Cours d Algorithmique-Programmation 2 e partie (IAP2): 24 programmation octobre 2007 impérative 44 / 44 et