Pour débutant … et autre Raymond Ripp

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Les fonctions A quoi ça sert ?
Programmation Tcl/Tk Raymond Ripp février 2012 Survol général
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Raymond Ripp 5 mars 2013 la deuxième partie sera pour le 12 mars
Programmation Tcl/Tk Raymond Ripp février 2010 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
Programmation Tcl/Tk Raymond Ripp février 2011 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
Programmation Tcl/Tk Raymond Ripp janvier 2009
Programmation Tcl/Tk Raymond Ripp février 2011 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
Programmation Tcl Raymond Ripp 7 février 2012 deuxième partie du 14 février dans ce même ppt Survol général o Applications et Protocoles o Windows Linux.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Objectifs Présentation et utilisation du langage PERL
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Calcul numérique (avec Maple)
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Langage C Révision.
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Analyse lexicale Généralités Expressions rationnelles Automates finis
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Programmation nawk(1)
Instruction sélective switch-case Instruction répétitive do-while For
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
IFT 6800 Atelier en Technologies d’information
Web dynamique PhP + MySQL AYARI Mejdi 2006
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO107 Éléments de programmation
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Formulaires, CGI et PHP David Gross-Amblard (CNAM-Vertigo/Cédric) Transparents originaux : Philippe Rigaux Projet 3I
ECP – Option SA Henri Fallon
Plan troisième cours Instruction sélective Instruction répétitive
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
Animateur : Med HAIJOUBI
Javascript 1° PARTIE : LES BASES
PHP & My SQL.
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Raymond Ripp 20 janvier 2015 la deuxième partie sera pour le 3 février
Algorithmique et programmation en
Créer des packages.
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Les tests.
 Syntaxe du langage PHP
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
IFT1969 Programmation scientifique en C
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Les structures de contrôle
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Langage de programmation
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
Scripts et fonctions Instructions de contrôle
PRO-1027 Programmation Scientifique en C
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Transcription de la présentation:

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.

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

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

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

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]

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)

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 ...

Return d’une 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

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

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 ...

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.

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 }

Tableau(Chaine) <--> Valeur 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

“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”

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

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]

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 ?

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 ...

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.

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

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.

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 :

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

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

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]

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.

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 10 10 200 300 -fill red ...

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

Exemples

Exemples 2

Exemples 2 bis

Exemples 3 avec args

Exemples 3 avec args bis

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, …

Utilisation des tableaux associatifs

Appel récursif

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 http://www-bio3d-igbmc.u-strasbg.fr/~ripp

à suivre …