LICENCE SCIENCES & TECHNOLOGIES 1 re ANNÉE UE INF121 ALGORITHMIQUE ET PROGRAMMATION FONCTIONNELLE



Documents pareils
Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Recherche dans un tableau

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Programmation en Caml pour Débutants

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

Cours 1 : La compilation

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

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

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

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

Année Universitaire 2009/2010 Session 2 de Printemps


Compilation (INF 564)

Enseignement secondaire technique

chapitre 4 Nombres de Catalan

Algorithmique et structures de données I

Programmation Web. Madalina Croitoru IUT Montpellier

Algorithmique et Programmation, IMA

Peut-on tout programmer?

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Théorie de la Programmation

Les différents types de données et leurs opérations de base

Conception de circuits numériques et architecture des ordinateurs

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Vers l'ordinateur quantique

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

Arbres binaires de recherche

Cours de Programmation 2

Statistiques et traitement des données

Poursuivre ses études à l'université de Rouen Masters professionnels en Informatique et en Mathématiques. UFR Sciences et Techniques /18

Conduite et Gestion de Projet - Cahier des charges

Application 1- VBA : Test de comportements d'investissements

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

# 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>

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

Couples de variables aléatoires discrètes

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

Génération de code à partir d une spécification B : Application aux bases de données

Classes et Objets en Ocaml.

Résolution de systèmes linéaires par des méthodes directes

Cours Langage C/C++ Programmation modulaire

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Étude de l'analyse statique de programmes synchrones par interprétation abstraite

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

I. Introduction aux fonctions : les fonctions standards

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

1. Structure d'un programme FORTRAN 95

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

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Vérification formelle de la plate-forme Java Card

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Principes des langages de programmation INF 321. Eric Goubault

Examen Médian - 1 heure 30

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

Corrigé des TD 1 à 5

Propagation sur réseau statique et dynamique

Principe de symétrisation pour la construction d un test adaptatif

Les deux points les plus proches

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

PARCOURS COMPLET AU COURS MOYEN

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cours Informatique Master STEP

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

Programmation linéaire

Évaluation et implémentation des langages

Cahier des charges de l application visant à effectuer un suivi de consommation énergétique pour les communes. Partenaires du projet :

Algorithmes d'apprentissage

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Chapitre 1. Une porte doit être ouverte et fermée. 1.1 Les enjeux de l'informatique quantique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation. fonctionnelle, impérative, logique et orientée objet

STAGE IREM 0- Premiers pas en Python

Chapitre 2. Classes et objets

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

CONVENTION ENTRE LES SOUSSIGNÉS

Programmation avec des objets : Cours 7. Menu du jour

Programmation Objet - Cours II

DG-ADAJ: Une plateforme Desktop Grid

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Université de Bangui. Modélisons en UML

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

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

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

Mathématiques et petites voitures

Programmer en JAVA. par Tama

Licence Sciences et Technologies Examen janvier 2010

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Algorithmique & programmation

Concept de machine virtuelle

CNAM - CRA Nancy 2000/2001. Génie Logiciel. Jacques Lonchamp DEUXIEME PARTIE. Les techniques de spécification.

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

Cours d algorithmique pour la classe de 2nde

Caches sémantiques coopératifs pour la gestion de données sur grilles

Transcription:

