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



Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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


Introduction au langage C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Rappels Entrées -Sorties

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

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

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

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

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

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

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

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

ALGORITHMIQUE ET PROGRAMMATION En C

Programmation en langage C

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

SUPPORT DE COURS. Langage C

Cours d Algorithmique et de Langage C v 3.0

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

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

Informatique Générale

Le langage C. Introduction, guide de reference

Le langage C. Séance n 4

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Support de Cours de Langage C. Christian Bac

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

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

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

Algorithmique et Programmation, IMA

Conventions d écriture et outils de mise au point

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

Programmer en JAVA. par Tama

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

Chap III : Les tableaux

Évaluation et implémentation des langages

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les chaînes de caractères

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

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

Quelques éléments de compilation en C et makefiles

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

Langage Éric Guérin 5 octobre 2010

Machines virtuelles Cours 1 : Introduction

IV- Comment fonctionne un ordinateur?

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

Notions fondamentales du langage C# Version 1.0

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithme. Table des matières

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

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

Structure d un programme

Logiciel de Base. I. Représentation des nombres

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

TP : Gestion d une image au format PGM

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

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

Cours 1 : La compilation

TP1 : Initiation à Java et Eclipse

Environnements et Outils de Développement Cours 1 Introduction

L informatique en BCPST

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Les structures. Chapitre 3

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

Cours 1: Java et les objets

La technologie Java Card TM

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 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

TP 1. Prise en main du langage Python

Compilation (INF 564)

Logiciel de base. Première année ENSIMAG

Licence Sciences et Technologies Examen janvier 2010

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

Architecture de l ordinateur

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

Notes de Cours - Programmation Pascal Ferraro

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

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

Éléments de programmation et introduction à Java

Programmation impérative

Conception de circuits numériques et architecture des ordinateurs

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

Chapitre I Notions de base et outils de travail

Structurer ses données : les tableaux. Introduction à la programmation

Cours 1 : Qu est-ce que la programmation?

Codage d information. Codage d information : -Définition-

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

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

Architecture matérielle des systèmes informatiques

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

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

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

Programmation assembleur : aperçu

Transcription:

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

Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative Langage C / F. Cloppet

Informations pratiques Planning Enseignements Horaire Salle Cours Lundi 11h45-13h15 Amphi Fourier TD-TDM Gr1 N. Dorta Vendredi 8h00-11h00 523 B TD-TDM Gr2 N. Loménie Mercredi 13h30-16h30 523 B TD-TDM Gr3 F. Cloppet Jeudi 08h00-11h00 523 A TD-TDM Gr4 N. Loménie Mercredi 10h15-13h15 B527 3 Programmation Impérative Langage C / F. Cloppet

Modalités de Contrôle des connaissances Contrôle continu CC (/20 points) QCM en début de chaque TD sur le cours de la semaine précédente 8 meilleurs sur les 10 effectués (/6 points) 1 épreuve sur machine semaine 8(/14 points) Il faut avoir passer 4 QCM sur les 6 proposés avant la semaine 7 Examen E épreuve écrite de 1h30 Note session 1 = max(e ; (E + CC) / 2) Note session 2 Si CC >=10 alors max(e ; (E + CC) / 2) Sinon E avec E = note de l examen de la session concernée Aucun document autorisé lors des évaluations 4 Programmation Impérative Langage C / F. Cloppet

Objectifs de l UE Consolider et développer les compétences acquises en Initiation à la programmation Langage de programmation = langage C Pré-requis : ECUE Initiation à la programmation (L1 S1) Compétences acquises Savoir traduire un algorithme en langage C Savoir compiler et exécuter des programmes avancés en langage C 5 Programmation Impérative Langage C / F. Cloppet

Bibliographie non exhaustive. La Bible. Le langage C Norme ANSI, Brian W. Kernighan et Dennis M. Ritchie, Dunod 2 ème Edition (2004) Un peu plus pédagogique Programmer en langage C, Claude Delannoy, Eyrolles (2009) 6 Programmation Impérative Langage C / F. Cloppet

