Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJacqui Pichard Modifié depuis plus de 10 années
1
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL pvr@info.ucl.ac.be
2
18/10/2004P. Van Roy, InfoT4, S52 Conditions du test Le test a une durée dune heure, à livre fermé Le test est sur 20 points, réparti sur quatre questions Q1: 8 pts, Q2: 4 pts, Q3: 4 pts, Q4: 4 pts Le test est donné après deux séances du cours et compte pour 1/3 du score final On prend le maximum entre (1/3 * test + 2/3 * examen) et (examen)
3
18/10/2004P. Van Roy, InfoT4, S53 Question 1 (8 points) Définissez la fonction récursive sc(n) qui prend un entier n et qui rend un entier qui est la somme des chiffres de n. Par exemple, sc(999)=27 et sc(10101)=3. Pour lefficacité, votre solution doit utiliser un accumulateur. Pour vous aider à écrire la fonction qui utilise laccumulateur, on vous conseille dutiliser linvariant suivant: sc(n) = sc(i) + a Vous pouvez utiliser les fonctions div et mod dans votre solution. Quelles sont les valeurs initiales de i et a? Comment est-ce quon peut réduire i et augmenter a dans lappel récursif? La fonction qui utiliser laccumulateur doit être une fonction locale dans le corps de la fonction SC qui, elle, ne prend quun seul argument N.
4
18/10/2004P. Van Roy, InfoT4, S54 Réponse declare fun {SC N} fun {SC2 I A} if I==0 then A else {SC2 (I div 10) (I mod 10)+A} end end in {SC2 N 0} end Valeurs initiales de I et A: N et 0 Calcul avec linvariant: sc(n) = sc(i) + a = sc(i div 10) + ((i mod 10) + a) Le i devient (i div 10) et le a devient (i mod 10)+a Quand i est 0, parce que sc(0)=0 alors le a donne le résultat final
5
18/10/2004P. Van Roy, InfoT4, S55 Question 2 (4 points) Donnez une définition précise des concepts identificateur et identificateur libre. Donnez un exemple dun petit fragment de programme qui illustre ces deux concepts et expliquez comment.
6
18/10/2004P. Van Roy, InfoT4, S56 Réponse Identificateur = une chaine de caractères dans le code source dun programme qui fait référence pendant lexécution à une variable en mémoire Exemple: local X in X=2+2 end X est un identificateur dans ce fragment Identificateur libre = une occurrence dun identificateur dans un fragment de programme donné qui nest pas déclarée dans ce fragment Exemple: local X in X=Y+2 end Y est un identificateur libre dans ce fragment X nest pas libre parce quil est déclaré dans ce fragment
7
18/10/2004P. Van Roy, InfoT4, S57 Question 3 (4 points) Définissez la fonction OnesList qui prend une liste dentiers et qui rend le nombre de fois que lentier 1 apparaît dans la liste. Il nest pas nécessaire que votre définition utilise un accumulateur.
8
18/10/2004P. Van Roy, InfoT4, S58 Réponse declare fun {OnesList L} if L==nil then 0 elseif L.1==1 then 1+{OnesList L.2} else {OnesList L.2} end
9
18/10/2004P. Van Roy, InfoT4, S59 Question 4 (4 points) Le modèle déclaratif est caractérisé par une grande restriction : les variables ne peuvent être affectées quà une valeur. Cette restriction a de grandes conséquences sur la manière décrire les programmes dans ce modèle. Pour cette question, expliquez lavantage majeur de cette restriction. A votre avis, est-ce quon puisse exploiter cet avantage dans dautres langages de programmation tels que Java?
10
18/10/2004P. Van Roy, InfoT4, S510 Réponse La conséquence majeure de cette restriction est quun programme ou une partie de programme, une fois écrit, ne changera jamais son comportement. Un programme ne se souvient pas de ses appels précédents. Lavantage majeur de cette propriété est dans le domaine du génie logiciel: la maintenance du programme est grandement facilitée, parce quil ne faut pas tenir compte de lhistorique des appels des composants. Une fois écrit, on peut oublier le composant. Il y a dautres avantages, par exemple le raisonnement sur lexactitude du composant est facilité. Lavantage majeur peut être exploité dans nimport quel langage de programmation, y compris le Java. Le style déclaratif de programmation peut être plus ou moins soutenu par le langage (par exemple, par les attributs final en Java), mais le programmeur est toujours libre de suivre ce style pour en tenir les avantages, même si le langage noffre pas de soutien particulier. Par exemple, un serveur sans état (stateless server) peut être écrit dans nimporte quel langage. Le propre du modèle déclaratif de ce cours est que les programmes sont toujours déclaratifs. On voit donc lextrême limite du style déclaratif.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.