LICENCE SCIENCES & TECHNOLOGIES 1 re année INF121 ALGORITHMIQUE ET PROGRAMMATION FONCTIONNELLE

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

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

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

Algorithmique et Programmation, IMA

Recherche dans un tableau

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)

Examen Médian - 1 heure 30

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

Application 1- VBA : Test de comportements d'investissements

CORRECTION EXERCICES ALGORITHME 1

Cours de Programmation 2

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

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

Corrigé des TD 1 à 5

Propagation sur réseau statique et dynamique

Cours d algorithmique pour la classe de 2nde

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

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

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


Initiation à la programmation en Python

Chapitre 2 Le problème de l unicité des solutions

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

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Plan du cours Cours théoriques. 29 septembre 2014

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Cours d Informatique

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

1.6- Génération de nombres aléatoires

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

Algorithmique et programmation : les bases (VBA) Corrigé

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

Cours 1 : La compilation

Cours Informatique Master STEP

I. Introduction aux fonctions : les fonctions standards

OCL - Object Constraint Language

STAGE IREM 0- Premiers pas en Python

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Programmation Objet - Cours II

Gestion mémoire et Représentation intermédiaire

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Enseignement secondaire technique

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

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

Correction TD algorithmique

Peut-on tout programmer?

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

TRIGONOMETRIE Algorithme : mesure principale

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

Image d un intervalle par une fonction continue

Algorithmique & programmation

Compilation (INF 564)

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Algorithmes et programmation en Pascal. Cours

Arbres binaires de recherche

Logiciel Libre Cours 2 Fondements: Programmation

Développements limités. Notion de développement limité

L ALGORITHMIQUE. Algorithme

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

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

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

Cours d Analyse. Fonctions de plusieurs variables

1. Structure d'un programme FORTRAN 95

Résolution d équations non linéaires

Algèbre binaire et Circuits logiques ( )

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmes de recherche

Initiation à l algorithmique

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

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

Continuité et dérivabilité d une fonction

Le théorème de Thalès et sa réciproque

À l'intention des parents

Raisonnement par récurrence Suites numériques

Gestion du projet pour qu'il soit pérenne et collaboratif

TP 1. Prise en main du langage Python

Représentation d un entier en base b

Programmation en Caml pour Débutants

Les algorithmes de base du graphisme

Principes des langages de programmation INF 321. Eric Goubault

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

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

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

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites

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

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Dérivation : cours. Dérivation dans R

4.2 Unités d enseignement du M1

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

Année Universitaire 2009/2010 Session 2 de Printemps

Chapitre 10. Les interfaces Comparable et Comparator 1

Cryptographie. Cours 3/8 - Chiffrement asymétrique

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Université Paris-Dauphine DUMI2E 1ère année, Applications

Quatrième partie IV. Test. Test 15 février / 71

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

Transcription:

Université Joseph Fourier UFR IMA Département Licence Sciences et Technologie LICENCE SCIENCES & TECHNOLOGIES 1 re année INF121 ALGORITHMIQUE ET PROGRAMMATION FONCTIONNELLE Devoir maison 1 & 2 (à faire avant le TP2) Exercice 1 Moyenne olympique La moyenne olympique de n nombres est la moyenne des n 2 nombres restant après avoir enlevé deux nombres : le nombre qui a la valeur maximale et celui de valeur minimale. On demande de dénir une fonction calcule la moyenne olympique d'un vecteur de quatre entiers strictement positifs. Exemple La moyenne olympique des quatre nombres (10, 8, 12, 24) est 11 ; celle des nombres (12, 12, 12, 12) est 12. SPÉCIFICATION MATHÉMATIQUE moyenne olympique Prol moyol : N N N N R + Sémantique : moyol(a, b, c, d) est la moyenne olympique des nombres a, b, c, d Prol min4 : Z Z Z Z Z Sémantique : min4(a, b, c, d) est le minimum des nombres a, b, c, d Prol max4 : Z Z Z Z Z Sémantique : max4(a, b, c, d) est le maximum des nombres a, b, c, d Prol max2 : Z Z Z Sémantique : max2(x, y) est le maximum des 2 nombres x, y Prol min2 : Z Z Z Sémantique : min2(x, y) est le minimum des 2 nombres x, y 1

DÉFINITION MATHÉMATIQUE D'ENSEMBLES déf N = {............ x > 0} déf R + = {x R........... } DÉFINITION INFORMATIQUE DE TYPES type natpos = int... type reelpos =... (* >=0 *) RÉALISATION INFORMATIQUE moyenne olympique Algorithme : max2(x, y) = le milieu de x et y + la moitié de la distance entre x et y =........... 2 +............. min2(x, y) = si (x < y) alors x sinon y ou bien = max2( x, y) max4(a, b, c, d) = max2(...........(a, b),........... (c, d)) Implantation min4(i, j, k, l) =.......... (i, min2(j, min2(k, l))) moyol(u, v, w, x) = u + v + w + x min4(u, v, w, x) max4(u, v, w, x) 2 let (max2 : int.. int... int) = function (x, y) -> (... + abs(...) )/2 let (... : int * int * int * int...) = function (a, b, c, d) -> max2 (max2 (...),... (c,d)) let (... :... -> int) = function (x, y) -> if (...) then x else.. let (... :... *... *... *... -> int) = function (i, j, k, l) -> min2 (i,... (j,... (k,l))) (* /! conditions d'utilisation de moyol (u,v,w,x) : u>0, v>0, w>0, x>0 *) let (moyol :... *... *... *... ->...) = function (u, v, w, x) -> (u+v+w+x - min4 (u,v,w,x) - max4 (u,v,w,x)) /. 2.0 2

