• Aucun résultat trouvé

Sémantique Formelle et Paradigmes des langages de Programmation Contrôle N°01

N/A
N/A
Protected

Academic year: 2022

Partager "Sémantique Formelle et Paradigmes des langages de Programmation Contrôle N°01"

Copied!
1
0
0

Texte intégral

(1)

Université Mentouri de Constantine Le 15/02/2009

Faculté des Sciences de l’Ingénieur Section : 4ième Année ing.

Département d’Informatique Durée : 1h30

Sémantique Formelle et Paradigmes des langages de Programmation Contrôle N°01

N.B : Répondre de manière précise et concise.

Questions de cours ( 9 pts)

1. Est–il possible qu’un sous programme possède plus d’un point d’entrée ? Si la réponse est positive, par quel mécanisme ? (1 pt)

2. Expliquer avec un exemple la notion de dépendance temporelle dans le paradigme impératif (1pt) 3. Expliquer la stratégie d’évaluation paresseuse (lazy evaluation), donner un exemple (1 pt)

4. En quoi consiste la curryfication d’une fonction ? donner un exemple ? (1 pt)

5. Expliquer la notion de fonction d’ordre supérieur ? donner un exemple en Haskell? (1 pt)

6. Quels sont les avantages et les inconvénients d’une gestion d’exceptions basée sur la reprise ? (1pt) 7. Pourquoi un programme logique procure un niveau d’abstraction plus élevé qu’un programme fonctionnel

ou impératif (1 pt)

8. Quelle est la différence entre la durée de vie et la portée d’une variable ? 9. Dans quel cas on peut simplifier algébriquement l’expression suivante ? (1 pt):

x+ f(x,y) +x+y+f(x,y) en 2x+2f(x,y)+y

Exercice N°01 : (3 pts)

Construire la preuve de type des expressions suivantes : 1. let y = λλλλx →→→→x in y x.

2. le type de la fonction twice définie par : twice f x = f f x

Exercice N°02 (3 pts) :

1) Soit TAB1, TAB2 deux types définis comme suit : Type TAB1 = array [1..10] of integer;

TAB2 = array [1..10] of integer;

Var a, b : array [1..10] of integer;

c, d: TAB1;

e: TAB2 f: TAB2

Quels sont le types compatibles si on applique : a) l’équivalence nominative, b) l’équivalence structurelle, et c) l’équivalence déclarative. (1.50 pt)

2) Ecrire la fonction " !! " qui permet de sélectionner le nième élément d’une liste (Exemple: [1,2,3,4,5]!!2 = 3) de deux manières :

a) En utilisant la récursivité et le pattern matching, (1 pt) b) En utilisant la fonction drop, et head (0.50 pt)

Exercice N°03 (5 pts)

Soit la fonction foldr définie par : foldr f v [ ] = v

foldr f v [ x : xs] = f x (foldr f v xs )

1. Quel est le résultat de l’application: foldr (+) 0 [1,2,3,4], où (+) est l’opérateur de l’addition?(1pt) (Aide Input: foldr (/) 2 [8,12,24,4] Output: 8.0 )

2. A quelle fonction correspond foldr (+) 0 ? Définir récursivement cette fonction.

3. A quelle fonction correspond foldr (*) 1 ? Définir récursivement cette fonction 4. Quel est le type de foldr ? (2 pt):

Bonne Réussite

Références

Documents relatifs

Pour prouver qu'une conclusion est vraie, donc consistante avec les prémisses données, on va ainsi montrer que la conclusion niée est inconsistante avec les prémisses

erreurs sur la portée des variables : une variable déclarée n’est utilisable que dans une certaine partie du programme erreurs sur le contrôle des types : les utilisations

Calcul mental Géométrie mentale M1 Additionner deux nombres entiers. M2 Soustraire deux

● Modèle représentant un certain code exécutable en abstrayant certains aspects dans un but spécifique, pour un domaine particulier. [...]In that letter Dijkstra argued

Les deux premiers langages évolués sont FORTRAN et LISP (dont DrRacket est un dialecte) et les noms de ces deux langages sont des contractions de deux expressions anglaises :

Une structure d'information est un cadre permettant de définir les concepts d'information (qui formalise Vidée intuitive d'état de mémoire) et de modification élémentaire

Pour alléger la description qui suit, nous adoptons les conventions suivantes : Dans chaque paragraphe, l'alinéa (i) précise le type de la phrase considérée (qui sera, le plus

Écrire un module qui définit le type Date et les opérations associées que nous limiterons à : initialiser une date à partir d’un jour, d’un mois et d’une année ;. afficher