TCL/TK

29
TCL/TK TCL/TK Κιόχος Απόστολος Κιόχος Απόστολος

description

TCL/TK. Κιόχος Απόστολος. TCL/TK. Η TCL/TK είναι μια γλώσσα προγραμματισμού Που βοηθάει στην επέκταση των εφαρμογών και στην κατασκευή γραφικού περιβάλλοντος. Αποτελείται από δύο μέρη το TCL και το TK. TCL. Είναι μια απλή γλώσσα για κατασκευή και επέκταση εφαρμογών - PowerPoint PPT Presentation

Transcript of TCL/TK

Page 1: TCL/TK

TCL/TKTCL/TK

Κιόχος ΑπόστολοςΚιόχος Απόστολος

Page 2: TCL/TK

TCL/TKTCL/TK

Η Η TCL/TK TCL/TK είναι μια γλώσσα είναι μια γλώσσα προγραμματισμού προγραμματισμού

Που βοηθάει στην επέκταση των Που βοηθάει στην επέκταση των εφαρμογών καιεφαρμογών και

στην κατασκευή γραφικού περιβάλλοντος.στην κατασκευή γραφικού περιβάλλοντος.

Αποτελείται από δύο μέρη το Αποτελείται από δύο μέρη το TCL TCL και το και το TKTK

Page 3: TCL/TK

TCLTCL

Είναι μια απλή γλώσσα για Είναι μια απλή γλώσσα για κατασκευή και επέκταση εφαρμογώνκατασκευή και επέκταση εφαρμογών

Περιέχει τις βασικότερες Περιέχει τις βασικότερες προγραμματιστικές λειτουργίες προγραμματιστικές λειτουργίες όπως μεταβλητές , πίνακες , δομές όπως μεταβλητές , πίνακες , δομές ελέγχου , μαθηματικές εκφράσεις ελέγχου , μαθηματικές εκφράσεις κ.α.κ.α.

Page 4: TCL/TK

TKTK

To TK To TK είναι ένα «κουτί» εργαλείων που είναι ένα «κουτί» εργαλείων που

χρησιμοποιείται μαζί με την χρησιμοποιείται μαζί με την TCL TCL για την για την

κατασκευή κατασκευή user interfacesuser interfaces..

To TK To TK είναι η πιο γνωστή και χρήσιμη είναι η πιο γνωστή και χρήσιμη επέκτασηεπέκταση

του του TCLTCL

Page 5: TCL/TK

Τα πλεονεκτήματα της Τα πλεονεκτήματα της TCL/TKTCL/TK

Με την χρίση της Με την χρίση της TCL/TK TCL/TK μπορούμε να μπορούμε να κατασκευάσουμε πολύ πιο εύκολα , κατασκευάσουμε πολύ πιο εύκολα , γρήγορα και με λιγότερες γραμμές γρήγορα και με λιγότερες γραμμές κώδικα εφαρμογέςκώδικα εφαρμογές γραφικού γραφικού περιβάλλοντος σε σχέση με την περιβάλλοντος σε σχέση με την C.C.

Ο Προγραμματιστής μπορεί να Ο Προγραμματιστής μπορεί να επεκτείνει εύκολα τις εφαρμογές του επεκτείνει εύκολα τις εφαρμογές του χρησιμοποιώντας ελάχιστες εντολές.χρησιμοποιώντας ελάχιστες εντολές.

Το Το TCL TCL μπορεί πολύ εύκολα να μπορεί πολύ εύκολα να ενσωματωθεί σε υπάρχουσες ενσωματωθεί σε υπάρχουσες εφαρμογές.εφαρμογές.

Page 6: TCL/TK

Τα πλεονεκτήματα της Τα πλεονεκτήματα της TCL/TKTCL/TK

Η Η TCL/TK TCL/TK χρησιμοποιεί διερμηνέα χρησιμοποιεί διερμηνέα και όχι μεταγλωττιστή, έτσι οι και όχι μεταγλωττιστή, έτσι οι εφαρμογές μπορούν να τρέξουν σε εφαρμογές μπορούν να τρέξουν σε διάφορα λειτουργικά συστήματα και διάφορα λειτουργικά συστήματα και αρχιτεκτονικές.αρχιτεκτονικές.

Η Η TCL TCL μπορεί εύκολα να μπορεί εύκολα να ενσωματώσει και άλλες βιβλιοθήκες ενσωματώσει και άλλες βιβλιοθήκες όπως το όπως το TKTK..

Page 7: TCL/TK

Τι μας παρέχει η Τι μας παρέχει η TCLTCL

H TCL H TCL παρέχει τις εντολές και παρέχει τις εντολές και δομές ώστε να μπορέσουμε να δομές ώστε να μπορέσουμε να γράψουμε διάφορα είδη εφαρμογών.γράψουμε διάφορα είδη εφαρμογών.

