Avant-propos. 1. Introduction



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

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


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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Quelques éléments de compilation en C et makefiles

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Introduction au langage C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Évaluation et implémentation des langages

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

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

ACTIVITÉ DE PROGRAMMATION

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

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

ALGORITHMIQUE ET PROGRAMMATION En C

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

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

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

Cours 1 : La compilation

Le langage C. Séance n 4

Cours d Algorithmique et de Langage C v 3.0

Algorithmique et Programmation, IMA

SUPPORT DE COURS. Langage C

L informatique en BCPST

Programmation système I Les entrées/sorties

Cours 1 : Qu est-ce que la programmation?

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

Rappels Entrées -Sorties

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

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

Programmer en JAVA. par Tama

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

Chapitre I Notions de base et outils de travail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

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

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

I00 Éléments d architecture

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

Traduction des Langages : Le Compilateur Micro Java

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Programmation en langage C

IV- Comment fonctionne un ordinateur?

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 de Programmation C

Chap III : Les tableaux

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Environnements de développement (intégrés)

Cours Langage C/C++ Programmation modulaire

Bernard HAMM, Évelyne LAVOISIER

Notions de Langage C

Initiation à la programmation en Python

COMPARAISONDESLANGAGESC, C++, JAVA ET

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Systeme d'exploitation

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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)

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

Outils pour la pratique

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

Cyber-base du Pays Martégal. Atelier «Découverte de l ordinateur»

Java Licence Professionnelle CISII,

Algorithmique et programmation : les bases (VBA) Corrigé

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

TP1. Outils Java Eléments de correction

Les structures. Chapitre 3

Java Licence Professionnelle CISII,

Programmation Objet Java Correction

Algorithmique avec Algobox

Cours d algorithmique pour la classe de 2nde

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

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

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

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

Conception de circuits numériques et architecture des ordinateurs

Comment créer et utiliser une fonction

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

Les débordements de tampons et les vulnérabilités de chaîne de format 1

La mémoire. Un ordinateur. L'octet. Le bit

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

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

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

Logiciel de base. Première année ENSIMAG

Notions fondamentales du langage C# Version 1.0

Environnements et Outils de Développement Cours 1 Introduction

Éléments d'architecture des ordinateurs

Tutoriel code::blocks

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

Introduction à l informatique en BCPST

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Le langage C. Introduction, guide de reference

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

Éléments de programmation et introduction à Java

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A)

Transcription:

Avant-propos Les sections ou sous-sections marquées d un astérisque (*) ne font pas partie de la matière du cours IFT1969. Elles sont destinées à définir complètement le langage C (ANSI-C99) et à en préciser les subtilités. Dans ce cours, nous insisterons sur les notions de base du C ainsi que sur les bonnes habitudes de programmation. Et la première bonne habitude de programmation est de construire des programmes portables (cette remarque s'applique à tous les langages de programmation). Un programme est dit portable si on peut le compiler sur toutes les plateformes (Unix, Linux, Windows, Mac) et avec tous les compilateurs (donc, pour le langage C: Turbo C, Borland C++, Visual C/C++, gcc, etc.). Afin d'écrire des programmes portables lors de la réalisation de vos travaux pratiques, il suffit simplement de suivre la syntaxe propre au langage C tel que définie dans ces notes de cours et aussi d'utiliser les fonctions présentées dans ces notes de cours car elles font partie du standard ANSI (C99). Pourquoi cette remarque? Parce que nous utilisons le logiciel Dev-C++ dans ce cours. Comme son nom l indique, ce logiciel est capable de traiter n importe quel programme écrit en C++. Toutefois, lors de la correction des travaux pratiques, nous utilisons un autre logiciel (gcc) qui ne traite que les programmes écrits en C. Il faut donc veiller à ne pas utiliser les extensions du langage C++ dans vos travaux pratiques (le langage C++ est construit à partir du langage C). 1. Introduction 1.1 Le logiciel Dev-C++ Ce logiciel est un environnement de travail permettant d écrire des programmes en C ou C++, de les compiler et de les exécuter. Il est constitué (principalement) des programmes suivants: - un éditeur de texte - un préprocesseur - un compilateur - un éditeur de liens - un chargeur d exécutable Le préprocesseur, le compilateur et l éditeur de liens sont invoqués automatiquement avec la commande «compile». Le chargeur d exécutable est invoqué avec la commande «run». Voici le rôle de chacun de ses programmes:

- le préprocesseur est responsable d'analyser les directives (tout ce qui commence par le caractère #) et de les exécuter (essentiellement des opérations d'édition de texte: copie de texte, remplacement de certains mots, etc.) - le compilateur est responsable de la traduction de votre programme C en assembleur (voir la section suivante) - l'éditeur de liens est responsable de résoudre les liens vers les fonctions appartenant à des librairies externes (soit la librairie du langage C, ou encore d'autres librairies disponibles sur la plateforme utilisée) - le chargeur d exécutable est responsable du chargement en mémoire centrale et de l exécution de votre programme 1.2 Le compilateur C Un ordinateur ne sait pas exécuter un programme écrit en C (ni d'ailleurs en C++, en Java, en Fortran, ou n'importe quel langage dit de haut niveau): le seul langage qu'il «connaisse» est un langage de bas niveau appelé assembleur. L'assembleur (qui varie selon le type de processeur utilisé) est un langage très simple qui permet d'écrire des instructions comme: transférer le contenu de telle adresse mémoire dans un registre, additionner le contenu de deux registres, etc. Le rôle d'un compilateur est de traduire le code écrit dans un langage de haut niveau (dans notre cas, le C) en assembleur. Le compilateur est donc un programme de traduction, mais aussi d'analyse du code. Voici les principales phases effectuées lors d'une compilation: - l'analyse lexicale permet de valider le vocabulaire utilisée dans le programme - l analyse syntaxique permet de vérifier si le code correspond bien à la grammaire du langage - l analyse sémantique permet de valider l utilisation des variables et des fonctions - la génération du code intermédiaire permet au compilateur une préparation pour les différentes phases d optimisation - les phases d optimisation permettent de réduire le code grâce à différentes techniques - finalement, la génération du code intermédiaire en assembleur permet de produire un fichier exécutable (extension de fichier «.exe» sur Windows, «.out» sur Linux, etc.) 1.3 Structure générale d un programme en C Les directives #include Les directives #define (si nécessaire) Les déclarations globales (si nécessaire) Les fonctions (déclarations et définitions si nécessaire) La fonction principale main() En C, une fonction se compose d'un en-tête et d'un bloc. Un bloc est composé de déclarations, d'instructions ou d'autres blocs. On ne peut pas définir une fonction dans un bloc. Cours IFT 1969 Page 2 de 5

1.4 Exemples Les deux exemples ci-dessous seront expliqués en cours. Pour les étudiant(e)s qui n ont aucune notion de programmation, ne paniquez pas si les concepts présentés vous semblent embrouillés. Tous les éléments seront repris de manière détaillée dans les prochains chapitres. Le but étant simplement de vous permettre de compiler et d exécuter un petit programme dans l environnement Dev-C++. 1.4.1 Exemple minimal int main() printf("bonjour maître\n"); getchar(); L appel de fonction getchar() a simplement pour but de laisser la fenêtre d affichage des résultats sur l écran. En effet, Dev-C++ fait disparaître cette fenêtre dès que le programme se termine : en exigeant une lecture, le programme doit attendre que l utilisateur appuie sur la touche «Entrée» avant de terminer. 1.4.2 Exemple un peu plus complet #define PI 3.14159265 float AireCercle (float r) return PI * r * r; Cours IFT 1969 Page 3 de 5

int main() char rep; do float rayon; printf("entrez le rayon du cercle: "); scanf("%f", &rayon); printf("un cercle de rayon %.2f a %.2f de surface\n", rayon, AireCercle(rayon)); printf("voulez-vous calculer une autre surface" " (o/n)? "); scanf(" %c", &rep); while (rep == 'o'); 1.5 Les commentaires Les commentaires sont destinés à expliquer au lecteur du code la signification des constantes et variables utilisées dans le programme, ainsi que le rôle de chacune des fonctions composant le programme. En C, les symboles /* et */ sont des délimiteurs de commentaires (tout ce qui se situe entre ces délimiteurs est ignoré par le compilateur). Les commentaires ne peuvent pas être imbriqués. En C++, le symbole // débute un commentaire qui se termine à la fin de ligne. Son utilisation est permise dans le cadre de ce cours puisque la norme ANSI-C99 le permet. Dans le cadre de ce cours, nous n exigeons pas de commenter les instructions exécutables puisque nous utilisons des algorithmes simples. Toutefois, si vous souhaitez le faire, éviter les commentaires inutiles comme: /* boucle */ for (i = 0; i < 20; i++) le lecteur du code se rend bien compte que l instruction for est une boucle! Il faut plutôt dire ce que fait ladite boucle, par exemple: /* calcul du sinus avec la série de Taylor */ for (i = 0; i < 20; i++) Voici l exemple précédent (1.4.2) avec des commentaires: Cours IFT 1969 Page 4 de 5

Exemple 1.4.2 avec des commentaires #define PI 3.14159265 /* constante célèbre */ /* Calcule l'aire d'un cercle à partir du rayon spécifié r. */ float AireCercle (float r) return PI * r * r; /* Auteur: Yves Claude Petit programme didactique qui calcule des aires de cercles tant que l'utilisateur spécifie un nouveau rayon. */ int main() char rep;/* réponse de l'utilisateur pour un autre calcul */ do float rayon; /* rayon spécifié par l'utilisateur */ printf("entrez le rayon du cercle: "); scanf("%f", &rayon); printf("un cercle de rayon %.2f a une surface de %.2f\n", rayon, AireCercle(rayon)); printf("voulez-vous calculer une autre surface (o/n)? "); scanf(" %c", &rep); while (rep == 'o'); Cours IFT 1969 Page 5 de 5