Le Langage C. 1- Etape de mise en place d un programme exécutable

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

Introduction au langage C


Programmation en langage C

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Rappels Entrées -Sorties

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

SUPPORT DE COURS. Langage C

Algorithmique et Programmation, IMA

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

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)

Java Licence Professionnelle CISII,

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

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

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

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

Claude Delannoy. 3 e édition C++

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation système I Les entrées/sorties

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

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

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

Cours d Algorithmique et de Langage C v 3.0

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation Classique en langage C

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

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

Chapitre 1 : La gestion dynamique de la mémoire

Programmer en JAVA. par Tama

INITIATION A LA PROGRAMMATION

Introduction au Langage de Programmation C

Notions fondamentales du langage C# Version 1.0

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

Le langage C. Introduction, guide de reference

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les structures. Chapitre 3

Langage Éric Guérin 5 octobre 2010

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

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

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

Les chaînes de caractères

Les structures de données. Rajae El Ouazzani

Support de Cours de Langage C. Christian Bac

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

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

INF 321 : mémento de la syntaxe de Java

Conventions d écriture et outils de mise au point

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

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

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

Le langage C. Séance n 4

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

Chap III : Les tableaux

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

as Architecture des Systèmes d Information

COURS DE LANGAGE C. DIAO Oumar. Université de Rennes 1. Master 1

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

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

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

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

V- Manipulations de nombres en binaire

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

Rappels d architecture

Algorithmique, Structures de données et langage C

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

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

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

Les fichiers. Chapitre 4

Informatique Générale

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

Programmation Structurée en Langage C

STAGE IREM 0- Premiers pas en Python

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

Programmation impérative

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Programmation en Java IUT GEII (MC-II1) 1

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Java Licence Professionnelle CISII,

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Compilation (INF 564)

Programmation en langage C Eléments de syntaxe

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

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

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

Transcription:

Le Langage C Le langage C a été crée en 1972 par Denis Ritchie avec comme objectif : écrire un système d exploitation (UNIX). Sa définition été réalisée en 1978 par Kernighan et Ritchie dans un livre intitulé : «The C Programming Language». Le succès du langage a conduit à sa normalisation, en premier par l ANSI (American National Standard Institute) (1989), puis par l ISO (International Standardization Organization) en 1990. Le langage C est un langage évolué, structuré et assez proche du langage machine. Il est destiné à des applications de contrôle de processus (gestion d entrées/sorties, applications temps réel, ). Il fait appel généralement à des bibliothèques fournies avec le compilateur (ex : math.h, stdio.h). 1- Etape de mise en place d un programme exécutable Tout programme écrit en langage évolué forme un texte qu on nomme un programme source. En C, le programme source peut être découpé en un ou plusieurs fichiers sources (modules). Les étapes de création d un programme exécutable à partir d un programme source se résument en : Fichier Source ex : test.c Fichier d inclusion ex : math.h Préprocesseur Fichier Expansé ex : test.c Compilation Fichier Objet ex : test.c Librairies Edition de liens Fichier Exécutable ex : test.exe 1

Edition du code L édition du programme (saisie) consiste à saisir, à l aide d un éditeur, le texte du programme pour créer le programme source qui porte l extension «.c». La compilation Cette étape consiste à traduire le programme source en langage machine. Elle est réalisée par un logiciel nommé : compilateur. Le rôle du compilateur est d indiquer les erreurs de syntaxe, et ignore les fonctions bibliothèques appelées par le programme. Il génère un fichier binaire appelé fichier objet : «.obj». Edition de liens L édition de liens consiste à réunir les différents modules objet et les fonctions des bibliothèques standards afin de créer un programme exécutable. 2- Programme en C Voici un exemple de programme écrit en C : #include <stdio.h> int x ; void main(void) int y ; printf( Bonjour \n ) ; - La première ligne du programme : «#include <stdio.h>» est une directive qui est prise en compte avant la compilation du programme (lors de la phase du préprosseur). - La ligne «void main(void)» est l en-tête de la fonction main. Les instructions délimitées par les accolades et forment le bloc de la fonction. La fonction main représente le programme principal (cas de BEGIN et END du pascal). - Les instructions : «int x» et «int y» sont des déclarations de variables de type entier. Les variables déclarées entre les directives et la fonction main sont des variables globales (cas de int x), alors que les variables déclarées à l intérieur de la fonction main sont des variables locales (cas de int y). - La fonction prédéfinie «printf» permet d afficher la chaîne de caractères «Bonjour» délimitée par les guillemets. 3- Règles d écriture d un programme en C L écriture d un programme en C exige un certain nombre de règles générales, dont nous citons : 3.1- Les identificateurs Dans un programme, les éléments (variables, fonctions, types, ) sont désignés par un nom qu on appelle identificateur. Cet identificateur est formé d une suite de caractères : lettres, chiffres et le caractère «souligné» (_). Le premier caractère doit être différent d un chiffre. Le langage C est sensible à la casse. nom address_pro _somme 2

