Programmation, partiel: sémantique d un tableur



Documents pareils
Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Rappels sur les suites - Algorithme

Chapitre 2. Eléments pour comprendre un énoncé

Université Paris-Dauphine DUMI2E 1ère année, Applications

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

III- Raisonnement par récurrence

Chaînes de Markov au lycée

Introduction à MATLAB R

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Définitions. Numéro à préciser. (Durée : )

Chapitre 2 Le problème de l unicité des solutions

Représentation d un entier en base b

Cours d Analyse. Fonctions de plusieurs variables

1 Recherche en table par balayage

Licence Sciences et Technologies Examen janvier 2010

Image d un intervalle par une fonction continue

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

La Clé informatique. Formation Excel XP Aide-mémoire

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Probabilités sur un univers fini

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours Fonctions de deux variables

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Première étape : créer le fichier de données - extraire les données de PMB et les transférer dans Excel

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Chapitre 7. Récurrences

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Objets Combinatoires élementaires

Probabilités sur un univers fini

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithme. Table des matières

Coefficients binomiaux

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Commun à tous les candidats

MIS 102 Initiation à l Informatique

Exercices sur le chapitre «Probabilités»

Cours d algorithmique pour la classe de 2nde

EXCEL TUTORIEL 2012/2013

UML et les Bases de Données

Les arbres binaires de recherche

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

chapitre 4 Nombres de Catalan

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Calcul Formel et Numérique, Partie I

Limites finies en un point

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Chp. 4. Minimisation d une fonction d une variable

Programmation linéaire

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

ASR1 TD7 : Un microprocesseur RISC 16 bits

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Informatique Générale

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

avec des nombres entiers

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Cours de Systèmes d Exploitation

PROGRAMME PROVISOIRE. Degré 9 (1CO)

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Les indices à surplus constant

STAGE IREM 0- Premiers pas en Python

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Structures algébriques

Leçon 01 Exercices d'entraînement

Continuité d une fonction de plusieurs variables

OCL - Object Constraint Language

Cours 02 : Problème général de la programmation linéaire

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

TP 1. Prise en main du langage Python

Exercices de dénombrement

Présentation du langage et premières fonctions

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

LES DECIMALES DE π BERNARD EGGER

Gestion des données avec R

Publipostage avec Calc

TP : Gestion d une image au format PGM

Initiation à l algorithmique

BONUS MALUS. Voici, la façon de calculer la prime : Le montant de la prime à acquitter est égale à : P = PB. C où : P


La fonction exponentielle

Correction de l examen de la première session

Resolution limit in community detection

Fonctions de deux variables. Mai 2011

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Recherche dans un tableau

Cours 1 : Qu est-ce que la programmation?

Formation tableur niveau 1 (Excel 2013)

Pourquoi l apprentissage?

Algorithmique et programmation : les bases (VBA) Corrigé

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Algorithmes d'apprentissage

SRAL Saint Raphaël. Maison des associations 213, rue de la Soleillette Saint Raphaël. : : dromain.jean-pierre@neuf.

Organigramme / Algorigramme Dossier élève 1 SI

Les suites numériques

Évaluation et implémentation des langages

Modélisation et Simulation

Transcription:

