expr 2+2 expr 14.1*6 expr (3 > 4) (6 <= 7) button.b -text "Hello, world!" -command exit pack.b ΕΙΣΑΓΩΓΗ ΣΤΗΝ TCL TK

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "expr 2+2 expr 14.1*6 expr (3 > 4) (6 <= 7) button.b -text "Hello, world!" -command exit pack.b ΕΙΣΑΓΩΓΗ ΣΤΗΝ TCL TK"

Transcript

1 ΕΙΣΑΓΩΓΗ ΣΤΗΝ TCL TK Η Tcl είναι µια µικρή γλώσσα προγραµµατισµού µε σκοπό να ενσωµατωθεί σε άλλα προγράµµατα. Το Tk είναι ένα κουτί εργαλείων συστηµάτων Χ windows που παρέχει τις γραφικές εγκαταστάσεις ενδιάµεσων µε τον χρήστη σχετικά µε Tcl. Και οι δύο εφαρµογές αναπτύχθηκαν από τον John Ousterhout στο πανεπιστήµιο της Καλιφόρνιας στο Μπέρκλευ. Για να τρέξετε µια εφαρµογή TCL πρέπει να εγκαταστήσετε το TCL κέλυφος(tcl shell) στο σύστηµά σας. Για παράδειγµα αν δώσετε την εντολή : expr 2+2 η TCL δίνει το αποτέλεσµα 4. Η παραπάνω εφαρµογή είναι µια από τις πιο απλές εφαρµογές στην TCL. Η πρώτη λέξη σε µια εντολή TCL είναι το όνοµά της εντολής και ακολουθούν τα διάφορα ορίσµατα. Η λέξη expr που χρησιµοποιήσαµε είναι µια από τις εντολές πυρήνα της TCL. Κάθε εντολή TCL επιστρέφει ένα αποτέλεσµα. Στο παραπάνω παράδειγµα την τιµή της έκφρασης. Συνήθως σε κάθε γραµµή γράφουµε µια εντολή αλλά έχουµε τη δυνατότητα σε µια γραµµή να έχουµε περισσότερες από µια εντολές αν τις χωρίσουµε µε " ; ". Εκτός από τις βασικές πράξεις µε την expr έχουµε και άλλες δυνατότητες όπως φαίνεται στα παρακάτω παραδείγµατα : expr 14.1*6 expr (3 > 4) (6 <= 7) Για να φύγετε από το TCL κέλυφος πληκτρολογήστε την εντολή : exit Παρόλο που η TCL παρέχει ένα πλήρες σύνολο από προγραµµατιστικά χαρακτηριστικά όπως µεταβλητές, loops και συναρτήσεις, έχει σκοπό να χρησιµοποιηθεί ως µέρος εφαρµογών και όχι ως µοναδικό προγραµµατιστικό περιβάλλον Το Tk παρέχει ένα ιδιαίτερα ενδιαφέρον σύνολο εντολών που χρησιµοποιούνται µαζί µε τα προγραµµατιστικά εργαλεία της TCL. Για την δηµιουργία Tk εφαρµογών χρησιµοποιούµε µια εφαρµογή που ονοµάζεται wish, η οποία είναι παρόµοια µε το κέλυφος της TCL αλλά περιέχει επιπλέον και τις εντολές που ορίστηκαν για το Tk button.b -text "Hello, world!" -command exit pack.b Για παράδειγµα αν πληκτρολογήσουµε τις παραπάνω εντολές θα δηµιουργηθεί ένα κουµπί (button) το οποίο γράφει "Hello, world!" και όταν το πατήσουµε ενεργοποιείται η εντολή exit και φεύγουµε από την εφαρµογή. Οι λέξεις button, pack είναι εντολές Tk. Οι εντολές TCL και Tk έχουν ακριβώς την ίδια δοµή. Η εντολή pack είναι υπεύθυνη για την εµφάνιση του button µε το όνοµα.b σε αυτή την περίπτωση.

2 ΣΥΝΤΑΞΗ ΤΗΣ ΓΛΩΣΣΑΣ TCL Η σύνταξη της Tcl αποτελείται περίπου από µερικούς κανόνες που καθορίζουν πώς αναλύονται οι εντολές. Η σύνταξη της Tcl είναι η ίδια για κάθε εντολή. Ένα πρόγραµµα Tcl αποτελείται από µια ή περισσότερες εντολές. Οι εντολές χωρίζονται από τις αλλαγές γραµµής ή τα ελληνικά ερωτηµατικά. Παραδείγµατος χάριν ο παρακάτω κώδικας : set a 24 set b 15 είναι ένα πρόγραµµα µε δύο εντολές που χωρίζονται από έναν χαρακτήρα αλλαγής γραµµής. Το ίδιο πρόγραµµα θα µπορούσε να γραφτεί σε µια γραµµή χρησιµοποιώντας για διαχωριστή το ελληνικό ερωτηµατικό set a 24; set b 15 Κάθε εντολή αποτελείται από µια ή περισσότερες λέξεις, όπου η πρώτη λέξη είναι το όνοµα µιας εντολής και οι πρόσθετες λέξεις είναι ορίσµατα της εντολής. Οι λέξεις χωρίζονται από τα κενά διαστήµατα. Κάθε µία από τις εντολές στα παραπάνω παραδείγµατα έχει τρεις λέξεις. Μπορεί να υπάρχει οποιοσδήποτε αριθµός λέξεων σε µια εντολή. ΜΕΤΑΒΛΗΤΕΣ Η TCL επιτρέπει την αποθήκευση τιµών σε µεταβλητές και τη χρήση τους στις διάφορες εντολές. Για παράδειγµα η εντολή: set a 44 δίνει στην µεταβλητή a την τιµή 44 και µε τη βοήθεια της expr δίνοντας την εντολή: expr $a*4 παίρνουµε το αποτέλεσµα 176 Παρατηρούµε ότι για να αποδοθεί στη µεταβλητή a η τιµή της κατά τον υπολογισµό µιας έκφρασης που την περιέχει χρησιµοποιούµε µπροστά από αυτην το σύµβολο $. H TCL επίσης επιτρέπει σε µια µεταβλητή να πάρει την τιµή µιας έκφρασης όπως φαίνεται στο παρακάτω παράδειγµα. set a 44 set b [expr $a*4] Η µεταβλητή b παίρνει την τιµή της έκφρασης expr $a*4 και ισούται µε 176. Μια απλή µεταβλητή της Tcl αποτελείται από δύο µέρη: ένα όνοµα και µια τιµή. Τόσο το όνοµα όσο και η τιµή µπορούν να είναι αυθαίρετα string. Παραδείγµατος χάριν, είναι δυνατό να ονοµαστεί µια µεταβλητή xyz!#22.στην πράξη τα ονόµατα µεταβλητών αρχίζουν συνήθως µε ένα γράµµα και αποτελούνται από έναν συνδυασµό γραµµάτων, ψηφίων, και χαρακτήρων. Οι µεταβλητές µπορούν να δηµιουργηθούν, να διαβαστούν, και να τροποποιηθούν µε καθορισµένη εντολή, η οποία παίρνει ένα ή δύο ορίσµατα. Το πρώτο όρισµα είναι το όνοµα της µεταβλητής και το δεύτερο, εάν υπάρχει, είναι µια νέα τιµή για τη µεταβλητή: set a {Eggs: $2.18/dozen Eggs: $2.18/dozen set a Η πρώτη εντολή δηµιουργεί µια νέα µεταβλητή a και την θέτει ίση µε Eggs: $2.18/dozen. Το αποτέλεσµα της εντολής είναι η τιµή της µεταβλητής. Η δεύτερη εντολή έχει ένα όρισµα a. Με αυτήν την µορφή επιστρέφει απλά την τρέχουσα τιµή της µεταβλητής. Η τρίτη εντολή αλλάζει την τιµή του a σε 44 και επιστρέφει την νέα τιµή. Οι µεταβλητές της Tcl

3 µπορούν να χρησιµοποιηθούν για να αντιπροσωπεύσουν πολλά πράγµατα, όπως ακέραιους αριθµούς, αριθµούς κινητής υποδιαστολής, ονόµατα,κατάλογους, τα οποία αποθηκεύονται πάντα ως string. Αυτή η χρήση µιας ενιαίας αντιπροσώπευσης για όλες τις τιµές επιτρέπει στις διαφορετικές τιµές να χειρίζονται µε τον ίδιο τρόπο και να επικοινωνούν εύκολα. Οι µεταβλητές της Tcl δηµιουργούνται αυτόµατα όταν ορίζονται οι τιµές τους. εν υπάρχουν τύποι µεταβλητών οπότε δε χρειάζεται να ορίζονται πρώτα όπως συµβαίνει σε άλλες διαδικαστικές γλώσσες. Η εντολή UNSET Η εντολή unset καταστρέφει τις µεταβλητές. Παίρνει οποιοδήποτε αριθµό ορισµάτων, κάθε ένα από τα οποία είναι µια µεταβλητή, και έχει ως αποτέλεσµα να αφαιρούνται όλες οι µεταβλητές που ακολουθούν την εντολή unset. Οποιαδήποτε προσπάθεια διαβάσµατος κάποιας από τις κατεστραµένες µεταβλητές θα είναι αποτυχηµένη. Τα ορίσµατα της unset µπορούν να είναι είτε απλές µεταβλητές, είτε στοιχεία πίνακα, είτε ολόκληροι πίνακες, όπως στο ακόλουθο παράδειγµα: unset a earnings(january) b Σε αυτήν την περίπτωση οι µεταβλητές a και b αφαιρούνται εξ ολοκλήρου όπως και το στοιχείο January του πίνακα earnings. Ο πίνακας earnings συνεχίζει να υπάρχει µετά από την εντολή unset. Εάν τα a ή b είναι ένας πίνακας όλα τα στοιχεία του πίνακα αφαιρούνται και φυσικά και ο πίνακας. Η εντολή RENAME Με την εντολή rename µπορούµε να αλλαξουµε το όνοµα µια µεταβλητης,όπως φαίνεται στο παρακάτω παράδειγµα: set x rename x a Έτσι µετονοµάζουµε τη µεταβλητή x σε a. Αν στην εντολή rename δεν δώσουµε δεύτερο όρισµα τότε διαγράφουµε τη µεταβλητή που είναι ως πρώτο όρισµα. rename x Έτσι διαγράφεται η µεταβλητή x. ΑΝΤΙΚΑΤΑΣΤΑΣΗ Η Tcl παρέχει τρεις µορφές αντικατάστασης: αντικατάσταση µεταβλητής, αντικατάσταση εντολής και backslash αντικατάσταση. Κάθε αντικατάσταση αναγκάζει µερικούς από τους αρχικούς χαρακτήρες µιας λέξης να αντικατασταθούν µε κάποια άλλη τιµή. Οι αντικαταστάσεις µπορούν να εµφανιστούν σε οποιαδήποτε λέξη µιας εντολής, συµπεριλαµβανοµένου του ονόµατος εντολής και µπορεί να υπάρξει οποιοσδήποτε αριθµός αντικαταστάσεων µέσα σε µια µεµονωµένη λέξη. Η πρώτη µορφή αντικατάστασης είναι η αντικατάσταση µεταβλητής. Προκαλείται από έναν χαρακτήρα δολάριο $ και δίνει τη δυνατότητα σε µια µεταβλητή να χρησιµοποιηθεί σε µια παράσταση. Παραδείγµατος χάριν, εξετάστε τις ακόλουθες εντολές : set kgrams 20

