2. • Expériences de visualisation
• Contexte de recherche
– Exploration de programmes
– Mise au point des outils
• 3 Exemples
• Harald Wertz, Rim Chaabane
3. Foo / Series
• 33 LOC (Lisp), 8 fonctions
• Enseignement
• Compréhension de programmes
• Très difficile
4. (define (foo s)
(foo2 1 (nc s) s))
(define (foo2 p m s)
(unless (> p m)
(rec p nil s p)
(foo2 (+ p 1) m s) ))
(define (rec x sol s p)
(if (= x 0)
(im s sol p)
(rec (- x 1)
(cons (kamm (nthcdr (- x 1) s) p) sol) s
p)))
(define (kamm s p)
(when (number? (nth p s))
(kamm2 (- (nth p s) (car s)) (nthcdr p s) p) ))
(define (kamm2 inc s p)
(cond
((null? (and s (number? (nth p s)))) inc)
((= inc (- (nth p s) (car s)))
(kamm2 inc (nthcdr p s) p))
(t nil)))
(define (nc l)
(if (and l (number? (car l)))
(+ 1 (nc (cdr l)))
0))
(define (im l sol p)
(unless (member nil sol)
(im2 (length sol) (length l) sol p l)))
(define (im2 lsol ll sol p l)
(set-cdr! (last sol) sol)
(printf "--> : %on"
(calcule 0 sol lsol ll p l)) )
(define (calcule n sol lsol ll p l)
(unless (>= n ll)
(cons (+ (nth (% n lsol) l)
(* (/ n p) (car sol)))
(calcule (+ n 1) (cdr sol) lsol ll p l))))
5. +1 +1
(foo '(1 2 1 3 X X))
+0 +0
Succes (0 1) pas 2 --> (1 2 1 3 1 4)
-1
(foo '(1 2 1 3 1 4 X X X X))
+2
+3
Succes (0 1) pas 2 --> (1 2 1 3 1 4 1 5 1 6)
Succes (2 -1 3) pas 3 --> (1 2 1 3 1 4 5 0 7 7)
(foo '(1 2 4 8 16 X X))
Echec
10. Robot virtuel
• 1600 LOC (Lisp), 143 fonctions,
17 macros, 18 escape
• Enseignement
• Vérification
• Complexe car développé à plusieurs
périodes, parties réutilisées
11. (createTable 4 4)
(creObjet 'a 'boite 'taille '(2 2 3))
(creObjet 'b 'cube 'taille 2)
(creObjet 'c 'block 'taille '(1 2))
(creObjet 'd 'block 'taille '(2 1))
(mapc '(e f g h) 'creObjet)
(showTable)
la Table :
a a b b
a a b b
c c d e
f g d h
(pose-sur 'a 'b)
(pose-sur 'd 'c)
(pose-sur 'd 'Table)
(pose-dans 'c 'a)
(pose-dans 'd 'a)
(showSur)
a sur b
c dans a
d dans a
(showTable)
la Table :
nil nil b b
nil nil b b
nil nil nil e
f g nil h
16. Sudoku
• 3300 LOC (Tcl/Tk), 110 procédures
• Enseignement
• Maintenance, refactoring
• « Legacy » car développé en plusieurs
étapes, parties presque redondantes
22. Expériences d’exploration visuelle
• Pistes pour
– Observer des comportements inattendus
– Détecter des bugs
– Suggérer des optimisations
– …
• A valider avec d’autres approches