Programmation, partiel: sémantique d un tableur Recommandations. Votre copie (papier ou électronique) devra être lisible et bien structurée. La note tiendra compte autant du fond que de la présentation. D autre part, vous devrez justifier toutes vos affirmations, soit par une preuve soit par un contre-exemple. (Ces recommandations sont bien sûr valables dans tout devoir.) Vous connaissez sans doute Excel, ou son équivalent Open Source OpenOffice.org Calc. (Sinon, vous pouvez télécharger la suite OpenOffice.org ce n est ni utile ni nécessaire pour le devoir.) Il s agit d un tableur, c est-à-dire un logiciel permettant de faire des calculs sur une grille rectangulaire. Voici à quoi ceci peut ressembler : L illustration ci-dessus représente une grille fictive servant à un professeur à attribuer des notes à des élèves. (Leurs noms apparaissent dans la colonne A. Il est inutile de chercher une ressemblance quelconque avec des élèves existants ou ayant existé.) Chaque case de la grille, appelée cellule : est repérée par ses coordonnées : par exemple la cellule sélectionnée dans l illustration cidessus est la cellule D5 ; a un contenu, qui peut être soit : une constante (1 dans l exemple de la cellule D5 ci-dessus) soit une formule. Par exemple, la cellule N19 contient la formule : =SUM(B19:M19) (Les formules se distinguent des constantes en ceci qu elles commencent par le signe =.) Chaque cellule a finalement une valeur : la valeur de la constante qu elle contient si tel est le cas, ou le résultat du calcul de la formule qu elle contient sinon. Dans l exemple ci-dessus, la cellule N19 a pour valeur celle de la formule =SUM(B19:M19), c est-à-dire la somme des valeurs des cellules B19 à M19. Pour indication, toutes les cellules de la colonne N contiennent des formules, et par exemple la cellule N2 contient la formule 1

=SUMPRODUCT(B2:M2;B19:M19) qui énonce que l on obtient sa valeur comme la somme des produits terme à terme des vecteurs B2 M2 et B19 M19. (Dans l exemple, chaque cellule de B2 à M2 donne la note d Assurancetourix à chaque question, normalisée à une valeur entre 0 et 1, et la ligne de B19 à M19 donne les coefficients respectifs de chaque question.) Nous formaliserons la sémantique d un tableur simplifié comme suit. D abord, nous supposerons que le domaine des valeurs est R, plus un symbole spécial Err. De même, nous supposerons que les constantes sont les réels (mais pas Err). Les formules sont construites comme les expressions de la forme = F, où F est définie par la (pseudo-)grammaire suivante : F ::= C cellule F + F somme de deux expressions if(f 1 = x; F 2 ; F 3 ) test, conditionnelle (x R) SUM(R) sommation de région SUMPRODUCT(R, R ) sommation de produits de régions R ::= C : C région délimitée par deux cellules C ::= m n colonne, ligne (m, n N) A noter que les colonnes c sont ici formalisées comme des numéros de colonnes plutôt que des lettres, comme dans l exemple. On peut penser à identifier A à 1, B à 2, etc. : ce n est pas essentiel, et ceci nous simplifiera la tâche plus loin. Toujours dans un souci de simplification, nous n avons pas listé toutes les formules possibles fournies par Excel ou OpenOffice.org Calc. A tout moment, la grille est dans un état G, qui est une fonction de N N vers R {Err} : G(i, j) est la valeur de la cellule en colonne i et ligne j. NB : on notera (i, j) le couple i, j, et si c est un tel couple, G(c) dénotera G(i, j). On définit les fonctions de sémantique suivantes, qui évaluent respectivement les formules, les régions, les cellules, les colonnes, les lignes : F C (G) = G(C C ) C m n = (m, n) F F + F (G) = F F (G) + F F (G) F F 2 (G) si F F 1 (G) = x F if(f 1 = x; F 2 ; F 3 ) (G) = F F 3 (G) si F F 1 (G) x, Err Err sinon F SUM(R) (G) = i 1 m i 2 G(m, n) R C : C = (C C, C C ) j 1 n j 2 où R R = ((i 1, j 1 ), (i 2, j 2 )) 0 a i 2 i 1 G(i 1 + a, j 1 + b).g(i 1 + a, j 1 + b) F SUMPRODUCT(R, R 0 b j 2 j 1 ) (G) = si i 2 i 1 = i 2 i 1 et j 2 j 1 = j 2 j 1 Err sinon où R R = ((i 1, j 1 ), (i 2, j 2 )) R R = ((i 1, j 1), (i 2, j 2)) On conviendra que Err + x = x + Err = Err dans la sémantique de +, SUM, et SUMPRODUCT. On notera que, dans le cas de if ci-dessus par exemple, x dénote une constante réelle (pas une variable, notamment). 1. Quels sont les types des fonctions F F (où F est une formule), R R (R région), C C (C cellule)? A titre d exemple, F F est de type (N N R {Err}) R {Err}, c est-à-dire prend un état G en entrée et retourne une valeur. Pour chaque constante x ou formule = F, on pose x (G) = x, = F (G) = F F (G). Une feuille est l équivalent d un programme dans un tableur, et est la donnée de constantes ou de formules pour chaque cellule de la grille. Formellement, une feuille est donc une fonction ϕ de N N vers l ensemble formé de l union disjointe des constantes (dans R) et des formules. Nous 2

