Logică și structuri discrete - Tema 1

Tema se predă la începutul orei de laborator

Exercițiul 1: Rotunjirea numerelor
Ocaml dispune de funcția standard truncate : float -> int (nume echivalent: int_of_float) care trunchiază partea zecimală a unui număr real.
a) Scrieți o funcție round : float -> int care rotunjește un real la cel mai apropiat întreg.
Dacă partea zecimală e 0.5, rotunjiți numărul în direcția opusă lui zero: round (-. 0.5) = -1, round 1.5 = 2
Operatorii pentru numere reale se scriu cu punct: +. -. *. /. (ca și constantele reale).
b) Scrieți o funcție care rotunjește un număr real la a doua zecimală, folosind definiția de mai sus.

Exercițiul 2
Câte funcții de pe o mulțime cu 3 elemente pe o mulțime cu 3 elemente nu sunt injective ? Argumentați cât mai simplu răspunsul.

Exercițiul 3: Compunerea funcțiilor
La curs, am definit

  let comp f g x = f (g x)      (* compunerea functiilor *)
  let appl2 f = comp f f	(* f compusă cu ea însăși *)
și am arătat, expandând definiția, că appl2 appl2 reprezintă compunerea de 4 ori:
appl2 f x = comp f f x = f (f x)
appl2 appl2 f x =
  = appl2 (appl2 f) x
  = (appl2 f) ((appl2 f) x)
  = appl2 f (f (f x))
  = f (f (f (f x)))
Considerați următoarele definiții:
let appl3 f = comp f (appl2 f)
let appl23c = comp appl2 appl3
let appl32c = comp appl3 appl2
Explicați, expandând definițiile (pe hârtie) ce reprezintă fiecare din funcțiile definite.
Verificați pe calculator rezultatul, aplicând fiecare din ele funcției f(x)=2*x+1 în punctul x=0.
Marius Minea
Last modified: Tue Sep 29 18:30:00 EEST 2015