4 expr $kgrams* Η πρώτη εντολή θέτει την αξία των µεταβλητών kgrams σε 20. Η δεύτερη εντολή υπολογίζει το αντίστοιχο βάρος σε λίµπρες µε τον πολλαπλασιασµό της αξίας των kgrams µε Αυτό γίνεται χρησιµοποιώντας την αντικατάσταση µεταβλητής. Η έκφραση $kgrams αντικαθίσταται µε την τιµή της µεταβλητής kgrams, έτσι ώστε το λαµβανόµενο από τη διαδικασία όρισµα της εντολής expr είναι 20* Η αντικατάσταση µεταβλητής µπορεί να εµφανιστεί οπουδήποτε µέσα σε µια εντολή όπως φαίνεται στην ακόλουθη εντολή : set result 20;set base 40 expr $result*$base Η δεύτερη µορφή αντικατάστασης παρεχόµενη από την Tcl είναι η αντικατάσταση εντολής. Η αντικατάσταση εντολής αναγκάζει ένα µέρος ή όλη την εντολή να αντικατασταθεί µε το αποτέλεσµα µιας άλλης εντολής Tcl. Η αντικατάσταση εντολής πραγµατοποιείται όπως φαίνεται στο παρακάτω παράδειγµα: set kgrams 20 set lbs [expr $kgrams*2.2046] Εδώ η εντολή expr εκτελείται δίνοντας αποτέλεσµα , το οποίο είναι η τιµή που θέτουµε στην µεταβλητή lbs. Η τελευταία µορφή αντικατάστασης στην Tcl είναι η backslash αντικατάσταση. Χρησιµοποιείται για να παρεµβάλει ειδικούς χαρακτήρες όπως οι αλλαγές γραµµής στις λέξεις και επίσης για να παρεµβάλει τους χαρακτήρες όπως [ και το $ χωρίς αυτά να αντιµετωπίζονται ως χαρακτήρες κλειδιά από την Tcl. Παραδείγµατος χάριν, εξετάστε την ακόλουθη εντολή : set msg Eggs:\$2.18/dozen\nGasoline:\$1.49/gallon Eggs:$2.18/dozen Gasoline:$1.49/gallon Υπάρχουν δύο backslash ακολουθούµενες από το $ µε αποτέλεσµα οι χαρακτήρες δολαρίων να αντιµετωπίζονται όπως τους συνηθισµένους χαρακτήρες (δεν προκαλούν την αντικατάσταση µεταβλητής). Η backslash ακολουθούµενη από το n αντικαθίσταται µε έναν χαρακτήρα αλλαγής γραµµής. Ο παρακάτω πίνακας απαριθµεί τις σηµαντικότερες ακολουθίες backslash που υποστηρίζονται από την Tcl : Ακολουθία backslash Αντικαθίσταται µε \n νέα γραµµή \t Tab \space κενός χαρακτήρας \a ηχητικό µήνυµα \b backspace \v κάθετο Tab

5 Αντικατάσταση Μεταβλητών Προηγούµενα εισάγαµε τη χρήση του χαρακτήρα $ για την αντικατάσταση των µεταβλητών από τις τιµές τους. Αυτό το τµήµα περιγράφει το µηχανισµό λεπτοµερέστερα. Η αντικατάσταση µεταβλητής προκαλείται από την παρουσία ενός χαρακτήρα $ σε µια εντολή Tcl. Οι χαρακτήρες µετά από το δολάριο $ θεωρούνται ως µεταβλητό όνοµα, και αντικαθίστανται από την τιµή της µεταβλητής. Η Tcl παρέχει τρεις µορφές αντικατάστασης µεταβλητής. Μέχρι τώρα έχετε δει µόνο την απλούστερη µορφή, η οποία χρησιµοποιείται όπως φαίνεται παρακάτω : set a 2 expr $a+2 Με αυτήν την µορφή το δολάριο $ ακολουθείται από ένα όνοµα µεταβλητής. Η δεύτερη µορφή αντικατάστασης µεταβλητής επιτρέπει στα στοιχεία πίνακα να αντικατασταθούν από την τιµή τους. Αυτή η µορφή είναι όπως την πρώτη εκτός από το ότι το µεταβλητό όνοµα ακολουθείται αµέσως από ένα όνοµα στοιχείου εσωκλειόµενο σε παρένθεση. Παραδείγµατος χάριν, εξετάστε τις ακόλουθες εντολές : set esoda(january) 100 set esoda(february) 200 set Total [expr $esoda(january)+$esoda(february) Έχουµε τον πίνακα µε το όνοµα esoda και δύο τιµές του. Χρησιµοποιούµε το $ για να πάρουµε τις τιµές των δύο στοιχείων του πίνακα. Η τελευταία µορφή αντικατάστασης χρησιµοποιείται για απλές µεταβλητές όπου το όνοµα της µεταβλητής ακολουθείται από ένα γράµµα ή αριθµό ή underscore. Παραδείγµατος χάριν, υποθέστε ότι επιθυµείτε να περάσετε µια τιµή όπως 100m (όπου µε το m δηλώνουµε τα millimeters) σε µια εντολή ως όρισµα. Εάν προσπαθείτε να αντικαταστήσετε τη µεταβλητή τιµή µε µια µορφή όπως $sizem η Tcl θα µεταχειριστεί το m ως τµήµα του µεταβλητού ονόµατος. Για να ξεπεράσετε αυτό το πρόβληµα µπορείτε να εσωκλείσετε το µεταβλητό όνοµα σε αγκύλες όπως στις ακόλουθες εντολές : set size 100 button.a -width ${sizem pack.a Με τις παραπάνω εντολές µπορούµε να καθορίσουµε το πλάτος του παραθύρου που δηµιουργούµε σε millimeters. Ο µηχανισµός αντικατάστασης µεταβλητών της Tcl προορίζεται για να χειριστεί τις πιό απλές καταστάσεις.υπάρχουν περιπτώσεις όπου καµία από τις ανωτέρω µορφές αντικατάστασης δεν επιτυγχάνει την επιθυµητή επίδραση. Οι πιο περίπλοκες καταστάσεις µπορούν να αντιµετωπιστούν µε µια ακολουθία εντολών. ΣΧΟΛΙΑ Εάν ο πρώτος µη-κενός χαρακτήρας µιας εντολής είναι ο χαρακτήρας # όλοι οι χαρακτήρες που ακολουθούν µέχρι την αρχή της επόµενης εντολής θεωρούνται ως σχόλια και απορρίπτονται. Σηµειώστε ότι ο χαρακτήρας # πρέπει να εµφανιστεί σε µια θέση όπου η Tcl

6 αναµένει τον πρώτο χαρακτήρα µιας εντολής. Εάν ο χαρακτήρας # εµφανίζεται οπουδήποτε αλλού αντιµετωπίζεται ως συνηθισµένος χαρακτήρας που αποτελεί µέρος µιας έκφρασης : # This is a comment set b 101; # This is a comment Ο τελευταίος χαρακτήρας # αντιµετωπίζεται ως χαρακτήρας σχολίου, δεδοµένου ότι εµφανίζεται αµέσως αφότου ολοκληρωθεί µία εντολή µε ελληνικό ερωτηµατικό. ΠΙΝΑΚΕΣ Εκτός από τις απλές µεταβλητές η Tcl παρέχει επίσης τους πίνακες. Ένας πίνακας είναι µια συλλογή στοιχείων, κάθε ένα από τα οποία είναι µια µεταβλητή µε το όνοµά της και την τιµή της. Το όνοµα ενός στοιχείου πίνακα έχει δύο µέρη : το όνοµα του πίνακα και το όνοµα του στοιχείου. Τα στοιχεία πίνακα αναφέρονται για παράδειγµα µε τη µορφή esoda(january) όπου το όνοµα του πίνακα είναι το esoda και ακολουθείται από το όνοµα του στοιχείου σε παρένθεση (January).Οι πίνακες µπορούν να χρησιµοποιηθούν οπουδήποτε όπως και οι απλές µεταβλητές. Για παράδειγµα : set esoda(january) set esoda(february) set esoda(january) Η πρώτη εντολή δηµιουργεί έναν πίνακα που ονοµάζεται esoda, εάν αυτός δεν υπάρχει ήδη. Κατόπιν δηµιουργεί ένα στοιχείο January µέσα στον πίνακα και του ορίζει την τιµή Η δεύτερη εντολή ορίζει µια τιµή στο στοιχείο February του πίνακα και η τρίτη εντολή επιστρέφει την τιµή του στοιχείου January. Πολυδιάστατοι Πίνακες Η Tcl υποστηρίζει µόνο µονοδιάστατους πίνακες, αλλά οι πολυδιάστατοι πίνακες µπορούν να προσοµοιωθούν µε τη σύνδεση πολλαπλών δεικτών σε ένα µοναδικό στοιχείο. Το παρακάτω πρόγραµµα προσοµοιώνει ένα δισδιάστατο πίνακα : set pinakas(1,1) 100 set pinakas(1,2) 200 set pinakas(1,3) 300 set i 1 set j 2 set stoixeio $pinakas($i,$j) Ο pinakas είναι ένας πίνακας µε τρία στοιχεία των οποίων τα ονόµατα είναι "1,1", "1,2" και "1,3". Ο πίνακας συµπεριφέρεται ακριβώς σαν να ήταν ένας δισδιάστατος πίνακας. Ειδικότερα, η αντικατάσταση µεταβλητής πραγµατοποιείται έτσι ώστε οι τιµές του i και του j να συνδυάζονται δίνοντας αυτός ο συνδυασµός ένα στοιχείο κάθε φορά.

7 ιαχείριση Πίνακα Η εντολή array παρέχει πληροφορίες για τα στοιχεία που έχουν οριστεί σε έναν πίνακα. Οι πληροφορίες παρέχονται µε διάφορους τρόπους, ανάλογα µε το πρώτο όρισµα που παίρνουµε στην εντολή. Η εντολή array size επιστρέφει έναν αριθµό που προσδιορίζει πόσα στοιχεία υπάρχουν σε έναν πίνακα ενώ η εντολή array names επιστρέφει έναν κατάλογο µε τα ονόµατα των στοιχείων ενός πίνακα : set nomisma(france) franc set nomisma(greatbritain) pound set nomisma(germany) mark array size nomisma 3 array names nomisma GreatBritain Germany France Για κάθε µια από αυτές τις εντολές το τελικό όρισµα πρέπει να είναι το όνοµα του πίνακα που µας ενδιαφέρει. ΕΚΦΡΑΣΕΙΣ Οι εκφράσεις συνδυάζουν τις τιµές µε τους τελεστές για να παράγουν νέες τιµές. Παραδείγµατος χάριν, η έκφραση 4+2 περιέχει δύο τελεστέους, 4 και 2, και ένα τελεστή +. Πολλές εντολές της Tcl αναµένουν ένα ή περισσότερα από τα ορίσµατά τους να είναι εκφράσεις. Η απλούστερη εντολή είναι η expr, η οποία υπολογίζει το αποτέλεσµα της πράξης που ορίζουν τα ορίσµατά της. Για παράδειγµα : expr {(2+4) * 3.6 Ένα άλλο παράδειγµα είναι η εντολή if, η οποία αφού αξιολογεί το πρώτο της όρισµα χρησιµοποιεί το αποτέλεσµα για να αποφασίσει αν πρέπει να πραγµατοποιηθεί το δεύτερο όρισµά της : if $x<2 then {set x 2 ΟΙ ΕΝΤΟΛΕΣ INCR ΚΑΙ APPEND Οι εντολές incr και append παρέχουν απλούς τρόπους αλλαγής της τιµής µιας µεταβλητής. Η incr παίρνει δύο ορίσµατα, τα οποία είναι το όνοµα µιας µεταβλητής και ένας ακέραιος αριθµός, ο οποίος προστίθεται στην τιµή της µεταβλητής. Για παράδειγµα : set x 4 incr x 2 Ο αριθµός µπορεί να έχει είτε θετική είτε αρνητική τιµή. Μπορεί επίσης να παραλειφθεί, οπότε σε αυτή την περίπτωση θεωρείται ο αριθµός 1 : set x 4 incr x Η αρχική τιµή της µεταβλητής και ο αριθµός που προστίθεται πρέπει να είναι ακέραιοι αριθµοί σε δεκαδικό, οκταδικό ή δεκαεξαδικό σύστηµα.

8 Η εντολή append προσθέτει κάποιο κείµενο στο τέλος µιας µεταβλητής. Παίρνει δύο ορίσµατα, τα οποία είναι το όνοµα της µεταβλητής και το νέο κείµενο που θα προστεθεί. Επισυνάπτει το νέο κείµενο στη µεταβλητή και επιστρέφει τη νέα τιµή της µεταβλητής. set x hello append x Kavala ΤΕΛΕΣΤΕΣ ΚΑΙ ΠΡΟΤΕΡΑΙΟΤΗΤΑ Η παρακάτω λίστα απαριθµεί όλους τους τελεστές που υποστηρίζονται στις εκφράσεις της Tcl. -a Αντίθετος του a!a Λογικό NOT: 1 αν το a είναι µηδέν, 0 σε άλλη περίπτωση ~a Συµπλήρωµα του a a*b a/b Πολλαπλασιασµός a και b ιαίρεση a µε b a%b Ακέραιο υπόλοιπο κατά τη διαίρεση a µε b a+b a-b Πρόσθεση a και b Αφαίρεση του b από το a a<<b Κύλιση του αριθµού a κατά b bits προς τα αριστερά a>>b Κύλιση του αριθµού a κατά b bits προς τα δεξιά a<b 1 αν a µικρότερο του b, αλλιώς 0 a>b 1 αν a µεγαλύτερο του b, αλλιώς 0 a<=b 1 αν a µικρότερο ή ίσο του b, αλλιώς 0 a>=b 1 αν a µεγαλύτερο ή ίσο του b, αλλιώς 0 a==b 1 αν a ίσο του b, αλλιώς 0 a!=b 1 αν a διάφορο του b, αλλιώς 0 a&b Παράγει µια τιµή της οποίας κάθε δυαδικό ψηφίο είναι 1 αν και τα δύο αντίστοιχα δυαδικά ψηφία των δύο τελεστέων είναι 1

9 a^b Αποκλειστικό or. Παράγει µια τιµή της οποίας κάθε δυαδικό ψηφίο είναι 1, µόνο αν το ένα ή το άλλο από τα αντίστοιχα δυαδικά ψηφία των δύο τελεστέων είναι 1 a b OR. Παράγει µια τιµή της οποίας κάθε δυαδικό ψηφίο είναι 1, αν ένα ή και τα δύο αντίστοιχα δυαδικά ψηφία των δύο τελεστέων είναι 1 a&&b Λογικό AND : 1 αν τα a και b διάφορα του 0, αλλιώς 0 a b Λογικό OR : 1 αν το a ή το b διάφορο του 0, αλλιώς 0 a?b:c Επιλογή : αν a διάφορο του 0 τότε b, αλλιώς c Οι τελεστές µε την υψηλότερη προτεραιότητα εµφανίζονται στο πάνω τµήµα της λίστας και όσο προχωράµε έχουν και µικρότερη προτεραιότητα, τα κενά κελιά στον πίνακα χωρίζουν τις οµάδες τελεστών των διαφόρων προτεραιοτήτων. Παραδείγµατος χάριν, η έκφραση 4*2<7 ισούται µε 0 επειδή ο τελεστής * έχει υψηλότερη προτεραιότητα από τον τελεστή <. Χρησιµοποιώντας παρενθέσεις µπορούµε να ορίσουµε εµείς την προτεραιότητα µε την οποία θα πραγµατοποιηθούν οι πράξεις σε µια έκφραση. Οι τελεστές µε την ίδια προτεραιότητα εκτελούνται από αριστερά προς τα δεξιά. Παραδείγµατος χάριν, είναι το ίδιο όπως (10-4)+3. ΜΑΘΗΜΑΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Οι εκφράσεις Tcl υποστηρίζουν διάφορες µαθηµατικές συναρτήσεις, όπως οι sin και exp. Οι µαθηµατικές συναρτήσεις εκτελούνται ως εξής : expr {2*sin($x) expr {hypot($x, $y) + $z Στον παρακάτω πίνακα φαίνονται οι µαθηµατικές συναρτήσεις που υποστηρίζονται από την TCL : Συνάρτηση Αποτέλεσµα abs(x) Απόλυτη τιµή του x. acos(x) Τόξο του συνx στο διάστηµα 0 έως π. asin(x) Τόξο του ηµx στο διάστηµα -π/2 έως π /2. atan(x) Τόξο της εφx στο διάστηµα -π/2 έως π /2. atan2(x,y) Τόξο της εφ(x/y) στο διάστηµα -π/2 έως π /2. ceil(x) Ο µικρότερος ακέραιος που είναι µεγαλύτερος από το x. cos(x) Συνηµίτονο του x.

10 cosh(x) Yπερβολικό συνx. double(i) Μετατροπή σε πραγµατικό αριθµό του ακεραίου i. exp(x) e εις την x. floor(x) Ο µεγαλύτερος ακέραιος που είναι µικρότερος από το x. fmod(x,y) Υπόλοιπο της διαίρεσης x/y. hypot(x,y) Τετραγωνική ρίζα του (x2 + y2 ). int(x) Μετατροπή του x σε ακέραιο. log(x) Φυσικός λογάριθµος του x. log10(x) Λογάριθµος του x µε βάση το 10. pow(x,y) Η δύναµη x εις την y. round(x) Η ακέραια τιµή του x που προκύπτει από στρογγυλοποίηση. sin(x) Ηµίτονο του x. sinh(x) Υπερβολικό ηµx. sqrt(x) Τετραγωνική ρίζα του x. tan(x) Εφαπτοµένη του x. tanh(x) Υπερβολική εφx. ΑΚΡΙΒΕΙΑ Κατά τη διάρκεια της αξιολόγησης µιας έκφρασης η Tcl αντιπροσωπεύει τους ακέραιους αριθµούς εσωτερικά µε τον τύπο int της C, ο οποίος παρέχει τουλάχιστον 32 bit ακρίβειας στις περισσότερες µηχανές. Οι πραγµατικοί αριθµοί αντιστοιχούν µε τους double της C, που συνήθως αναπαρίστανται από 64 bit τιµές χρησιµοποιώντας τα ieee πρότυπα κινητής υποδιαστολής. Οι αριθµοί µετατρέπονται σε string µόνο όταν είναι απαραίτητο όπως για παράδειγµα όταν χρησιµοποιούνται σε µια εντολή expr. Όταν µια πραγµατική τιµή µετατρέπεται σε string µόνο τα δώδεκα πιο σηµαντικά ψηφία διατηρούνται εξ ορισµού : expr { Εάν θα επιθυµούσατε περισσότερα ψηφία να εµφανίζονται µπορείτε να χρησιµοποιήσετε την εντολή tcl_precision ως γενική µεταβλητή µε τον επιθυµητό αριθµό σηµαντικών ψηφίων : set tcl_precision 15 expr { Η µεταβλητή tcl_precision χρησιµοποιείται όχι µόνο για την εντολή expr αλλά οπουδήποτε σε µια εφαρµογή Tcl όπου ένας πραγµατικός αριθµός µετατρέπεται σε string.

11 ΚΑΝΟΝΙΚΕΣ ΚΑΙ ΕΚΤΑΚΤΕΣ ΕΠΙΣΤΡΟΦΕΣ ΣΤΗΝ TCL Μια εντολή Tcl µπορεί να ολοκληρωθεί µε διάφορους τρόπους. Μια κανονική επιστροφή που είναι η πιο συνηθισµένη περίπτωση σηµαίνει ότι η εντολή ολοκληρώνεται επιτυχώς και η επιστροφή περιλαµβάνει το αποτέλεσµα της εφαρµογής που εκτελέσαµε. Η Tcl υποστηρίζει επίσης τις έκτακτες επιστροφές από τις εντολές. Η συχνότερη µορφή έκτακτης επιστροφής είναι ένα λάθος. Όταν µια επιστροφή λάθους εµφανίζεται, σηµαίνει ότι η εντολή δεν µπορούσε να ολοκληρώσει την προοριζόµενη λειτουργία της. Η εντολή αποβάλλεται και οποιεσδήποτε εντολές που ακολουθούν στον κώδικα αγνοούνται. Μια επιστροφή λάθους περιλαµβάνει ένα string προσδιορίζοντας το λάθος στην εφαρµογή. Παραδείγµατος χάριν, η ακόλουθη καθορισµένη εντολή παράγει ένα λάθος επειδή έχει πάρα πολλά ορίσµατα : set state Kavala Drama wrong # args: should be "set varname?newvalue?" Στην παραπάνω περίπτωση είναι απαραίτητα τα διπλά εισαγωγικά, αφού η τιµή της µεταβλητής αποτελείται από περισσότερες από µία λέξεις. Το µήνυµα λάθους δεν είναι πάντοτε το ίδιο, αλλά διαφέρει από λάθος σε λάθος. Παραδείγµατος χάριν, η εντολή expr δέχεται οποιοδήποτε αριθµό ορισµάτων αλλά απαιτεί µια ιδιαίτερη σύνταξη διαφορετικά παράγει λάθος, όπως για παράδειγµα αν δεν κλείσει η παρένθεση : expr 3 * (20+4 syntax error in expression "3 * (20+4" ΑΡΙΘΜΗΤΙΚΟΙ ΤΕΛΕΣΤΑΙΟΙ Οι τελεσταίοι έκφρασης είναι ακέραιοι αριθµοί ή πραγµατικοί αριθµοί. Οι ακέραιοι αριθµοί ορίζονται συνήθως στο δεκαδικό σύστηµα, αλλά εάν ο πρώτος χαρακτήρας είναι 0 (µηδέν) ο αριθµός διαβάζεται στο οκταδικό σύστηµα (η βάση 8) και εάν οι πρώτοι δύο χαρακτήρες είναι 0x, ο αριθµός διαβάζεται σε δεκαεξαδικό (βάση 16). Παραδείγµατος χάριν, ο 335 είναι ένας δεκαδικός αριθµός, ο 0517 είναι ένας οκταδικός αριθµός µε την ίδια αξία, και ο 0x14f είναι ένας δεκαεξαδικός αριθµός µε την ίδια αξία. Οι πραγµατικοί τελεσταίοι µπορούν να οριστούν όπως και στην Ansi C, συµπεριλαµβανοµένων και των ακόλουθων παραδειγµάτων : e+16 6E4 3. ΠΡΟΣΒΑΣΗ ΣΕ ΑΡΧΕΙΑ Αυτό το κεφάλαιο περιγράφει τις εντολές της Tcl που αφορούν στα αρχεία. Οι εντολές σας επιτρέπουν να διαβάσετε ή να γράψετε αρχεία κατά σειρά ή µε ένα τυχαίο τρόπο. Επίσης σας επιτρέπουν να ανακτήσετε πληροφορίες για τα αρχεία που κρατούνται από το σύστηµα, όπως η ώρα της τελευταίας πρόσβασης. Τέλος µπορούν να χρησιµοποιηθούν για τον χειρισµό των ονοµάτων των αρχείων. Για παράδειγµα µπορείτε να αφαιρέσετε την επέκταση ενός ονόµατος αρχείου ή να βρείτε τα ονόµατα όλων των αρχείων που ταιριάζουν µε ένα συγκεκριµένο δείγµα. Ονόµατα Αρχείων Τα ονόµατα των αρχείων καθορίζονται στην Tcl χρησιµοποιώντας την απλή σύνταξη του UNIX. Για παράδειγµα το όνοµα αρχείου x/y/z αναφέρεται σε αρχείο που ονοµάζεται z, που είναι τοποθετηµένο σε ένα κατάλογο που ονοµάζεται y, ο οποίος µε τη σειρά του είναι

12 τοποθετηµένος σε ένα κατάλογο που ονοµάζεται x, και ο οποίος πρέπει να είναι στον τρέχοντα κατάλογο στον οποίο δουλεύουµε. Το όνοµα αρχείου /top αναφέρεται σε ένα αρχείο top στον αρχικό κατάλογο. Επίσης µπορείτε να χρησιµοποιήσετε το σύµβολο ~ για να καθορίσετε ένα όνοµα αρχείου σχετικό µε ένα συγκεκριµένο κατάλογο του χρήστη. Για παράδειγµα το όνοµα ~ouster/mbox αναφέρεται σε ένα αρχείο µε τον όνοµα mbox στον κατάλογο του χρήστη ouster και το όνοµα ~/mbox αναφέρεται σε ένα αρχείο που ονοµάζεται mbox στον κατάλογο του χρήστη που τρέχει στο Tcl script. Αυτοί οι κανόνες αντιστοιχούν σε όλες τις εντολές της Tcl που παίρνουν ονόµατα αρχείων ως ορίσµατα. Βασικό Αρχείο I/O Οι εντολές Tcl για τα αρχεία I/O είναι παρόµοιες µε τις διαδικασίες της τυπικής βιβλιοθήκης Ι/Ο της C, και στα ονόµατα και στην συµπεριφορά. Παρακάτω φαίνεται ένα script που καλείται tgrep που παρουσιάζει τα περισσότερα από τα βασικά χαρακτηριστικά του αρχείου Ι/Ο : #!/usr/local/bin/tclsh if {$argc!= 2 { else { error "Usage: tgrep pattern filename" set f [open [lindex $argv 1] r] set pat [lindex $argv 0] while {[gets $f line] >= 0 { close $f if [regexp $pat $line] {puts stdout $line Αυτό το script συµπεριφέρεται πολύ σαν το πρόγραµµα grep του UNIX: µπορείτε να το καλέσετε από το κελί σας µε δυο ορίσµατα, ένα δείγµα κανονικής έκφρασης και ένα όνοµα αρχείου, και θα τυπώσει όλες τις σειρές του αρχείου που ταιριάζουν µε το δείγµα. Όταν εκτελείται η tclsh εξετάζει το script και κάνει τα ορίσµατα γραµµής εντολών διαθέσιµα σαν ένα κατάλογο στην µεταβλητή argv, µαζί µε το µήκος αυτού του καταλόγου στην µεταβλητή argc. Αφού σιγουρευτεί ότι έλαβε αρκετά ορίσµατα το script καλεί την εντολή open. Η open παίρνει δυο ορίσµατα, το όνοµα του αρχείου και την µέθοδο πρόσβασης. Η µέθοδος πρόσβασης παρέχει πληροφορίες όπως για το αν θα διαβάζεται το αρχείο ή θα γράφεται, και αν θα θέλετε να ενσωµατώσετε το αρχείο ή να το προσπελάσετε από την αρχή. Η µέθοδος πρόσβασης µπορεί να έχει µια από τις παρακάτω τιµές : r Άνοιγµα µόνο για διάβασµα. Το αρχείο πρέπει να υπάρχει ήδη. Αυτή είναι η προεπιλογή σε περίπτωση που δεν καθορίζεται η µέθοδος πρόσβασης. r+ Άνοιγµα για διάβασµα και εγγραφή. Το αρχείο πρέπει να υπάρχει ήδη. w Άνοιγµα µόνο για εγγραφή. Μετατρέπει το αρχείο να υπάρχει ήδη, αλλιώς δηµιουργεί ένα νέο άδειο αρχείο. w+ Άνοιγµα για διάβασµα και εγγραφή. Μετατρέπει το αρχείο να υπάρχει ήδη αλλιώς δηµιουργεί ένα νέο άδειο αρχείο. a Άνοιγµα για εγγραφή µόνο και τοποθέτηση της αρχικής θέσης πρόσβασης στο τέλος του αρχείου. Αν το αρχείο δεν υπάρχει τότε δηµιουργεί ένα νέο άδειο αρχείο.

13 a+ Άνοιγµα του αρχείου για διάβασµα και εγγραφή και τοποθέτηση της αρχικής θέσης πρόσβασης στο τέλος του αρχείου. Αν το αρχείο δεν υπάρχει τότε δηµιουργεί ένα νέο άδειο αρχείο. Η εντολή open επιστρέφει ένα string όπως για παράδειγµα file3 αναγνωρίζει το ανοιγµένο αρχείο. Αυτός ο αναγνωριστής χρησιµοποιείτε όταν καλούνται άλλες εντολές για να χειριστεί το άνοιγµα του φακέλου, όπως η gets, η puts και η close. Υπάρχουν τρεις αναγνωριστές αρχείων ο stdin, ο stdout και ο stderrror οι οποίοι αναφέρονται στα τυπικά κανάλια εισόδου, εξόδου και λάθους για την διαδικασία στην οποία εκτελείται το Tcl script. Μετά το άνοιγµα του αρχείου στο οποίο γίνεται το ψάξιµο, το tgrep script διαβάζει µια σειρά του αρχείου την φορά µε την εντολή gets. Η gets παίρνει κανονικά δυο ορίσµατα έναν αναγνωριστή αρχείων και το όνοµα µιας µεταβλητής. ιαβάζει την επόµενη γραµµή του ανοιγµένου αρχείου, αποθηκεύει την γραµµή στην ονοµασµένη µεταβλητή και επιστρέφει το σύνολο του αριθµού των χαρακτήρων που αποθηκεύτηκαν στην µεταβλητή. Αν το τέλος του αρχείου φτάσει πριν διαβαστούν χαρακτήρες τότε η gets αποθηκεύει ένα άδειο string στην µεταβλητή και επιστρέφει -1. Για κάθε γραµµή του αρχείου το tgrep script αντιστοιχίζει την γραµµή του δείγµατος και την τυπώνει µε την puts αν ταιριάζουν. Η εντολή puts παίρνει δυο ορίσµατα, που είναι ένας αναγνωριστής αρχείου και ένα string για να τυπωθεί. Η puts προσθέτει έναν χαρακτήρα αλλαγής γραµµής στο τέλος του string και εξάγει την σειρά στο δοσµένο αρχείο. Το script χρησιµοποιεί τον αναγνωριστή stdout έτσι ώστε η σειρά να τυπωθεί σαν τυπική έξοδος. Όταν η tgrep φτάσει στο τέλος του αρχείου τότε η gets επιστρέφει -1, και έτσι τελειώνει ο βρόχος while. Το script στη συνέχεια κλείνει το αρχείο µε την εντολή close, πράγµα που απελευθερώνει τους πόρους που σχετίζονταν µε το ανοιγµένο αρχείο. Στα περισσότερα συστήµατα υπάρχει ένα όριο στο ποσά αρχεία µπορούν να είναι ανοιγµένα την ίδια στιγµή από µια εφαρµογή, όποτε είναι σηµαντικό να κλείνετε τα αρχεία αµέσως µόλις τελειώσετε το διάβασµα ή την εγγραφή σε αυτά. Στο παραπάνω παράδειγµα η εντολή close είναι περιττή διότι το αρχείο θα κλείσει αυτόµατα από τη στιγµή που θα τελειώσει η εφαρµογή. Ο Τρέχων Κατάλογος Εργασίας Η Tcl παρέχει δυο εντολές που βοηθούν στη διαχείριση του τρέχοντα καταλόγου εργασίας: την pwd και cd. Η pwd δε παίρνει κανένα όρισµα και επιστρέφει ολόκληρο το path name του τρέχοντος καταλόγου εργασίας. Η cd παίρνει ένα όρισµα και µετατρέπει τον τρέχοντα κατάλογο εργασίας στην τιµή αυτού του ορίσµατος. Αν η cd κληθεί χωρίς όρισµα τότε µετατρέπει τον τρέχοντα κατάλογο εργασίας στον προσωπικό κατάλογο του χρηστή που τρέχει το Tcl script. ιαχείριση Ονοµάτων Αρχείων : glob και file Η Tcl έχει δυο εντολές για την διαχείριση των ονοµάτων αρχείων : την glob και την file. Η glob παίρνει ένα ή περισσότερα δείγµατα ως ορίσµατα και επιστρέφει ένα κατάλογο από όλα τα ονόµατα αρχείων που ταιριάζουν µε τα δείγµατα : glob *.c *.h main.c hash.c hash.h Στο παραπάνω παράδειγµα η glob επιστρέφει τα ονόµατα όλων των αρχείων στον τρέχοντα κατάλογο που τελειώνουν σε.c ή.h. Η glob επίσης επιτρέπει στα δείγµατα να περιέχουν χωρισµένους µε κόµµατα καταλόγους ανάµεσα σε αγκύλες, όπως φαίνεται στο παρακάτω παράδειγµα : glob {{src,backup/*.[ch] src/main.c src/hash.c src/hash.h backup/hash.c

14 Η glob µεταχειρίζεται αυτό το δείγµα σαν να ήταν πολλά δείγµατα µαζί, µε κάθε ένα να περιέχει κάθε ένα από τα string, όπως στο επόµενο παράδειγµα : glob {src/*.[ch] {backup/*.[ch] Αν ένα δείγµα της glob τελειώνει µε µια κάθετο τότε ταιριάζει µόνο µε τα ονόµατα των καταλόγων. Για παράδειγµα η εντολή: glob */ θα επιστρέψει µια λίστα όλων των υποκαταλόγων του τρέχοντος καταλόγου. Αν η λίστα των ονοµάτων αρχείων που θα επιστραφούν από την glob είναι άδεια τότε παράγεται λάθος. Η δεύτερη εντολή για την διαχείριση των ονοµάτων αρχείων είναι η file. Η file είναι µια γενικού σκοπού εντολή µε πολλές επιλογές οι οποίες µπορούν χρησιµοποιηθούν τόσο για τον χειρισµό των ονοµάτων αρχείων όσο και για την ανάκτηση πληροφοριών από τα αρχεία. Οι εντολές σε αυτό το τµήµα λειτουργούν καθαρά πάνω στα ονόµατα αρχείων. εν κάνουν κλήσεις συστήµατος και δεν ελέγχουν να δυο αν τα ονόµατα αντιστοιχούν πραγµατικά σε φακέλους. Η file dirname επιστρέφει το όνοµα του καταλόγου που περιέχει ένα συγκεκριµένο αρχείο : file dirname /a/b/c /a/b file dirname main.c Η file extension επιστρέφει την επέκταση για ένα όνοµα αρχείου ή ένα κενό string αν το όνοµα δεν έχει καµία επέκταση : file extension src/main.c c Η file rootname επιστρέφει τα πάντα από ένα όνοµα αρχείου εκτός από την επέκταση : file rootname src/main.c src/main file rootname foo foo Τέλος η file tail επιστρέφει το τελευταίο στοιχείο σε ένα όνοµα αρχείου : file tail /a/b/c c file tail foo foo Εντολές για Πληροφορίες Αρχείων Η εντολή file χρησιµοποιείτε για την ανάκτηση πληροφοριών για τα αρχεία. Κάθε µια από τις επιλογές που προσφέρει εκτός από την stat και την lstat έχουν την εξής µορφή: file option name όπου η option καθορίζει την πληροφορία που επιθυµείται, όπως exist ή readable ή size, και η name είναι το όνοµα του αρχείου. Οι επιλογές exists, isfile, isdirectory και type επιστρέφουν πληροφορίες για την φύση του αρχείου. Η file exists επιστρέφει 1 αν υπάρχει το αρχείο µε το όνοµα που δίνεται και 0 αν δεν υπάρχει κανένα αρχείο µε τέτοιο όνοµα ή αν ο τρέχων χρηστής δεν έχει δικαίωµα να ψάξει στους καταλόγους που οδηγούν προς αυτό. Η file isfile επιστρέφει 1 αν το αρχείο είναι ένα συνηθισµένο αρχείο δίσκου και 0 αν είναι κάτι άλλο, όπως ένας κατάλογος ή ένα device αρχείο. Η file isdirectory επιστρέφει 1 αν το αρχείο είναι ένας κατάλογος και 0 αλλιώς. Η file type επιστρέφει ένα string, όπως file, directory ήsocket που αναγνωρίζει τον τύπο του αρχείου. Οι επιλογές readable, writable και executable επιστρέφουν

15 0 ή 1 για να υποδείξουν αν ο τρέχων χρήστης έχει την άδεια να πραγµατοποιήσει τις ενέργειες αυτές στα αρχεία. Η επιλογή owned επιστρέφει 1 αν ο τρέχων χρήστης είναι ο ιδιοκτήτης του αρχείου και 0 αλλιώς. Η επιλογή size επιστρέφει ένα δεκαδικό string που δίνει το µέγεθος του αρχείου σε bytes. Η file mtime επιστρέφει την ώρα της τελευταίας τροποποίησης του αρχείου. Η επιλογή atime επιστρέφει την ώρα της τελευταίας πρόσβασης στο αρχείο. Η επιλογή stat παρέχει έναν απλό τρόπο για να πάρετε πολλές πληροφορίες για ένα αρχείο µε µια φορά. Η file stat επίσης παρέχει προσθετές πληροφορίες τις οποίες δεν µπορείτε να πάρετε µε τις υπόλοιπες επιλογές. Παίρνει δυο προσθετά ορίσµατα, που είναι το όνοµα ενός αρχείου και το όνοµα µιας µεταβλητής, όπως στο παράδειγµα που ακολουθεί : file stat main.c info Σε αυτή την περίπτωση το όνοµα του αρχείου είναι main.c και το όνοµα της µεταβλητής είναι info. Η µεταβλητή θα µεταχειριστεί σαν ένας πίνακας και τα ακόλουθα στοιχεία θα καθοριστούν, το καθένα σαν ένα δεκαδικό string : atime Η ώρα της τελευταίας πρόσβασης. ctime Η ώρα της τελευταίας αλλαγής κατάστασης. dev gid ino Αναγνωριστής των συσκευών που περιέχουν αρχεία. Αναγνωριστής των οµαδοποιηµένων αρχείων. Σειριακός αριθµός για το αρχείο µέσα στη συσκευή του. mode Κατάσταση των bits στο αρχείο. mtime Η ώρα της τελευταίας µετατρoπής. nlink size uid Ο αριθµός των δεσµών στο αρχείο. Το µέγεθος του αρχείου σε bytes. Αναγνωριστής του ιδιοκτήτη χρήστη του αρχείου. Οι επιλογές lstat και readlink µπορούν να χρησιµοποιηθούν για τον χειρισµό συµβολικών δεσµών και µόνο σε συστήµατα που υποστηρίζουν συµβολικούς δεσµούς. Η file lstat είναι ίδια µε την stat για τα κανονικά αρχεία, ενώ η readlink επιστρέφει το περιεχόµενο ενός συµβολικού δεσµού. Λάθη στις Κλήσεις Συστήµατος Οι περισσότερες από τις εντολές που περιγράφηκαν σε αυτό το κεφαλαίο προκαλούν κλήσεις στο λειτουργικό σύστηµα και σε πολλές περιπτώσεις αυτές οι κλήσεις µπορεί να επιστρέψουν λάθη. Αυτό µπορεί να συµβεί αν καλέσετε την open ή την file stat για ένα αρχείο που δεν υπάρχει ή αν ένα Ι/Ο λάθος συµβεί κατά το διάβασµα ενός αρχείου. Οι εντολές Tcl ανιχνεύουν αυτά τα λάθη των κλήσεων συστήµατος στις περισσότερες περιπτώσεις και επιστρέφουν οι ίδιες λάθος. Το µήνυµα λάθους θα αναγνωρίσει το λάθος που παρουσιάστηκε : open hi couldn't open "hi": no such file or directory Όταν ένα λάθος εµφανίζεται σε µια κλήση συστήµατος η Tcl παρέχει την εντολή errorcode που δίνει περισσότερες πληροφορίες για το λάθος. Μπορεί να βρείτε αυτές τις πληροφορίες χρήσιµες για την ανάκτηση από ένα λάθος, όπως για παράδειγµα να καταλάβετε ακριβώς γιατί

16 το αρχείο δεν είναι προσπελάσιµο. Αν ένα λάθος κλήσης συστήµατος έχει εµφανιστεί τότε η errorcode θα αποτελείται από τρία στοιχεία : set errorcode POSIX ENOENT {no such file or directory Το πρώτο στοιχείο είναι το POSIX για να επισηµάνει ότι το λάθος εµφανίστηκε σε µια POSIX κλήση συστήµατος. Το δεύτερο στοιχείο είναι το επίσηµο όνοµα του λάθους. Το τρίτο στοιχείο είναι το µήνυµα λάθους που αντιστοιχεί στο συγκεκριµένο λάθος. ΑΝΑΦΟΡΑ Η Tcl παρέχει διάφορους τρόπους για να αποτραπεί η ειδική ερµηνεία στους χαρακτήρες όπως το $ και το ελληνικό ερωτηµατικό. Αυτές οι τεχνικές καλούνται αναφορά. Έχετε δει ήδη µια µορφή αναφοράς µε την backslash αντικατάσταση. Εκτός από την backslash αντικατάσταση η Tcl παρέχει δύο άλλες µορφές αναφοράς : τα διπλά εισαγωγικά " " και τις αγκύλες {. Τα διπλά εισαγωγικά θέτουν εκτός λειτουργίας τους διαχωριστές λέξης και εντολής, ενώ οι αγκύλες θέτουν εκτός λειτουργίας σχεδόν όλους τους ειδικούς χαρακτήρες. Εάν µια λέξη εσωκλείεται σε διπλά εισαγωγικά, το ελληνικό ερωτηµατικό, οι αλλαγές γραµµής, και οι υπόλοιποι χαρακτήρες κλειδιά στην TCL αντιµετωπίζονται ως συνηθισµένοι χαρακτήρες µέσα στην έκφραση. Ένα προηγούµενο παράδειγµα µπορεί να ξαναγραφεί πιο καθαρά µε τα διπλά εισαγωγικά ως εξής : set team "players:\$15\ncoaches:\$1 " players:$15 coaches:$1 Σηµειώστε ότι τα διπλά εισαγωγικά δεν είναι µέρος της έκφρασης. Παραδείγµατος χάριν, το ακόλουθο χειρόγραφο θέτει στο s ένα string που περιέχει το όνοµα µιας µεταβλητής, την τιµή της, και την τιµή του τετραγώνου της : set a 2 set s "a ison $a; to tetragono toy a einai [expr $a*$a]" a is 2; the square of a is 4 Εάν θα επιθυµούσατε να περιλάβετε διπλά εισαγωγικά σε µια έκφραση, χρησιµοποιήστε την backslash αντικατάσταση. Οι αγκύλες { παρέχουν µια ριζικότερη µορφή αναφοράς όπου όλοι οι ειδικοί χαρακτήρες χάνουν την έννοιά τους. Εάν µια λέξη εσωκλείεται σε αγκύλες οι χαρακτήρες µεταξύ τους είναι η τιµή της έκφρασης κατά λέξη. Καµία αντικατάσταση δεν εκτελείται στη λέξη και οι ειδικοί χαρακτήρες αντιµετωπίζονται ως συνηθισµένοι χαρακτήρες. Ένα παράδειγµα µπορεί να ξαναγραφεί µε αγκύλες ως εξής : set msg { players:\$15\ncoaches:\$1 players:\$15\ncoaches:\$1 Το δολάριο στην έκφραση δεν προκαλεί την αντικατάσταση µεταβλητής και η αλλαγή γραµµής δεν ενεργεί ως διαχωριστής εντολής. Σε αυτήν την περίπτωση η έκφραση \n δεν µπορεί να χρησιµοποιηθεί για να παρεµβάλει µια αλλαγή γραµµής. ΛΙΣΤΕΣ Οι λίστες χρησιµοποιούνται στην Tcl για να διαχειριστούν τις συλλογές των πραγµάτων, όπως όλοι οι χρήστες σε ένα group ή όλα τα αρχεία σε έναν κατάλογο ή όλες τις επιλογές για ένα widget. Οι λίστες επιτρέπουν σε σας να συγκεντρώσετε οποιοδήποτε αριθµό

17 τιµών σε ένα µέρος, να διαµοιράσουν τη συλλογή ως ενιαία οντότητα, και να πάρουν αργότερα τις συστατικές τιµές πάλι πίσω. Μια λίστα είναι µια διατεταγµένη συλλογή στοιχείων όπου κάθε στοιχείο µπορεί να έχει τιµή ένα οποιοδήποτε string, όπως ένα αριθµό, ένα όνοµα ατόµου, το όνοµα ενός παραθύρου ή µια λέξη µιας εντολής Tcl. Οι λίστες αντιπροσωπεύονται ως strings µε µια ιδιαίτερη δοµή, αυτό σηµαίνει ότι µπορείτε να αποθηκεύσετε τους καταλόγους σε µεταβλητές, να τους δακτυλογραφήσετε σε εντολές, και να τους τοποθετήσετε ως στοιχεία άλλων καταλόγων. Παρακάτω θα περιγράφει η δοµή των λιστών και παρουσιάζονται δώδεκα βασικές εντολές για το χειρισµό των λιστών. Οι εντολές αυτές εκτελούν διαδικασίες όπως τη δηµιουργία λιστών, την εισαγωγή και την εξαγωγή στοιχείων, και την έρευνα για συγκεκριµένα στοιχεία. Μια περίληψη αυτών των εντολών φαίνεται στον παρακάτω πίνακα : Concat list?list...? Ενώνει πολλαπλές λίστες σε µία ενιαία (κάθε στοιχείο κάθε λίστας γίνεται ένα στοιχείο της τελικής λίστας ) και επιστρέφει την νέα λίστα. join list?joinstring? Συνδέει τα στοιχεία µιας λίστας µε το joinstring ως διαχωριστή και επιστρέφει το αποτέλεσµα. lappend varname value?value...? Αντιστοιχίζει κάθε τιµή στην µεταβλητή varname ως ένα στοιχείο της λίστας και επιστρέφει τη νέα τιµή της µεταβλητής. ηµιουργεί τη µεταβλητή εάν δεν υπάρχει ήδη. lindex list index Επιστρέφει το στοιχείο της λίστας µε δείκτη index. linsert list index value?value...? Επιστρέφει µια νέα λίστα που διαµορφώνεται τοποθετώντας όλα τα ορίσµατα τιµών ως στοιχεία λίστας πριν από το στοιχείο µε τον δείκτη της λίστας. list value?value...? Επιστρέφει µια λίστα της οποίας τα στοιχεία είναι τα ορίσµατα των τιµών. llength list Επιστρέφει των αριθµό των στοιχείων µιας λίστας. lrange list first last Επιστρέφει έναν κατάλογο που αποτελείται από στοιχεία από την αρχή ως το τέλος του καταλόγου. lreplace list first last?value value...? Επιστρέφει µια νέα λίστα που διαµορφώνεται µε την αντικατάσταση των στοιχείων από την

18 αρχή ως το τέλος της λίστας µε κανένα ή περισσότερα νέα στοιχεία, κάθε ένα από τα οποία διαµορφώνεται από ένα όρισµα τιµής. lsearch?-exact??-glob??-regexp? list pattern Επιστρέφει τον δείκτη του πρώτου στοιχείου της λίστας ή 1 αν δεν υπάρχει. lsort?-ascii??-integer??-real??-command command? \?-increasing??-decreasing? list Επιστρέφει µια νέα λίστα που σχηµατίζεται από την ταξινόµηση των στοιχείων µιας λίστας. split string?splitchars? Επιστρέφει µια λίστα που διαµορφώνεται χωρίζοντας τα string σε στιγµές του SplitChars και µετατρέπει τους χαρακτήρες ανάµεσα σε αυτές τις στιγµές σε στοιχεία λίστας. Η Βασική οµή των Καταλόγων και η Εντολή lindex Mε την απλούστερη µορφή της µια λίστα είναι ένα string που περιέχει οποιοδήποτε αριθµό στοιχείων που χωρίζονται από κενά ή tabs. Για παράδείγµα το string Giannis Anna Maria Dimitris είναι µια λίστα µε τέσσερα στοιχεία. Μπορεί να υπάρξει οποιοσδήποτε αριθµός στοιχείων σε µια λίστα, και κάθε στοιχείο µπορεί να είναι ένα αυθαίρετο string. Η εντολή lindex εξάγει ένα στοιχείο από µια λίστα : lindex { Giannis Anna Maria Dimitris 1 Η lindex παίρνει δύο ορίσµατα, µια λίστα και έναν δείκτη, και επιστρέφει το επιλεγµένο στοιχείο της λίστας. O δείκτης 0 αντιστοιχεί στο πρώτο στοιχείο της λίστας, ο 1 αντιστοιχεί στο δεύτερο στοιχείο και ούτω καθεξής. Εάν ο δείκτης είναι έξω από το εύρος της λίστας επιστρέφεται ένα κενό string. Όταν µια λίστα εισάγεται σε µια εντολή Tcl η λίστα εσωκλείεται συνήθως σε άγκιστρα, όπως στο παραπάνω παράδειγµα. Τα άγκιστρα δεν είναι µέρος της λίστας, αλλά απαιτούνται στη γραµµή εντολής για να περάσουν ολόκληρη τη λίστα στην εντολή ως µεµονωµένη λέξη. Όταν οι λίστες αποθηκεύονται στις µεταβλητές ή εκτυπώνονται, δεν υπάρχουν άγκιστρα γύρω τους : set x { Giannis Anna Maria Dimitris Τα άγκιστρα και τα backslashes µέσα στα στοιχεία λιστών αντιµετωπίζονται από τις εντολές λιστών µε τον ίδιο τρόπο που ο parser της εντολής Tcl τα µεταχειρίζεται στις λέξεις. Αυτό σηµαίνει ότι µπορείτε να εσωκλείσετε ένα στοιχείο λίστας σε άγκιστρα εάν περιέχει διαστήµατα, και µπορείτε να χρησιµοποιήσετε backslashes για να πάρετε ειδικούς χαρακτήρες όπως αγκύλες στα στοιχεία καταλόγων. Τα άγκιστρα χρησιµοποιούνται συχνά για να τοποθετούν λίστες µέσα σε λίστες, όπως στο ακόλουθο παράδειγµα : lindex { a b { c d e f 2 Σε αυτή την περίπτωση το στοιχείο 2 της λίστας είναι από µόνο του µια λίστα µε τρία στοιχεία. εν υπάρχει κανένα όριο στο πόσο βαθιά οι λίστες µπορούν να τοποθετηθούν.

19 ηµιουργία Λιστών : concat, list και llength Η Tcl παρέχει δύο εντολές που συνδυάζουν τα strings για να παράγουν λίστες: concat και list. Κάθε µια από αυτές τις εντολές δέχεται έναν αυθαίρετο αριθµό ορισµάτων, και κάθε µια παράγει µια λίστα σαν αποτέλεσµα. Εντούτοις, διαφέρουν στον τρόπο µε τον οποίο συνδυάζουν τα ορίσµατά τους. Η εντολή concat παίρνει µια ή περισσότερες λίστες ως ορίσµατα και ενώνει όλα τα στοιχεία των λιστών ορισµάτων σε µια ενιαία µεγάλη λίστα: concat { a b c { d e f { g h i a b c d e f g h i Η concat αναµένει από τα ορίσµατά της να έχουν τη σωστή δοµή λιστών, εάν τα ορίσµατα δεν είναι καλοσχηµατισµένες λίστες τότε το αποτέλεσµα µπορεί να µην είναι επίσης µια καλοσχηµατισµένη λίστα. Στην πραγµατικότητα, αυτό που κάνει η concat είναι να συνδέει τα string ορισµάτων της σε ένα µεγάλο string τοποθετώντας κενά ανάµεσα στα ορίσµατα. Το ίδιο αποτέλεσµα µε την concat µπορεί να επιτευχθεί χρησιµοποιώντας διπλά εισαγωγικά: set x {a b c set y {d e set z [concat $x $y] set z "$x $y" Η εντολή λιστας list ενώνει τα ορίσµατα της έτσι ώστε κάθε όρισµα να γίνεται ένα ευδιάκριτο στοιχείο της λίστας που προκύπτει : list {a b c {d e f {g h i Σε αυτήν την περίπτωση, η λίστα που προκύπτει περιλαµβάνει µόνο τέσσερα στοιχεία. Η εντολή list παραγάγει πάντα έναν κατάλογο µε την κατάλληλη δοµή, ανεξάρτητα από τη δοµή των ορισµάτων της (προσθέτει άγκιστρα ή backslashes όπως απαιτούνται), και η εντολή lindex µπορεί πάντα να χρησιµοποιηθεί για να εξαγάγει τα αρχικά στοιχεία µιας λίστας που δηµιουργήθηκε µε την εντολή list. Τα ορίσµατα για την list δεν χρειάζεται να είναι καλοσχηµατισµένες λίστες. Η εντολή llength επιστρέφει τον αριθµό στοιχείων σε µια λίστα : llength {{a b c {d e f {g h i llength a llength { Όπως µπορείτε να δείτε από τα παραδείγµατα, ένα απλό string όπως το a είναι µια λίστα µε ένα στοιχείο και ένα κενό string είναι µια λίστα µε µηδέν στοιχεία. Τροποποίηση Λιστών : linsert, lreplace, lrange και lappend Η εντολή linsert δηµιουργεί µια νέα λίστα προσθέτοντας ένα ή περισσότερα στοιχεία σε µια ήδη υπάρχουσα λίστα : set x {a b {c d e a b {c d e linsert $x 2 X Y Z a b X Y Z {c d e linsert $x 0 {X Y Z

20 {X Y Z a b {c d e Η linsert παίρνει τρία ή περισσότερα ορίσµατα. Το πρώτο είναι µια λίστα, το δεύτερο είναι ένας δείκτης σε ένα στοιχείο αυτής της λίστας και το τρίτο και τα επιπλέον ορίσµατα είναι τα νέα στοιχεία που προστίθενται στη λίστα. Η επιστροφή από την εντολή linsert είναι µια λίστα που δηµιουργείται τοποθετώντας τα νέα στοιχεία ακριβώς πριν από το στοιχείο που υποδεικνύεται από τον δείκτη. Αν ο δείκτης είναι το 0 τότε τα νέα στοιχεία τοποθετούνται στην αρχή της λίστας, αν είναι το 1 τότε τα νέα στοιχεία τοποθετούνται αµέσως µετά από το πρώτο στοιχείο της αρχικής λίστας και ούτω καθεξής. Αν ο δείκτης είναι µεγαλύτερος ή ίσος µε τον αριθµό των στοιχείων τότε τα νέα στοιχεία τοποθετούνται στο τελος της αρχικής λίστας. Η εντολή lreplace διαγράφει στοιχεία από µια λίστα και προαιρετικά προσθέτει νέα στοιχεία στη θέση τους. Παίρνει τρία ή περισσότερα ορίσµατα. Το πρώτο όρισµα είναι µια λίστα και τα δεύτερα και τρίτα ορίσµατα δίνουν τους δείκτες των πρώτων και τελευταίων στοιχείων που διαγράφονται. Εάν µόνο τρία ορίσµατα καθορίζονται τότε το αποτέλεσµα είναι µια νέα λίστα που παράγεται µε τη διαγραφή της δεδοµένης σειράς των στοιχείων από την αρχική λίστα: lreplace {a b {c d e 2 3 a b Αν καθορίζονται επιπλέον ορίσµατα για την εντολή lreplace όπως στο παρακάτω παράδειγµα τότε αυτά τοποθετούνται στη λίστα στην θέση των στοιχείων που διαγράφηκαν : lreplace {a b {c d e 1 2 {W X Y Z a {W X Y Z e Η εντολή lrange εξάγει µια σειρά των στοιχείων από µια λίστα. Παίρνει ως ορίσµατα µια λίστα και δύο δείκτες και επιστρέφει µια νέα λίστα που αποτελείται από τη σειρά των στοιχείων που βρίσκονται µεταξύ των δύο δεικτών : set x {a b {c d e a b {c d e lrange $x 1 3 b {c d e lrange $x 0 1 a b Η εντολή lappend παρέχει έναν αποδοτικό τρόπο να προσαρτηθούν νέα στοιχεία σε µια λίστα που αποθηκεύεται σε µια µεταβλητή. Παίρνει ως ορίσµατα το όνοµα µιας µεταβλητής και κάθε αριθµό πρόσθετων ορισµάτων. Κάθε ένα από τα πρόσθετα ορίσµατα προστίθεται στην τιµή της µεταβλητής ως ένα νέο στοιχείο λίστας και η lappend επιστρέφει τη νέα τιµή της µεταβλητής : set x {a b {c d e a b {c d e lappend x XX {YY ZZ a b {c d e XX {YY ZZ set x a b {c d e XX {YY ZZ

21 Αναζήτηση σε Λίστες : lsearch Η εντολή lsearch ψάχνει σε µια λίστα για ένα στοιχείο µε µια συγκεκριµένη τιµή. Παίρνει δύο ορίσµατα, το πρώτο από τα οποία είναι µια λίστα και το δεύτερο είναι ένα δείγµα : set x { Giannis Anna Maria Dimitris lsearch $x Maria 2 lsearch $x Philipas -1 Η lsearch επιστρέφει το δείκτη του πρώτου στοιχείου στη λίστα που ταιριάζει µε το δείγµα ή -1 εάν δεν υπήρξε κανένα στοιχείο που να ταιριάζει. Μία από τις τρεις διαφορετικές τεχνικές ταιριάσµατος του δείγµατος µπορεί να επιλεχτεί µε τον καθορισµό µιας από τις εντολές - exact, - glob, και - regexp πριν από το όρισµα της λίστας: lsearch -glob $x A* 1 Οι τρεις παραπάνω εντολές περιγράφονται πιο αναλυτικά παρακάτω. Ταξινόµηση Λιστών : lsort Η εντολή lsort παίρνει µια λίστα ως όρισµα και επιστρέφει µια νέα λίστα µε τα ίδια στοιχεία, αλλά ταξινοµηµένο µε την αυξανόµενη αλφαβητική σειρά : lsort { Giannis Anna Maria Dimitris Anna Dimitris Giannis Maria Μπορείτε να χρησιµοποιήσετε οποιαδήποτε από τις αρκετές εντολές που υπάρχουν, πριν από τη λίστα, για να ελέγξετε το είδος της ταξινόµησης. Για παράδειγµα, η - decreasing διευκρινίζει ότι το αποτέλεσµα πρέπει να έχει το "µεγαλύτερο" στοιχείο πρώτα και η - integer διευκρινίζει ότι τα στοιχεία πρέπει να αντιµετωπιστούν ως ακέραιοι αριθµοί και να ταξινοµηθούν σύµφωνα µε την αξία ακέραιων αριθµών : lsort -decreasing { Giannis Anna Maria Dimitris Maria Giannis Dimitris Anna lsort { lsort -integer { Μετατροπές Ανάµεσα σε string και σε Λίστες : split και join Η εντολή split χωρίζει ένα string σε συστατικά κοµµάτια έτσι ώστε να µπορείτε να επεξεργαστείτε τα κοµµάτια ανεξάρτητα. ηµιουργεί µια λίστα της οποίας τα στοιχεία είναι τα κοµµάτια, έτσι ώστε µπορείτε να χρησιµοποιήσετε οποιαδήποτε από τις εντολές καταλόγων για να επεξεργαστείτε τα κοµµάτια. Για παράδειγµα, υποθέστε ότι µια µεταβλητή περιέχει ένα όνοµα αρχείου UNIX µε συστατικά που χωρίζονται από κάθετους, και θέλετε να το µετατρέψετε σε έναν κατάλογο µε ένα στοιχείο για κάθε συστατικό : set x a/b/c

22 set y /usr/include/sys/types.h split $x / a b c split $y / { usr include sys types.h Το πρώτο όρισµα στην split είναι το string που χωρίζεται και το δεύτερο όρισµα περιέχει έναν ή περισσότερους χαρακτήρες διάσπασης. Η split εντοπίζει όλες τις περιπτώσεις οποιουδήποτε από τους χαρακτήρες διάσπασης στο string. ηµιουργεί έπειτα µια λίστα της οποίας τα στοιχεία αποτελούνται από τα substrings µεταξύ των χαρακτήρων διάσπασης. Οι άκρες των strings αντιµετωπίζονται επίσης ως χωρισµένοι χαρακτήρες. Εάν υπάρχουν διαδοχικοί χαρακτήρες διάσπασης ή αν το string αρχίζει ή τελειώνει µε έναν χαρακτήρα διάσπασης όπως στο δεύτερο παράδειγµα, τότε τα κενά στοιχεία παράγονται στη λίστα που προκύπτει. Οι ίδιοι χαρακτήρες διάσπασης απορρίπτονται. Αρκετοί χαρακτήρες διάσπασης µπορούν να καθοριστούν, όπως στο ακόλουθο παράδειγµα: split xabzabhi ab Εάν ένα κενό string ορίζεται για χαρακτήρας διάσπασης τότε κάθε χαρακτήρας του string µετατρέπεται σε ένα χωριστό στοιχείο λίστας: split {a b c { Η εντολή join είναι περίπου το αντίστροφο της split. Συνδέει τα στοιχεία λιστών µαζί µε ένα δεδοµένο string µεταξύ τους : join {{ usr include sys types.h / /usr/include/sys/types.h set x { expr [join $x +] 22 Η join παίρνει δύο ορίσµατα: µια λίστα και ένα string σύνδεσης. Εξάγει όλα τα στοιχεία από τη λίστα και τα συνδέει µαζί µε το string σύνδεσης µεταξύ κάθε ζεύγους στοιχείων. Το string σύνδεσης µπορεί να περιέχει οποιοδήποτε αριθµό χαρακτήρων, συµπεριλαµβανοµένου και του κενού. Στο πρώτο παράδειγµα επάνω ένα όνοµα αρχείου παράγεται µε την ένωση των στοιχείων λίστας µε /. Στο δεύτερο παράδειγµα µια έκφραση Tcl παράγεται µε την ένωση των στοιχείων λίστας µε +". Μια από τις πιο κοινές χρήσεις της split και της join είναι για την διαχείριση ονοµάτων αρχείων όπως παρουσιάζονται παραπάνω. Μια άλλη κοινή χρήση είναι για την διάσπαση κειµένου σε γραµµές µε τη χρησιµοποίηση της αλλαγής γραµµής ως χαρακτήρα διάσπασης. Λίστες και Εντολές Υπάρχει µια πολύ σηµαντική σχέση µεταξύ των λιστών και των εντολών στην Tcl. Οποιαδήποτε λίστα είναι επίσης και µια καλοσχηµατισµένη εντολή Tcl. Εάν µια λίστα αξιολογείται ως ένα Tcl script τότε θα αποτελείται από µια απλή εντολή της οποίας οι λέξεις είναι τα στοιχεία της λίστας. Με άλλα λόγια, ο Tcl parser δεν θα εκτελέσει καµία αντικατάσταση : θα εξαγάγει απλά τα στοιχεία της λίστας µε κάθε στοιχείο να µετατρέπεται σε µια λέξη της εντολής. Αυτή η ιδιότητα είναι πολύ σηµαντική επειδή σας επιτρέπει να παράγετε εντολές Tcl που είναι εγγυηµένες να αναλυθούν µε ένα ιδιαίτερο τρόπο ακόµα κι αν µερικές από τις λέξεις των εντολών περιέχουν ειδικούς χαρακτήρες όπως διαστήµατα ή το $. Παραδείγµατος χάριν, υποθέστε ότι δηµιουργείτε ένα button σε Tk, και όταν πατά ο χρήστης στο widget να επιθυµείτε να επαναφέρετε µια µεταβλητή σε µια συγκεκριµένη τιµή. Μπορείτε να δηµιουργήσετε ένα τέτοιο widget µε µια εντολή όπως αυτή :

23 button.b -text press -command {set x 100 pack.b Το Tcl script set x 100 θα ενεργοποιηθεί όποτε ο χρήστης πατήσει το κουµπί press. Τώρα υποθέστε ότι η τιµή που αποθηκεύεται στη µεταβλητή δεν είναι σταθερή, αλλά υπολογίζεται αµέσως πριν από την εντολή button και πρέπει να ληφθεί από µία µεταβλητή value. Επιπλέον, υποθέστε ότι η value θα µπορούσε να περιέχει οποιοδήποτε string. Μπορείτε να ξαναγράψετε την εντολή ως εξής : button.b -text press -command {set x $value pack.b Το Tcl script set x $value θα αξιολογηθεί όταν ο χρήστης πατά το κουµπί press. Εντούτοις, θα χρησιµοποιηθεί η τιµή της value την στιγµή που ο χρήστης πατά το κουµπί, η οποία µπορεί να µην είναι ίδια µε την τιµή που υπήρχε όταν δηµιουργήθηκε το κουµπί. Για παράδειγµα, η ίδια µεταβλητή µπορεί να χρησιµοποιηθεί για να δηµιουργήσει διάφορα κουµπιά, κάθε ένα µε διαφορετική προοριζόµενη τιµή. Για να λύσετε αυτό το πρόβληµα πρέπει να παράγετε µια εντολή Tcl που να περιέχει την τιµή της value µεταβλητής, όχι το όνοµά της, και να χρησιµοποιήσετε αυτή την εντολή ως µέρος του τµήµατος -command της εντολής button. Εάν η τιµή της value είναι κάτι απλό όπως 47 τότε αυτό θα λειτουργήσει άριστα : η προκύπτουσα εντολή θα είναι set x 47, η οποία θα παράγει το επιθυµητό αποτέλεσµα. Παρόλα αυτά, τι θα γίνει εάν η value περιέχει την τιµή nea smyrni. Σε αυτήν την περίπτωση η προκύπτουσα εντολή θα είναι set x nea smyrni, η οποία έχει τέσσερις λέξεις. Η set θα παράγει λάθος επειδή υπάρχουν πάρα πολλά ορίσµατα. Ακόµα χειρότερα βέβαια, αν η value περιέχει ειδικούς χαρακτήρες όπως το $ ή το [. Αυτοί οι χαρακτήρες θα µπορούσαν να προκαλέσουν ανεπιθύµητες αντικαταστάσεις να προκύψουν όταν αξιολογείται η εντολή. Η µόνη λύση που είναι εγγυηµένη να λειτουργήσει για οποιαδήποτε τιµή της value είναι να χρησιµοποιηθεί εντολή λίστας για να παραχθεί η εντολή, όπως στο ακόλουθο παράδειγµα: button.b -text press -command [list set x $value] pack.b Το αποτέλεσµα της εντολής λίστας είναι µια εντολή Tcl της οποίας η πρώτη λέξη θα είναι η set, η δεύτερη λέξη θα είναι x, και η τρίτη λέξη θα είναι η τιµή της value. Η εντολή θα παράγει πάντα το επιθυµητό αποτέλεσµα και οποιαδήποτε τιµή που αποθηκεύεται στην value την στιγµή που τίθεται σε λειτουργία το button θα αποθηκευτεί στην x όταν το widget τίθεται σε λειτουργία. ΕΛΕΓΧΟΣ ΡΟΗΣ Το παρακάτω κείµενο περιγράφει τις εντολές Tcl για τον έλεγχο της ροής της εκτέλεσης σε ένα χειρόγραφο. Οι Tcl εντολές ελέγχου ροής είναι παρόµοιες µε τις δηλώσεις ελέγχου ροής στη γλώσσα προγραµµατισµού C και csh,όπως είναι οι if, while, for, foreach, switch και eval.

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Εισαγωγή στην Tcl. Τί είναι η Tcl; 1 Εισαγωγή στην Tcl Τί είναι η Tcl; Το αρκτικόλεξο Tcl προέρχεται από τις λέξεις «Tool Control Language». Η Tcl είναι μια γλώσσα προγραμματισμού για scripts γενικής χρήσεως, τα οποία επίσης μπορούν να

Διαβάστε περισσότερα

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ Ι ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ Τύποι δεδομένων Οι παρακάτω τύποι δεδομένων υποστηρίζονται από τη γλώσσα προγραμματισμού Fortran: 1) Ακέραιοι αριθμοί (INTEGER). 2) Πραγματικοί αριθμοί απλής ακρίβειας

Διαβάστε περισσότερα

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 8 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 2 2.1 ΜΕΤΑΒΛΗΤΕΣ (ΜΕΡΟΣ Β) Στην προηγούµενη διάλεξη µάθαµε ότι µπορούµε να χρησιµοποιούµε τη ρητή ή την αυτονόητη δήλωση µεταβλητών

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

Διαβάστε περισσότερα

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

Διαβάστε περισσότερα

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

Διαβάστε περισσότερα

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης Υπολογιστές Ι Τύποι δεδομένων Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Τύποι δεδομένων, μεταβλητές, πράξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

Διαβάστε περισσότερα

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

Διαβάστε περισσότερα

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς PERL Δήμος Παύλου Δημήτρης Κουζαπάς Perl Η Perl είναι μια διερμηνευομένη δυναμική γλώσσα προγραμματισμού. Συνδυάζει χαρακτηριστικά από διάφορες γλώσσες. (C/C++, Awk, Lisp κλπ) Διαδόθηκε λόγω της μεγάλης

Διαβάστε περισσότερα

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή Κεφάλαιο. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας Περιεχόμενα. Αριθμητικά συστήματα. Μετατροπή αριθμών από ένα σύστημα σε άλλο.3 Πράξεις στο δυαδικό σύστημα.4 Πράξεις στο δεκαεξαδικό σύστημα.5

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Δρ. Π. Νικολαΐδου Προγραμματίζοντας στη γλώσσα R Εισαγωγή ( 1 ο Μάθημα ) Βασικές εντολές - λειτουργίες Μπορούμε να διαγράψουμε το περιεχόμενο της R κονσόλας επιλέγοντας Edit>Clear

Διαβάστε περισσότερα

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

Διαβάστε περισσότερα

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

Εισαγωγή στη Matlab Βασικές Συναρτήσεις

Εισαγωγή στη Matlab Βασικές Συναρτήσεις Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής με Εφαρμογές στη Βιοϊατρική Εργαστήριο Γραμμικής Άλγεβρας Εισαγωγή στη Matlab Βασικές Συναρτήσεις 2016-2017 Εισαγωγή στη Matlab Matlab

Διαβάστε περισσότερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Προτάσεις,

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Χωρίς να αλλάξουμε τον τύπο των a,b,

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1 Αριθµητικό Σύστηµα! Ορίζει τον τρόπο αναπαράστασης ενός αριθµού µε διακεκριµένα σύµβολα! Ένας αριθµός αναπαρίσταται διαφορετικά σε κάθε σύστηµα,

Διαβάστε περισσότερα

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 8: Θεματική Ενότητα: Συναρτήσεις ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική Ενότητα 8 Συναρτήσεις Πληροφορική

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

Διαβάστε περισσότερα

Shell Scripts: loops / if / test

Shell Scripts: loops / if / test Shell Scripts: loops / if / test Loops with for while until for variable in list_of_values ne while εντολή (επιτυχής) ne until εντολή (επιτυχής) ne For in exi times apo ayti ti lista in 1 2 alla kai alles

Διαβάστε περισσότερα

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 5: Εντολές Αντικατάστασης, Συναρτήσεις και Σχόλια στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής με εφαρμογές στη Βιοϊατρική Εργαστήριο Μαθηματικής Ανάλυσης Ι Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις Εισαγωγή στη

Διαβάστε περισσότερα

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Εργαστήριο Επεξεργασία Εικόνας & Βίντεο 1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή Νικόλαος Γιαννακέας Άρτα 2018 1 Εισαγωγή Το Matlab

Διαβάστε περισσότερα

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής. Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 3ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης 3.4 Τύποι εδοµένων τής

Διαβάστε περισσότερα

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α Σπυρόπουλος Α Μπουντουβής Αθήνα, 2015 v13_061015 Στον οδηγό αυτό θα χρησιμοποιηθούν

Διαβάστε περισσότερα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4) HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Μερικές άλλες χρήσιμες εντολές

Μερικές άλλες χρήσιμες εντολές 1 Μερικές άλλες χρήσιμες εντολές whoami (Εμφανίζει το όνομα του τρέχοντος χρήστη) pwd (Εμφανίζει το όνομα του τρέχοντος καταλόγου) cat text file name (Παρουσιάζει στην οθόνη το περιεχόμενο ενός αρχείου

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους

Διαβάστε περισσότερα

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

Διαβάστε περισσότερα

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

Διαβάστε περισσότερα

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

Διαβάστε περισσότερα

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB Εαρινό εξάμηνο 2018-2019 Τμήμα Μαθηματικών ΑΠΘ Διδάσκουσα: Αγγελική Παπάνα Μεταδιδακτορική Ερευνήτρια Πολυτεχνική σχολή, Α.Π.Θ. & Οικονομικό Τμήμα, Πανεπιστήμιο

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις

Διαβάστε περισσότερα

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

Διαβάστε περισσότερα

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

Διαβάστε περισσότερα

Συναρτήσεις στη Visual Basic 6.0

Συναρτήσεις στη Visual Basic 6.0 Προγραμματισμός & Εφαρμογές Υπολογιστών Μάθημα 4ο Συναρτήσεις στη Visual Basic 6.0 Κ. Κωστοπούλου Σειρά εκτέλεσης των πράξεων Όταν ορίζετε μια ακολουθία αριθμητικών πράξεων είναι δυνατόν να προκύψει αμφισημία.

Διαβάστε περισσότερα

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΟΔΗΓΙΕΣ: ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΣΕ ΟΛΕΣ ΤΙΣ ΕΡΩΤΗΣΕΙΣ. Το εξεταστικό δοκίμιο αποτελείται από δύο Ενότητες Α και Β. ΕΝΟΤΗΤΑ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ορθή απάντηση

Διαβάστε περισσότερα