supposerons toujours que ϕ(i, j) est la constante 0 pour tout couple (i, j) sauf pour un nombre fini une feuille, comme un programme, est un objet fini. On définit une relation binaire ϕ d évolution en une étape de l état G dans la feuille ϕ, par : G ϕ G si et seulement s il existe i, j N tels que ϕ(i, j) (G) G(i, j), et G = G[(i, j) ϕ(i, j) (G)]. La notation G[(i, j) V ] désigne l état qui à tout indice (m, n) différent de (i, j) associe G(m, n), et à (i, j) associe V. 2. Expliquez intuitivement, mais précisément, la relation d évolution en une étape ϕ. 3. On dit qu un état G est stable (pour ϕ) si et seulement si G(i, j) = ϕ(i, j) (G) pour tous i, j N. On définit une sémantique naturelle comme dans le cours par les deux règles : G stable pour ϕ (F in) ϕ G = G ϕ G = G fin ϕ G = G fin G ϕ G (Stb) Montrer que, si ϕ G = G fin est dérivable, alors G fin est stable. Terminaison 4. Montrer qu une feuille ne termine pas toujours. Autrement dit, trouver une feuille ϕ et un état G tels que ϕ G = G fin ne soit dérivable pour aucun état G fin et démontrez-le. 5. Pour une cellule C = m n, on pose u(c) = (m, n), et pour une région R = C : C, on pose U(R) = {(m, n) N N i 1 m i 2, j 1 n j 2 }, où (i 1, j 1 ) = u(c), (i 2, j 2 ) = u(c ). On définit l ensemble des cellules utilisées par une formule F, par récurrence sur la taille de F, comme suit : U(C) = {u(c)} U(F + F ) = U(F ) U(F ) U(if(F 1 = x; F 2 ; F 3 )) = U(F 1 ) U(F 2 ) U(F 3 ) U(SUM(R)) = U(R) U(SUMPRODUCT(R, R )) = U(R) U(R ) Montrer que la valeur d une formule F ne dépend que des cellules utilisées par F. Autrement dit, montrer que pour tout couple d états G et G tels que G(i, j) = G (i, j) pour tout (i, j) U(F ), F F (G) = F F (G ). 6. Supposons (juste pour cette question) que pour tout (i, j) N N, pour tout (m, n) U(ϕ(i, j)), on a m i et n < j, ou m < i et n j (ce qu on notera (m, n) < (i, j)). Montrer qu une telle feuille ϕ termine, en partant de n importe quel état G, au sens où, comme ci-dessus, on peut dériver un jugement de la forme ϕ G = G fin pour un certain état G fin. Déterminisme 7. Montrer que (contrairement aux langages que l on a vu en cours), la sémantique des feuilles n est pas déterministe. Autrement dit, trouver une feuille ϕ et un état G tels que l on puisse dériver (au moins) deux jugements ϕ G = G fin1 et ϕ G = G fin2 avec G fin1 G fin2. 8. Supposons maintenant que pour tous (i 1, j 1 ) et (i 2, j 2 ) dans N N, (i 1, j 1 ) U(ϕ(i 2, j 2 )) et (i 2, j 2 ) U(ϕ(i 1, j 1 )). Montrer que si G ϕ G 1 et G ϕ G 2 alors il existe un état G 3 tel que G 1 ϕ G 3 et G 2 ϕ G 3. 9. En déduire que, sous les hypothèses de la question 8, une telle feuille ϕ est déterministe, c est-à-dire que si ϕ G = G fin1 et ϕ G = G fin2 alors G fin1 = G fin2. 3