Μας παρέχει : Μεταβλητές , Μας παρέχει : Μεταβλητές , Τελεστές , Πίνακες , Λίστες , Δομές Τελεστές , Πίνακες , Λίστες , Δομές ελέγχου , Αρχεία , Συναρτήσεις , ελέγχου , Αρχεία , Συναρτήσεις , Εκφράσεις , Διαδικασίες και Εκφράσεις , Διαδικασίες και χειρισμό λαθών.χειρισμό λαθών.

Page 8: TCL/TK

Μεταβλητές στην Μεταβλητές στην TCLTCL

Οι μεταβλητές δημιουργούνται με Οι μεταβλητές δημιουργούνται με την εντολή την εντολή SETSET π.χ π.χ set A 44 , set B set A 44 , set B [ expr $A*4][ expr $A*4]

Στην τιμή των μεταβλητών Στην τιμή των μεταβλητών αναφερόμαστε με $αναφερόμαστε με $varname varname

Page 9: TCL/TK

Έλεγχος Ροής στην Έλεγχος Ροής στην TCLTCL

Στην Στην TCL TCL υπάρχουν οι εντολές υπάρχουν οι εντολές IFIF , , SWITCH , FOR , FOREACH SWITCH , FOR , FOREACH και και WHILEWHILE που λειτουργούν παρόμοια που λειτουργούν παρόμοια με τις αντίστοιχες της με τις αντίστοιχες της CC

Υπάρχουν επίσης και δύο εντολές Υπάρχουν επίσης και δύο εντολές ελέγχουν βρόγχων οι ελέγχουν βρόγχων οι BREAK BREAK και η και η COTINUE COTINUE

Page 10: TCL/TK

Συναρτήσεις στην Συναρτήσεις στην TCLTCL

Οι συναρτήσεις δημιουργούνται με Οι συναρτήσεις δημιουργούνται με την εντολή την εντολή proc proc π.χ. π.χ. proc mul (a b) proc mul (a b) {expr $a*$b}{expr $a*$b}

Όλες οι μεταβλητές εντός της Όλες οι μεταβλητές εντός της συνάρτησης είναι τοπικές.συνάρτησης είναι τοπικές.

Με την χρίσης της εντολής Με την χρίσης της εντολής global global ορίζουμε μεταβλητές με εμβέλεια ορίζουμε μεταβλητές με εμβέλεια όλες τις συναρτήσεις π.χ. όλες τις συναρτήσεις π.χ. global xglobal x

Page 11: TCL/TK

Μαθηματικές Μαθηματικές συναρτήσειςσυναρτήσεις

Υπάρχει πλήθος μαθηματικών Υπάρχει πλήθος μαθηματικών συναρτήσεων συναρτήσεων

οι σημαντικότερες είναι:οι σημαντικότερες είναι:

Abs(x)Abs(x) cos(x)cos(x)

Exp(x)Exp(x) tan(x)tan(x)

Log(x)Log(x) sqrt(x)sqrt(x)

Pow(x,y)Pow(x,y)

Sin(x)Sin(x)

Page 12: TCL/TK

Ακολουθίες Ακολουθίες backslashbackslash

\\n n νέα γραμμήνέα γραμμή \\t t tabtab \space \space κενός χαρακτήραςκενός χαρακτήρας \\a a ηχητικό μήνυμαηχητικό μήνυμα \\bb backspacebackspace \v \v κάθετο κάθετο tabtab

Page 13: TCL/TK

Σχόλια στην Σχόλια στην TCLTCL

Στον κώδικα μπορούμε να Στον κώδικα μπορούμε να προσθέσουμε και σχόλια που μας προσθέσουμε και σχόλια που μας βοηθούν στην μελλοντική συντήρηση βοηθούν στην μελλοντική συντήρηση του κώδικα.του κώδικα.

Αν ο πρώτος μη κενός χαρακτήρας Αν ο πρώτος μη κενός χαρακτήρας μιας εντολής είναι ο # ότι μιας εντολής είναι ο # ότι ακολουθεί είναι σχόλιο.ακολουθεί είναι σχόλιο. Π.χ. Π.χ. Set a Set a 10; # variable test10; # variable test

Page 14: TCL/TK

Τελεστές στην Τελεστές στην TCLTCL

Οι σημαντικότεροι τελεστές της Οι σημαντικότεροι τελεστές της TCL TCL είναι:είναι:

Αριθμητικοί τελεστές +, -, *, /, %Αριθμητικοί τελεστές +, -, *, /, % Σχεσιακοί τελεστές <, >, <=, =>, Σχεσιακοί τελεστές <, >, <=, =>,

== , != == , != Λογικοί τελεστές && , ||Λογικοί τελεστές && , ||

Page 15: TCL/TK

Εκφράσεις στην Εκφράσεις στην TCLTCL

Οι εκφράσεις στην Οι εκφράσεις στην TCL TCL υπολογίζονται υπολογίζονται με τηνμε την

εντολή εντολή expr.expr.

Π.χ.Π.χ. η η expr ((300expr ((300//93.5)*0.965) /2 93.5)*0.965) /2

Επιστρέφει 1.548Επιστρέφει 1.548

Page 16: TCL/TK

Πίνακες στην Πίνακες στην TCLTCL Οι πίνακες όπως και οι μεταβλητές Οι πίνακες όπως και οι μεταβλητές

ορίζονται με την εντολή ορίζονται με την εντολή set set π.χ. π.χ. Set esoda Set esoda (Iounios) 3500(Iounios) 3500

H TCL H TCL υποστηρίζει μόνο μονοδιάστατους υποστηρίζει μόνο μονοδιάστατους πίνακες αλλά οι πολυδιάστατοι μπορούν πίνακες αλλά οι πολυδιάστατοι μπορούν να εξομοιωθούν με τη σύνδεση πολλών να εξομοιωθούν με τη σύνδεση πολλών δεικτών σε ένα μοναδικό στοιχείο.δεικτών σε ένα μοναδικό στοιχείο.

Π.χ. Π.χ. Set pinakas (1,1) 100Set pinakas (1,1) 100 set i 1 set i 1set pinakas (1,2) 200set pinakas (1,2) 200 set j 1 set j 1set pinakas (1,3) 300set pinakas (1,3) 300 set S $pinakas set S $pinakas

($i,$j)($i,$j)

Page 17: TCL/TK

Λίστες στην Λίστες στην TCLTCL

Οι βασικές λειτουργίες πάνω σε λίστες είναιΟι βασικές λειτουργίες πάνω σε λίστες είναι

Concat list?list Concat list?list συνενώνει λίστεςσυνενώνει λίστες

Index list index Index list index επιστρέφει το στοιχείο με δείκτη επιστρέφει το στοιχείο με δείκτη IndexIndex

Insert list value?value?... Insert list value?value?... Εισάγει στοιχείαΕισάγει στοιχεία Length list Length list επιστρέφει το μήκος της λίσταςεπιστρέφει το μήκος της λίστας

LsortLsort ταξινόμηση λιστών ταξινόμηση λιστών

LsearchLsearch αναζήτηση σε Λίστες αναζήτηση σε Λίστες

Page 18: TCL/TK

Αρχεία στην Αρχεία στην TCLTCL

Η Η TCL TCL παρέχει εντολές παρέχει εντολές Για εγράφη και ανάγνωση αρχείωνΓια εγράφη και ανάγνωση αρχείων Για ανάκτηση πληροφοριών αρχείων Για ανάκτηση πληροφοριών αρχείων

από το σύστημα όπως η ώρα από το σύστημα όπως η ώρα τελευταίας πρόσβασηςτελευταίας πρόσβασης

Για τον χειρισμό των ονομάτων των Για τον χειρισμό των ονομάτων των αρχείωναρχείων

Page 19: TCL/TK

ΤΚ – ΤΚ – buttonsbuttons

H H εντολή εντολή button button δημιουργεί ένα δημιουργεί ένα κουμπί σε ένακουμπί σε ένα

παράθυρο. παράθυρο.

Π.χ. Π.χ. Button .goodbye – text Bye! – Button .goodbye – text Bye! – command {exit}command {exit}

pack . Goodbye –padx 60 – pady 5pack . Goodbye –padx 60 – pady 5

Page 20: TCL/TK

TK – checkButtons - TK – checkButtons - radioButtonsradioButtons

checkbutton .c1 -text Bold -variable bold   checkbutton .c1 -text Bold -variable bold  

checkbutton .c2 -text Italics -variable italics checkbutton .c2 -text Italics -variable italics 

radiobutton .r1 -text Helvetica -variable font -value radiobutton .r1 -text Helvetica -variable font -value helveticahelvetica

radiobutton .r2 -text Courier   -variable font -value radiobutton .r2 -text Courier   -variable font -value

courier courier      

Page 21: TCL/TK

TK - listboxTK - listbox

Listbox insert end coral2Listbox insert end coral2

Listbox insert end coral3Listbox insert end coral3

Page 22: TCL/TK

TK - canvasTK - canvas

canvas .c -width 250 -height 100 canvas .c -width 250 -height 100

set myoval [.c create oval 0 0 50 50 -fill orange] set myoval [.c create oval 0 0 50 50 -fill orange]

set myline [.c create line 50 50 100 100 -fill blue -width 4] set myline [.c create line 50 50 100 100 -fill blue -width 4]

.c bind $myoval <B1-Motion>  {moveit $myoval %x %y} .c bind $myoval <B1-Motion>  {moveit $myoval %x %y}

.c bind $myline <B1-Motion>  {moveit $myline %x %y} .c bind $myline <B1-Motion>  {moveit $myline %x %y}

grid .c -row 0 -column 0 grid .c -row 0 -column 0

Page 23: TCL/TK

TK - lebelsTK - lebels

Δημιουργία ετικετών σε παράθυροΔημιουργία ετικετών σε παράθυρο

label .l1 -text "This is what the default label looks like" label .l1 -text "This is what the default label looks like"

label .l2 -text "This is a yellow label on a blue background" -foreground label .l2 -text "This is a yellow label on a blue background" -foreground Yellow -background Blue Yellow -background Blue

label .l3 -text "This is a label in Times 24 font" \     -font {-family times -size label .l3 -text "This is a label in Times 24 font" \     -font {-family times -size 24} 24}

# Put them in the window in row order # Put them in the window in row order

grid .l1 -row 0 grid .l1 -row 0

grid .l2 -row 1grid .l2 -row 1

grid .l3 -row 2 grid .l3 -row 2

Page 24: TCL/TK

ΤΚ - ΤΚ - bitmapsbitmaps

Ετικέτα Ετικέτα bitmapbitmap

Εμφανίζει εικόνες Εμφανίζει εικόνες bitmap bitmap σε σε παράθυραπαράθυρα

Π.χ.Π.χ.

Label .bitmap –bitmap @$HOME/pics/1.bmpLabel .bitmap –bitmap @$HOME/pics/1.bmp

Pack .bitmapPack .bitmap

Page 25: TCL/TK

ΤΚ – ΤΚ – scroll barsscroll bars

Δημιουργεί Δημιουργεί scroll bars scroll bars σε παράθυροσε παράθυρο

Παράδειγμα:Παράδειγμα:

Listbox .files –yscrollcommand “.scroll set”Listbox .files –yscrollcommand “.scroll set”

Pack .filesPack .files

Scrollbar .scroll –command “.files yview”Scrollbar .scroll –command “.files yview”

Pack .scroll –fill yPack .scroll –fill y

Page 26: TCL/TK

TK - ScalesTK - Scales

Δημιουργεί κλίμακες σε παράθυραΔημιουργεί κλίμακες σε παράθυρα

scale .scale -orient vertical -length 284 -from 0 -to 250 -scale .scale -orient vertical -length 284 -from 0 -to 250 -tickinterval 50tickinterval 50

Pack .scalePack .scale

Page 27: TCL/TK

TK - EntriesTK - Entries

Πλαίσια εισόδουΠλαίσια εισόδουlabel .l -text "Enter:" label .l -text "Enter:"

entry .e -width 40 -relief sunken -bd 2 -textvariable name entry .e -width 40 -relief sunken -bd 2 -textvariable name

button .b -text Clear -command {set name ""}button .b -text Clear -command {set name ""}

grid .l -row 0 -column 0 -sticky e grid .l -row 0 -column 0 -sticky e

grid .e -row 0 -column 1 -sticky w grid .e -row 0 -column 1 -sticky w

grid .b -row 1 -column 0 -columnspan 2 grid .b -row 1 -column 0 -columnspan 2

Page 28: TCL/TK

TK - MessageBoxTK - MessageBox

Μνήματα με την Μνήματα με την TKTK

Message .msg –width 8c –justify left –Message .msg –width 8c –justify left –relief raised\relief raised\

-text “ Do you like me so far? “-text “ Do you like me so far? “

Pack .msg Pack .msg

Page 29: TCL/TK

ΤΚ – ΤΚ – open Filesopen Files

Επιλογή για άνοιγμα / αποθήκευση Επιλογή για άνοιγμα / αποθήκευση αρχείωναρχείων

set types {         {"All Source Files"     {.tcl .c .h}    }         set types {         {"All Source Files"     {.tcl .c .h}    }        

proc doIt {label} {    proc doIt {label} {    

global types        global types       

set file [tk_getOpenFile -filetypes $types -parent .]    set file [tk_getOpenFile -filetypes $types -parent .]    

$label configure -text $file$label configure -text $file

} }

label .l -text "No File" label .l -text "No File"

button .b -text "Select a file?" -command "doIt .l" button .b -text "Select a file?" -command "doIt .l"

grid .b -row 0 -column 0 grid .b -row 0 -column 0

grid .l -row 0 -column 1 grid .l -row 0 -column 1