La programmation Impérative par le Langage C



Documents pareils
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.

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en langage C

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

Cours d Algorithmique et de Langage C v 3.0

COMPARAISONDESLANGAGESC, C++, JAVA ET

Le langage C. Introduction, guide de reference

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


Support de Cours de Langage C. Christian Bac

SUPPORT DE COURS. Langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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)

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Algorithmique et Programmation, IMA

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

Programmer en JAVA. par Tama

Programmation système I Les entrées/sorties

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

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

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

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

Les structures. Chapitre 3

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Quelques éléments de compilation en C et makefiles

Java Licence Professionnelle CISII,

Évaluation et implémentation des langages

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

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

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)

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

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

Lier Erlang avec d autres langages de programmation

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Derrière toi Une machine virtuelle!

OS Réseaux et Programmation Système - C5

INF 104 (SELC) Introduction au langage C

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

Java Licence Professionnelle CISII,

Claude Delannoy. 3 e édition C++

Programmation système de commandes en C

Le prototype de la fonction main()

Introduction au Langage de Programmation C

Notions fondamentales du langage C# Version 1.0

Éléments de programmation et introduction à Java

Cours 1 : La compilation

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation Web. Madalina Croitoru IUT Montpellier

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

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

TP 1. Prise en main du langage Python

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

Algorithmique, Structures de données et langage C

Programmation en Java IUT GEII (MC-II1) 1

as Architecture des Systèmes d Information

Langage Éric Guérin 5 octobre 2010

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Cours Langage C/C++ Programmation modulaire

INITIATION A LA PROGRAMMATION

Logiciel Libre Cours 2 Fondements: Programmation

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

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

Compression de Données - Algorithme de Huffman Document de Conception

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

Programmation système en C/C++

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

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

Programmation Classique en langage C

Chapitre 1 : La gestion dynamique de la mémoire

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

ACTIVITÉ DE PROGRAMMATION

Une introduction à Java

Introduction au C++ et à la programmation objet

Programmation en C/C++

Gestion de la mémoire

INF 321 : mémento de la syntaxe de Java

Notes de Cours - Programmation Pascal Ferraro

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

Outils pour la pratique

Arguments d un programme

Programmation en C - Sommaire

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

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

Les structures de données. Rajae El Ouazzani

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Rappels Entrées -Sorties

Transcription:

La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer une tâche. L exécution du programme permet d exécuter ces tâches. En programmation impérative, les tâches (ou instructions) sont exécutées les unes après les autres. On dit que les instructions sont exécutées de manière séquentielle. L ordinateur commence l exécution du programme dans un certain état initial, que chaque instruction exécutée modifie, jusqu à atteindre un état final qui contient le résultat voulu. Ci-dessous quelques langages de programmation impérative : Assembleur C++ Perl Java Pascal C Objective C PHP Fortran Common Lisp 1.2. Autres types de langages La programmation déclarative ne dépend d aucun état interne de l ordinateur. Elle décrit le problème contrairement à la programmation impérative qui décrit plutôt sa solution. Il existe plusieurs types de programmation déclarative : - Programmation logique : <Description> Permet de se concentrer sur ce qui doit être calculé sans se soucier de la manière dont le calcul est effectué. Applique des règles de logique dont on associe des conséquences plus ou moins directes. Ce type de langage est essentiellement orienté Intelligence Artificielle. <Exemples de langages> Prolog, pypy, Oz 1

- Programmation fonctionnelle : <Description> Permet d effectuer des calculs de fonctions. La notion d affectation n existe pas, mais correspond à une égalité qu aucune fonction ne pourra changer tout comme en mathématiques. La notion de récursivité est très répandue dans ce type de programmation. Les langages de ce type son essentiellement utilisés pour des calculs mathématiques. De ce fait, chaque programme retourne un seul résultat comme la notion de fonction en mathématiques. <Exemples de langages> Oz 1, Lisp, Common Lisp, Scheme, OCaml - Programmation descriptive : <Description> C est une programmation permettant de décrire des structures de données. Les langages de ce type sont à expressivité réduite. <Exemples de langages> HTML, XML, LaTeX - Programmation par contrainte : <Description> Permet de poser un problème sous forme de relations logiques entre plusieurs variables. Trouver la solution à un problème de programmation par contraintes (PIC) consiste à décider s il existe ou non une affectation de toutes les variables telles que toutes les contraintes du problème soient satisfaites. Exemple de problème : le voyageur de commerce. 2. Le langage C 2.1. Historique <Exemples de langages> Module Python : Python Constraint, Librairies Java : Jopt, choco solver, Cream Le langage C a été créé en 1972 par Denis Ritchie dans le but d écrire un système d exploitation (actuellement le système UNIX). Le noyau du système Unix est par ailleurs écrit en langage C. Une définition du langage a été réalisée en 1978 par Kernighan et Ritchie. Le succès de ce langage à conduit à sa normalisation (norme 1 Un langage, comme le langage Oz ici, peut implanter plusieurs paradigmes de programmation. Par exemple le langage C++ est un langage impératif mais aussi un langage objet. 2

ANSI). Cette normalisation permet essentiellement à améliorer et à sécuriser le langage. Le respect de la norme ANSI pour un programme C, permet sa portabilité. Un programme portable est un programme qui peut s exécuter sur n importe quel ordinateur et ceci quelle que soit son architecture. Quelques propriétés du langage C : - Langage compilé : le code source d un programme écrit en C, doit être compilé par un compilateur (ex. gcc), pour ensuite être exécuté. La compilation génère un fichier binaire qui lui sera exécuté. - Langage sensible à la casse : une variable a diffère d une variable A. - Une instruction de code se termine toujours par un ;. - Un fichier de programme C, a pour extension.c. - Une librairie C a pour extension.h. - Pour commenter une ligne d instruction il faut la précéder de //. - Les commentaires sont compris entre les caractères /* et */. - Une fonction f s écrit en langage C comme suit : type f(liste_paramètres){ instruction1 ; instructionn ; } - Mots clé 2 du langage C : auto default float register struct volatile break do for return switch while case double goto short typedef char else if signed union const enum int sizeof unsigned conitnue extern long static void 2 Liste non exhaustive 3

