0% ont trouvé ce document utile (0 vote)
76 vues3 pages

Paradigmes de programmation en OCaml

Transféré par

Bil Na Mokoussé
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • calcul d'itération,
  • calcul de liste,
  • erreurs de type,
  • expressions correctes,
  • langages de programmation,
  • somme des entiers,
  • itération de fonctions,
  • exercices de programmation,
  • paradigme de programmation,
  • calcul de maximum
0% ont trouvé ce document utile (0 vote)
76 vues3 pages

Paradigmes de programmation en OCaml

Transféré par

Bil Na Mokoussé
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • calcul d'itération,
  • calcul de liste,
  • erreurs de type,
  • expressions correctes,
  • langages de programmation,
  • somme des entiers,
  • itération de fonctions,
  • exercices de programmation,
  • paradigme de programmation,
  • calcul de maximum

Université M’Hamed Bougara de Boumerdes 2019-2020

Faculté des sciences - Département d’informatique

Promotion : Licence 3 année

Module : Paradigme de programmation

Série 1 : Concepts de base

Question de cours :

Qu'est-ce qu'un paradigme de programmation ?

Quel sont les différents classes de paradigme ?

Existe-elle une relation entre les paradigmes de programmation et les langages de programmation ?

Qu’est-ce qu’un paradigme fonctionnel ?

Exercice 1 : Saisir les lignes suivantes et noter les résultats.

5 ;; let b = ‘’les L3’’ ;;

5. ;; a^b ;; ceil(1.5) ;;

‘a’ ;; 1=2 ;; 1- 2 ;;
1- 2- 3 ;;
’’ bonjour ‘’ ;; let l1=[] ;; 1- -2 ;;
True ;; let l2=[1. ;7. ;2.5] ;; 1>2 – 1 ;;
(10,’a’) ;; let n =(1,2.) ;; ‘’hello world’’.[6] ;;
[1 ;2 ;7 ;5 ;7] ;; let b = true ;; ‘’hello world’’.[11] <- ‘s’ ;;
1.1e+2 ;; floor(1.6) ;; [Link] ‘a’ ;;
cos 3.14 ;; int_of_float(5.1) ;; (((()))) ;;
let x =5 ;; char_of_int(5) ;; ((((*1*)))) ;;
let y = 10 ;; float_of_int(5) ;; ((*((()*))
let a = ‘’bonjour’’ ;; int_of_char(‘5’) ;;
Exercice 02: Quelles sont les expressions correctes ? Pour les expressions correctes, donner leurs
types et valeurs. Pour les autres, expliquer pourquoi il y’a erreur.

Let x = 1 in x ;; Let x = 1 in let x = x in x ;;

Let x = x in let y = x in y ;; Let a’ = 1 in a’ +1 ;;

Let x = 1 and y = x in y ;; Let’a=1 in ‘a+1 ;;

Let x = 1 and x = 2 in x ;; Let a’b’c=1 in a’b’c ;;


Let x x = x+1 in x 2 ;; Let (+) x y z = x+y+z in 5 + 67 ;;

Let rec x x = x +x in x 2 ;; Let (++) x = x +1 in ++x ;;

Let (-) x y = y – x in 1- 2- 3 ;; Let (++) f g x = f (g x) in

Let rec (-) x y = y – x in 1- 2- 3 ;; Let f x = x +1 in let g x = x *2 in (f++g) 1 ;;

Exercice 03 :Pour chacun des types suivants donner un exemple de fonction :

Int ->int->intint->int->bool
int->float->string int->float->bool
'a -> 'a -> 'a -> 'a 'a -> ('a -> 'a) -> 'a
('a -> 'b) list -> 'a -> 'b list (int ->bool) list ->int ->bool list
(int*bool) list ->bool('a*'a -> 'b) -> 'a -> 'b
Exercice 04 : Quelles sont les valeurs des expressions suivantes :

Let x = 1 in let x = x +1 in x ;; Let f x = x +y in

Let x = 1 in let f y = x in let x = 2 in f 0 ;; Let f x =let y = 3 in f y in f 5 ;;

Let f x = x-1 in let f x = f (x -1) in f 2 ;; Let rec factorial i = if i = 0 then 1 else


1*factorial (i-1) in factorial 5 ;;
Let y = 2 in
Exercice 05 : Ecrire les fonctions suivantes et noter le type à chaque fois

a- Une fonction qui prend deux entiers et retourne leur somme ;


b- Une fonction qui calcul la somme de trois nombres flottants ;
c- Une fonction qui prend trois arguments et retourne la liste qui les contient ;
d- Une fonction qui prend deux chaînes de caractères et retourne leur concaténation ;
e- Une fonction qui prend un couple d’entiers et retourne leur somme ;
f- Une fonction qui prend deux entiers et retourne leur min ;
g- Une fonction qui prend trois entier et retourne leur moyenne.

Exercice 6 : Ecrire une fonction qui prend en argument deux bornes n et m et une fonction et calcule
sum n m f = ∑i=nmf(i)

Exercice 7 :Ecrire en Ocaml une fonction qui calcule le pgcd en utilisant cet algorithme. Ecrire la
fonction sans utiliser l’affectation.

gcd (n,m) =
while ~(m =n)
If n > m
n <- n – m
else
m <- m –n
return
Exercice 8 : Ecrire une programme carre qui prend en entré une liste des entiers et donne en sortie la
liste des carrés des entiers.

Exercice 9 : Généraliser l'exercice précédent, en donnant une fonction app qui s'applique à une
fonction arbitraire, donnée comme argument, à chaque élément d'une liste. Par exemple : app (fun x ->
x*x) [1 ;2 ;3] évalue à [1 ;4 ;9].

Exercice 10 : Ecrire une programme somme qui prend en entré une liste des entiers et donne en sortie
la somme des entiers.

Exercice 11 : En utilisant la fonction maxx de l'exercice 3, écrire une programme maxlist qui prend en
entré une liste des entiers et donne en sortie le maximum entre 0 et les entiers dans la liste.

Exercice 12 : Généraliser les deux exercices précédents, en donnant une fonction itera qui s'applique à
une fonction binaire f, une liste [e1 ;e2 ;...] et une argument x d'égal type que les éléments de la liste,
et donne comme résultat l'itérations de f aux éléments de la liste plus x. C'est-à-dire : itera f [e1 ;e2 ; ...
en] x évalue à f e1 (f e2 ... (f en x)...) Exemple : iteraadd [4 ;2 ;5] 0 évalue à 11 itera max [4 ;2 ;5] 0
évalue à 5

Exercice 13 : Ecrire une fonction ordered qui prend une liste des nombres entiers en entré et rend en
sortie true si les entiers sont en ordre croissant sinon false.

Vous aimerez peut-être aussi