La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Tcl / Tk Pour débutant … et autre Raymond Ripp. Tcl / Tk Langage de programmation –généraliste –interprété –facile –rapide –moderne Fenêtrage –tout est.

Présentations similaires


Présentation au sujet: "Tcl / Tk Pour débutant … et autre Raymond Ripp. Tcl / Tk Langage de programmation –généraliste –interprété –facile –rapide –moderne Fenêtrage –tout est."— Transcription de la présentation:

1 Tcl / Tk Pour débutant … et autre Raymond Ripp

2 Tcl / Tk Langage de programmation –généraliste –interprété –facile –rapide –moderne Fenêtrage –tout est possible –facile –performant –robuste Multiplateforme … Unix, Windows, Mac … un seul programme

3 Tcl Interprété –pas de compilation –peut être un langage de commande –pas de déclaration Les points forts –chaînes de caractères –listes –adressage associatif

4 Un premier exemple Fichier.tcl exécutable Par tclsh (ou wish ) Une instruction par ligne –ou séparées par ; –ou sur plusieurs li\ gnes

5 Les variables Identificateur dune variable –toto X11 prix_max PrixMax prixMax Type dune variable (non déclaré) –String (vraie chaîne de caractères ou nombre) –List (de String ou de List) –Array Affectation –set toto 25 –Par une procédure CalAff toto 89 $X11 Accès à la valeur –$toto –[set toto]

6 Les fonctions proc Moyenne {A B} { return [expr ($A+$B)/2] } set X 12 (X=12) set M [Moyenne $X 26] (M=19) set Y $X (Y=12) set Y [set X] (Y=12) proc Calculons {X Y aZ} { upvar $aZ Z set Z [expr $X+$Y] } Calculons $X 78 Oscar (Oscar = X+78)

7 Les arguments sont transmis par valeur –Moyenne $X 26 si cest une variable ou une constante –Calculons $X 78 Oscar la procédure reçoit la valeur de X, le nombre 78 et la chaîne de caractères Oscar par upvar $aZ Z elle sait que aZ est l adresse d une variable, qui localement s appelle Z ne peuvent être modifiés que –sil y a upvar...

8 Return dune procédure return ( ne retourne rien) return 1789 (retourne 1789) proc Sommons {A B} { return [expr $A+$B]} –retourne la somme Que peut-on retourner : –une valeur (chaîne ou nombre) –une liste (de n importe quoi : valeur ou listes ) – … mais pas de array

9 Les instructions de contrôle if {expression} {blocV} else {blocF} while {expression} {bloc} for {init} {expression} {increm} {bloc} foreach a $Liste {bloc} foreach a $ListeA b $ListeB {bloc} foreach {a b} $Liste {bloc} switch string { pattern1 {bloc} pattern2 {bloc2}... } continue, break, return, exit

10 Les chaînes de caractères set J Bonjour set Mme Madame set S Bonsoir $Mme append S Durand set Texte $S,\nje vous écris … set Pi 3.14 (Tcl sait que Pi est aussi un nombre) Tout est chaîne. Les fonctions associées...

11 Fonctions de traitement des chaînes de caractères append S, merci. set C [string index $Tout 3] set S [string range $Tout 3 end] set S [string toupper Salut] (tolower,totitle) set S [string repeat bravo 20] set i [string first o non ou non 3] set i [string last o non ou non 3] string trim $S c (trimleft trimright) set A [string replace $S 2 5 AB] set L [string length $S] string compare string equal etc.

12 Les listes set L {a b c d e} set L [list 3 $X $Y 35] lappend L 56 <<<< pas de $ set T [lsort $L] set Petit [lrange $Grand 4 end] set Element [lindex $L 3] set NouvListe [linsert $Liste 2 $X $Y] set AB [concat $ListeA $ListeB] set n [llength $Liste] set Texte [join $Lignes \n] set Lignes [split $Texte \n] foreach Element $Liste { bloc }

13 Arrays set M(2,4)45 … comme une matrice … set S [expr $M(2,4)+8] set M($i,3) 56 set Prenom(Ripp) Raymond set Bureau(Raymond Ripp) 0086 Tableau(Chaine) Valeur

14 Arrays (suite) … vraiment, vraiment pratique !!! rapide, facile, sûr, … cest magique : en particulier pour ladressage associatif … adressage par le contenu

15 Ladressage associatif foreach Ligne [DuFichier /home/ripp/labo] { scan $Ligne %s %s %s S N P set MmeMllM($N) $S set PrenomDe($N) $P lappend LesNomsDe($P) $N } set Nom [Question Votre nom :] puts $MmeMllM($Nom) $PrenomDe($Nom) $Nom, … puts Les personnes se prénommant Nicolas sont : puts [join $LesNomsDe(Nicolas) \n] cest surtout très rapide