2.2. La compilation L appel au compilateur peut se faire par la commande cc ou gcc suivie du nom du fichier source C, comme ci-dessous. Nous utiliserons plutôt la commande gcc. Dans ce cas un fichier binaire a.out (ou exécutable) est généré par défaut. Ce fichier binaire peut être exécuté comme suit : Le fichier a.out est généré, il est nommé exécutable. Quelques options de compilation avec gcc : -o nom_de_fichier -Wall -W -pedantic Cette option permet de préciser un nom au fichier exécutable. Il est préférable de ne donner aucune extension à ce fichier et de lui donner le même nom que le fichier source. $ gcc foobar.c l'exécutable est a.out $ gcc -o foobar foobar.c l'exécutable est foobar Active tous les messages d'avertissement que les auteurs du compilateur gcc ont jugés intéressants. Malgré son nom (``all'' - tous), cela n'active pas tous les messages d'avertissement dont le compilateur est capable. Active les warnings supplémentaires. Désactive toutes les possibilités non-ansi C de cc. Ces trois options vous permettent de générer du code aux normes ANSI C. Ce qui permettra à votre code d être réutilisé avec n'importe quel compilateur et sur n'importe quel système. C'est cela que l'on appelle du code portable. 4

En général, vous devriez vous efforcer de rendre votre code aussi portable que possible, sans quoi vous risquez de devoir récrire entièrement votre programme par la suite pour qu'il fonctionne ailleurs. % gcc W -Wall -pedantic -o foobar foobar.c Cela générera un exécutable foobar après avoir vérifié que foobar.c respecte la norme. Pour plus d options voir la documentation de gcc : $man gcc 2.3. La structure d un programme C Un programme C peut être composé de plusieurs fichiers : - Un fichier principal contenant la fonction main(). - Librairies standard C. - Librairies spécifiques au programme. La création de ce type de librairies nécessite la création d un fichier portant le nom de la librairie avec l extension.c et un fichier du nom de la librairie avec l extension.h. Nous expliquons dans ce qui suit le contenu de chacun de ces fichiers. Le fichier principal du programme C suit la structure ci-dessus, à savoir en début de fichier des commentaires doivent décrire «ce que fait le programme dans sa globalité». D autres informations peuvent être précisées comme le nom de chaque développeur ayant participé à la création du projet. La date de création, la date de dernière modification ou encore la version du programme. main.c 5

BibNonStandardC.h BibNonStandardC.c Notez que seul main.c doit contenir la fonction main(). Il est strictement interdit de faire appel à cette fonction dans les autres fichiers.h ou.c dans un même projet. Ainsi, nous avons la règle suivante : un projet = un fichier principal contenant int main(). 2.4. Un exemple de programme Vous pouvez écrire un programme C dans un éditeur de votre choix : Emacs ou vi (ou tout autre). Nous donnons ci-dessous le contenu d un programme nommé toto.c. 6

toto.c Ce programme permet d afficher à l écran : "Hello World! " L éditeur vi que nous avons utilisé ci-dessus permet la coloration syntaxique du code. Ce qui signifie que les mots clé du langage C sont colorés de manière à permettre une meilleure lisibilité du code. La norme prévoit que tout programme C débute toujours par la fonction main(). Tout programme C doit donc contenir une et une seule fonction main(). 2.5. La directive #include La directive #include est une commande particulière en C qui permet de charger dans le programme des librairies standard du langage. Dans l exemple donné cidessus, la librairie chargée est stdio.h. Notons deux choses : - Le nom de la librairie est compris entre les caractères "<" et ">". Ceci doit toujours être de règle pour les librairies standard du C dont fait partie stdio.h. Lorsqu on inclue une librairie définie par le programmeur, l instruction s écrira : #include "nommalib.h". - Il n y a pas de " ;" à la fin de l instruction #include. En effet, toute directive en langage C ne doit pas être suivie d un " ;". 2.6. La fonction main() La fonction main() est une fonction réservée en C. La norme impose d écrire cette fonction comme suit : int main() { instruction(s) } /* forme usuelle */ int main(int nbargs, char *argv[]) /* forme permettant de { instruction(s) } récupérer des informations fournies par l environnements */ Ainsi, la fonction main() doit toujours être déclarée de type int (i.e. entier). 7

2.7. La fonction printf() Cette fonction permet d afficher une chaine de caractères à l écran. L appel à cette fonction ne peut se faire qu après l inclusion de la librairie stdio.h dans laquelle elle est définie. Nos verrons plus en détail l utilisation de cette fonction et autres fonctions de cette librairie. 2.8. La fonction return La fonction return permet d évaluer une expression, de la convertir dans le type de la valeur de retour tel qu il est indiqué dans l entête et de la fonction. Dans cet exemple la fonction return est écrite sans parenthèses, cela est correct particulièrement pour cette fonction, mais non pour les fonctions que vous écrirez par la suite. Il est équivalent d écrire return 0; et return(0); ou encore return (0); 8