3.2- Les mots clés Le langage C est un langage à mots-clés qui sont des mots réservés pour le langage et ne peuvent pas être employés comme identificateurs. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 3.3- Les séparateurs Dans un programme en C, la syntaxe impose un séparateur ; un des caractères (que se soit des opérateurs : +, -, *, =, ==, +=, ou les caractères de ponctuations : () [], ; : ) doit être utiliser pour séparer les identificateurs. Dans le cas contraire, ces identificateurs doivent être impérativement séparés par un Espace. 3.4- Les commentaires Comme tout langage, le C autorise l utilisation de commentaires. Il s agit de caractères placés entre les symboles /* et */ /* commentaire s étendent sur plusieurs lignes du programme * / - Si le commentaire s étend sur une seule ligne, le symbole // est utilisé. int x ; //déclaration d une variable de type entier. 4- Les types de base Généralement, la manipulation d une information fait intervenir la notion de type. C'est-à-dire la façon dont elle est coder en mémoire. En C, nous distinguons trois types : Les entiers Le mot clé désignant les entiers est int. Les types entiers sont caractérisés par deux paramètres : - La taille (nombre de bits) de l emplacement mémoire utilisé pour les représenter ;* - L attribut précisant si le nombre est signé (entiers relatifs), ou non signé (entiers naturels). Type Description Taille mémoire int entier standard signé 4 octets : -2 31 n 2 31-1 unsigned int short unsigned short entier standard positif entier court signé entier court positif 4 octets : 0 n 2 32-1 2 octets : -2 15 n 2 15-1 2 octets : 0 n 2 16-1 3

Les réels Pour représenter les réels en C, nous distinguons deux types : le type float (réel standard) sur 4 octets et le type double (réel double) sur 8 octets. Les caractères Le mot clé désignant les caractères est char. Il peut contenir le code de n importe quel caractère de l ensemble des caractères utilisés sur la machine. Nous distinguons deux types de caractères : 1- Les caractères imprimables : Ce type de caractères s écrit entre apostrophes. a Y + $ 0 < 2- Les caractères avec séquence d échappement : Ce type de caractères (non imprimables) possède une représentation conventionnelle dite séquence d échappement utilisant le caractère : \ Séquence d échappement \n \\ \ \ \? Signification Saut de ligne \?. 4.2- Les constantes En langage C, il y a deux façons de donner un nom à une constante : 1- En utilisant les possibilités du préprocesseur : #define identificateur valeur Le préprocesseur remplace, dans toute la suite du code source du programme, toute occurrence de identificateur par valeur. #define PI 3.14 2- En utilisant des énumérations : enum liste d identificateurs Cette commande permet la déclaration d un ensemble de constantes. enum SAMEDI, DIMANCHE, LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI ; enum X1 = 1, X2 = 2, X3 = 3 ; 4

5- Les opérateurs Nous distinguons : 5.1- Les opérateurs arithmétiques Sont les opérateurs classiques «binaires» (c'est-à-dire qui porte sur deux opérandes) : l addition (+), la soustraction (-), la multiplication (*), la division (/), le modulo (%) (reste de la division) et l opérateur «unaire» (c'est-à-dire qui porte sur un seul opérande) qui correspond à l opposé (exemple : -2, -1,..). 5.2- Les opérateurs relationnels Le langage C permet, comme tout langage, de comparer des expressions à l aide d opérateurs relationnels (ou de comparaison) qui sont : <, >, <=, >=, == (égal),!= (différent). Le résultat d une comparaison est un entier qui vaut : - 0 : si le résultat de la comparaison est faux. - 1 : si le résultat de la comparaison est vrai. int a = 5, b = 1 ; 2 * a > b +5 ; Le résultat est : 1 5.3- Les opérateurs logiques Ce sont les opérateurs logiques classiques : ET logique (&&), OU logique ( ) et le non logique (! ). (a < b) && (c < d) - Le résultat est égal à 1 si (a < b)=1 et (c < d)=1 ; - Le résultat est égal à 0 dans le cas contraire. 5.4- Les opérateurs d affectation et d incrémentation L opérateur d affectation (=) fait partie des opérateurs du langage C. Il permet l affectation d une valeur (ou résultat d une expression arithmétique ou logique) à une variable. i = j + 1 ; i = 3 ; i = (j = k) + 1 ; Les instructions d incrémentation et de décrémentation peuvent être remplacées par des opérateurs «unaire» portant sur la variable concernée. Nous distinguons les deux opérateurs : ++ et --. L opérateur ++ (ou --) est un opérateur de : - Pré-incrémentation s il est placé à gauche de la variable ; - Post-incrémentation s il est placé à droite de la variable. 5

int n, i = 5 ; n = ++i 5 ; // Résultat : i = 6, n = 1. n = i++ 5 ; // Résultat : i = 6, n = 0. 6- Les entrées/sorties standards Ce type d entrées/sorties (qui est une partie des opérations d entrées/sorties) regroupe toutes les fonctions de communications avec l utilisateur à savoir : printf, scanf, getchar, putchar, gets et puts. 6.1- La fonction printf La fonction printf envoie sur écran une suite de caractères. La forme générale de printf est : printf (Argument 1, Argument 2) Argument 1 (appelé : format) : est une suite de caractères qui sert au formatage des variables. Il contient : o Des caractères à afficher tels quels à l écran (appelés : libellés) ; o Des codes de format désignés par % et suivi de «code de conversion» qui précise le type de la variable à afficher. Argument 2 : fournit les variables à formater. Code de conversion c x d u ld lu f e s Explications Variable de type caractère (char) Variable de type hexadécimal Variable de type entier Variable de type entier non signé Variable de type long Variable de type long non signé Variable de type double ou float (format : x.xxx) Variable de type double ou float (format : exponentielle) Variable de type chaine de caractères printf( La valeur = %d, x) ; libellé Code de de format Code de Conversion La variable 6.2- La fonction putchar Cette fonction permet d afficher un seul caractère. Si la variable c est de type caractère : putchar(c) est équivalente à printf( %c, c) ; 6

char x = A ;.. putchar(x) ; // affiche A à l écran 6.3- La fonction puts Cette fonction permet d afficher un texte. puts( Bonjour ) est équivalente à printf( Bonjour \n ) ; 6.4- La fonction scanf La fonction scanf lit une variable sur le clavier. Les variables à saisir seront formaté par le premier argument «format». La forme générale de scanf est : scanf(argument 1, Argument 2) Argument 1 (appelé : format) : contient le «code de format» % et le code de conversion qui précise le type de la variable à récupérer ; Argument 2 : indique l emplacement (l adresse) de la variable en mémoire centrale désigné par le symbole & où sera rangée la variable saisie. scanf( %d, &x) ; Code de de format Code de Conversion L adresse en mémoire de la variable x 6.5- La fonction getchar Cette fonction permet la saisie d un caractère (de type char). Si la variable c est de type char : c = getchar() est équivalente à scanf( %c, &c). 6.6- La fonction gets Cette fonction permet de lire une chaine de caractères à partir du clavier. char ville [ 20 ] ; // déclaration d un tableau de caractères gets(ville) ; // récupère la chaine saisie par l utilisateur et la mettre dans le tableau de caractères «ville». 7- Les instructions de contrôle Comme tout langage, le langage C dispose d instructions, nommées : instructions de contrôle permettant de se comporter en fonction d une condition (cas des instructions de choix : instructions if et switch) ou répéter plusieurs fois un ensemble d instructions (cas des boucles). Toutefois, il dispose des instructions de branchement inconditionnels : goto, break, continue et return. 7

7.1- L instruction if L instruction if permet de programmer une structure de choix où il y a lieu de choisir entre deux instructions suivant la valeur d une condition. Elle a deux format : - Sans le «else» : if ( expression ) Instruction 1 ; - Avec le «else» : if ( expression ) Instruction 1 ; else Instruction 2 ; Exemples : 1- Une seule instruction : if ( a > b ) Max = a ; else Max = b; 2- Avec un bloc d instructions : if ( a > b ) Max = a ; printf( a c est le maximum ) ; else Max = b; printf( b c est le maximum ) ; 7.2- L instruction switch Le langage C offre une instruction switch qui est un if généralisé. Syntaxe : switch ( expression ) case constante_1 : liste d instructions 1 ; //facultatif break ; // facultatif. case constante_n : liste d instructions N ; //facultatif break ; // facultatif default : liste d instructions ; //facultatif int couleur ; puts( Donner un entier ) ; scanf( %d, &couleur) ; 8

switch (couleur) case 0 : puts( Noir ) ; break ; case 1 : puts( Blanc ) ; case 2 : ; default : puts( aucun choix de couleur ) ; 7.3- Les boucles Le langage C dispose de trois instructions de boucles : - L instruction while (Tantque Faire). - L instruction do while. - L instruction for (Pour allant de à faire). 7.3.1- L instruction while Syntaxe : while ( expression ) instruction ; Cette instruction répète l exécution de «instruction» tant que la valeur de «expression» est vraie. expression Faux Vraie instruction Exemples : 1- Avec une seule instruction int i = 0 ; while ( i < 10 ) i = i + 1 ; 2- Avec un bloc d instructions int i = 0 ; while ( i < 10 ) printf( La valeur de i est : %d \n, i) ; i = i + 1 ; 7.3.2- L instruction do while Syntaxe : do instruction ; while ( expression ) ; 9

Cette instruction exécute «instruction» puis elle évalue «expression». Si cette dernière est vraie, elle ré-exécute «instruction». instruction Vraie Vraie expression Exemples : Faux 1- Avec une seule instruction int i = 0 ; do i = i + 1 ; while ( i < 10 ) ; 2- Avec un bloc d instructions int i = 0 ; do printf( La valeur de i est : %d \n, i) ; i = i + 1 ; while ( i < 10 ); 7.3.3- L instruction for Syntaxe : for ( expression1 ; expression2 ; expression3 ) instruction ; Cette instruction évalue «expression1», puis évalue «expression2». Si cette dernière est vraie, elle ré-exécute «instruction» et évalue «expression3». expression1 expression2 Vraie instruction Faux expression3 Exemples : 1- Avec une seule instruction int i ; 10

for ( i = 0 ; i < 10 ; i ++) printf( Bonjour \n ) ; 2- Avec un bloc d instructions int i, j ; for ( i = 0 ; i < 10 ; i ++) j = i * 5; printf( i multiplié par 5 donne: %d \n, j) ; 7.4- Les instructions de branchement inconditionnel Les instructions de branchement inconditionnel sont les instructions qui ont pour effet de transférer le contrôle d exécution d une partie à une autre dans un programme. En C, nous distinguons : break, goto, continue et return. 7.4.1- L instruction break Cette instruction peut être utilisée : - Dans une instruction switch : pour mettre fin à l exécution de l instruction - Dans une boucle (for, while ou do while) : pour provoquer la sortie de la boucle. int i, n ; for ( i = 0 ; i < 100 ; i++) printf( Donnez un nombre ) ; scanf( %d, &n) ; if ( n == 19 ) break ; 7.4.2- L instruction continue Cette instruction est utilisée seulement dans une boucle. A la différence de break, qui met fin à une boucle, continue permet de forcer le passage à l itération suivante. int i, n ; for ( i = 0 ; i < 100 ; i++) printf( Donnez un nombre ) ; scanf( %d, &n) ; if ( n < 0 ) continue ; 11

printf( Le nombre est positif ) ; 7.4.3- L instruction goto Syntaxe : goto étiquette ; Cette instruction à pour effet de provoquer un branchement à l instruction portant l étiquette. Remarque : l étiquette est un identificateur suivi de deux points (:) et qui précède l instruction. int i, n ; for ( i = 0 ; i < 100 ; i++) printf( Donnez un nombre ) ; scanf( %d, &n) ; if ( n < 0 ) goto fin ; printf( Le nombre est positif ) ; fin : printf( Le programme est sorti de la boucle car l utilisateur a introduit un nombre négatif ) ; 12