Graphes de contrôle Finalement, on va comparer l expressivité du langage des feuilles avec un langage du style de C. On considère le langage suivant, que nous appellerons D. Les expressions sont (par souci de simplicité de nouveau) : e ::= x e + e Les instructions (ou programmes) sont de la forme : c ::= l x = e affectation l x = a affectation d une constante (a R) l skip ne rien faire c; c séquence l if(e == 0) c else c conditionnelle l while(e! = 0) c boucle while où l N est une étiquette, servant à repérer où nous en sommes dans l exécution du programme. Nous supposerons que chaque étiquette apparaît au plus une fois dans un programme donné. Les affectations l x = e et l x = a sont distinguées dans un unique but : faciliter les développements techniques ci-dessous. On peut donc par exemple y écrire des programmes comme le programme (Ex) suivant : 1 u = 1; 2 v = 1; 3 res = 1; 4 i = n; 5 while (i! = 0) { 6 res = res + i; 7 i = i + v} Notons que toute instruction c a une étiquette de départ c, définie par ( l x = e) = ( l x = a) = ( l skip) = ( l if(e == 0) c else c ) = ( l while(e! = 0) c) = l et (c; c ) = c. On appelle graphe de contrôle G tout graphe orienté (chaque arc du graphe va d un sommet (source) à un autre (cible)) et étiqueté chaque arc est muni d une garde, obéissant à la syntaxe : et d un effet, obéissant à la syntaxe : g ::= e == 0 e! = 0 f ::= x = e x = a (Dans les deux cas, dénote l absence, de garde ou d effet selon le cas.) On notera un tel arc s f g t, où s est la source et t la cible. Le graphe de contrôle d un programme c, noté CG(c), est construit comme suit. D abord, les sommets de CG(c) sont les étiquettes présentes dans c, plus une autre étiquette notée l. Ensuite, l ensemble des arcs de CG(c) est défini comme E(c, l ), où : E( l x = e, l ) = { l x=e E( l x = a, l ) = { l x=a E( l skip, l ) = { l l } l } l } E(c; c, l ) = E(c, c ) E(c, l ) E( l if(e == 0) c else c, l ) = { l E( l while(e! = 0) c, l ) = { l e==0 e==0 l, l c, l e!=0 10. Dessiner le graphe de contrôle du programme (Ex). e!=0 c } E(c, l) c } E(c, l ) E(c, l ) 4

