Université Mentouri de Constantine Faculté des Sciences de l'Ingénieur Départem

Université Mentouri de Constantine Faculté des Sciences de l'Ingénieur Département d'Informatique Dimanche 08 Avril 2012 Master1 Génie Logiciel PP: Paradigmes de Programmation Contrôle de Courte Durée Durée 1h15mn, Documents non autorisés Question 1 (15 Points) : Répondre très succinctement aux questions suivantes 1. Indique comment la programmation fonctionnelle voit un programme Un programme peut être vu comme une suite d'évaluations de fonctions sans états 2. Indiquer comment la programmation orientée processus voit un programme La programmation orientée processus permet aux développeurs de voir les applications comme des ensembles de processus agissant sur des structures de données localement partagées. 3. Indiquer comment la programmation logique voit un programme Un programme peut être vu comme une expression logique à évaluer 4. Indique comment la programmation orientée objets voit un programme Les développeurs peuvent considérer le programme comme une collection d’objets en interaction 5. Quelles sont les principales instructions de la programmation impérative La plupart des langages de haut niveau comportent quatre types d'instructions principales 1- L'affectation ; 2- Le branchement conditionnel ; 3- Le branchement sans condition ; 4- La boucle 6. Comment on est passé de la programmation impérative vers la programmation procédurale La programmation procédurale est un paradigme de programmation basé sur le concept d'appel procédural. Elle offre la possibilité de réutiliser le même code à différents emplacements dans le programme sans avoir à le retaper 7. Pourquoi on recommande aux programmeurs d'éviter l'utilisation des variables globales On recommande aux programmes d'éviter l'usage des variables globales afin de prévenir les effets de bord (side effects) : les sous-programmes utilisent donc des 1-Tourner la page SVP variables locales et agir sur des arguments fournis explicitement en paramètre, par valeur (leur contenu) ou par référence (l'adresse de ce contenu). Ces techniques aident à créer des petits morceaux de code, faciles à comprendre isolément et sans nécessité d'avoir à en connaître le contexte 8. Pourquoi on la programmation structurée recommande d'éviter l'utilisation des Goto L'utilisation du "GOTO" aboutit à des programmes compliqués qui partent dans toutes les directions (appelé souvent « programmation spaghetti ») Grâce à quel mécanisme la programmation procédurale permet la modularité 9. Comment la programmation fonctionnelle permet d'éviter les effets de bords Elle évalue des fonctions sans états. Elle n'utilise ni variable, ni affectation. Elle rejette le changement d'état et la mutation des données. 10. Donner deux exemples de lisibilités recommandées dans un langage de programmation 1- Absence d’une surabondance de choix: Par exemple, certain langages permettent d’écrire les boucles de plusieurs façon différentes. 2- Apparence: syntaxe élégante, commentaires. 11- Quelle est la différence entre un interpréteur et un compilateur Compilation: a. Traduit le programme en un langage d’une machine virtuelle d’une couche plus basse. b. Le code résultant sera exécuté plus tard. Interprétation: c. Divise le programme en petit fragments (représentant des éléments de syntaxe). d. Une boucle traduit et exécute immédiatement les fragments. 12- Comment sont exprimées les expressions symboliques dans le langage LISP à l'intérieur de la mémoire et à l'extérieur Une expression en LISP est représentée sous forme d’un arbre binaire (expression symbolique avec deux parties : partie gauche représentant le 1er élément de la liste et la partie droite représentant le reste), afin de faciliter la représentation, le parcours et l’accès à n’importe quel élément de l’expression symbolique. On peut exprimer n’importe quelle liste sous forme d’une expression symbolique 13- Est-ce que le LISP pur permet les entrées/sorties. Pourquoi. Le Langage LISP pur ne permet pas les entrées/sorties car il évite les effets de Bords 14- Quelles sont les deux fonctions LISP qui permettent le parcours et l'accès à un élément de la liste Les deux fonctions sont : - CAR : fonction ayant comme argument une liste et qui retourne le 1er élément de la liste. Le CAR d’une liste peut être un ATOME ou une liste. 2-Tourner la page SVP - CDR : fonction ayant comme argument une liste et qui retourne la liste moins le 1er élément. Le CDR d’une liste est toujours une liste. Question No 2 (5 pts) A- Ecrire une fonction LISP FFFF qui a comme argument une liste et qui retourne le nombre d’éléments de la liste qui sont eux-mêmes des listes (3 pts). Exemples: FFFF (( a (c d) e (g f) x)) = 2, FFFF ( (a b) ) = 0, FFFF ( ( a (c d) e) )= 1 (defun FFFF (lst) (if (null lst) 0 (IF (LISTP (CAR lst) ) (+ (FFFF (cdr lst) ) 1) (FFF (CDR lst) ) ))) B- Donner le résultat des deux expressions suivantes en LISP (2 pts) > (cons ’a ’(b c)) (a b c) > (cons ’a (cons ’b (cons ’c ’()))) (a b c) > (car (cons ’a ’(b c))) a > (cdr (cons ’a ’(b c))) (b c) BONNE CHANCE 3-Tourner la page SVP uploads/s3/ controle-courte-duree-2012-corrige.pdf

  • 31
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager