Programmation Tcl/Tk Raymond Ripp janvier 2009

Slides:



Advertisements
Présentations similaires
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Advertisements

PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Programmation Tcl/Tk Raymond Ripp février 2012 Survol général
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Interactivé: L'Action Script.
Raymond Ripp 5 mars 2013 la deuxième partie sera pour le 12 mars
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X protocoles - langages de programmation protocoles -
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.
Pour débutant … et autre Raymond Ripp
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X Protocoles de communication Protocoles de communication.
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.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Création de Pages Web Dynamiques
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 &
Personal Home Page / Hypertext Processor (PHP)
Objectifs Présentation et utilisation du langage PERL
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Unix Raymond Ripp.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Principes de programmation (suite)
CPI/BTS 2 Programmation Web Introduction au PHP
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
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.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
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.
PhP-MySQL Pagora 2012/2013 CTD 2. Première balise -Plusieurs types de balise - - … -Partout !
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Animateur : Med HAIJOUBI
Javascript 1° PARTIE : LES BASES
TP n°3 Javascript Contrôle de formulaire
Développement Web Open Source haXe et les outils « open source » Première partie.
PHP & My SQL.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
PHP 5° PARTIE : LES COOKIES
JavaScript.
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),
Cours de programmation web
Raymond Ripp 20 janvier 2015 la deuxième partie sera pour le 3 février
Créer des packages.
Un survol du language C.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Unix Raymond Ripp.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Initiation au JavaScript
Function cas(uneNoteCCouCF){ laCellule.align="center"; uneNoteCCouCF=Number(uneNoteCCouCF); if(isNaN(uneNoteCCouCF)){ return "-"; } else { if(uneNoteCCouCF>=0){return.
Les bases de l’algorithmique
Programmation Raymond Ripp 20 janvier 2015 la deuxième partie sera pour le 3 février Généralités o Applications Protocoles o Windows Linux o Disques Processeurs.
Langage de programmation
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Présentation >> Logiciel de simulation d’ écoulement d’eau dans
Programmation Raymond Ripp 22 mars 2016 Généralités o Applications Protocoles o Windows Linux o Disques Processeurs o Passage en mode console ssh commandes.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Programmation Raymond Ripp Généralités Applications Protocoles
Unix Raymond Ripp.
Programmation Raymond Ripp Généralités Applications Protocoles
Programmation Raymond Ripp Généralités Applications Protocoles
Programmation Raymond Ripp Généralités Applications Protocoles
Unix Raymond Ripp.
Transcription de la présentation:

Programmation Tcl/Tk Raymond Ripp janvier 2009 applications et protocoles pc et serveurs ssh Tcl Tk exemples Raymond Ripp janvier 2009 Ce cours de deux heures s’adresse aux débutants … On y trouvera une introduction à la programmation en Tcl Mais d’abord une petite parenthèse pour expliquer ce qu’est une application, un protocole de communication et comment la programmation vient s’insérer dans tout ça. Et aussi ssh, Firewall, disques, etc.

Protocoles - Langages de programmation Applications et Protocoles de communication En direct Navigateur Courier Mode console Fenêtrage Windows DirectX HTTP Hypertext transfer protocol SMTP Simple mail transfer protocol SSH Secure shell X-windows Windows Protocoles - Langages de programmation Sur un PC ou un Mac … on joue ! Ou on fait du web, du courier. On peut aussi se connecter en mode console sur une machine linux, et y lancer une application graphique qui s’exécutera sur la machine distante en affichant localement. Toutes ces applications utilisent des protocoles de communication. Nous allons apprendre à écrire une application en langage Tcl qui s’exécutera sur star8 soit en mode console soit, si on fait du Tk en graphique. PHP Java Tcl C HTML Javascript X Windows Max OS Linux serveur

Windows - Linux Disques - Processeurs /home Firewall /genomics Windows Mac OS Linux ssh ssh titus ssh IGBMC Supposons que vous ayez votre PC en dehors de l’IGBMC. A l’IGBMC il y a des serveurs, avec leurs propores disques, et des accès aux disques des autres serveurs. D’un machine on peut passer à l’autre par ssh Vous, de l’extérieur n’avez accès qu’à titus par ssh et de là aux star3-8 par ssh ricoché. Et ce à travers le Firewall qui ne laisse passer que certains protocoles. Nous à l’IGBMC on peut dans certains cas monter directement les disques des serveurs sur nos pc. Windows Mac OS Linux star6 ssh

SSH sur star8 /groupes/poch/ripp A1.tcl A2.tcl A3.tcl A4.tcl mon_pc_> ssh –l ripp –X titus.u-strasbg.fr titus_ripp_> ssh –l ripp –X star8 star8_ripp_> pwd /groupes/poch/ripp star8_ripp_> cd TclRipp star8_TclRipp_> ls A1.tcl A2.tcl A3.tcl A4.tcl star8_TclRipp_> gedit A2.tcl La connection par ssh sur star8 doit se faire à travers titus.u-strasbg.fr

Le langage Tcl Commande argument1 argument2 argument3 Nous verrons plus tard comment lancer une programme. Examinons maitenant un programme Tcl Il y a là des instructions simples et la boucle while. Important : ça commence par une ligne #! … Et on s’arrête par exit. Le while est suivi de deux parties entre {} La première est le test d’arrêt, quand on a lu tout le fichier. La deuxième est le corps du while qui est exécuté tant que la condition est vraie. Si on ramène le corps du while en un bloc on voit que toutes les lignes contiennent une commande suivie de ses arguments. Commande argument1 argument2 argument3

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 objets manipulés pas de compilation peut être un langage de commande pas de déclaration multiplateforme Les objets manipulés chaînes de caractères nombres listes tableaux (adressage associatif) Tcl est aussi un langage orienté objet …

Exemples d’instructions Tcl puts set open gets while incr exit return … puts $texte; puts $f $texte set i 0 set f [open $fichier “w”] gets $f ligne while {$i>0} { ...} incr i exit return $z Voici une brochette de commandes Tcl

set variable valeur : affecte la valeur $variable : accès à la valeur La commande set L’important est de bien noter quand on met un $ et pas. Il y a aussi un exemple d’appel de fonction.

Les fonctions ou procédures Une fonction se déclare par proc NomDeLaFonction suivie d’une liste d’arguments entre {}

Procédures et programme principal La structure générale d’un programme l’entête disant que c’est du Tcl Les déclarations de procédures Le corps du programme (appelé programme principale ”main”)

Programme dans plusieurs fichiers On peut grâce à la commande ”source fichier” distribuer le code tcl dans de multiples fichiers qui peuvent servir dans différents programmes. Ici le fichier projetNano.tcl contient certainement une procédure nommée Nano.

Tcl, aperçu général des commandes les plus utilisées set expr incr puts gets scan format parray string append regexp regsub split lappend lassign lindex linsert list llength lrange lrepeat lreplace lsearch lset lsort concat join array file Puts gets open close read glob exit return break continue if while for foreach switch proc source catch exec cd pwd pid time clock eval global unset upvar fichiers calcul listes texte L’important ici est d’avoir un aperçu global de tout ce qui est important, classé par genre. Il n’y a pas grand chose d’autre … Avec ça on peut pour ainsi dire tout faire. misc arrays contrôle

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} $ListeABABAB {bloc} switch string { pattern1 {bloc} pattern2 {bloc2} ... } continue, break, return, exit

Difficile return et modification des arguments par les fonctions et procédures Normalement une fonction rend une valeur que l’on affecte à une variable. Une procédure peut aussi modifier unen variable. Pour cela il faut la transmettre sans le $ Et la procédure doit utiliser la mécanique du upware qui indique que l’argument transmis n’est pas une valeur mais une référence sur la variable du programme appelant. Modification de Total

Les arguments des fonctions sont toujours transmis par valeur Moyenne $X 25 une variable avec $ ou une constante Sommons $X 78 Total la procédure reçoit la valeur de X (car $X), le nombre 78 et la chaîne de caractères Total par upvar $aZ Z elle sait que aZ est l ’adresse d ’une variable, qui localement s ’appelle Z La procédure Sommons peut changer la valeur de la variable Total car on lui a transmis uniquement le nom (sans $) et elle utilise la mécanique upvar

Cas le plus courant et le plus facile Return d’une procédure return (ne retourne rien) return 1789 (retourne 1789) proc Moyenne {A B} { return [expr ($A+$B)/2]} retourne la moyenne Que peut-on retourner : une valeur (chaîne ou nombre) une liste de n ’importe quoi: valeurs ou listes … mais pas de array

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 X 3.14 (Tcl sait que X 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 }

Arrays Tableaux à adressage associatif 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”

Arrays 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

Arrays 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]

regexp, regsub 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 ...

la chaîne Grand est normale Petit est une expression régulière regexp Petit Grand la chaîne Grand est normale Petit est une expression régulière une simple chaîne : regexp ymo Raymond ou … regexp {^R[a-z]+$} Raymond là où ça se corse c ’est quand il faut mettre des [, des ], des $, des *, ou autres …

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

Tcl par l’exemple … Notre carnet d’adresses : Contraintes : Un seul prénom (éventuellement avec -) Un seul nom Pays en fin de ligne en un mot Michel DUPONT 3, rue des Idees 67100 Strasbourg France Jean-Edouard DE-LA-MOTTE 8, allée Dubout 4530 Mont de Tarzan Luxembourg Stephen KING 9, Baker Street 8887 United-Kingdom

Il y a des lignes vides, le scan n’affecte pas de nouvelles valeurs à Prenom Nom

Les lignes ont des espaces donc non vides !