Le langage C. 70's Début du langage C (Ritchie et Kernighan), Origine liée au système UNIX (90% écrit en C)

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

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Programmation en langage C

SUPPORT DE COURS. Langage C

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

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

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

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

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

Algorithmique et Programmation, IMA

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Le langage C. Introduction, guide de reference

Claude Delannoy. 3 e édition C++

Java Licence Professionnelle CISII,

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

Cours d Algorithmique et de Langage C v 3.0

Programmer en JAVA. par Tama

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

I. Introduction aux fonctions : les fonctions standards

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

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

Algorithmique, Structures de données et langage C

as Architecture des Systèmes d Information

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

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

Langage Éric Guérin 5 octobre 2010

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

Notions de Langage C

Notions fondamentales du langage C# Version 1.0

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

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)

Support de Cours de Langage C. Christian Bac

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

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

INF 321 : mémento de la syntaxe de Java

Introduction au Langage de Programmation C

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

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

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

INITIATION A LA PROGRAMMATION

Généralités sur le Langage Java et éléments syntaxiques.

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

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

Une introduction à Java

Programmation en Java IUT GEII (MC-II1) 1

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

Chapitre 1 : La gestion dynamique de la mémoire

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

Conventions d écriture et outils de mise au point

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programme Compte bancaire (code)

INF 104 (SELC) Introduction au langage C

TP1 : Initiation à Java et Eclipse

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Les structures de données. Rajae El Ouazzani

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

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

Les structures. Chapitre 3

Rappels Entrées -Sorties

Programmation Classique en langage C

Chap III : Les tableaux

La programmation des PIC en C. Les fonctions, les interruptions.

Le prototype de la fonction main()

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Utilisation d objets : String et ArrayList

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

INITIATION AU LANGAGE JAVA

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

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

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Les chaînes de caractères

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Systeme d'exploitation

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

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

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

Cours de Programmation Impérative: Zones de mémoires et pointeurs

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

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

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

Programmation Structurée en Langage C

Le langage C. Séance n 4

OS Réseaux et Programmation Système - C5

Transcription:

Le langage C 70's Début du langage C (Ritchie et Kernighan), Origine liée au système UNIX (90% écrit en C) 1978 ``The C Programming Language``, (Kernighan et Ritchie), --> on fait référence à cette première version en parlant du ``C K& R'' 1983 Comité de normalisation ANSI 1989 Norme ``ANSI C``, --> on fait référence à cette seconde version en parlant du ``C ANSI``

Utilisation du C Développé en 1971 par Dennis Ritchie au sein des laboratoires Bell. Langage d'implantation de systèmes d'exploitation (Unix et ses dérivées): --> instructions proches de la machine ; --> pointeurs typés mais non contrôlés ; --> portabilité. Langage adapté à l'écriture de petits et de moyens programmes: --> efficacité du code généré ; --> compilation séparée ; --> nombreux outils disponibles. Langage peu utilisé pour les grosses applications: --> approche archaïque de la modularité ; --> typage laxiste. Pleine richesse sous Unix.

Caractéristiques du langage C (1) Langage structuré, conçu pour traiter les tâches d'un programme en les mettant dans des blocs. Il produit des programmes efficaces: il possède les mêmes possibilités de contrôle de la machine que l'assembleur et il génère un code compact et rapide. Déclaratif: normalement, tout objet C doit être déclaré avant d'être utilisé. S'il ne l'est pas, il est considéré comme étant du type entier. Format libre: la mise en page des divers composants d'un programme est totalement libre. Cette possibilité doit être exploitée pour rendre les programmes lisibles.

Caractéristiques du langage C (2) Modulaire: une application pourra être découpée en modules qui pourront être compilés séparément. Un ensemble de programmes déjà opérationnels pourra être réuni dans une librairie. Cette aptitude permet au langage C de se développer de lui même. Souple: peu de vérifications et d'interdits, hormis la syntaxe. Il est important de remarquer que la tentation est grande d'utiliser cette caractéristique pour écrire le plus souvent des atrocités. Transportable: les entrées/sorties sont réunies dans une librairie externe au langage.

Exemple de programme en C #include <stdio.h> /* directives au préprocesseur */ #define DEBUT -10 #define FIN 10 #define MSG "Programme de démonstration\n" int carre(int x); /* déclaration des fonctions */ int cube(int x); main() /* programme principal */ { /* début du bloc de la fonction main */ int i; /* définition des variables locales */ printf(msg); for ( i = DEBUT; i <= FIN ; i++ ) { printf("%d carré: %d cube: %d\n", i, carre(i), cube(i) ); } /* fin du bloc for */ return 0; } /* fin du bloc de la fonction main */ int cube(int x) /* définition de la fonction cube */ { return x * carre(x); } int carre(int x) /* définition de la fonction carre */ { return x * x; }

