[PDF] INF201 Algorithmique et Programmation Fonctionnelle - Cours 1





Previous PDF Next PDF



Exercices avec Solutions

Cet ouvrage regroupe des exercices des séries des travaux dirigés et examens (avec corrigés) du module Algorithmique de la première année MI (USTHB).



Examen dalgorithmique et programmation

Les 4 exercices sont indépendants. Exercice 1. Tri de notes. On consid`ere deux liste etudiants et notes de longueur n ? N telles que pour tout entier 



Langage C : énoncé et corrigé des exercices IUP GéniE

apr è s l'échange. Exercice 3 Ecrire un progra mm e q ui a ffi che l es code ASCII des l ettres et des chiff res sous l a.



SUJET + CORRIGE

UE J1BS7202 : Algorithmique et Programmation. Épreuve : Examen Pour cet exercice du fait que les indices d'un tableau T sont compris entre 0 et ...



INF201 Algorithmique et Programmation Fonctionnelle - Cours 1

Algorithmique et Programmation Fonctionnelle. Cours revoir le cours faire des exercices . ... Une feuille (A4) autorisée pour les examens (à confirmer).



cours-python.pdf

22 mars 2018 Introduction à la programmation Python pour la biologie ... 2.11 Exercices . ... Le cours est disponible en version HTML 2 et PDF 3.



INF201 Algorithmique et Programmation Fonctionnelle - Cours 1

Algorithmique et Programmation Fonctionnelle. Cours revoir le cours faire des exercices . ... Une feuille (A4) autorisée pour les examens (à confirmer).



EXAMENS

Le sujet de cette épreuve comporte obligatoirement un exercice d'algorithmique (programmation). L'épreuve est notée sur 100 points distribués entre les 



Algorithmique & programmation en langage C - vol.1 - Archive

1 févr. 2019 Supports de cours vol.1 – Période 2005-2014 ... d'algorithmique et de programmation en langage C donnés à la Faculté ... 4.2.7 Exercices.



Examen dalgorithmique

Examen d'algorithmique Exercice 1 : Dérouler des algorithmes (4 points) ... l'état des variables a et b au cours de l'algorithme.

INF201

Algorithmique et Programmation Fonctionnelle

Cours 1: Informations Générales et Introduction

Année 2018 - 2019

1/15

Quelques informations pratiques (groupes IMA)

Cours :

I

Lundi, 13h30 - 14h45

INicolas Basset

(bassetni@univ-grenoble-alpes.fr)

ISupports de cours et autre sur ma page web:

www-verimag.imag.fr/~bassetni/INF201

TD et TP :

IIMA-1 : Catherine Parent

IIMA-2 : Francois Puitg

IIMA-3 : Cristian Ene

IIMA-4 : Jean-François Monin

IIMA-5 : Valentin Gledel

IIMA-6 : Paul Raynaud

Début des enseignements

I

Cours : semaine du 13 janvier

ITD et TP : semaine du 22 janvier

sauf groupes I

IMA-2!jeudi 17h00, TD.

IIMA-4!vendredi après midi, TD.

2/15

Semaine type INF 201

I

1 séance de cours d"1h30

I

1 séance de TD d"1h30

I

2 séance de TP

Iune séance encadrée d"1h30Iune séance non encadrée d"1h30 I Dutravail personnel régulier(3 heures/semaine minimum) Irevoir le cours,faire des exercices...I1 TP en libre-service (finir les TPs, faire le projet ...) 3/15

Ressources Pédagogiques

I Des notes de cours (copies des transparents) en ligne I

Un poly de TD et un poly de TP

I

Une page web

I un interpréteur OCaml en ligne (https://try.ocamlpro.com/) I

Des références bibliographiques

4/15

Evaluation

I

Des "quicks" en TD (2 à 4)

I un Devoir Surveillé (DS), pendant la semaine de partiels I un Examen FinalNote Finale=60%:Examen Final+20%:CC1+20%:CC2 CC1=

Quic ks+ Projet

CC2= De voirSur veilléUne feuille (A4) autorisée pour les examens (à confirmer) 5/15

Evaluation

I

Des "quicks" en TD (2 à 4)

I un Devoir Surveillé (DS), pendant la semaine de partiels I un Examen FinalNote Finale=60%:Examen Final+20%:CC1+20%:CC2 CC1=

Quic ks+ Projet

CC2= De voirSur veilléUne feuille (A4) autorisée pour les examens (à confirmer) 5/15

Evaluation

I

Des "quicks" en TD (2 à 4)

I un Devoir Surveillé (DS), pendant la semaine de partiels I un Examen FinalNote Finale=60%:Examen Final+20%:CC1+20%:CC2 CC1=

Quic ks+ Projet

CC2= De voirSur veilléUne feuille (A4) autorisée pour les examens (à confirmer) 5/15

Objectifs et contenu de INF201

6/15

INF201

Découvrir :

)Unnouveau mode d"expression:la prog rammationf onctionnelle Fonctionel :Iles fonctions sont les éléments de base du langage Iopérations sur les fonctions : composition, paramétrage

Typage fort :

toute v aleur/fonctionest typée a vante xécution polymorphisme: f onctionsgénér iques Proche de concepts mathématiques, moins d"erreurs, programmes concis Intégré dans de nombreux langages "généraux" (ex: Java))Unnouveau langage: OCAML I un représentant "moderne" des langages fonctionnels (expressif, produit du code efficace) I largement utilisé pour certains domaines d"application I conçus et développé en France ...7/15

INF201

Découvrir :

)Unnouveau mode d"expression:la prog rammationf onctionnelle Fonctionel :Iles fonctions sont les éléments de base du langage Iopérations sur les fonctions : composition, paramétrage

Typage fort :

toute v aleur/fonctionest typée a vante xécution polymorphisme: f onctionsgénér iques Proche de concepts mathématiques, moins d"erreurs, programmes concis Intégré dans de nombreux langages "généraux" (ex: Java))Unnouveau langage: OCAML I un représentant "moderne" des langages fonctionnels (expressif, produit du code efficace) I largement utilisé pour certains domaines d"application I conçus et développé en France ...7/15

Quelques éléments de OCAML (1)

let x = ... in ...

Langage impératif :affectationdevariable

x = 42 ; / *initialisation de la valeur de x*/ x = 43; /

*modification de la valeur de x*/OCaml :associerun nom (=identificateur) à une valeur dans un contexte

let x=42 in ... ;; *x représente la valeur 42 dans la suite*)Exemples : I expression avec plusieurs variables y = 5 ; x = 12 *y + 2 ;let y = 5 in let x = 12 *y + 2 in ... ;;I incrémenter une variable x = 5 ; x = x+1 ;let x = 5 in let x = x + 1 in ... ;; 8/15

Quelques éléments de OCAML (1)

let x = ... in ...

Langage impératif :affectationdevariable

x = 42 ; / *initialisation de la valeur de x*/ x = 43; /

*modification de la valeur de x*/OCaml :associerun nom (=identificateur) à une valeur dans un contexte

let x=42 in ... ;; *x représente la valeur 42 dans la suite*)Exemples : I expression avec plusieurs variables y = 5 ; x = 12 *y + 2 ;let y = 5 in let x = 12 *y + 2 in ... ;;I incrémenter une variable x = 5 ; x = x+1 ;let x = 5 in let x = x + 1 in ... ;; 8/15

Quelques éléments de OCAML (1)

let x = ... in ...

Langage impératif :affectationdevariable

x = 42 ; / *initialisation de la valeur de x*/ x = 43; /

*modification de la valeur de x*/OCaml :associerun nom (=identificateur) à une valeur dans un contexte

let x=42 in ... ;; *x représente la valeur 42 dans la suite*)Exemples : I expression avec plusieurs variables y = 5 ; x = 12 *y + 2 ;let y = 5 in let x = 12 *y + 2 in ... ;;I incrémenter une variable x = 5 ; x = x+1 ;let x = 5 in let x = x + 1 in ... ;; 8/15

Quelques éléments de OCAML (1)

let x = ... in ...

Langage impératif :affectationdevariable

x = 42 ; / *initialisation de la valeur de x*/ x = 43; /

*modification de la valeur de x*/OCaml :associerun nom (=identificateur) à une valeur dans un contexte

let x=42 in ... ;; *x représente la valeur 42 dans la suite*)Exemples : I expression avec plusieurs variables y = 5 ; x = 12 *y + 2 ;let y = 5 in let x = 12 *y + 2 in ... ;;I incrémenter une variable x = 5 ; x = x+1 ;let x = 5 in let x = x + 1 in ... ;; 8/15

Quelques éléments de OCAML (2)

typage

Un programme "correct" en langage Python :

x = 5 ; / *x est de type entier*/ y = x > O ; / *y est de type booleen*/ z = x + y ; / *type de z ? valeur de z ?*/En langage OCaml ? let x = 5 in let y = x > 0 in let z = x + y in ... ( *erreur de type !*)Une meilleure solution : let x = 5 in let y = x > 0 in let z = x + (if y then 1 else 0) in ... )typage fort, inférence de type9/15

Quelques éléments de OCAML (2)

typage

Un programme "correct" en langage Python :

x = 5 ; / *x est de type entier*/ y = x > O ; / *y est de type booleen*/ z = x + y ; / *type de z ? valeur de z ?*/En langage OCaml ? let x = 5 in let y = x > 0 in let z = x + y in ... ( *erreur de type !*)Une meilleure solution : let x = 5 in let y = x > 0 in let z = x + (if y then 1 else 0) in ... )typage fort, inférence de type9/15

Quelques éléments de OCAML (2)

typage

Un programme "correct" en langage Python :

x = 5 ; / *x est de type entier*/ y = x > O ; / *y est de type booleen*/ z = x + y ; / *type de z ? valeur de z ?*/En langage OCaml ? let x = 5 in let y = x > 0 in let z = x + y in ... ( *erreur de type !*)Une meilleure solution : let x = 5 in let y = x > 0 in let z = x + (if y then 1 else 0) in ... )typage fort, inférence de type9/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2)

fonctions Valeur absolue :jxjval_abs :R!R+(le résultat est un réel positif) let val_abs (x : float) : float =

if x >= 0 then x else -. x ;;Racines d"un polynôme du 2nd degré :ax2+bx+cracine :(RRR)!(RR[ f?g)(le résultat est un couple de réels, ou n"est pas défini)

let racine (a : float) (b : float) (c : float) : float *float = let delta = b *.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2. *.a), (-.b +. sqrt(delts))/.(2. *.a)) else failwith ("pas de racines") ;; 10/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (2 suite)

fonctions (suite)

Fonction affine :

Etant donnés deux réelsaetb, produire la fonctionx7!ax+baffine :RR!(R!R)(le résultat est une fonction)

let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. bComposition de fonctions :

Etant données deux fonctionsfetgdeN!N, écrire la fonctionfgcompo :(N!N)(N!N)!(N!N)(les arguments sont des fonctions, le résultat est une fonction)

let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; )En OCaml, les fonctions sont des valeurs comme les autres !11/15

Quelques éléments de OCAML (3)

récursivité Factorielle d"un entier :n! =n(n1)(n2) 21Mode impératif (Python) def fact(n): r=1 while n>0: r=r *n n=n-1 return rMode fonctionnel (OCaml) fact :N!Nlet rec fact (n : int) : int = if (n=0 || n=1) then 1 else n *fact (n-1);;Mode fonctionnel (Python) def Fact(n): if n==0: return(1) else return(n *Fact(n-1))12/15

Quelques éléments de OCAML (3)

récursivité Factorielle d"un entier :n! =n(n1)(n2) 21Mode impératif (Python) def fact(n): r=1 while n>0: r=r *n n=n-1 return rMode fonctionnel (OCaml) fact :N!Nlet rec fact (n : int) : int = if (n=0 || n=1) then 1 else n *fact (n-1);;Mode fonctionnel (Python) def Fact(n): if n==0: return(1) else return(n *Fact(n-1))12/15

Quelques éléments de OCAML (3)

récursivité Factorielle d"un entier :n! =n(n1)(n2) 21Mode impératif (Python) def fact(n): r=1 while n>0: r=r *n n=n-1 return rMode fonctionnel (OCaml) fact :N!Nlet rec fact (n : int) : int = if (n=0 || n=1) then 1 else n *fact (n-1);;Mode fonctionnel (Python) def Fact(n): if n==0: return(1) elsequotesdbs_dbs46.pdfusesText_46
[PDF] algorithmique et programmation au collège PDF Cours,Exercices ,Examens

[PDF] algorithmique et programmation en java cours et exercices corrigés pdf PDF Cours,Exercices ,Examens

[PDF] algorithmique et programmation en java pdf PDF Cours,Exercices ,Examens

[PDF] algorithmique et programmation exercices corrigés PDF Cours,Exercices ,Examens

[PDF] algorithmique exercices corrigés PDF Cours,Exercices ,Examens

[PDF] algorithmique exercices corrigés pdf PDF Cours,Exercices ,Examens

[PDF] Algorithmique médicale - devoir maison 2nde Mathématiques

[PDF] algorithmique pdf PDF Cours,Exercices ,Examens

[PDF] algorithmique python seconde PDF Cours,Exercices ,Examens

[PDF] algorithmique seconde PDF Cours,Exercices ,Examens

[PDF] Algorithmique seconde droites d'intersections 2nde Mathématiques

[PDF] Algorithmique seconde parallélogramme 2nde Mathématiques

[PDF] Algorithmique Seconde URGENT SVP 2nde Mathématiques

[PDF] Algorithmique sur les allumettes 2nde Mathématiques

[PDF] Algorithmique sur les suites 1ère Mathématiques