16 Ladressage associatif (suite) proc Badge X { global Memo if {[info exists Memo($X)]} { return $Memo($X) } if {[info exists Memo(Bidon)]} { return } foreach Ligne [DuFichier /usr/badge] { scan $Ligne %s %s N B set Memo($N) $B set Memo($B) $N } set Memo(Bidon) Nodin return [Badge $X] }

17 Expressions régulières un don du ciel très simples pour des problèmes simples simple pour le reste … quand on a compris ! vous ne pourrez plus vous en passer ! … on y va ?

18 regexp pour savoir si une sous-chaîne est dans une chaîne if {[regexp Petit Grand]} { bloc } Grand est une chaîne de caractères Petit une expression régulière qui définit très précisément ce quon recherche...

19 regexp Petit Grand la chaîne Grand est normale Petit est une expression régulière –une simple chaîne : regexp ymo Raymond –… regexp {^R[a-z]+$} Raymond –là où ça se corse c est quand il faut mettre des [, des ], des $, des *, ou autres … –exercice pour l obtention du prix Nobel en informatique: écrire l expression régulière d une expression régulière correcte.

20 regexp : caractères backslashés \+*.,[]{}()- ont une signification spécifique. Les backslasher pour les utiliser tels quels : regexp {a\*x\+b} $Formule \n \t... ont une signification standardisée

21 Tk, linterface graphique se programme en Tcl les widgets (WIndows gaDGETS) : fenêtres, boutons, cadres, ascenseurs, … sont des objets –que l on crée –qui ont leur vie –qui communiquent un manager les organise, les rend visibles, actifs, il gère les interactions avec la souris, le clavier.

22 Hiérachie des widgets Il y a des fenêtres dans des fenêtres, des boutons, des ascenseurs, etc. Un widget est fait de widgets la notation arborescente....choix.liste.choix.boutons.accepte.choix.boutons.abandonne … induit la hiérarchie Il ny a plus quà construire :

23 Les éléments de base frames : ce sont des cadres, des conteneurs toplevel frame affichage et manipulation de textes text listbox message entry label boutons et ascenseurs button scrollbar checkbutton radiob. dessins et photos canvas image photo bitmap menus menu menubutton

24 Création toplevel.t1 frame.t1.f frame.t1.f.g canvas.t1.f.g.c -width 1024 scrollbar.t1.f.hor -orient horizontal TypeDeWidget NomduWidget -option valeur -option valeur … set Chevalet.t1 ; … ; set Toile $Tout.f.g.c toplevel $Chevalet canvas $Toile -width $LargeurToile listbox $Palette

25 Configuration 1/3.t1.f.g.c configure -height 768 $Chevalet configure -background white NomduWidget configure -option valeur -option valeur … et pour obtenir les valeurs : set LaConfig [.a.b.c configure] (pour tout) set LeFond [.a.b.c configure -background]

26 Configuration 2/3 STANDARD OPTIONS -activebackground, activeBackground, Foreground -background or -bg, background, Background -borderwidth or -bd, borderWidth, BorderWidth -cursor, cursor, Cursor -highlightbackground, highlightBackground, HighlightBackground -highlightcolor, highlightColor, HighlightColor -highlightthickness, highlightThickness, HighlightThickness -jump, jump, Jump -orient, orient, Orient -relief, relief, Relief -repeatdelay, repeatDelay, RepeatDelay -repeatinterval, repeatInterval, RepeatInterval -takefocus, takeFocus, TakeFocus -troughcolor, troughColor, Background … et il y en a encore … et des spécifiques à chaque widget.

27 Configuration 3/3 … vous avez remarqué que un widget $w, une fois créé, EST une fonction tcl. Cette fonction permet de modifier le widget : $w configure -option valeur de linterroger : [$w configure -option] Elle sert, en fait, à plein dautres choses : $w create rectangle fill red...

28 Organisation géométrique pack $w.buttons -side bottom -fill x positionne la boite à côté ou au dessus des autres place -x 10 -y 20 $w.truc la place à un endroit précis en x,y grid.w.scrover -row 0 -column 1 sur une grille Seules ces commandes et toplevel provoquent laffichage

29 Exemples

30 Exemples 2

31 Exemples 2 bis

32 Exemples 3 avec args

33 Exemples 3 avec args bis

34 Lecture dun fichier Il faut des règles concernant le contenu –ligne par ligne, 1 prénom (avec - ), 1 nom, etc. –attention aux lignes vides –caractère séparateur : un ou plusieurs, espace ou tabulation, …

35

36 Utilisation des tableaux associatifs

37 Appel récursif

38

39

40

41 Tclsh ou Wish en Unix ou Windows Un fichier.tcl Double-clic du fichier Attention puts ne marche car il ny a pas de console Lancer wish –source fifi.tcl Utiliser Tk source gscope_outils.tcl

42 à suivre …


Télécharger ppt "Tcl / Tk Pour débutant … et autre Raymond Ripp. Tcl / Tk Langage de programmation –généraliste –interprété –facile –rapide –moderne Fenêtrage –tout est."

Présentations similaires


Annonces Google