On définit la sémantique opérationnelle d un couple (G, l ), où G est un graphe de contrôle G = (V, E) et l V V est un ensemble fini de sommets, et V est un quadruplet (s, g, f, t) avec s, t V, g une garde, et f un effet comme suit. Les jugements sont de la forme ρ l ρ, et énoncent que partant d un sommet l dans un environnement ρ, on peut atteindre le sommet (final) l en un nombre fini d étapes, et avec un environnement final ρ. (F in) ρ l ρ l f g l E ρ = g fx f ρ l ρ (Arc) ρ l ρ où l on définit le jugement auxiliaire ρ = g par : (T rue) ρ = et où fx f ρ est défini par : e ρ = 0 (==) ρ = e == 0 e ρ 0, Err (! =) ρ = e! = 0 fx ρ = ρ fx x = e ρ = ρ[x e ρ] fx x = a ρ = ρ[x a] (Je ne donnerai pas l intuition, ce sera à vous de la comprendre.) On définira la sémantique d un programme c écrit en D par : ρ c ρ si et seulement si ρ c ρ est dérivable dans la sémantique ci-dessus de (CG(c), l ). 11. Montrer que la sémantique des programmes est déterministe : dans un graphe de contrôle CG(c), pour tout sommet l, si ρ l = ρ 1 et ρ l = ρ 2 alors ρ 1 = ρ 2. 12. La sémantique des graphes de contrôle (pas seulement de ceux de la forme CG(c)) est-elle déterministe? Autrement dit, peut-on montrer que dans un graphe (G, l ), si ρ l = ρ 1 et ρ l = ρ 2 sont dérivables, alors ρ 1 = ρ 2? D et les tableurs On propose de traduire tout programme c 0 écrit en langage D, ou plutôt tout graphe de contrôle G 0, en une feuille ϕ comme suit. (Je ne donnerai pas l intuition ici non plus.) Nous supposerons que, comme ci-dessus, les sommets de G 0 sont des numéros. Ensuite, on numérote chaque variable x : soit n x le numéro de x. On demande que si x et y sont deux variables distinctes, alors n x n y. De même, on numérote chaque constante a apparaissant dans une affectation de constante l x = a de G 0 (dans une garde) : soit n a le numéro de a, où l on suppose de nouveau que si a a alors n a n a. Par souci de lisibilité, posons A = 0, B = 1, C = 2. Ceci permettra d écrire des cellules sous la forme A5, B9, Cn ou Al (n, l N) au lieu de l écriture plus maladroite 0 5, 1 9, 2 n ou 0 l. Ensuite, on pose : (Flôt de données) pour chaque variable x, on définit ϕ(1, n x ) comme suit. Soient l1 x = e 1,..., lm x = e m, lm+1 x = a 1,..., lm+p x = a p les affectations (resp, affectations de constantes) modifiant x dans les gardes du graphe G 0. Alors ϕ(1, n x ) est la formule : = if(a0 = l 1 ; ê 1 ; if(a0 = l 2 ; ê 2 ;... if(a0 = l m ; ê m ; if(a0 = l m+1 ; Cn a1 ; if(a0 = l m+2 ; Cn a2 ;... if(a0 = l m+p ; Cn ap ; Bn x )...)))...)) où pour chaque expression e, ê est la formule obtenue en remplaçant chaque variable x par la cellule Bn x. 5

(Flôt de contrôle) En énumérant tous arcs de G 0 : l 1 f 1 g 1 l 1, l 2 f 2 g 2 l 2,..., l q f q g q l q, on définit ϕ(0, 0) (le contenu de la cellule A0) comme la formule : = if(a0 = l 1 ĝ 1 ; l 1; if(a0 = l 2 ĝ 2 ; l 2;... if(a0 = l q ĝ q ; l q; A0)...)) où pour chaque garde g, on pose if(f ĝ; F 2 ; F 3 ) égal à : if(f ; F 2 ; F 3 ) si g = if(f ; if(ê = 0; F 2 ; F 3 ); F 3 ) si g est de la forme e == 0 if(f ; if(ê = 0; F 3 ; F 2 ); F 3 ) si g est de la forme e! = 0 (Constantes) pour chaque constante a du graphe G 0, on pose ϕ(2, n a ) = a. 13. Pour tout environnement ρ (donnant des valeurs aux variables du langage D), et toute étiquette l, posons G l ρ l état (du tableur) défini par G l ρ(0, 0) = l, G l ρ(1, n x ) = ρ(x) pour tout variable x, G l ρ(2, n a ) = a pour chaque constante a du graphe G 0, et G l ρ(i, j) = 0 dans les autres cas. Montrer que si l on peut dériver ρ l ρ dans la sémantique du couple graphe de contrôleétiquette (G 0, l), alors on peut dériver ϕ G l ρ G l ρ dans la sémantique du tableur, où ϕ est construit ci-dessus. 14. L état G l ρ de la question précédente est-il stable? 15. La feuille ϕ construite ci-dessus est-elle déterministe? 16. Expliquer pourquoi le résultat de correction de la question 13 est strictement plus faible que ce que l on voudrait. En d autres termes, pourquoi la feuille ϕ ne calcule-t-elle pas en réalité la même chose que le graphe de contrôle G 0? 6