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



Documents pareils
Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Algorithmique I. Algorithmique I p.1/??

STAGE IREM 0- Premiers pas en Python

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

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

Cours 1 : La compilation

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

Chap III : Les tableaux

Création et Gestion des tables

Information utiles. webpage : Google+ : digiusto/

Travaux Dirigés n 1 : chaînes de caractères

modules & compilation

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

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

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

Chapitre VI- La validation de la composition.

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Cours de Programmation 2

Rappels Entrées -Sorties

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Structure fonctionnelle d un SGBD

Vérification formelle de la plate-forme Java Card

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

Évaluation et implémentation des langages

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

Langage SQL : créer et interroger une base

Informatique Générale

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Machines virtuelles Cours 1 : Introduction

Algorithmique, Structures de données et langage C

Traduction des Langages : Le Compilateur Micro Java

Arguments d un programme

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

CHAPITRE 1. Introduction aux bases de données

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

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Poker. A rendre pour le 25 avril

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

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

Manuel d'installation

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

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

MIS 102 Initiation à l Informatique

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

Conventions d écriture et outils de mise au point

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Générer du code à partir d une description de haut niveau

Les structures. Chapitre 3

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Module.NET 3 Les Assemblys.NET

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

Le Langage De Description De Données(LDD)

ARBRES BINAIRES DE RECHERCHE

Cours Bases de données

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

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

Classes et Objets en Ocaml.

Présentation du langage et premières fonctions

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

ACTIVITÉ DE PROGRAMMATION

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

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

CATALOGUE DES FORMATIONS 2014

Cours Composant 2. Qualité logicielle et spécications algébriques

Optimisations des SGBDR. Étude de cas : MySQL

Processus d Informatisation

Bases de données relationnelles

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

Accéder à ZeCoffre via FTP

Programmes des classes préparatoires aux Grandes Ecoles

Le langage C. Séance n 4

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Fonction inverse Fonctions homographiques

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)

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

Cours de Master Recherche

Utilisation d objets : String et ArrayList

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

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

Introduction aux SGBDR

TD3 - Facturation avec archivage automatisé

LA QUALITE DU LOGICIEL

Chapitre 2 : Abstraction et Virtualisation

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

Les structures de données. Rajae El Ouazzani

Conseils et préconisations de mutualisation ISO 2700x et ISO / ITIL Groupe de travail du Club Toulouse 3 Avril 2012

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

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

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Chapitre 1 : La gestion dynamique de la mémoire

Les arbres binaires de recherche

Le langage SQL (première partie) c Olivier Caron

Transcription:

Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être manipulés comme des valeurs du langage ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 27

Dictionnaire ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 28

Spécifications algébriques Types abstraits Au moment de la conception du programme, on est amené à définir des types abstraits en spécifiant quelles propriétés ils doivent vérifier Le développeur du type devra respecter ces propriétés, mais sera libre de l implémentation concrète L utilisateur pourra supposer que les propriétés sont vérifiées pour son code ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 29

Spécifications algébriques Spécifications algébriques Les spécifications algébriques sont une des manières de procéder ainsi. Elles contiennent les prototypes des fonctions manipulant le type abstrait des équations mettant en relation ces fonctions, expliquant ainsi les propriétés qu elles doivent vérifier ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 30

Spécifications algébriques De la spécification algébrique à l implémentation prototypes interface d un module comment vérifier que l implémentation vérifie les propriétés? test à la main génération de tests exhaustivité? certification (preuve) à la main formelle (interactive ou automatique) ± facile suivant le langage ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 31

Dictionnaire Exemple concret : les dictionnaires (aussi appelés tableaux associatifs ou tables d association) On veut associer des clefs k Key à des valeurs v Val Il est possible de créer un dictionnaire vide d insérer une nouvelle association de rechercher à quelle valeur est associée une clef de supprimer une association En général, Key est supposé totalement ordonné. Dans la suite, on supposera qu à une clef n est associée qu une seule valeur au maximum (le dictionnaire est une fonction au sens mathématique) ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 32

Exemples d utilisation Omniprésent en informatique : Table des symboles dans un compilateur Key= symboles, Val= informations (type, visibilité,...) Système de fichier Key= chemins, Val= emplacements disque Mémoïsation Key= arguments, Val= résultats Moteur de recherche Key= mots-clefs, Val= pages associées Représentation d un ensemble Key= élément, Val= {est_dedans}... ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 33

Spécification algébrique d un dictionnaire type ( k, v) dict creer : int -> dict inserer : dict -> k -> v -> dict rechercher : dict -> k -> ( v ERR) supprimer : dict -> k -> (dict ERR) rechercher(creer(i), k) = ERR rechercher(inserer(d,k,v),k) = v rechercher(inserer(d,k,v),k ) = rechercher(d,k ) rechercher(supprimer(d,k),k) = ERR rechercher(supprimer(d,k),k ) = rechercher(d,k ) k k k k ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 34

Interface : C typedef int key; typedef char* value; typedef struct dict_base *dict; dict creer(int); value rechercher(dict, key); dict inserer(dict, key, value); dict supprimer(dict, key); ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 35

Interface : OCaml type ( key, value) dict val creer : int -> ( key, value) dict val rechercher : ( key, value) dict -> key -> value val inserer : ( key, value) dict -> key -> value -> ( key, value) dict val supprimer : ( key, value) dict -> key -> ( key, value) dict ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 36

Implémentations Dans ce cours, trois implémentations listes d association arbres bien équilibrés table de hachage Comparaison de la complexité en temps de chacune des fonctions en moyenne dans le pire des cas ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 37