ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc (El. & Comp. Eng) 1. Στόχοι Στόχος του εργαστηρίου είναι η εξοικείωση των φοιτητών στη δηµιουργία scripts (προγραµµάτων δέσµης εντολών) σε γλώσσα Tcl. Επίσης θα κατασκευαστούν σελίδες HTML µε φόρµες και θα γίνει σύνδεσή τους µε τα scripts. Προκειµένου να επιτευχθούν οι στόχοι του εργαστηρίου, αρχικά θα πληκτρολογηθούν και θα παρουσιαστούν µια σειρά από παραδείγµατα σελίδων και στη συνέχεια θα ζητηθεί η κατασκευή απλών σελίδων από τους φοιτητές. 2. Χρήση εντολών στην Tcl Κάθε εντολή στην Tcl πρέπει να έχει την παρακάτω µορφή : <Εντολή> <1 η παράµετρος> <2 η παράµετρος> <2 η παράµετρος>. Ο µεταφραστής (interpreter) της Tcl λαµβάνει κάθε λέξη της παραπάνω µορφής και θέτει την πρώτη λέξη ως τη συνάρτηση την οποία θα εκτελέσει. Οι λέξεις που ακολουθούν χρησιµοποιούνται ως παράµετροι της συνάρτησης αυτής. Για την αποτίµηση κάθε λέξης χρησιµοποιούνται οι ακόλουθοι κανόνες : Αν η λέξη περικλείεται µέσα σε " ", τότε µπορεί να περιλαµβάνει και κενά διαστήµατα και αλλαγές γραµµής (carriage returns). Αν µέσα στη λέξη υπάρχουν εντολές ή µεταβλητές τότε αυτές αποτιµούνται (δηλ. αντικαθίστανται από της τιµές τους). Αν η λέξη περικλείεται µέσα σε {, τότε µπορεί να περιλαµβάνει και κενά διαστήµατα και αλλαγές γραµµής (carriage returns). Αν µέσα στη λέξη υπάρχουν εντολές ή µεταβλητές τότε αυτές δεν αποτιµούνται. Αν µέσα σε κάποια λέξη υπάρχει κείµενο που περικλείεται µέσα σε [ ], τότε αυτό το κείµενο εκτελείται σαν µια εντολή και το αποτέλεσµά της αντικαθιστά το κείµενο µαζί µε τα [ ]. Κάθε τµήµα κειµένου που ακολουθεί το $ και ακολουθείται από κενό διάστηµα, παύλα (-) ή κόµµα (,), αντικαθίσταται από την τιµή της µεταβλητής µε όνοµα ίδιο µε το κείµενο. 1. Από το µενού start επιλέξτε programs -> Active Tcl -> tclsh. Το παράθυρο που θα εµφανιστεί είναι ένα κέλυφος εντολών Tcl. Πληκτρολογήστε την εντολή: set a "World!" παρατηρήστε ότι στη µεταβλητή µε όνοµα a εκχωρείται η τιµή World! η οποία και επιστρέφεται από τη συνάρτηση set. Αν τώρα πληκτρολογήσουµε : set a 1
θα πάρουµε πάλι την τιµή της συνάρτησης. 2. Πληκτρολογήστε την εντολή : set b "Hello $a" η µεταβλητή b παίρνει την τιµή Hello World! αφού το $a αντικαθίσταται από την τιµή της µεταβλητής a. Πληκτρολογήστε : set b1 {Hello $a Να ερµηνευθεί το αποτέλεσµα. 3. Πληκτρολογήστε την εντολή : set c [string range $b 0 10] Ποια τιµή παίρνει η µεταβλητή c και γιατί. 3. Λίστες και Ορµαθοί (strings) Στην γλώσσα Tcl η τιµή κάθε µεταβλητής αποθηκεύεται µε τη µορφή string, ακόµη και στην περίπτωση όπου η τιµή είναι αριθµός. Μια λίστα είναι ειδική περίπτωση ενός string όπου τα στοιχεία από τα οποία αποτελείται χωρίζονται µε κενό διάστηµα. 1. Για να δηµιουργήσουµε µια λίστα χρησιµοποιούµε την εντολή list. Στο κέλυφος εντολών tcl πληκτρολογήστε : set list {12 {78 5 45 "Im not a number" τα στοιχεία της λίστας είναι τα ακόλουθα (ξεκινώντας από το στοιχείο 0 "µηδέν" : στοιχείο 0 -> 12 στοιχείο 1 -> 78 5 στοιχείο 2 -> 45 στοιχείο 3 -> Im not a number το στοιχείο #1 µπορεί να θεωρηθεί από µόνο του ως µια λίστα µε : στοιχείο 0 -> 78 στοιχείο 1 -> 5 αναλύστε µε ανάλογο τρόπο το στοιχείο #3 της αρχικής λίστας. 2. Με την την εντολή lindex µπορούµε να αποµονώσουµε ένα στοιχείο της λίστας. Πληκτρολογήστε : set sublist1 [lindex $list 1] set sublist2 [lindex $list 3] lindex $sublist2 2 Ερµηνεύστε τα αποτελέσµατα. 2
4. Αριθµητικές πράξεις Στην Tcl οι αριθµητικές πράξεις πραγµατοποιούνται µε την εντολή expr η οποία επιστρέφει το αποτέλεσµα της αριθµητικής παράστασης που θέτουµε ως πρώτη παράµετρο. Αν οι τιµές των αριθµών της παράστασης είναι ακέραιες τότε εκτελούνται πράξεις ακεραίων αριθµών (π.χ. 5/2 δίνει 2 και όχι 2.5) ενώ αν οι τιµές είναι δεκαδικές τότε και το αποτέλεσµα είναι δεκαδικό. Πληκτρολογήστε : set result [expr (4+6)/4] set result [expr (4.0+6)/4] οκιµάστε να πάρετε το αποτέλεσµα και άλλων αριθµητικών παραστάσεων. 5. Εµφάνιση στην οθόνη (stdout) Για την εµφάνιση κάποιου κειµένου στην οθόνη χρησιµοποιούµε την εντολή puts. Πληκτρολογήστε τις εντολές : set variable 255 puts "The number $variable" puts [format "The number %d is equal to 0x%02X" $variable $variable] Παραλληλίστε την εµφάνιση του κειµένου µε την puts σε συνδυασµό µε την format, µε την εντολή printf της γλώσσας C. 6. IF Με την εντολή if µπορούµε να εκτελέσουµε εντολές κάτω από ορισµένες συνθήκες. Πληκτρολογήστε : if {$c == "Hell" { puts "Oh god!" else { puts "Peace!" ώστε διαφορετικές τιµές στην µεταβλητή c και παρατηρήστε το αποτέλεσµα. 3
7. Βρόγχοι Μπορείτε να πραγµατοποιήσετε επαναλήψεις εντολών µε συνθήκες, µε τη χρήση τριών εντολών στην tcl. Πληκτρολογήστε και ερµηνεύστε τα ακόλουθα παραδείγµατα. 1. while set i 0 while {$i<4 { puts "$i*$i = [expr $i*$i]" incr i Γίνονται τέσσερις επαναλήψεις. Η µεταβλητή i παίρνει τιµές από 0 έως 3. 2. for for {set i 0 {$i<4 {incr i { puts "$i*$i = [expr $i*$i]" Γίνονται τέσσερις επαναλήψεις. Η µεταβλητή i παίρνει τιµές από 0 έως 3. 3. foreach set observations {Bruxelles 15 22 London 12 19 Paris 18 27 foreach {town Tmin Tmax $observations { set Tavg [expr ($Tmin+$Tmax)/2.0] puts "$town $Tavg" Στην πρώτη επανάληψη µε την foreach οι µεταβλητές town,tmin και Tmax λαµβάνουν τα τρία πρώτα στοιχεία της λίστας observations αντίστοιχα. Στην επόµενη επανάληψη οι µεταβλητές θα πάρουν τις τιµές των τριών επόµενων στοιχείων της λίστας κ.ο.κ. 4
8. Πίνακες Στην tcl σαν δείκτες σ έναν πίνακα µπορούµε να έχουµε ένα string, αντίθετα µε την γλώσσα C όπου µπορούσαµε να έχουµε µόνο αριθµούς. Τα στοιχεία ενός πίνακα τα διαχειριζόµαστε όπως και τις απλές µεταβλητές. Πληκτρολογήστε : set observations {Bruxelles 15 22 London 12 19 Paris 18 27 foreach {town Tmin Tmax $observations { parray obs set obs($town-min) $Tmin set obs($town-max) $Tmax Με την parray εµφανίζονται όλα τα στοιχεία του πίνακα. 5