Support de cours Poly disponible sur http://www.math-info.univ-paris5.fr/~cloppet/progimperative/ Tout n est pas dans le poly.. Ce poly n est là que pour vous aider à la prise de notes et ne vous dispense en aucun cas d assister au cours!!!! Les TDs seront corrigés ié au tableau durant la séance Pas de corrigé donné sur les TDMs mais votre enseignant est là pour évaluer avec vous pendant la séance les programmes que vous aurez écrits 7 Programmation Impérative Langage C / F. Cloppet

Plan du cours Introduction Rappels et compléments Programmer en Langage C - Compilation Variables Opérateurs Instructions de contrôle Pointeurs Tableaux Fonctions Chaînes de caractères Pointeurs- Tableaux-Fonctions Types Construits Entrées Sorties sur Fichiers Compilation séparée Implémentation de Types Abstraits de Données 8 Programmation Impérative Langage C / F. Cloppet

Cours 1 Introduction Activité de Programmation Paradigmes de Programmation Langages de Programmation Langage gg C Programmer en Langage C Compilation Règles de base Rappels et Compléments sur les types, constantes, variables 9 Programmation Impérative Langage C / F. Cloppet

Introduction Activité de programmation Étudier le problème à résoudre solution programmable? Développer un programme optimal programme fait ce qu il est censé faire programme prend en compte les situations anormales programme facile à modifier et à étendre Ces 2 points sont liés avec le cours d algorithmique et structures de données 10 Limiter les coûts de production Appel aux techniques du génie logiciel le développement d un logiciel doit être divisé en plusieurs parties pour être contrôlable modèles de développement de logiciels Programmation Impérative Langage C / F. Cloppet

Introduction Aspects de conception liés aux problèmes impliquant le monde réel Aspects de conception liés à la conception elle-même Problème Saisie des exigences Enoncé du problème exigences fonctionnelles Spécification du système conception initiale Modèles abstraits du système conception finale améliorations successives Solution livraison Modèle final (code source) Vue générale des activités de développement d un système 11 Programmation Impérative Langage C / F. Cloppet

Introduction Paradigmes de Programmation Programmation Impérative Programme représenté par une machine à états qui représente les états successifs de la mémoire mémoire centrale et des instructions qui modifient son état grâce à des affectations successives Basic, Pascal, Langage C. Programmation Fonctionnelle Toute opération d affectation interdite Programme décrit par un emboitement de fonctions Un ou plusieurs paramètres en entrée Une seule sortie Lisp, Common Lisp, Caml, Scheme 12 Programmation Impérative Langage C / F. Cloppet

Introduction Langages de programmation Langage binaire Processeur circuits électroniques Système de communication binaire (0-1) Langage de plus haut niveau langage d assemblage ou assembleur Encore très proche de la machine langages de haut niveau (langages compilés, interprétés) Plus proche du langage naturel 13 Programmation Impérative Langage C / F. Cloppet

Introduction Langages de programmation impérative de haut niveau Instructions impératives principales l'assignation Opération sur l information i en mémoire le branchement conditionnel Bloc d instructions exécuté que si une condition prédéterminée est réalisée le branchement sans condition Séquence d exécution transférée à un autre endroit du programme (appel de procédure ou fonction, appel de sous-programme, «goto» ) le bouclage Répétition d une suite d instructions un nombre prédéfini de fois ou jusqu à ce qu une certaine condition soit réalisée. 14 Programmation Impérative Langage C / F. Cloppet

Introduction Langage C Conçu par B.W. Kernighan et D.M. Ritchie (années 1970) pour développer le système d exploitation Unix sur les stations de travail Langage structuré de haut niveau fonctions, instructions impératives principales Mais aussi un Langage de plus bas niveau opérateurs permettant de travailler au niveau du codage machine Il s étend des stations de travail aux micro-ordinateurs Norme C ANSI (American Standards National Institute) donner une définition non ambiguë et indépendante de la machine C++ est une extension de C 15 Programmation Impérative Langage C / F. Cloppet