Université Joseph Fourier UFR IMA LICENCE SCIENCES & TECHNOLOGIES 1 re ANNÉE Département Licence Sciences et Technologie UE INF121 ALGORITHMIQUE ET PROGRAMMATION FONCTIONNELLE Devoir maison - Dénition du type Durée et des opérations associées défition (type abstrait de données Lorsqu'on dénit un type de donnée (par ex. le type Durée il est téressant de dénir les opérations associées à ce type (les constructeurs, les sélecteurs, les opérations de calculs, etc. On dit qu'on a alors déni un type abstrait de données (ou tad. L'térêt est qu'un programmeur pourra réutiliser le tad et les opérations sans avoir beso de connaître comment sont représentées les données ni comment sont réalisées les opérations. Remarque Les list, les strg de Ocaml sont des types abstraits de données. Vous les utilisez et vous utilisez les opérations associées sans qu'il soit nécessaire de savoir comment les list ou les strg sont représentées dans la mache. Notre objectif est de dénir le tad Durée, c'est-à-dire le type et les opérations associées. On considère ici une durée exprimées en jour, heure, mute, seconde. On choisit de la représenter par un vecteur à 4 coordonnées (j, h, m, s (on dit aussi quadrup ou 4-up où j représente un nombre de jours, h un nombre d'heures férieur à une journée, m un nombre de mutes férieur à une heure et s un nombre de secondes férieur à une mute. 1 Dénition mathématique du type Durée et des fonctions associées DÉFINITION MATHÉMATIQUE D'ENSEMBLES déf Jour = N déf Heure = {0,..., 59} déf Mute = {0,..., 59} déf Seconde = {0,..., 59} déf Durée = Jour Heure Mute Seconde 1

2 Spécications des fonctions sur les durées constructeurs Prol sec-en-duree : N Durée Sémantique : construit une donnée de type Durée à partir d'un nombre de secondes Prol vec-en-duree : N N N N Durée Sémantique : construit une donnée de type Durée à partir d'un 4-ups représentant un nombre de jours, d'heures, de mutes et de secondes (sans limite de taille sélecteurs Prol jour : Durée N Sémantique : sélectionne la partie jour d'une durée Prol heure : Durée N Sémantique : sélectionne la partie heure d'une durée Prol mute : Durée N Sémantique : sélectionne la partie mute d'une durée Prol seconde : Durée N Sémantique : sélectionne la partie seconde d'une durée conversion Prol duree-en-sec : Durée N Sémantique : convertit une durée en un nombre de secondes opérations Prol som-duree : Durée Durée Durée Sémantique : eectue la somme de deux durées prédicats Prol eg-duree : Durée Durée Bool Sémantique : teste l'égalité de deux durées Prol f-duree : Durée Durée Bool Sémantique : teste la relation férieur strict sur les durées 2

3 2 Réalisation formatique du type Durée et des fonctions associées DÉFINITION INFORMATIQUE DE TYPES tpe nat =............... type jour = nat type de0a59 =............... type heure = de0a59 type mute = de0a59 type seconde = de0a59 type duree =.................. RÉALISATION INFORMATIQUE sec-en-duree (constructeur (sec_en_duree :... -> duree = function s0 -> (j, sr1 = div (s0, 86400 (h, sr2 = div (..., 3600 (m, s = div (sr2,...... RÉALISATION INFORMATIQUE vec-en-duree (constructeur Algorithme : On calcule le nombre de secondes que représente le vecteur (j, h, m, s puis on utilise la fonction sec-en-duree pour construire une donnée de type Durée. Pour faire le calcul du nombre totale de seconde dans (j, h, m, s on dénit une fonction auxilliaire nb-total-sec. Complétez la spécication de nb-total-sec ci-après. (nb_total_sec : nat * nat * nat * nat -> nat = function (........... -> (((j *... + h *... + m *... + s (vec_en_duree :........................ = function (j, h, m, s ->... (nb_total_sec (j, h, m, s nb-total-sec Prol nb-total-sec :....................................................................... Sémantique : nb-total-sec (j, h, m, s est le nombre totale de seconde que représentent j jours + h heures + m mutes + s secondes Exemples : 1. nb-total-sec (1, 0, 0, 0 =................... 3

4 2. nb-total-sec (0, 1, 0, 0 =............... 3. nb-total-sec (.....,....., 1,......... = 90 4. nb-total-sec (.....,....., 0,............ = 120 RÉALISATION INFORMATIQUE les sélecteurs (jour :......... = function (j,h,m,s ->.. (heure : duree -> nat =........... (... : duree -> nat = function (j,h,m,s ->................ = function (j,h,m,s -> s RÉALISATION INFORMATIQUE som-duree (opération Algorithme 1 : On réutilise les fonction duree-en-sec et sec-en-duree. 1 (som_duree : duree * duree -> duree = function (d1, d2 ->... ( (... d1 + (duree_en_sec d2 Algorithme 2 : On fait l'addition des vecteurs composante par composante en tenant compte des retenues. 2 (som_duree :........ -> duree = function ( (j1, h1, m1, s1, (j2, h2, m2, s2 -> (m,sec = div (s1+s2,60 (h,... = div (...,60 (..,heure = div (...,24 (j1+j2+j,..., m,... RÉALISATION INFORMATIQUE eg-duree (prédicat 1 : en utilisant la fonction duree-en-sec (eg_duree : duree * duree -> bool = (duree_en_sec d1 = (...... 4

5 2 : en décomposant les durées en vecteurs (j, h, m, s (eg_duree :........ -> bool = (j1, h1, m1, s1 =... and (............ = d2 j1=j2............... 3 : en comparant les vecteurs composante par composante (eg_duree : duree * duree -> bool = function ( (j1, h1, m1, s1, (............ ->............ 4 : en utilisant les sélecteurs (eg_duree : duree * duree ->... = (jour d1=(jour d2.............. (mute...=(... d2 (...... =(seconde... RÉALISATION INFORMATIQUE f-duree (prédicat 1 : en utilisant la fonction duree-en-sec (f_duree :........ -> bool = (... d1.. (... d2 2 : en utilisant des expressions conditionnelles imbriquées (f_duree : duree * duree -> bool = function ( (j1, h1, m1, s1, (j2, h2, m2, s2 -> (if (j1<>j2 then (j1<j2 else (if (... then (... else (if (m1<>m2 then (... else (s1<s2 5