Devoirs Hebdomadaire N°1 | ||||||||||||||||||||
M. Joseph DASSE BRIKA Soit Spécifier/Formaliser en ProPlog le DEST Dominante Informatique, Conception, Développement en supposant le premier cycle acquis :
Un DEST est composé des 4 valeurs du cycle Probatoire, de 2 1/2 valeurs de Spécialisation et d'une valeur Socio-Economique. Un programme ProPlog est un ensemble fini de règles et de faits. Une procédure est un ensemble de règles avec le même prédicat (atome) en tête de règle. Alors pour le DEST en Informatique en ProPlog on a écrit : dest :- cycle_Probatoire_CDI , uv_Approfondissement , uv_SocioEconomique. Rappel : les noms d'atomes en Prolog sont des chaînes alphanumériques commençant par une lettre minuscule ou bien, si cette syntaxe n'est pas respectée, des chaînes de caratères entre ' et '. Le cycle probatoire (cycle_Probatoire_CDI ) est composé de 4 uv. Alors en ProPlog on a écrit : cycle_Probatoire_CDI :- uvCDI1 , uvCDI2 , uvCDI3 , uvCDI4.
Remarque : les uv seront représentées en ProPlog par leurs codes précédés de uv. Exemple : uv16472. l'uvCDI1 est composée de 2 1/2 uv dont une est obligatoire et l'autre est au choix. En ProPlog on va donc avoir plusieurs définition de uvCDI1 : uvCDI1 :- uv10863 , uv10872. Pour les autres, en ProPlog, on a écrit : uvCDI2 :- uv16472. uvCDI3 :- uv19339. uvCDI4 :- uv16392. QUESTION 1 : Enregistrez l'ensemble des règles dans le fichier destCDI_1.pl. Lancez Prolog-SWI à partir de ce fichier i.e. en double-cliquant dessus et constatez que les règles sont bien chargées dans l'espace de travail par la commande ?- listing. (répondre par le listing de la session Prolog depuis son ouverture). Remarques : les procédures ne sont pas dans l'ordre du fichier destCDI_1.pl mais dans une procédure l'ordre des règles est respecté. ![]()
en ProPlog pour représenter des choix on donne autant de règles que de choix possibles (cf. uvCDI1) ci dessus. Donc : uv_Approfondissement :- uv18949 , uv18903. QUESTION 2 : Combien de règles faut-il pour spécifier complètement uv_Approfondissement (justifiez votre réponse) ?
QUESTION 3 : Combien de règles faut-il pour spécifier complètement uv_SocioEconomique (justifiez votre réponse)? Il n'est donc pas raisonnable de spécifier en ProPlog uv_Approfondissement , uv_SocioEconomique ... L'univers de Herbrand (ensemble des atomes figurant dans le programme) du programme contenu dans le fichier destCDI_1 .pl est : {dest ,cycle_Probatoire_CDI , uv_Approfondissement , uv_SocioEconomique , uvCDI1 , uvCDI2 , uvCDI3 , uvCDI4 , uv16472 , uv19339 ,uv16392 , uv10863 , uv10872 , uv16883 , uv16767 , uv19786} SPECIFICATIONS des acquis d'un étudiant Un étudiant possède un certain nombre d'UV. Ses acquis sont représentés par des atomes de l'univers de Herbrand correspondant aux uv du cycle probatoire. L'étudiant robert possède MOCA B1 , CDL_B3 , le Projet CDI , I.A. B4 , IHM B2. QUESTION 4 : enregistrez votre spécification des acquis de Robert dans le fichier acquis_Robert.pl et charger ce fichier dans l'espace de travail du programme (dans la session Prolog ouverte) par la commande ?- [acquis_Robert]. et vérifiez l'ajout des acquis de Robert aux règles du programme par la commande ?- listing. (répondre par le listing de la session Prolog depuis la commande ?- [acquis_Robert]). tapez la commande : ?- unknown(_ , fail). vous obtenez la réponse 'yes' QUESTION 5 : quelles sont les réponses de Prolog aux questions : (répondre par le listing de la session Prolog pour ces questions y compris la commande : ?- unknown(_ , fail).) ?- dest. ?- cycle_Probatoire_CDI . ?- uv_Approfondissement.s ?- uv_SocioEconomique . QUESTION 1 : dest :- cycle_Probatoire_CDI , uv_Approfondissement , uv_SocioEconomique. cycle_Probatoire_CDI :- uvCDI1 , uvCDI2 , uvCDI3 , uvCDI4. % uvCDI1 composée de deux 1/2 uv dont une est au choix. uvCDI1 :- uv10863 , uv10872. uvCDI1 :- uv10863 , uv16883. uvCDI1 :- uv10863 , uv16767. uvCDI1 :- uv10863 , uv19786. % Pour les autres, unité de valeur, on va noter : uvCDI2 :- uv16472. uvCDI3 :- uv19339. uvCDI4 :- uv16392. b°/ Capture d'écran % c:/Mes documents/Conservatoire.Exe/destCDI_1.pl compiled 0.00 sec, 3,100 bytes Welcome to SWI-Prolog (Version 5.0.10) Copyright (c) 1990-2002 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- listing. uvCDI2 :- uv16472. uvCDI3 :- uv19339. uvCDI1 :- uv10863, uv10872. uvCDI1 :- uv10863, uv16883. uvCDI1 :- uv10863, uv16767. uvCDI1 :- uv10863, uv19786. gui_setup_ :- current_prolog_flag(gui, true), !. gui_setup_ :- getenv('DISPLAY', A), !, set_prolog_flag(gui, true), use_module(library(swi_hooks)). gui_setup_ :- current_prolog_flag(windows, true), set_prolog_flag(gui, true), use_module(library(win_menu)), use_module(library(swi_hooks)). cycle_Probatoire_CDI :- uvCDI1, uvCDI2, uvCDI3, uvCDI4. :- dynamic pcehomestore_/1. pcehomestore_('c:/program files/pl/xpce'). pce_setup_ :- current_prolog_flag(xpce, true), !. pce_setup_ :- current_prolog_flag(argv, [A|B]), \+member('-nopce', B), pcehome_(C), exists_directory(C), gui_setup_, ( member('-pce', B) ; prolog_to_os_filename(D, A), file_base_name(D, E), '$apropos_match'(pce, E) ), !, load_files(library(pce), [silent(true)]), flag('$banner_goal', F, pce_welcome). pce_setup_. pcehome_(A) :- pcehomestore_(A), !. pcehome_(A) :- ( getenv('XPCEHOME', B) ; current_prolog_flag(home, C), ( current_prolog_flag(xpce_version, D), atom_concat('/xpce-', D, E) ; E='/xpce' ), atom_concat(C, E, B) ), exists_directory(B), !, absolute_file_name(B, A), asserta(pcehomestore_(A)). uvCDI4 :- uv16392. dest :- cycle_Probatoire_CDI, uv_Approfondissement, uv_SocioEconomique. Yes ?- QUESTION 2 : n! pour n = 20 et p = 2 on aura 20 x 19 x
QUESTION 3 :
QUESTION 4 : ?- [acquis_Robert]. % acquis_Robert compiled 0.00 sec, 1,344 bytes Yes ?- listing. uv_16472. uvCDI2 :- uv16472. uvCDI3 :- uv19339. uv_10863. uvCDI1 :- uv10863, uv10872. uvCDI1 :- uv10863, uv16883. uvCDI1 :- uv10863, uv16767. uvCDI1 :- uv10863, uv19786. gui_setup_ :- current_prolog_flag(gui, true), !. gui_setup_ :- getenv('DISPLAY', A), !, set_prolog_flag(gui, true), use_module(library(swi_hooks)). gui_setup_ :- current_prolog_flag(windows, true), set_prolog_flag(gui, true), use_module(library(win_menu)), use_module(library(swi_hooks)). cycle_Probatoire_CDI :- uvCDI1, uvCDI2, uvCDI3, uvCDI4. :- dynamic pcehomestore_/1. pcehomestore_('c:/program files/pl/xpce'). pce_setup_ :- current_prolog_flag(xpce, true), !. pce_setup_ :- current_prolog_flag(argv, [A|B]), \+member('-nopce', B), pcehome_(C), exists_directory(C), gui_setup_, ( member('-pce', B) ; prolog_to_os_filename(D, A), file_base_name(D, E), '$apropos_match'(pce, E) ), !, load_files(library(pce), [silent(true)]), flag('$banner_goal', F, pce_welcome). pce_setup_. uv_16874. pcehome_(A) :- pcehomestore_(A), !. pcehome_(A) :- ( getenv('XPCEHOME', B) ; current_prolog_flag(home, C), ( current_prolog_flag(xpce_version, D), atom_concat('/xpce-', D, E) ; E='/xpce' ), atom_concat(C, E, B) ), exists_directory(B), !, absolute_file_name(B, A), asserta(pcehomestore_(A)). uv_19900. uvCDI4 :- uv16392. uv_16392. dest :- cycle_Probatoire_CDI, uv_Approfondissement, uv_SocioEconomique. Yes ?- QUESTION 5 : ?- unknown(_, fail). Yes ?- dest. No ?- cycle_Probatoire_CDI. No ?- uv_Approfondissement. ERROR: Undefined procedure: uv_Approfondissement/0 ?- uv_SocioEconomique. ERROR: Undefined procedure: uv_SocioEconomique/0 ?- unknown(_, fail). Yes ?-
|
||||||||||||||||||||
FIN_dh1 |
||||||||||||||||||||
ACCUEIL CONTACT FAVORIS ANNALES DH1 DH2 DH3 DH4 DH5 DH6 DH7 DH8 DH9 DH10 DH11 DH12 DH13 DH14 DH15 DH16 |