Introduction Langage C Octobre 2013 16 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Programmer en Langage C Problème Réflexion ée Compilation Saisie du code source du Programme - Editeur de texte Programme exécutable 17 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Programmer en Langage C Une application peut être conçue comme une collection de modules, chaque module pouvant être une collection de sous-programmes, une collection de données partagées. De tels modules peuvent constituer des unités de programmes en C chacune mémorisée dans un fichier. Une unité de programme constitue une unité de compilation ou projet. 18 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Compilation (3 étapes) phase de pré-processing des fichiers *.c inclusion des fichiers d en-tête (*.h) et les remplacements projet compilation o des fichiers *.c obtention des fichiers objets fic1.c fic1.h fic2.c fic2.h cc -c fic1.c cc -c fic2.c fichier objet => *.o fic1.o fic2.o édition des liens entre les différentes librairies C et les fichiers objets obtention du fichier exécutable.exe sous windows cc ototo fic1.o fic2.o fic1.o -o fic2.o toto toto Exemple des phases de compilation et d'édition de liens avec le compilateur cc sous UNIX. 19 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Compilation Pour être plus complet. 20 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Integrated Development Environment (IDE) Programme 3 en 1 (éditeur de texte, compilateur éditeur de liens, debugger) Eclipse Compilation Edition de liens 21 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Structure d un programme en C 22 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Règles de base Toute instruction se termine par un ; Un bloc d instruction commence par { et se termine par } Un commentaire commence par /* et se termine par */ Peut être écrit sur plusieurs lignes entre /* et */ Commentaire sur une ligne // si compilateur C/C++ Caractères autorisés pour les noms d identificateurs caractère ou caractère+chiffres mais caractère en 1er( taille < 31) pas de caractères d espacement, pas d accents le perimetre le_perimètre => le_perimetre C fait la différence entre majuscule et Minuscule sensible à la casse toto est différent de Toto, TOto, TOTO, toto, toto.. Donner des noms qui indiquent le rôle de la variable ou de la fonction Mots clés et opérateurs réservés ne peuvent être utilisés comme noms de variables, constantes, fonctions,. 23 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Règles d écriture pour la lisibilité des programmes Une et une seule instruction par ligne L accolade fermante d un bloc est alignée sur l accolade ouvrante correspondante Les instructions d un bloc sont décalées par rapport aux accolades marquant le début et la fin du bloc Deux styles de convention d écriture autorisés int main( ) { printf("bonjour ") ; /* affichage d un message à l écran */ printf(" à tous \n") ; return 1 ; } int main( ) { printf("bonjour ") ; // affichage printf(" à tous \n") ; return 1 ; } 24 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Types de base Donnent l étendue des valeurs du domaine concerné Taille des types représentant des valeurs entières ou réelles est définie sur chaque machine Pour types représentant un entier définies dans limits.h Pour type représentant un réel définies dans float.h Pas de type booléen en C 25 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Types de base Valeurs entières Type Octets Etendue de valeurs Architecture 16 bits Architecture 32 bits char 1-128 -> +127 1 short 2-32768 -> +32767 2 int 2 4-32768 -> +32767-2 147 483 648 -> 2 147 483 647 long 4 4-2 147 483 648 -> 2 147 483 647 26 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments / Types de base Valeurs entières Mot clé unsigned Type Octets Architecture 16 bits Architecture 32 bits Etendue de valeurs unsigned char 1 0 -> 255 1 unsigned short 2 0 -> 65535 2 unsigned int 2 4 0 -> 65535 0 -> 4 294 967 295 unsigned long 4 4 0 -> 4 294 967 295 27 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments / Types de base char valeur entière? Table de code ascii 28 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments / Types de base Valeurs réelles Représentation d un réel : <+/-> <mantisse> *10 <exposant> mantisse: un décimal positif avec un seul chiffre devant la virgule Exposant: un entier donnant l ordre de grandeur Ex: 1.458791 *10 4 1 4587.91 Type Octets Etendue de valeurs float format simple précision double format double précision long double format précision étendue Architecture 32 bits 4 (32 bits) signe: 1 bit exposant : 8 bits mantisse : 23 bits 8 (64 bits) signe: 1 bit exposant : 11 bits mantisse : 52 bits 10 (80 bits) signe: 1 bit exposant : 15 bits mantisse : 64 bits -3.4 x 10 38 -> 3.4 x 10 38-1.7 x 10 308 -> 1.7 x 10 308 29 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Constante Ne change jamais de valeur pendant l exécution d un programme Constante non typée Macrodéfinition #define NB 5 #define PI 3.14 pas d allocation en mémoire le pré-processeur remplace dans la suite du programme toute référence aux macros définies par leur définition le pré-processeur se contente de remplacer les références à la macro par la valeur de celle-ci sans opérer de contrôle sur l utilisation de cette valeur 30 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments /Constante Constante Constante non typée 8 31 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments /Constante Constante typée mot clé const const Type NOM_CONSTANTE = ValeurConstante ; const int NOMBRE_DE_VIES_INITIALES = 5; const float PI = 3.14; Allocation en mémoire du nombre d octets correspondant au type utilisé pour la déclaration 32 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments /Constante Constante typée 8 33 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments /Constante Constante typée 34 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments Variables Peut changer de valeur pendant l exécution du programme Définition de variable 35 Déclaration + réservation de l espace mémoire liée à La définition du domaine de valeurs et des opérations autorisées Type de la variable char, int, short, float, double. Déclaration variable association nom de la variable et du type La réservation de l espace mémoire nécessaire au support de la variable Type Classe mémoire Globale/locale Qualificatifs register, static, extern Association d une durée de vie Lieu de définition/déclaration En dehors d une fonction Dans une fonction Classe mémoire Initialisation affectation d une valeur initiale Au moment de la définition Dans une instruction séparée Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Syntaxe de définition/déclaration nomdutype1 nomdevariable ; nomdutype2 nomdevariable1, nomdevariable2 ; Exemple int nb; nb est une variable de type entier nb représente le contenu d un emplacement mémoire l emplacement mémoire ( = adresse mémoire) qui comporte la valeur de la variable nb est obtenu par &nb.. nb?.. OXf25 OXf25 OXf26 &nb 36 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Où et quand définir/déclarer les variables? AVANT de les utiliser En dehors du corps des fonctions variables globales visibles iibl dans toutes t les fonctions du fichier où elles sont déclarées é variable est allouée en début de programme et est détruite à la fin du programme automatiquement initialisée à 0 Dans le corps d une fonction ou au début d un bloc variables locales ou variables automatiques visibles uniquement dans le bloc ou la fonction où elles sont déclarées et dans les sous-blocs de celui-ci ci ou de celle-cici variable est allouée à chaque entrée dans le bloc et elle est détruite à la sortie du bloc perte de sa valeur à la sortie du bloc Pas d initialisation automatique valeur initiale doit être explicitement définie par le programmeur Une variable locale qui a le même nom qu une variable globale masque la variable globale dans la zone de visibilité de la variable locale 37 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Domaine de visibilité Illustration Variable Globale Variable Locale Visible dans la fonction main Variable Locale Visible dans le bloc for 38 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Domaine de visibilité - Initialisation Illustration. Variable Globale Variable Locale OXf678 OXf679? 4.56 rayon... 0 167 Initialisation en 1 instruction Variable Locale OXf678 456 4.56 rayon 39 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Classes de variables Mots clés ajoutés devant la définition/déclaration de la variable extern Mot clé utilisé pour des variables globales déclarées dans d autres fichiers register variables de type registre sont stockées dans un registre mémoire à accès plus rapide que la RAM accélération des traitements mais on ne peut pas accéder à l adresse mémoire de la variable static variable globale variable sera invisible dans les autres fichiers variable locale à une fonction la variable (automatiquement initialisée à 0) n est pas détruite à la fin de l appel de la fonction elle conserve sa valeur entre 2 appels de fonctions 40 Programmation Impérative Langage C / F. Cloppet

Rappels et Compléments/Variables Classes de variables Illustration du fonctionnement d une variable locale static 5 4 10 3 Exemple d exécution i valeur rentrée valeur affichée 0 5 1 4 2 10 3 3 41 Programmation Impérative Langage C / F. Cloppet 5 9 19 22