Règles d'écriture des programmes C Afin d'écrire des programmes C lisibles, il est important de respecter un certain nombre de règles de présentation: ne jamais placer plusieurs instructions sur une même ligne. utiliser des identificateurs significatifs. grâce à l'indentation des lignes, on fera ressortir la structure syntaxique du programme. Les valeurs de décalage les plus utilisées sont de 2, 4 ou 8 espaces. on laissera 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 (à l'exception de l'accolade fermante du bloc de la structure do... while) 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. il est nécessaire de commenter les listings. Eviter les commentaires triviaux.

ETAPES PERMETTANT L'EDITION, LA MISE AU POINT, L'EXECUTION D'UN PROGRAMME 1- Edition du programme source, à l'aide d'un éditeur (traitement de textes). Le nom du fichier contient l'extension.c, exemple: PROG1.C. 2- Compilation du programme source, c'est à dire création des codes machine destinés au microprocesseur utilisé. Le compilateur indique les erreurs de syntaxe mais ignore les fonctions-bibliothèque appelées par le programme. Le compilateur génère un fichier binaire, appelé fichier objet: PROG1.OBJ. 3- Editions de liens: le code machine des fonctions-bibliothèque est chargé, création d'un fichier binaire, appelé fichier exécutable: PROG1.OUT* (UNIX) ou PROG1.EXE (DOS, Windows). 4- Exécution du programme: lancement de l exécutable à partir d une ligne de commande (UNIX). Lancement de l exécutable par un doubleclique sur son icône (Windows et Mac).

Séparateurs et commentaires espace, tab, newline: sont ignorés, ils servent uniquement de séparateurs d'entités lexicales. /*... */ ou // (C++ uniquement) : commentaires, ignorés également. /* ceci est un commentaire sur plusieurs lignes */ // ne commente qu'une ligne Attention: les commentaires ne s'imbriquent pas! ; : termine une déclaration ou une instruction simple,, : sépare 2 éléments dans une liste, (... ) : liste d'arguments, {... } : bloc ou liste d'initialisations, [... ] : dimension/sélection d'éléments de tableaux.

Identificateurs (1) Les identificateurs nomment les objets C (fonctions, variables... ): C'est une suite de lettres ou de chiffres. Le premier caractère est obligatoirement une lettre. Le caractère _ (souligné) est considéré comme une lettre. Le C distingue les minuscules des majuscules. Exemple: canadiens, Canadiens, CanAdiens et CANADIENS sont des identificateurs valides et tous différents. La longueur de l'identificateur dépend de l'implémentation. La norme ANSI prévoit qu'au moins les 31 premiers caractères soient significatifs pour le compilateur. L'éditeur de liens peut limiter le nombre de caractères significatifs des identificateurs à un nombre plus petit.

Identificateurs (2) Un identificateur ne peut pas être un mot réservé du langage: 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 Recommandations: Utiliser des identificateurs significatifs. Réserver l'usage des identificateurs en majuscules pour le préprocesseur. Réserver l'usage des identificateurs commençant par le caractère _ (souligné) à l'usage du compilateur.

Les différents types de variables en C Type Bits Min. Max. char 8-128 127 signed char 8-128 127 unsigned char 8 0 255 short 16-32768 32767 unsigned short 16 0 65535 int 32-2147483648 2147483647 unsigned 32 0 4294967295 long 32-2147483648 2147483647 unsigned long 32 0 4294967295 float 32 1.17 E-38 3.4 E+38 double 64 2.22 E-308 1.7 E+308 long double 128 3.36 E-4932 1.1 E+4932

Initialisation de variables Initialisation explicite: Les variables peuvent être initialisées lors de leur définition. int i, j = 5; /* initialise la variable j a 5 */ char c = 'R'; char tab1[3] = { 'a', 'b', 'c' }; char tab2[ ] = { 'a', 'b', 'c' }; Le compilateur détermine pour tab2 le nombre d'éléments en fonction du nombre d'initialiseurs. int tab3[3][2] = {{1,2}, {3,4}, {5,6}}; int tab4[3][2] = { 1, 2, 3, 4, 5, 6}; /* pareil que tab3 */ int tab5[4] = { 1, 2 }; /* tab5[2] = 0 et tab5[3]=0 */ S'il y a moins d'initialiseurs que d'éléments déclarés, les éléments non initialisés le sont implicitement à 0. Initialisation avec la valeur d une expression: D'une manière générale, une variable peut être initialisée avec la valeur d'une expression. short a = sqrt(x)/10; int b = 2*a + 3; int nb = atoi(argv[1]);