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

Pour débutant … et autre Raymond Ripp

Présentations similaires


Présentation au sujet: "Pour débutant … et autre Raymond Ripp"— Transcription de la présentation:

1 Pour débutant … et autre Raymond Ripp
Tcl / Tk Pour débutant … et autre Raymond Ripp Ce séminaire sur Tcl/Tk s'adresse aux débutants en Tcl ... mais il faut avoir des notions de programmation. Nous verrons d’abord le langage de rogrammation Tcl qui est un langage de script comme csh ou tcsh, puis nous aborderons Tk, qui permet de créer et de gèrer un sytème de fenêtrage avec petits dessins, ascenceur et gstion de la souris et du clavier.

2 Multiplateforme … Unix, Windows, Mac
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é Les points forts 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 d’une variable
toto X11 prix_max PrixMax prixMax Type d’une 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 (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 ne peuvent être modifiés que
Moyenne $X 26 si c’est 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 s’il y a upvar ...

8 Return d’une procédure
return (ne retourne rien) return (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 <<<< 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 Tableau(Chaine) <--> Valeur
Arrays set M(2,4) … 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 “adressage par le contenu”
Arrays (suite) … vraiment, vraiment pratique !!! rapide, facile, sûr, … c’est magique : en particulier pour l’adressage associatif … “adressage par le contenu”

15 L’adressage 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”] c’est surtout très rapide

16 L’adressage 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 Grand est une chaîne de caractères
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 qu’on 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, l’interface 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 Un widget est fait de widgets
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 n’y 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 TypeDeWidget NomduWidget -option valeur -option valeur …
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 NomduWidget configure -option valeur -option valeur …
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 l‘interroger : [$w configure -option] Elle sert, en fait, à plein d’autres 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 l’affichage

29 Exemples

30 Exemples 2

31 Exemples 2 bis

32 Exemples 3 avec args

33 Exemples 3 avec args bis

34 Lecture d’un 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 n’y a pas de console Lancer wish source fifi.tcl Utiliser Tk source gscope_outils.tcl

42 à suivre …


Télécharger ppt "Pour débutant … et autre Raymond Ripp"

Présentations similaires


Annonces Google