Exercice 2 Maximum de trois entiers (à préparer pour le TP2) Spéciez et réalisez une fonction qui détermine le maximum de trois entiers distincts deux à deux. Étudiez diverses solutions selon la manière de conduire l'analyse par cas et de la formuler. SPÉCIFICATION MATHÉMATIQUE maximum de 3 entiers Prol max3 : Z Z Z... Sémantique : max3(a, b, c) est le maximum des 3 nombres a, b, c distincts deux à deux Il existe plusieurs réalisations de cette fonction, on en présente quatre diérentes. 2.1 Réalisation basée sur une analyse en fonction du résultat (3 cas) RÉALISATION INFORMATIQUE maximum de 3 entiers (version 1) a si a b et a c Algorithme 1 : max3(a, b, c) = Implantation 1 b si........... et.......... c si........... et.......... let (max3 :... *... ->...) = function (a, b, c) -> if (...) then a else (if (b>=a && b>=c) then.. else ) (if (...) then.. else c (* cas impossible donc on rend ce qu'on veut *) ) 2.2 Réalisation basée sur des analyses par cas imbriquées RÉALISATION INFORMATIQUE maximum de 3 entiers (version 2) si (a > b) Algorithme 2 : max3(a, b, c) = si (b a) si a > c rendre a si........... rendre c si b > c rendre.. si.......... rendre.. Remarque Cet algorithme par étude de cas imbriquée correspond à une implantation au moyen de (if.. then.. else..) imbriqués. 3

Implantation 2 let (max3 : int.. int.. int... int) = function (a, b, c) -> if (a>b) then (if (...) then.. else c) else (if (...) then b else c) 2.3 Réalisation par composition de fonctions RÉALISATION INFORMATIQUE maximum de 3 entiers (version 3) Algorithme 3 : max3 (a, b, c) =........... (a,........... (b,c)) L'analyse par cas de l'algorithme 2 est eectuée dans la fonction max2. Implantation 3 let (max3 : int * int * int -> int) = function (a, b, c) ->... (a,... (b,c)) 2.4 Réalisation en nommant un calcul intermédiare On utilise la construction Ocaml (let.. in..) an de donner un nom au calcul du maximum des entiers a et b. Ce procédé correspond à ce que font les mathématiciens lorsqu'ils écrivent : Posons m = le maximum de a et b et nous pourrons utiliser m dans la suite... RÉALISATION INFORMATIQUE maximum de 3 entiers (version 4) Algorithme 4 : Soit m le maximum de a et b. Le maximum des nombres (a, b, c) est le maxi- mum de m et de c. Cet algorithme peut aussi s'écrire : max3(a, b, c) = La construction (posons var = expr dans une expression utilisant var) existe en Ocaml mais s'écrit en anglais : (let var = expr in une expression utilisant var) posons m = max2(a, b) dans max2(m, c) Remarque importante : Ne pas confondre les expressions suivantes L'expression posons m = max2 (a,b) dans max2 (m,c) est une définition-utilisation. Elle dénit m puis l'utilise dans un calcul. L'expression si m = max2 (a,b) alors max2 (m,c) est un branchement conditionnel. Elle utilise un m déjà déni et teste si la valeur de ce m est égal au maximum de a et b 4

Implantation 4 let (max3 : int * int * int -> int) = function (a, b, c) -> let m =... in max2 (m,c) Implantation 4' (même idée mais sans utiliser la fonction max2) let (max3 : int * int * int -> int) = function (a, b, c) -> let m = (if (...) then.. else..) in (if (m>c)...) Exercice 3 Typage d'une expression 3.1 Détermination du type d'une expression Complétez les pointillés avec le type de chacune expression soulignée ainsi que le type des fonctions g :........................ et f :............................. let expression1... = (let a = "aeiouy"... in (let b = g(a)... in (if ( b... ) then f(a)... else 0... ))) ; ; a :.................................., b :.................................., g :..........................................................................., longueur :..................................................................... expression1 :.................................................................. 3.2 Exemple d'expression non-typable Complétez les pointillés avec le type de chacune expression soulignée (dans l'ordre indiqué par les numéros) ainsi que les types des fonctions numéro :...................... et f :.......................... Montrez qu'on aboutit à un conit de type qui justie que l'expression e n'est pas typable (donc elle n'a pas de sens). 5

let e = (let y = (6)... {}}{ f(0) and z = in (let x = (if ( y = 'a') then f(2) else z + 1 ) (1)... (7)... {}}{ f(1) (3)... (2)... in x < numéro(y) (5)... )) (4)... x :....................., y :....................., z :....................., numero :...................................................................... f :............................................................................ e :............................................................................ 6