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

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

Download "ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗ ΠΛΗΡΟΦΟΡΙΩΝ"

Transcript

1 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗ ΠΛΗΡΟΦΟΡΙΩΝ «ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ SCALA ΜΕ ΕΜΦΑΣΗ ΣΕ FUNCTIONAL PROGRAMMING» ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εισηγητής : < Εμμανουηλίδου Βασιλική, 817 > Επιβλέπων : < Παπαδημητρίου Στέργιος > < 2011> 1

2 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΕΙΣΑΓΩΓΗ 1.1 ΓΙΑΤΙ Η SCALA? σελ ΤΙ ΕΙΝΑΙ Η SCALA? σελ ΛΕΙΤΟΥΡΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ σελ ΞΕΚΙΝΩΝΤΑΣ ΜΕ ΤΗ SCALA σελ ΚΑΤΑΦΟΡΤΩΝΟΝΤΑΣ ΤΗ SCALA σελ ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ SCALA σελ ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ SCALA ΣΤΑ WINDOWS ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ SCALA ΣΕ UNIX-LIKE ΣΥΣΤΗΜΑΤΑ 2.3 ΚΑΝΟΝΤΑΣ ΜΙΑ ΒΟΛΤΑ ΜΕ ΤΗ SCALA σελ Η SCALA ΣΤΗ ΦΡΑΜΜΗ ΕΝΤΟΛΩΝ σελ ΕΚΤΕΛΩΝΤΑΣ ΤΟΝ ΚΩΔΙΚΑ SCALA ΣΑΝ ΧΕΙΡΟΓΡΑΦΟ σελ Η SCALA ΑΠΟ ΕΝΑΝ IDE σελ ΑΠΟΚΩΔΙΚΟΠΟΙΩΝΤΑΣ ΤΗ SCALA σελ ΕΠΙΤΑΧΥΝΟΝΤΑΣ ΣΤΗ SCALA σελ Η SCALA ΣΑΝ ΣΥΝΟΠΤΙΚΗ JAVA σελ ΤΑΞΕΙΣ ΤΗΣ SCALA ΓΙΑ JAVA PRIMITIVES σελ TUPLES ΚΑΙ ΠΟΛΛΑΠΛΕΣ ΑΝΑΘΕΣΕΙΣ σελ STRINGS ΚΑΙ ΠΟΛΛΑΠΛΕΣ ΓΡΑΜΜΕΣ ΑΚΑΤΕΡΓΑΣΤΩΝ STRINGσελ ΛΟΓΙΚΕΣ ΠΡΟΕΠΙΛΟΓΕΣ σελ ΥΠΕΡΦΟΡΤΩΣΗ ΧΕΙΡΙΣΤΩΝ σελ Η SCALA ΕΚΠΛΗΣΣΕΙ ΤΗ JAVA σελ ΤΑΞΕΙΣ ΣΤΗ SCALA σελ ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΤΑΞΕΙΣ σελ ΚΑΘΟΡΙΣΜΟΣ ΠΕΔΙΩΝ, ΜΕΘΟΔΩΝ ΚΑΙ ΔΟΜΗΤΩΝ σελ. 52 2

3 4.3 ΕΠΕΚΤΑΣΗ ΜΙΑΣ ΤΑΞΗΣ σελ ΜΟΝΑΔΙΚΟ ΑΝΤΙΚΕΙΜΕΝΟ σελ ΑΥΤΟΝΟΜΑ ΚΑΙ ΣΥΝΟΔΕΥΤΙΚΑ ΑΝΤΙΚΕΙΜΕΝΑ σελ ΣΤΑΘΕΡΕΣ ΣΤΗ SCALA σελ ΛΟΓΙΚΗ ΔΑΚΤΥΛΟΓΡΑΦΗΣΗ σελ ΣΥΜΠΕΡΑΣΜΑ ΣΥΛΛΟΓΩΝ ΚΑΙ ΤΥΠΩΝ σελ Ο ΤΥΠΟΣ ANY σελ ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΟΝ ΤΥΠΟ NOTHING σελ Ο ΤΥΠΟΣ OPTION σελ ΣΥΜΠΕΡΑΣΜΑΤΑ ΕΠΙΣΤΡΟΦΗΣ ΤΥΠΩΝ ΜΕΘΟΔΟΥ σελ ΔΙΑΒΑΣΗ ΜΕΤΑΒΛΗΤΩΝ ΕΠΙΧΕΙΡΗΜΑΤΩΝ (VARARGS) σελ ΔΙΑΦΟΡΑ ΠΑΡΑΜΕΤΡΙΚΟΥ ΤΥΠΟΥ σελ ΛΕΙΤΟΥΡΓΙΚΕΣ ΤΙΜΕΣ ΚΑΙ ΠΕΡΑΤΩΣΕΙΣ σελ ΜΕΤΑΒΑΣΗ ΑΠΟ ΑΠΛΕΣ ΣΕ ΥΨΗΛΩΝ ΑΠΑΙΤΗΣΕΩΝ ΛΕΙΤΟΥΡΓΙΕΣ σελ ΛΕΙΤΟΥΡΓΙΚΕΣ ΤΙΜΕΣ σελ ΛΕΙΤΟΥΡΓΙΚΕΣ ΤΙΜΕΣ ΜΕ ΠΟΛΛΑΠΛΕΣ ΠΑΡΑΜΕΤΡΟΥΣ σελ CURRYING σελ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΕΙΤΟΥΡΓΙΚΩΝ ΤΙΜΩΝ σελ ΘΕΣΙΑΚΗ ΣΗΜΕΙΩΣΗ ΓΙΑ ΠΑΡΑΜΕΤΡΟΥΣ σελ ΕΚΤΕΛΕΣΗ ΓΥΡΩ ΑΠΟ ΤΗΝ ΠΡΟΤΥΠΗ ΜΕΘΟΔΟ σελ ΜΕΡΙΚΩΣ ΕΦΑΡΜΟΣΜΕΝΕΣ ΛΕΙΤΟΥΡΓΙΕΣ σελ ΠΕΡΑΤΩΣΕΙΣ σελ ΓΝΩΡΙΣΜΑΤΑ ΚΑΙ ΜΕΤΑΤΡΟΠΕΣ ΤΥΠΩΝ σελ ΓΝΩΡΙΣΜΑΤΑ σελ ΕΠΙΛΕΚΤΙΚΑ MIXINS σελ ΔΙΑΚΟΣΜΗΣΗ ΜΕ ΓΝΩΡΙΣΜΑΤΑ σελ ΜΕΘΟΔΟΣ ΚΑΘΥΣΤΕΡΗΜΕΝΗΣ ΣΥΝΔΕΣΗΣ ΣΤΑ ΓΝΩΡΙΣΜΑΤΑ σελ

4 7.5 ΥΠΟΝΟΟΥΜΕΝΕΣ ΜΕΤΑΤΡΟΠΕΣ ΤΥΠΩΝ σελ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΣΥΛΛΟΓΕΣ 8.1 ΚΟΙΝΕΣ ΣΥΛΛΟΓΕΣ SCALA 8.2 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΜΙΑΝ ΟΜΑΔΑ 8.3 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΕΝΑΝ ΧΑΡΤΗ 8.4 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΛΙΣΤΑ 8.5 Ο ΤΥΠΟΣ FOR σελ. 109 σελ. 109 σελ. 110 σελ. 113 σελ. 116 σελ ΑΝΤΙΣΤΟΙΧΙΑ ΠΑΡΑΓΟΝΤΩΝ ΚΑΙ ΚΑΝΟΝΙΚΟΙ ΤΥΠΟΙ 9.1 ΑΝΤΙΣΤΟΙΧΙΑ ΣΤΑΘΕΡΩΝ 9.2 ΑΝΤΙΣΤΟΙΧΙΑ ΜΠΑΛΑΝΤΕΡ 9.3 ΑΝΤΙΣΤΟΙΧΙΑ ΣΤΑΘΕΡΩΝ ΚΑΙ ΛΙΣΤΑΣ 9.4 ΑΝΤΙΣΤΟΙΧΙΑ ΤΥΠΩΝ ΚΑΙ ΦΡΟΥΡΩΝ 9.5 ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΣΤΑΘΕΡΕΣ ΣΧΕΔΙΩΝ ΣΕ ΤΥΠΟΥΣ CASE 9.6 ΣΤΟΙΧΕΙΑ ΑΝΤΙΣΤΟΙΧΙΣΗΣ ΠΡΟΤΥΠΩΝ 9.7 ΑΝΤΙΣΤΟΙΧΙΑ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΙΣ ΚΑΤΗΓΟΡΙΕΣ CASE 9.8 ΑΝΤΙΣΤΟΙΧΙΑ ΑΠΟΣΥΜΠΙΕΣΤΩΝ ΧΡΗΣΗΣ 9.9 ΚΑΝΟΝΙΚΟΙ ΤΥΠΟΙ 9.10 ΚΑΝΟΝΙΚΟΙ ΤΥΠΟΙ ΩΣ ΑΠΟΣΥΜΠΙΕΣΤΕΣ σελ. 126 σελ. 126 σελ.127 σελ.128 σελ.1 30 σελ.131 σελ.132 σελ.132 σελ.136 σελ.140 σελ.142 4

5 ΕΙΣΑΓΩΓΗ Υπάρχουν πολλές γλώσσες για να προγραμματίσεις στην J V M ^ αυτό το βιβλίο ελπίζω να σας πείσω πως αξίζει να αφιερώσετε χρόνο για να μάθετε τη γλώσσα προγραμματισμού SCALA. Η γλώσσα SCALA έχει σχεδιαστεί για να προσφέρει δυνατότητα επέκτασης του συστήματος καθώς και ενδυνάμωσής του αλλά και ελευθερία έκφρασης στο απεριόριστο. Η γλώσσα σε συνδυασμό με τις βιβλιοθήκες της επιτρέπει στο χρήστη να συγκεντρωθεί στον τομέα του ενδιαφέροντός του χωρίς να τον αποσπούν διάφορα προβλήματα εξαιτίας του χαμηλού επιπέδου δομής. Ζούμε σε μια εποχή όπου το hardware γίνεται ολοένα και πιο φθηνό αλλά ταυτόχρονα και πιο δυνατό. Οι χρήστες έχουν πλέον συσκευές με πολλαπλούς επεξεργαστές, ο καθένας από αυτούς με πολλαπλούς πυρήνες. Παρόλο που η JAVA μας εξυπηρέτησε τόσο καλά ως τώρα, δεν σχεδιάστηκε για να μπορεί να εκμεταλλευτεί την δύναμη που έχουμε σήμερα. Η SCALA επιτρέπει να χρησιμοποιήσεις όλη αυτή τη δύναμη και να δημιουργήσεις υψηλού επιπέδου εφαρμογές εύκολες στην κατανόηση και με δυνατότητα εκτέλεσης τους ακόμη και σε ένα υπερφορτωμένο δίκτυο. Θα ακολουθήσει μια περιήγηση στα οφέλη του λειτουργικού προγραμματισμού και η ίδια η Scala θα μας δείξει γιατί προσελκύει τόσο ενδιαφέρον. 1.1 ΓΙΑΤΙ SCALA; Η Scala είναι μια υβριδικά λειτουργική γλώσσα η οποία βασίζεται σε αντικείμενα που τοποθετούνται με βάση ιεραρχίας. Δημιουργώντας μια σύνθετη εφαρμογή στη Scala, τείνουμε σε ένα λειτουργικό τρόπο προγραμματισμού όπου γράφουμε ανοικτό κώδικα με κατάσταση "immutable, που σημαίνει ότι δεν μπορεί να αλλαχθεί. Παράλληλα η Scala μας παρέχει ένα actor-model το οποίο επιτρέπει στον χρήστη να σχεδιάσει πολύπλοκο κώδικα χωρίς την ανησυχία της περιπλοκής των δεδομένων καθώς επίσης και τον εφιάλτη εξέτασης των κλειδωμάτων και των εκδόσεων. 5

6 Τα οφέλη της Scala ωστόσο δεν περιορίζονται στις πολύπλοκες εφαρμογές. Μπορείτε επίσης να κατασκευάσετε δυναμικές και περιεκτικές εφαρμογές οι οποίες να είναι μέρος μιας πιο σύνθετης πολυεφαρμογής. Μπορείτε πολύ γρήγορα να βάλετε σε χρήση τις ισχυρές δυνατότητες της Scala,συμπεριλαμβανομένης της στατικής πληκτρολόγησης, των αμετάβλητων συλλογών αλλά και του κομψού συνδυασμού μοτίβων. Η υποστήριξη της Scala για λειτουργικό προγραμματισμό βοηθά τον χρήστη να γράψει περιεκτικό και εκφραστικό κώδικα. Χάρη στο υψηλό επίπεδο αφαιρετικής διαδικασίας, μπορούμε να έχουμε περισσότερα αποτελέσματα με λιγότερες γραμμές κώδικα. Το λειτουργικό αυτό στυλ βοηθά τόσο σε απλές εφαρμογές όσο και σε πιο σύνθετες. Υπάρχει ένας μεγάλος αριθμός από γλώσσες προγραμματισμού. Μία από αυτές είναι η Erlang της οποίας το μοντέλο συγχρονισμού είναι παρόμοιο της Scala.Παρόλα αυτά η τελευταία έχει δύο σημαντικά πλεονεκτήματα. Πρώτον είναι δυναμικά σχεδιασμένη και δεύτερον τρέχει στην JVM και λειτουργεί πολύ καλά σε συνδυασμό με την Java. Αυτά τα δύο χαρακτηριστικά της την κάνουν τον πρώτο υποψήφιο για τα διαφορετικά επίπεδα εφαρμογών σε μια επιχείρηση. Επίσης μπορείτε να την χρησιμοποιήσετε σε συνδυασμό με άλλες γλώσσες προγραμματισμού. Η Scala είναι κατά πολύ η μόνη διακεκριμένη δυναμικά σχεδιασμένη γλώσσα που παρέχει στο χρήστη λειτουργικό στυλ και μια πολύ καλή υποστήριξη συγχρονισμού. Η Jruby και η Groovy είναι επίσης δυναμικές γλώσσες αλλά δεν είναι λειτουργικές. Αν είστε έμπειρος προγραμματιστής Java και μάχεστε με αυτήν για πολύπλοκες εφαρμογές τότε η Scala θα σας φανεί πολύ χρήσιμη. Μπορείτε εύκολα να δώσετε τον κώδικά σας από την Java στον Scala actor και αυτός θα κρατήσει το νήμα σε απομόνωση. Για να επικοινωνείτε μεταξύ των νημάτων μπορείτε να χρησιμοποιήσετε το ελαφρύ ΑΡΙ της Scala στέλνοντας εύκολα μηνύματα. Αντί να προωθείτε τα νήματα και να περιορίζετε το συναγωνισμό από το συγχρονισμό, μπορείτε να χρησιμοποιήσετε το ξεκλείδωτο μήνυμα που περνά για να απολαύσετε τον αληθινό συναγωνισμό. Εάν έχετε εκτιμήσει 6

7 τη στατική δακτυλογράφηση και θέλετε να επωφεληθείτε από τις προσφορές υποστήριξης του μεταγλωττιστή, θα διαπιστώσετε ότι η στατική δακτυλογράφηση επιτρέπει στη Scala να εργαστεί χωρίς να μπαίνει εμπόδιο στο δρόμο σας. Θα απολαύσετε την δακτυλογράφηση χωρίς να πρέπει να δακτυλογραφήσετε τόσο μεγάλο κώδικα. Εάν ψάχνετε έναν υψηλότερου επιπέδου αφαιρετικό και εκφραστικό κώδικα, τότε θα σας προσελκύσει η περιεκτικότητα της Scala. Μπορείτε να κάνετε περισσότερα πράγματα με τη Scala χρησιμοποιώντας λιγότερο κώδικα. Θα βρείτε επίσης χρήσιμη την ευελιξία της Scala σε ότι έχει να κάνει με τους χειριστές και τις σημειώσεις για να δημιουργήσετε γλώσσες εξαρτώμενες από το πεδίο. Ωστόσο υπάρχει μια προειδοποίηση. Η εν συντομία περιεκτικότητα της Scala κλίνει κατά περιόδους προς την απόλυτη σαφήνεια, κάτι που κάνει τον κώδικα δύσκολα κατανοητό. Οι χειριστές και τα κατασκευάσματα της Scala μπορεί να είναι κάποιες φορές εκφοβιστικοί για έναν αρχάριο. Όσο εξοικειώνεστε όμως με τη Scala θα αρχίσετε να εκτιμάτε την περιεκτικότητα και να αποφεύγετε την απόλυτη σαφήνεια με αποτέλεσμα ο κώδικας να είναι κατανοητός και εύκολος στη διατήρησή του συγχρόνως. Η Scala δεν είναι μια οριστική πρόταση. Δεν χρειάζεται να πάει χαμένος ο χρόνος, τα χρήματα και η προσπάθεια που έχετε επενδύσει γράφοντας τον κώδικα σε Java γλώσσα. Μπορείτε να χτίσετε πλήρεις εφαρμογές εξ ολοκλήρου σε Scala ή να τις ανακατέψετε στην έκταση που επιθυμείτε με την Java και άλλες γλώσσες στη JVM. Έτσι ο κώδικας Scala μπορεί να είναι τόσο μικρός όσο ένα χειρόγραφο ή τόσο μεγάλος όσο μια ολοκληρωμένη επιχειρηματική εφαρμογή. Η Scala έχει χρησιμοποιηθεί για να χτίσει εφαρμογές σε διάφορες περιοχές συμπεριλαμβανομένων των τηλεπικοινωνιών, της κοινωνικής δικτύωσης, του σημασιολογικού ιστού, και της ψηφιακής διαχείρισης ενεργητικού. Η Apache Camel χρησιμοποιεί τη Scala για το DSL για να δημιουργήσει τους κανόνες δρομολόγησης. Ο Lift WebFramework είναι ένα ισχυρό πλαίσιο ανάπτυξης Ιστού που χτίζεται χρησιμοποιώντας τη Scala. Εκμεταλλεύεται πλήρως τα χαρακτηριστικά γνωρίσματα της Scala όπως η εν 7

8 συντομία περιεκτικότητα, η εκφραστικότητα, το ταίριασμα σχεδίων και ο συναγωνισμός. 1.2 ΤΙ ΕΙΝΑΙ Η SCALA; Η Scala είναι μια υβριδική λειτουργική γλώσσα προγραμματισμού. Δημιουργήθηκε από τον Martin Odesky και απελευθερώθηκε αρχικά το Ακολουθούν μερικά κύρια χαρακτηριστικά της Scala : Έχει ένα γεγονός βασισμένο στο πρότυπο του συναγωνισμού. Υποστηρίζει επιτακτικό και λειτουργικό ύφος ταυτόχρονα. Είναι καθαρά αντικειμενοστρεφής. Αναμιγνύεται καλά με τη Java. Επιβάλλει τη λογική στατική δακτυλογράφηση. Είναι συνοπτική και εκφραστική. Στηρίζεται σε ένα μικρό πυρήνα. Είναι ιδιαίτερα εξελικτική και χρειάζεται λιγότερο κώδικα για να δημιουργήσει υψηλής εκτέλεσης εφαρμογές. Ακολουθεί ένα σύντομο παράδειγμα που επισημαίνει πολλά από τα χαρακτηριστικά αυτά: Import scala.actors._ Import Actor. val symbols=list ( AAPL, GOOG, IBM, JAVA, MSFT ) val receiver =self val year= 2008 Symbols.foreach { symbol => Actor { receiver! getyearendclosing (symbol, year ) val (topstock, highestprice) = gettopstock (symbols.length) printf ( Top Stock of %d is %s closing at price %f\n, year, topstock, highestprice) 8

9 Μην αποσπάστε από την σύνταξη. Επικεντρωθείτε στη συνολική εικόνα προς το παρόν. Η λέξη "symbols αναφέρεται σε έναν αμετάβλητο κατάλογο που διατηρεί τα σύμβολα τηλετύπων αποθεμάτων. Περιτυλιγόμαστε μέσα σε κάθε ένα από τα σύμβολα και επικαλούμαστε έναν δράστη (actor). Οι δράστες της Scala κάνουν την εκτέλεση σε χωριστά νήματα. Έτσι ο φραγμός του κώδικα σε συνδυασμό με τους δράστες εκτελούν το δικό τους νήμα. Επικαλείται το (όχι ακόμη εφαρμοσμένο) αποτέλεσμα λειτουργίας getyearendclosing(). Το αποτέλεσμα αυτής της κλήσης στέλνεται έπειτα στον δράστη που άρχισε αυτό το αίτημα. Αυτό γίνεται χρησιμοποιώντας το ειδικό σύμβολο χτυπήματος (!). Πίσω στο κύριο νήμα καλούμε την (όχι ακόμη εφαρμοσμένη ) λειτουργία gettopstock(). Έτσι, μόλις εφαρμοστεί πλήρως ο προηγούμενος κώδικας, μπορούμε να τον χρησιμοποιήσουμε για να κοιτάξουμε επάνω στις τιμές κλεισίματος αποθεμάτων ταυτόχρονα. Ας δούμε τώρα την λειτουργία getyearendclosing(): def getyearendclosing (symbol : String, year : Int ) = { val url=http://ivhart.finance.yahoo.com/table.csv?s= + Symbol + &a=11&b=01&c= + year + &d=11&e=31&f= + year + &g=m val data = to.source.fromurl(url).mkstring val price =data.split( \n )(1).split(, )(4).toDouble (symbol,price) Σε αυτή τη σύντομη και γλυκιά λειτουργία, στέλνουμε ένα αίτημα στο και λαμβάνουμε τα στοιχεία αποθεμάτων σε σχήμα CSV. Αναλύουμε έπειτα τα στοιχεία και εξάγουμε την τιμή κλεισίματος στο τέλος του έτους. Μην ανησυχείτε για το σχήμα των στοιχείων που λαμβάνουμε αυτή τη στιγμή. Τώρα μας έμεινε να ασχοληθούμε με την εφαρμογή της μεθόδου gettopstock(), χάρη στην οποία θα λάβουμε τις τιμές κλεισίματος και θα 9

10 καθορίσουμε το υψηλά διατιμημένο stock. Ας δούμε πώς μπορούμε να το κάνουμε αυτό με λειτουργικό ύφος: def gettopstock (count : Int) : (String, Double ) = { (1 to count).foldleft(,0.0) { (previoushigh, Index) => receivewithin (10000) { case (symbol : String, price : Double) => if (price > previoushigh._2) (symbol, price) else previoushigh Γράψαμε τη μέθοδο gettopstock() χωρίς μια ενιαία ρητή λειτουργία ανάθεσης σε κάποια μεταβλητή. Πήραμε τον αριθμό των συμβόλων ως παράμετρο σε αυτή τη μέθοδο. Στόχος μας είναι να βρούμε το σύμβολο με την υψηλότερη τιμή κλεισίματος. Έτσι, ξεκινάμε με το αρχικό σύμβολο και μια υψηλή τιμή (",0.0) ως παράμετρο στη μέθοδο foldleft(). Χρησιμοποιούμε την παραπάνω μέθοδο για να μπορέσουμε να συγκρίνουμε τις αξίες κάθε συμβόλου και να καθορίσουμε την υψηλότερη. Χρησιμοποιώντας τη μέθοδο receivewithinq, λαμβάνουμε τις αξίες συμβόλων και τιμών από τους δράστες με τους οποίους ξεκινήσαμε. Η μέθοδος receivewithinq θα διακοπεί αν στο εν λόγω διάστημα δεν ληφθεί κάποιο μήνυμα. Μόλις λάβουμε ένα μήνυμα, καθορίζουμε εάν η λαμβανόμενη τιμή είναι υψηλότερη από αυτήν που έχουμε την περίοδο αυτή. Εάν είναι, χρησιμοποιούμε το νέο σύμβολο και την τιμή του ως την υψηλότερη για να την συγκρίνουμε με την επόμενη που θα λάβουμε. Διαφορετικά, χρησιμοποιούμε το προηγουμένως καθορισμένο σύμβολο (previoushigh) και την υψηλότερη τιμή. Οτιδήποτε επιστρέφουμε από τον κώδικα που συνδέεται με τη μέθοδο foldleft() το χρησιμοποιούμε ως παράμετρο στα πλαίσια κλήσης του επόμενου στοιχείου. Τέλος, το σύμβολο και η υψηλότερη τιμή επιστρέφουν από τη foldleft(). Αυτές ήταν εικοσιπέντε γραμμές κώδικα με πρόσβαση στον Ιστό προκειμένου να μπορέσουμε να αναλύσουμε την τιμή κλεισίματος των επίλεκτων συμβόλων τηλετύπων. Αφιερώστε μερικά λεπτά πάνω στον κώδικα για σιγουρευτείτε πως καταλάβατε τον τρόπο με τον οποίο λειτουργεί. Δείτε πώς η μέθοδος υπολόγισε την υψηλότερη τιμή χωρίς να μεταβάλλει οποιοδήποτε αντικείμενο ή μεταβλητή. 10

11 Ο κώδικας εξετάζει μόνο το αμετάβλητο κράτος. Κατά συνέπεια, δεν πρέπει να ενδιαφερθείτε για τον συγχρονισμό και τον ισχυρισμό στοιχείων. Δεν χρειάζεται ρητή δήλωση και αναμονή στις ακολουθίες. Το μήνυμα στέλνεται και λαμβάνεται σιωπηρά. Αν συγκεντρώσουμε όλο τον προηγούμενο κώδικα και τον εκτελέσουμε (τρέξουμε) θα προκύψει η ακόλουθη παραγωγή : Top stock of 2008 is GOOG closing at price Υποθέστε ότι η καθυστέρηση δικτύου είναι ίση με d δευτερόλεπτα και εσείς ενδιαφέρεστε για την ανάλυση n συμβόλων. Εάν γράφατε τον κώδικα που τρέχει διαδοχικά τότε αυτό θα διαρκούσε n*d δευτερόλεπτα. Η μεγαλύτερη καθυστέρηση στον κώδικα είναι η πρόσβαση στο δίκτυο. Εκτελούμε και αυτό ταυτόχρονα χωρίς να γράψουμε μεγάλο κώδικα και να καταβάλλουμε πολλή προσπάθεια. Φανταστείτε πώς θα είχατε εφαρμόσει το προηγούμενο παράδειγμα στην Java. Ο προηγούμενος κώδικας είναι διακριτικός από το πώς θα τον εφαρμόζατε στην Java με τρεις σημαντικούς τρόπους : Κατ αρχάς ο κώδικας είναι συνοπτικός. Εκμεταλλευτήκαμε διάφορα ισχυρά χαρακτηριστικά γνωρίσματα της Scala :δράστες, περατώσεις, συλλογές, ταίριασμα σχεδίων, tuples. Φυσικά δεν έχουμε εισαγάγει κανέναν από αυτούς ακόμη αφού ακόμη είστε στην εισαγωγή. Επικοινωνήσαμε μεταξύ των νημάτων χρησιμοποιώντας τη διαβίβαση μηνυμάτων. Έτσι δεν υπήρξε καμία ανάγκη για τη χρήση των μεθόδων wait() και notify(). Αν χρησιμοποιούσατε το παραδοσιακό νήμα API στην Java, ο κώδικας θα ήταν αρκετά πιο σύνθετος. Ο νεώτερος συναγωνισμός API της Java μας ανακουφίζει από εκείνο το φορτίο χρησιμοποιώντας την υπηρεσία εκτελεστών. Έτσι, συγκριτικά, θα βρείτε το πρότυπο μηνυμάτων 11

12 της Scala βασιζόμενο στο μοντέλο των δραστών, πολύ ευκολότερο και καλύτερο στη χρήση. Δεδομένου ότι χειριστήκαμε μόνο το αμετάβλητο κράτος, δεν χρειάστηκε να ξοδέψουμε χρόνο και προσπάθεια για τον ισχυρισμό και συγχρονισμό των στοιχείων. Η Scala παρέχει τα οφέλη της και σε απλές εφαρμογές (μίας ίνας). Επίσης σας παρέχει με την ελευθερία να επιλέξετε και να αναμίξετε δύο μορφές προγραμματισμού : το επιτακτικό ύφος που προωθείται στην Java και το καθαρά λειτουργικό ύφος χωρίς πολλές αναθέσεις. Δίνοντάς σας την άδεια να αναμίξετε αυτές τις δύο μορφές, η Scala σας αφήνει να επιλέξετε αυτό με το οποίο είστε πιο άνετοι στα πλαίσια ενός ενιαίου νήματος. Έτσι μπορείτε να καλέσετε τον κώδικα και να τον αναμίξετε με τον ήδη υπάρχοντα κώδικα της Java. Στη Scala όλα είναι ένα αντικείμενο. Παραδείγματος χάρη, το 2.toString() θα παραγάγει συντακτικό λάθος στην Java. Εντούτοις αυτό ισχύει στη Scalaκαλούμε την μέθοδο tostring() σε μια περίπτωση με ακέραιο. Προκειμένου λοιπόν να έχουμε καλή εκτέλεση και διαλειτουργικότητα με την Java, η Scala χαρτογραφεί τις περιπτώσεις ακεραίων στην τριανταδυάμπιτη αντιπροσώπευση ακεραίων. Η Scala συντάσσει το bytecode. Μπορείτε να το τρέξετε με τον ίδιο τρόπο που τρέχετε τα γραπτά προγράμματα χρησιμοποιώντας τη γλώσσα της Java. Μπορείτε να επεκτείνετε τις τάξεις της Java από τις τάξεις της Scala και αντίστροφα. Μπορείτε επίσης να χρησιμοποιήσετε τις τάξεις της Java στις τάξεις της Scala και αντίστροφα. Μπορείτε να προγραμματίσετε τις εφαρμογές σας χρησιμοποιώντας τις πολλαπλές γλώσσες και να είστε αληθινά πολύγλωσσοι προγραμματιστές. Μπορείτε να εκμεταλλευτείτε τη Scala σε εφαρμογές της Java εκεί όπου απαιτείται συναγωνισμός ή σύνοψη ( όπως τη δημιουργία γλωσσών εξαρτώμενων από το πεδίο). Η Scala είναι μία στατική δακτυλογραφημένη γλώσσα, αλλά αντίθετα από την Java, έχει τη λογική στατική δακτυλογράφηση. Η Scala εφαρμόζει το 12

13 συμπέρασμα των τύπων στην ισχύ που μπορεί. Έτσι αντί να διευκρινίζεται τον τύπο επανειλημμένα και περιττά, μπορείτε να στηριχθείτε στη γλώσσα για να μάθετε τον τύπο και να τον επιβάλετε μέσα στον υπόλοιπο κώδικα. Δεν εργάζεστε για το μεταγλωττιστή, αντί αυτού αφήνετε το μεταγλωττιστή να λειτουργήσει για εσάς. Παραδείγματος χάριν, το var i=1, αμέσως η Scala θεωρεί ότι το μεταβλητό i είναι ακέραιου τύπου (int). Εάν τώρα προσπαθήσουμε να ορίσουμε στο i την τιμή i=( haha ) τότε θα πάρουμε ένα λάθος σύνταξης με το ακόλουθο μήνυμα : Error. type mismatch; Found : java.lang.string( haha ) Required : Int I= haha Η Scala προτιμά τις συνοπτικές διαδικασίες. Η τοποθέτηση ενός ερωτηματικού (;) στο τέλος κάθε δήλωσης έχει γίνει δεύτερη φύση στους προγραμματιστές της Java. Αντιθέτως, στη Scala τα ερωτηματικά (;) είναι προαιρετικά καθώς και η τελεία (.) που εξαρτάται από το περιεχόμενο. Το ίδιο ισχύει και για τις παρενθέσεις. Έτσι, αντί να γράψουμε s1.equals(s2);, μπορούμε να γράψουμε si equals s2. Αφήνοντας εκτός παρενθέσεις, τελείες και ερωτηματικά, ο κώδικας μας κερδίζει μία υψηλή αναλογία σήματος και θορύβου. Γίνεται ευκολότερο να γραφτούν γλώσσες εξαρτημένες από το πεδίο. Μία από τις πιο ενδιαφέρουσες πτυχές της Scala είναι η εξελιξιμότητα. Μπορείτε να απολαύσετε μια συμπαθητική αλληλεπίδραση των λειτουργικών κατασκευασμάτων προγραμματισμού μαζί με τις ισχυρές βιβλιοθήκες της Java. Επίσης μπορείτε να δημιουργήσετε τις ιδιαίτερα εξελικτικές και ταυτόχρονες εφαρμογές της Java για να εκμεταλλευτείτε πλήρως τα πολυνηματώδη στους πολυπύρηνους επεξεργαστές χρησιμοποιώντας τις εγκαταστάσεις που παρέχονται στη Scala. Η πραγματική ομορφιά στη Scala είναι σε αυτό που δεν έχει. Αντίθετα από την Java, C#, και τη C++, η γλώσσα Scala έχει ένα πολύ μικρό πυρήνα με κανόνες χτισμένους μέσα σε αυτόν. Τα υπόλοιπα, συμπεριλαμβανομένων των 13

14 χειριστών, είναι μέρος της βιβλιοθήκης της Scala. Αυτή η διάκριση έχει μια εκτεταμένη συνέπεια. Επειδή η γλώσσα δεν κάνει από μόνη της πολλά είστε εσείς σε θέση να κάνετε περισσότερα με αυτήν. Είναι αληθινά επιδεκτική επέκτασης, και η βιβλιοθήκη της χρησιμεύει για μελέτη περιπτώσεων πάνω σε αυτή. 1.3 ΛΕΙΤΟΥΡΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Αναφέραμε και προηγουμένως ότι η Scala μπορεί να χρησιμοποιηθεί ως λειτουργική γλώσσα προγραμματισμού. Θα αφιερώσουμε μερικές σελίδες ώστε να πάρετε μια γεύση του λειτουργικού προγραμματισμού. Αρχίζουμε αντιπαραθέτοντας το επιτακτικό ύφος προγραμματισμού της Java. Εάν θέλουμε να βρούμε τη μέγιστη θερμοκρασία για μια δεδομένη ημέρα, θα μπορούσαμε να γράψουμε τον παρακάτω κώδικα σε Java : //Java code public static int findmax (List<Integer> temperatures) { int hightemperature = Integer.MIN_VALUE; for ( int temperature : temperatures ) { hightemperature = Math.max (hightemperature, temperature) ; return hightemperature ; Δημιουργήσαμε την μεταβαλλόμενη μεταβλητή hightemperarure και την τροποποιούμε συνεχώς μέσα στο βρόγχο. Ο κώδικας της Scala είναι ιδιαίτερα συνοπτικός και μπορεί να γίνεται κάποιες φορές και έντονος. Πρέπει να υποβάλλετε αρκετή προσπάθεια για να μάθετε τη γλώσσα. Αλλά μόλις τη μάθετε, θα είστε σε θέση να εκμεταλλευτείτε την εκφραστικότητα και τη δύναμή της. Ας ρίξουμε μια ματιά σε ένα άλλο παράδειγμα του λειτουργικού της ύφους. Υποθέστε ότι έχουμε έναν κατάλογο του οποίου τα στοιχεία παίρνουν διπλές τιμές από ότι στον αρχικό κατάλογο. Αντί να κάνουμε loop σε κάθε ένα στοιχείο για να το καταλάβουμε αυτό, ζητάμε να διπλασιάζονται τα στοιχεία που 14

15 επιθυμούμε και αφήνουμε τη γλώσσα να κάνει τη loop (περιτύλιξη), όπως παρουσιάζεται παρακάτω: val values = List (1, 2, 3, 4,5) val doublevalues = values.map (_ *2 ) Διαβάστε τη λέξη-κλειδί val σαν κάτι αμετάβλητο. Λέμε ουσιαστικά στην Scala ότι οι μεταβλητές values και doublevalues δεν μπορούν να αλλάξουν από τη στιγμή που δημιουργήθηκαν. Αν και μπορεί να μην μοιάζει, το _*2 είναι μία λειτουργία. Λέγεται ανώνυμη και αυτό διότι έχει μόνο σώμα αλλά όχι όνομα. Η κάτω παύλα (_) αντιπροσωπεύει το επιχείρημα που περνά σε αυτή την λειτουργία. Η ίδια η λειτουργία περνά ως επιχείρημα στη λειτουργία map. Η λειτουργία map() κάνει ένα πέρασμα από τη συλλογή του, και για κάθε στοιχείο, επικαλείται την ανώνυμη λειτουργία που δίνεται ως παράμετρος. Το γενικό αποτέλεσμα είναι ένας νέος κατάλογος και αποτελείται από τα στοιχεία που είναι διπλά στον αρχικό κατάλογο. 15

16 ΚΕΦΑΛΑΙΟ 2. ΞΕΚΙΝΩΝΤΑΣ ΜΕ ΤΗ SCALA Ας ξεκινήσουμε γράφοντας κώδικα Scala. Σε αυτό το κεφάλαιο θα εγκαταστήσετε τη Scala και θα εξασφαλίσετε ότι όλα δουλεύουν καλά στο σύστημά σας. 2.1 DOWNLOADING ΤΗ SCALA Η εκκίνηση στη Scala είναι πραγματικά εύκολη. Κατ αρχάς, κατεβάστε την πιο πρόσφατη έκδοση της Scala με μια επίσκεψη στο και κάντε κλικ στην επιλογή «Download Scala. Κατεβάστε την κατάλληλη έκδοση βάση της πλατφόρμας στην οποία είστε. Θα βρείτε την τρέχουσα έκδοση στην κορυφή της σελίδας. Παραδείγματος χάριν, για MAC OS X κατεβάστε την scala final.tar.gz. Για Windows Vista κατεβάστε την scala-2.7afinal.zip. Αν ενδιαφέρεστε για το API της Scala ή για τον πηγαίο κώδικα τότε θα πρέπει να κατεβάσετε και τα πρόσθετα αρχεία. Τα παραδείγματα που θα ακολουθήσουν έχουν εξεταστεί όλα με την έκδοση της Scala. Εάν είστε τύπος των άκρων, μια σταθερή έκδοση δεν θα σας ικανοποιήσει. Θα χρειαστεί να κατεβάσετε την πιο εξελιγμένη έκδοση της γλωσσικής εφαρμογής. Κάνοντας scroll στη σελίδα θα βρεθείτε στο τμήμα "Release Candidate και εκεί κατεβάστε την κατάλληλη για την πλατφόρμα σας απελευθερωμένη έκδοση. Διαδοχικά, εάν χρειάζεστε την απόλυτα πιο πρόσφατη έκδοση και είστε πρόθυμοι να διακινδυνεύσετε ζητήματα, μπορείτε αντί αυτού να επιλέξετε την nightly κατασκευή. Ανεξάρτητα από την έκδοση που επιλέξατε, θα χρειαστείτε επίσης και την έκδοση JDK 1.4 ή κάποια νεότερη της. Συστήνουμε τουλάχιστον την Java 5 έτσι ώστε να μπορέσετε να απολαύσετε τα πιο πρόσφατα γλωσσικά χαρακτηριστικά γνωρίσματα της Java στη Scala. 16

17 2.2.1 ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ SCALA ΣΤΑ WINDOWS Αποσυμπιέστε το αρχείο διανομής κάνοντας δεξί κλικ στο αρχείο scala- 2.7Afinal.zip στον Windows Explorer και επιλέξτε "Extract Here. Μεταφέρετε τον αποσυμπιεσμένο κατάλογο στην κατάλληλη τοποθεσία. Παραδείγματος χάριν, μεταφέρετε το αρχείο scala final στον κατάλογο C:\programs\scala. Υπάρχει ακόμη ένα βήμα. Θα χρειαστείτε να οργανώσετε το μονοπάτι για τον κατάλογο Scala bin. Για να συμβεί αυτό, θα πρέπει να πάτε στο Control Panel (επιτροπή ελέγχου) και να ανοίξετε την εφαρμογή "System ( συστήματα). Πλοηγηθείτε στο "Advanced system settings ( προηγμένες ρυθμίσεις συστήματος), επιλέξτε "Advanced (προηγμένο), και μετά επιλέξτε " Enviroment Variables (μεταβλητές περιβάλλοντος). Τροποποιήστε το μονοπάτι σας έτσι ώστε να συμπεριλάβετε μέσα σε αυτό τον κατάλογο Scala bin. Παραδείγματος χάριν, προσθέστε στο μονοπάτι σας το εξής: c:\programs\scala\scala final\bin. Να θυμάστε πως ξεχωρίζετε τους καταλόγους στο μονοπάτι σας χρησιμοποιώντας το ερωτηματικό (;). Σιγουρευτείτε ότι όλες οι ρυθμίσεις έχουν γίνει σωστά. Κλείστε οποιοδήποτε παράθυρο γραμμής εντολών έχετε ανοιχτό, διότι οι αλλαγές στις μεταβλητές του περιβάλλοντος δε θα εφαρμοστούν μέχρι να ανοίξετε πάλι το παράθυρο. Σε ένα νέο παράθυρο γραμμής εντολών πληκτρολογήστε scala- version, και σιγουρευτείτε ότι έχετε εγκαταστήσει τη σωστή έκδοση. Τώρα είστε έτοιμοι να ξεκινήσετε με τη Scala ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ SCALA ΣΕ UNIX-LIKE ΣΥΣΤΗΜΑΤΑ Έχετε μερικές επιλογές εάν θέλετε να εγκαταστήσετε τη Scala στο Unix-like σύστημά σας. Στη Mac Os X, μπορείτε να εγκαταστήσετε το MacPorts δίνοντας την εντολή sudo port install scala. Διαδοχικά, αποσυμπιέστε το αρχείο διανομής gunzip scala final.tar.gz. Έπειτα αποσυμπιέστε το αρχείο που χρησιμοποιεί tar -x f scala final.tar. Μετακινήστε τον ξετυλιγμένο κατάλογο προς την πιο κατάλληλη τοποθεσία. Παραδείγματος χάριν, αντιγράψτε το αρχείο scala final στον κατάλογο \opt\scala. 17

18 Υπάρχει ακόμη ένα βήμα: ρυθμίστε το μονοπάτι για τον κατάλογο Scala bin. Ανάλογα με το κέλυφος που χρησιμοποιείται, χρειάζεται να εκδώσετε τα κατάλληλα αρχεία σχεδιαγράμματος. Σε περίπτωση που χρειάζεστε κάποια βοήθεια, αναφερθείτε στην κατάλληλη τεκμηρίωση του κελύφους σας ή ανατρέξτε σε κάποιον που γνωρίζει. Παραδείγματος χάριν, για κάποιον που χρησιμοποιεί bash, πρέπει να εκδώσει το αρχείο ~/.bash_profile. Σε εκείνο το αρχείο, πρέπει να προσθέσει το /opt/scala/scala final/bin στο μονοπάτι της μεταβλητής περιβάλλοντος. Σιγουρευτείτε πως η οργάνωση σας πήγε όπως αναμενόταν. Κλείστε οποιαδήποτε ανοικτά παράθυρα επειδή οι αλλαγές στις μεταβλητές του περιβάλλοντος δεν θα εφαρμοστούν έως ότου ανοίξετε ένα νέο παράθυρο. Στο νέο τερματικό παράθυρο πληκτρολογήστε scala-version και σιγουρευτείτε ότι η έκδοση που μόλις εγκαταστήσατε είναι η σωστή. Τώρα είστε έτοιμοι να χρησιμοποιήσετε τη Scala. 2.3 ΚΑΝΟΝΤΑΣ ΜΙΑ ΒΟΛΤΑ ΜΕ ΤΗ SCALA Ο γρηγορότερος τρόπος για να δοκιμάσετε τη Scala είναι να χρησιμοποιήσετε τη γραμμή εντολών της. Σας επιτρέπει να «παίξετε» με μικρά αποκόμματα κώδικα, δίνοντάς σας ένα χρήσιμο εργαλείο με το οποίο μπορείτε να δοκιμάσετε γρήγορα το νέο κώδικα, ενώ γράφετε τις εφαρμογές. Αν στη γραμμή εντολών πληκτρολογήσετε scala, τότε θα δείτε ένα εισαγωγικό μήνυμα που ακολουθείται από μια υπαγόρευση: >scala Welcome to Scala version final (Java HotSpot Client VM, Java 1.5.0_16). Type in expressions to have them evaluated. Type : help for more information Scala> Κατά την υπαγόρευση, πληκτρολογούμε val number=6, ζητώντας την επιστροφή της μεταβλητής. Τότε το κέλυφος της Scala αποκρίνεται σε αυτό 18

19 συμπεραίνοντας ότι η μεταβλητή number είναι τύπου Int (ακέραιος) βασιζόμενη στον ορισμό που δώσαμε στη μεταβλητή (6) : Scala> val number=6 Number : int =6 Scala> Τώρα θα προσπαθήσουμε να δώσουμε στη μεταβλητή μας την τιμή 7, και η Scala θα αποκριθεί ως εξής: Scala> number=7 <console>:5: error : reassignment to val number =7 Η Scala μας ενημερώνει ότι δεν μπορεί να αναθέσει ξανά τη σταθερά number. Στην κονσόλα, ωστόσο, μπορούμε να επαναπροσδιορίσουμε τις σταθερές και τις μεταβλητές. Έτσι, μπορούμε να πληκτρολογήσουμε val number= 7 και η Scala θα το αποδεχτεί σιωπηρά : Scala> val number = 7 Number : int = 7 Scala> Ο επαναπροσδιορισμός των σταθερών και των μεταβλητών στο ίδιο πλαίσιο είναι εφικτός μόνο στο διαδραστικό κέλυφος και όχι στον πραγματικό κώδικα της Scala ή στο χειρόγραφο. Αυτή η ευελιξία καθιστά ευκολότερο τον πειραματισμό μέσα στο κέλυφος. Προσπαθήστε να πληκτρολογήσετε val list=list(1,2,3) και προσέξτε πως η Scala συμπεραίνει τον τύπο του καταλόγου και τον εκθέτει ως : list:list[int]=list(1,2,3). Οποιαδήποτε στιγμή που δεν θα είστε βέβαιοι για το τι θα προκύψει από μια έκφραση, μπορείτε πολύ γρήγορα να το δοκιμάσετε μέσα στο κέλυφος. 19

20 Μπορείτε να χρησιμοποιήσετε το επάνω βελάκι για να επαναφέρετε τις εντολές που γράψατε προηγουμένως. Μπορείτε ακόμη να επαναφέρετε εντολές από κάποια προηγούμενη επίκληση στο κέλυφος. Καθώς πληκτρολογείτε μια σειρά από κώδικα μπορείτε πατώντας Ctrl+A να βρεθείτε στην αρχή του κώδικα ή πατώντας Ctrl+E να βρεθείτε στο τέλος του. Το κέλυφος προσπαθεί να εκτελέσει ότι του δακτυλογραφείτε από τη στιγμή που θα του ζητήσετε επιστροφή αποτελεσμάτων (hit return). Εάν πληκτρολογήσετε κάτι ελλιπές και ζητήσετε επιστροφή, για παράδειγμα αν βρίσκεστε στη μέση καθορισμού μιας μεθόδου, το κέλυφος θα σας επιτρέψει να ολοκληρώσετε τον καθορισμό εάν βάλετε έναν κάθετο φραγμό ( ). Παρακάτω καθορίζω μια μέθοδο ispalindrome () σε δύο γραμμές, κατόπιν καλώ την μέθοδο δύο φορές και λαμβάνω τα ακόλουθα αποτελέσματα : Scala> def ispalindrome(str: String) = str == str.reverse.tostring () ispalindrome : (String) Boolean scal> ispalindrome( mom ) res1: Boolean = true scala> ispalindrome( dude ) res2 : Boolean = false scala> Όταν ολοκληρώσετε με το κέλυφος, μπορείτε να πληκτρολογήσετε quit ή exit για να βγείτε από το κέλυφος. Εκτός από την χρησιμοποίηση του κελύφους, μπορούμε να στείλουμε σύντομες δηλώσεις ή εκφράσεις στη Scala κάνοντας χρήση της επιλογής -e( εκτελέστε το επιχείρημα) : Scala -e println(\ Hello\ +args(0)+\:, \:+args(1)) Buddy Welcome to Scala Η Scala θα ανταποκριθεί με το ακόλουθο μήνυμα : Hello Buddy, Welcome to Scala 20

21 Χρησιμοποιήσαμε ( ) αντί για [ ] για να συντάξουμε ευρετήριο για τη μεταβλητή args. Αυτός είναι ένας ιδιωματισμός της Scala με τον οποίο θα ασχοληθούμε αργότερα. Εάν έχετε κώδικα Scala γραμμένο σε κάποιο αρχείο, μπορείτε να τον φορτώσετε μέσα στο κέλυφος χρησιμοποιώντας την επιλογή :load. Παραδείγματος χάριν, για να φορτώσετε ένα αρχείο ονομάτων script.scala, πληκτρολογήστε μέσα στο κέλυφος :load script.scala. Αυτή η επιλογή είναι χρήσιμη γιατί σας επιτρέπει να φορτώσετε και πειραματιστείτε με ήδη γραμμένες λειτουργίες και τάξεις. 2.4 Η SCALA ΣΤΗ ΓΡΑΜΜΗ ΕΝΤΟΛΩΝ Μπορεί το κέλυφος και η επιλογή -e να είναι κατάλληλοι τρόποι για να πειραματιστεί κανείς σε μικρά κομμάτια κώδικα, σύντομα όμως θα θελήσετε να αναβαθμίσετε την εκτέλεση του κώδικα της Scala που βρίσκεται σε αποθηκευμένα αρχεία. Η εντολή scala μπορεί να το κάνει αυτό για εσάς. Λειτουργεί είτε με το διαδραστικό τρόπο εφόσον δεν της παρέχετε κανένα επιχείρημα, είτε κατά δεσμίδες εάν της παρέχετε το όνομα ενός αρχείου. Το αρχείο μπορεί να είναι είτε χειρόγραφο αρχείο είτε αρχείο αντικειμένου. Εξ' ορισμού, μπορείτε να αφήσετε το εργαλείο να μαντέψει ποιο τύπο ή αρχείο του παρέχετε. Διαδοχικά, μπορείτε να το κατευθύνεται στο χειρισμό ενός αρχείου σαν χειρόγραφο αρχείο ή σαν αρχείο αντικειμένου με την επιλογή -howtorun. Τέλος, για να στείλετε ιδιότητες της Java, μπορείτε να χρησιμοποιήσετε το σχήμα -Dproperty=value. Ας υποθέσουμε ότι έχουμε ένα αρχείο με όνομα HelloWorld.scala : Println( Hello World, Welcome to Scala ) Μπορούμε να εκτελέσουμε το χειρόγραφο με την εντολή βοθ/θ HelloWorld.scala με τον παρακάτω τρόπο : 21

22 >scala HelloWorld.scala Hello World, Welcome to Scala > Μπορούμε να ακολουθήσουμε το όνομα του αρχείου με οποιαδήποτε επιχειρήματα θέλουμε να στείλουμε στο πρόγραμμα. Η δυνατότητα που μας δίνεται ώστε να μπορούμε να γράψουμε κώδικα Scala σε ένα αρχείο και να το τρέξουμε σαν χειρόγραφο είναι αρκετά βολική. Μπορείτε να το χρησιμοποιήσετε αυτό για να γράψετε κώδικα σχετικό με τη συντήρηση συστημάτων ή τους διοικητικούς στόχους και να τον τρέξετε από την γραμμή εντολών ή από το αγαπημένο σας δίαυλο IDE χωρίς να κάνετε κάποια έξτρα κίνηση για τη σύνταξη του. Το εργαλείο της Scala συντάσσει το χειρόγραφο σας σε bytecode μέσα στη μνήμη και το εκτελεί. Τρέχει τον κώδικα στην παραδοσιακή μέθοδο main() που ανήκει σε μια main τάξη. Έτσι, όταν τρέχετε το χειρόγραφο, τρέχετε την μέθοδο main() της Main τάξης. Εάν θέλετε να δείτε το bytecode που παράγεται, χρησιμοποιήστε την επιλογή -savecompiled πριν από το όνομα του αρχείου και το εργαλείο τη σώζει σε ένα JAR αρχείο. 2.5 ΕΚΤΕΛΩΝΤΑΣ ΚΩΔΙΚΑ SCALA ΣΑΝ ΧΕΙΡΟΓΡΑΦΟ Από τη στιγμή που χρησιμοποιείτε τη Scala για να γράψετε χειρόγραφα, θα σας φαινόταν πολύ πιο εύκολο αν απλά τρέχατε το αρχείο Scala σαν ένα χειρόγραφο κελύφους. ΕΚΤΕΛΩΝΤΑΣ ΣΑΝ ΧΕΙΡΟΓΡΑΦΟ ΣΕ UNIX-LIKE ΣΥΣΤΗΜΑΤΑ Στα Unix-like συστήματα μπορείτε να κάνετε το ίδιο αν καθορίσετε ένα προοίμιο κελύφους. Ακολουθεί ένα παράδειγμα : #!/usr/bin/env scala!# println(:hello:+args( 0) ) Σιγουρευτείτε ότι το αρχείο Script.scala μπορεί να εκτελεστεί πληκτρολογώντας chmod+xscript.scala. Έπειτα μπορείτε πολύ απλά να το 22

23 τρέξετε πληκτρολογώντας./script.scala Buddy στην γραμμή εντολών όπου Buddy είναι το επιχείρημα που θα περάσεις το χειρόγραφο. Ακολουθεί το αποτέλεσμα του προηγούμενης κλήσης : Hello Buddy ΤΡΕΧΟΝΤΑΣ ΣΑΝ ΧΕΙΡΟΓΡΑΦΟ ΣΕ WINDOWS Μπορείτε να διαμορφώσετε τα Windows έτσι ώστε να έχετε τη δυνατότητα να επικαλείστε την Scala κάθε φορά που τρέχετε ένα αρχείο της. Για να συμβεί αυτό απλά κάνετε διπλό κλικ σε ένα χειρόγραφο της Scala με επέκταση scala. Το λογισμικό των Windows θα «παραπονεθεί» μην μπορώντας να ανοίξει το αρχείο και θα σας ζητήσουν να επιλέξετε ένα πρόγραμμα από των κατάλογο των ήδη εγκατεστημένων προγραμμάτων στον υπολογιστή σας. Βρείτε την τοποθεσία στην οποία βρίσκεται εγκατεστημένη η Scala και επιλέξτε το.scala.bat. Τώρα μπορείτε να τρέξετε το πρόγραμμα κάνοντας διπλό κλικ στον Windows Explorer ή από την γραμμή εντολών χωρίς να προτάξετε την εντολή.scala. Όταν κάνετε λοιπόν διπλό κλικ στο πρόγραμμα μέσα από τον εξερευνητή των Windows θα δείτε ένα παράθυρο να προβάλλετε μπροστά δείχνοντας το αποτέλεσμα της εκτέλεσης ενώ σε πολύ γρήγορα απενεργοποιείται. Αν επιθυμείτε να διατηρήσετε το παράθυρο ανοικτό μπορείτε να δείξετε το αρχείο σας σε ένα.bat αρχείο το οποίο θα τρέξει στη Scala και μετά θα διακοπεί. Για να συμβεί αυτό θα πρέπει να κάνετε δεξί κλικ στο πρόγραμμα της Scala, να επιλέξετε "Open with... (άνοιξε με...) και αφού βρείτε να επιλέξετε το αρχείο.bat. 2.6 Η SCALA ΑΠΟ ΕΝΑΝ IDE Όπως οι περισσότεροι Java προγραμματιστές, έτσι και εσείς είναι πολύ πιθανό να χρησιμοποιείτε έναν IDE για την ανάπτυξη των εφαρμογών σας. Αν χρησιμοποιείτε τους Eclipse, IntelliJ IDEA, ή NetBeans, μπορείτε να κάνετε χρήση των plug-ins της Scala. Αυτοί οι IDE σας επιτρέπουν να απολαύσετε με τη Scala τις ίδιες εγκαταστάσεις με αυτές που ξέρατε από την Java για έκδοση 23

24 και εργασία. Μπορείτε να χρησιμοποιήσετε τις συντακτικές λεπτομέρειες, την ολοκλήρωση του κώδικα, τη διόρθωση, την κατάλληλη εγκοπή και ούτω καθεξής. Επιπλέον μπορείτε να αναμείξετε και να αναφέρετε τη Scala και τη Java στο ίδιο πρόγραμμα. Για να εγκαταστήσετε τα plug-ins της Scala για τον Eclipse, ακολουθήστε τις οδηγίες που θα βρείτε στο 2.7 ΑΠΟΚΩΔΙΚΟΠΟΙΩΝΤΑΣ ΤΗ SCALA Δείτε πως μπορείτε να γράψετε μια τάξη και να την αποδελτιώσετε χρησιμοποιώντας τον συντάκτη scalac. Στο παρακάτω παράδειγμα, προσδιορίζουμε ένα αντικείμενο με όνομα Sample. Όπως θα μάθετε αργότερα, η Scala δεν υποστηρίζει στατικές μεθόδους. Έτσι για να μπορείτε να γράψετε μια στατικά την μέθοδο main() θα πρέπει να ορίσετε ένα αντικείμενο. Object Sample { Def main(args : Array[String]) = println( Hello Scala ) Μπορούμε να το αποδελτιώσουμε χρησιμοποιώντας την εντολή scalac Sample.scala. Μπορούμε να το τρέξουμε είτε κάνοντας χρήση του εργαλείου scala είτε της εντολής Java. Για να χρησιμοποιήσουμε το εργαλείο scala απλά πληκτρολογούμε scala Sample. Για να χρησιμοποιήσουμε το εργαλείο java θα πρέπει να καθορίσουμε το classpath για την scala-library jar. Ακολουθεί ένα παράδειγμα αποδελτίωσης με το εργαλείο scalac και στη συνέχεια τρέχουμε το πρόγραμμα πρώτα με το εργαλείο scala και έπειτα με το java : >scalac Sample.scala >scala Sample Hello Scala >java -classpath /opt/scala/ scala final/lib/scala-library.jar:. Sample Hello Scala > ΚΕΦΑΛΑΙΟ 3. ΕΠΙΤΑΧΥΝΟΝΤΑΣ ΣΤΗ SCALA 24

25 Η Scala σας επιτρέπει να στηριχτείτε στις δεξιότητες της Java. Σε αυτό το κεφάλαιο, θα ξεκινήσουμε σε γνωστό έδαφος με τον κώδικα της Java και θα κινηθούμε έπειτα προς τη Scala. Η Scala είναι παρόμοια με την Java σε κάποια σημεία αλλά και πολύ διαφορετική σε άλλα. Η Scala ευνοεί τον καθαρό προσανατολισμό του αντικειμένου αλλά χαρτογραφεί τύπους σχετικούς με τύπους της Java όπου είναι δυνατόν. Η Scala υποστηρίζει τη Java στο επιτακτικό ύφος κωδικοποίησης αλλά υποστηρίζει συγχρόνως και το λειτουργικό ύφος. Βάλτε μπρος τον αγαπημένο σας συντάκτη και είμαστε έτοιμοι να κάνουμε μια βόλτα μέσα στη Scala. 3.1 Η SCALA ΣΑΝ ΣΥΝΟΠΤΙΚΗ JAVA Η Scala έχει μια πολύ υψηλή πυκνότητα κώδικα με την οποία δακτυλογραφείτε λιγότερα για να πετύχετε περισσότερα. Ας ξεκινήσουμε με ένα παράδειγμα κώδικα Java : //Java code public class Greetings { public static void main (String[] args) { for (int i=1; i<4; i++) { system.out.print( I +, ); system.out.println( Scala Rocks!!! ); Ακολουθεί το αποτέλεσμα: 1,2,3, Scala Rocks!!! Η Scala καθιστά πολλά πράγματα στον προηγούμενο κώδικα προαιρετικά. Κατ αρχάς, δεν την ενδιαφέρει αν χρησιμοποιήσαμε ερωτηματικά (;). Δεύτερον, δεν υπάρχει κάποιο όφελος για τον κώδικα το να βρίσκετε μέσα στην τάξη Greetings σε ένα τόσο απλό παράδειγμα, οπότε ξεφορτωνόμαστε και αυτό. Τρίτον, δεν χρειάζεται να διευκρινιστεί ο τύπος της μεταβλητής i. Η Scala είναι 25

26 αρκετά έξυπνη ώστε να συμπεράνει πως το i είναι ακέραιος αριθμός. Τέλος, η Scala μας επιτρέπει να χρησιμοποιήσουμε την println χωρίς να πληκτρολογήσουμε System.out.println. Εδώ είναι ο προηγούμενος κώδικας απλοποιημένος σε Scala : for (I <- 1 to 3 ) { Print (I +, ) println( Scala Rocks!!! ) val vs var Μπορείτε να ορίσετε μια μεταβλητή χρησιμοποιώντας είτε το val είτε το var. Η μεταβλητή που ορίστηκε χρησιμοποιώντας το val είναι αμετάβλητη και συνεπώς δεν μπορεί να αλλαχθεί εφόσον οριστεί. Οι μεταβλητές που ορίστηκαν με var, ωστόσο, είναι μεταβλητές και άρα μπορούν να αλλαχθούν όσες φορές το επιθυμείτε. Η σταθερότητα ισχύει για τη μεταβλητή και όχι για τις περιπτώσεις στις οποίες αναφέρεται αυτή. Παραδείγματος χάριν, αν γράψουμε val buffer=new StringBuffer(), δεν μπορούμε να αλλάξουμε την περίπτωση στην οποία αναφέρεται το Buffer. Εντούτοις, μπορούμε να τροποποιήσουμε την περίπτωση στην οποία αναφέρεται το Buffer χρησιμοποιώντας μεθόδους όπως η append(). Από την άλλη, αν καθορίσουμε μια περίπτωση String χρησιμοποιώντας val str= Hello, δεν θα μπορέσουμε και πάλι να την τροποποιήσουμε διότι το String είναι αμετάβλητο. Μπορείτε να καταστήσετε την περίπτωση μιας τάξης αμετάβλητη, ορίζοντας όλα της τα πεδία με val και παρέχοντας όλες τις μεθόδους που σας επιτρέπουν να διαβάσετε και όχι να τροποποιήσετε την κατάσταση της περίπτωσης. 26

27 Στη Scala, καλό θα ήταν να προτιμάτε την χρήση του var όσο το δυνατόν περισσότερο γιατί με αυτόν τον τρόπο προωθείται η σταθερότητα και το λειτουργικό ύφος. Για να τρέξετε το προηγούμενο χειρόγραφο της Scala, πληκτρολογήστε scala Greetings.scala ή τρέξτε το μέσα από τον δίαυλο IDE. Πρέπει να δείτε το παρακάτω: 1,2,3, Scala Rocks!!! Η δομή των βρόγχων στη Scala είναι αρκετά ελαφριά. Απλά αναφέρετε ότι οι τιμές του δείκτη i θα πάρουν τιμές από 1 έως 3. Το αριστερό βέλος καθορίζει ένα val, όχι ένα var, και η δεξιά πλευρά της είναι η παράγωγη έκφραση. Σε κάθε επανάληψη, ένα νέο val δημιουργείτε και αρχικοποιείται από τα διαδοχικά στοιχεία των παραγόμενων τιμών. Η σειρά που παρήχθη στον προηγούμενο κώδικα περιλαμβάνει το χαμηλότερο δεσμό (1) και τον ανώτερο (3). Μπορείτε να αποκλείσετε τον ανώτερο δεσμό από τη σειρά μέσω της μεθόδου to() αντί της μεθόδου top(). for (I <- until 3) { print (I +, ) println( Scala Rocks!!! ) Και θα πάρετε το παρακάτω αποτέλεσμα: 1,,2, Scala Rocks!!! Οι μέθοδοι to() και until() είναι πραγματικές μέθοδοι στο RichInt, εκεί όπου το int σαν αποτέλεσμα του μεταβλητού i μετατρέπεται σιωπηρά. Επιστρέφει μια 27

28 περίπτωση Range. Έτσι, η κλήση 1 to 3 είναι ισοδύναμη με 1.to(3), αλλά η πρώτη επιλογή είναι πιο κομψή. Στο προηγούμενο παράδειγμα, φαίνεται ότι έχουμε επανεκχωρήσει το i κατά την επανάληψη μέσα στον βρόγχο. Ωστόσο, το i δεν είναι τύπου var, αλλά τύπου val. Κάθε φορά μέσα στον βρόγχο δημιουργούμε ένα διαφορετικό val που ονομάζεται i. Σημειώστε ότι δεν μπορούμε να αλλάξουμε ακούσια την αξία του i μέσα στον βρόγχο επειδή το i είναι αμετάβλητο. Έτσι κάναμε ήδη ένα βήμα προς το λειτουργικό ύφος. Μπορούμε επίσης να εκτελέσουμε το βρόγχο σε ένα πιο λειτουργικό ύφος χρησιμοποιώντας τη μέθοδο foreach() : (1 to 3).foreach(i=> print(i +, ) ) println ( Scala Rocks!!! ) Ακολουθεί το αποτέλεσμα: 1,2,3, Scala Rocks!!! Το προηγούμενο παράδειγμα είναι συνοπτικό και δεν υπάρχει καμία ανάθεση σε αυτό. Χρησιμοποιήσαμε τη μέθοδο foreach() της τάξης Range. Αυτή η μέθοδος δέχεται μια λειτουργική αξία σαν παράμετρο. Έτσι, μέσα στις παρενθέσεις, παρέχουμε το σώμα του κώδικα που δέχεται ένα επιχείρημα και το οποίο στο παράδειγμά μας είχε όνομα i. Το => διαχωρίζει τον κατάλογο παραμέτρων στα αριστερά και την εφαρμογή στα δεξιά. Οι τελείες και οι παρενθέσεις είναι προαιρετικές. 28

29 Η Scala σας επιτρέπει να παραλείψετε τις τελείες και τις παρενθέσεις εάν μια μέθοδος παίρνει μία ή καμία παράμετρο. Εάν η μέθοδος παίρνει περισσότερες από μια παραμέτρους πρέπει να χρησιμοποιήσετε τις παρενθέσεις αλλά οι τελείες παραμένουν προαιρετικές. Έχετε ήδη ανακαλύψει τα οφέλη του : a+b που στην πραγματικότητα είναι a+(b) καθώς και 1 to 3 που στην πραγματικότητα είναι 1.to(3). Μπορείτε να εκμεταλλευτείτε την ελαφριά σύνταξη για να δημιουργήσετε κώδικα που θα διαβάζει με φυσικό τρόπο. Παραδείγματος χάριν, υποθέστε ότι ορίζουμε την μέθοδο turn() στην τάξη Car: def turn(direction: String) //... Μπορούμε να καλέσουμε την προηγούμενη μέθοδο με μια πιο ελαφριά σύνταξη ως εξής : Car turn right Απολαύστε τις προαιρετικές τελείες και παρενθέσεις για να μειώσετε τον επιπλέον κώδικα. 3.2 ΤΑΞΕΙΣ ΤΗΣ SCALA ΓΙΑ JAVA PRIMITIVES primitive data types = είναι διάφοροι τύποι μεταβλητών που μπορούμε να έχουμε σε ένα πρόγραμμα Java και δεν προκύπτουν από κάποια γονική κλάση. Παρακάτω θα αναφερόμαστε σε primitives και όχι στο τι σημαίνουν αυτοί. 29

30 Literal = είναι μια σταθερά της οποίας ο αριθμός είναι κινητής υποδιαστολής. Παρακάτω θα αναφερόμαστε σε literal και όχι στην έννοια αυτού. Η Java παρουσιάζει μια διασπασμένη άποψη του κόσμου. Υπάρχουν αντικείμενα αλλά υπάρχουν και primitives όπως int, double, και ούτω καθεξής. Η Scala τα μεταχειρίζεται όλα σαν αντικείμενα. Η Java μεταχειρίζεται τα primitives διαφορετικά από τα αντικείμενα. Η έκδοση 5 της Java, επιτρέπει να στέλνετε primitives σε μεθόδους που περιμένουν να λάβουν αντικείμενα. Ωστόσο, η Java δεν σας επιτρέπει να καλέσετε μια μέθοδο με ένα primitive όπως για παράδειγμα : 2.toString(). Από την άλλη, η Scala τα μεταχειρίζεται όλα σαν αντικείμενα. Αυτό σημαίνει ότι μπορείτε να καλείτε μεθόδους με literals, όπως ακριβώς θα καλούσατε μεθόδους με αντικείμενα. Στον παρακάτω κώδικα, δημιουργούμε μια περίπτωση ακεραίου της Scala και το στέλνουμε στη μέθοδο ensurecapacity() της java.util.arraylist, η οποία περιμένει ένα ακέραιο primitive της Java. Class ScalaInt { def playwithint() { val capacity : Int=10 val list = new java.util.arraylist[string] list.ensurecapacity(capacity) Στον προηγούμενο κώδικα, η Scala μεταχειρίστηκε τη Scala.Int σαν ένα ακέραιο primitive της Java. Αυτό έχει σαν αποτέλεσμα να μην υπάρξει απώλεια απόδοσης στο χρόνο εκτέλεσης για τις μετατροπές των τύπων. Υπάρχει ένας ανάλογος μαγικός τρόπος που σας επιτρέπει να καλέσετε μεθόδους όπως η to() με ακέραιο. Όταν η Scala αναγνωρίσει ότι ο ακέραιος δεν μπορεί να χειριστεί το αίτημά σας, τότε η Scala ήσυχα εφαρμόζει τη μέθοδο intwrapper() για να μετατρέψει τον ακέραιο σε scala.runtime.richint και έπειτα επικαλείται την μέθοδο to() σε αυτήν. 30

31 Οι τάξεις όπως οι RichInt, RichDouble, RichBoolean και ούτω καθεξής ονομάζονται rich wrapper classes. Παρέχουν ευκολίες στις μεθόδους και μπορούν να χρησιμοποιηθούν για τις τάξεις της Scala που αντιπροσωπεύουν τους primitive τύπους κα String της Java. 3.3 TUPLES ΚΑΙ ΠΟΛΛΑΠΛΕΣ ΑΝΑΘΕΣΕΙΣ tuples = είναι ένα σύνολο πλειάδων όπου κάθε πλειάδα είναι μια ακολουθία γνωρισμάτων (attributes) και για την οποία ισχύει t=<v1,v2,...vn>. Παρακάτω θα αναφερθούμε σε tuples και όχι στην έννοια αυτών. Ας υποθέσουμε ότι έχουμε μια λειτουργία που επιστρέφει πολλαπλές τιμές. Παραδείγματος χάριν, ας επιστρέψουμε όνομα, επώνυμο και διεύθυνση ηλεκτρονικού ταχυδρομείου ενός προσώπου. Ένας τρόπος για να το γράψουμε στην Java είναι να επιστρέψουμε μια περίπτωση της τάξης PersonInfo που δεσμεύει τα κατάλληλα πεδία που περιέχουν τα δεδομένα που θέλουμε να επιστρέψουμε. Διαδοχικά, μπορούμε να επιστρέψουμε ένα String[] ή ένα ArrayList που θα περιέχει αυτές τις τιμές και κάνοντας μια επανάληψη στο αποτέλεσμα θα προσκομίσουμε αυτές τις τιμές. Βέβαια υπάρχει και απλούστερος τρόπος για να γίνει αυτό στη Scala. Η Scala υποστηρίζει τα tuples και τις πολλαπλές αναθέσεις. Tuple είναι μια αμετάβλητη ακολουθία αντικειμένων που δημιουργείται από τιμές μεταξύ τους διαχωρισμένες με κόμμα. Για παράδειγμα, τα παρακάτω αντιπροσωπεύουν Tuples με τρία αντικείμενα: ( VenKat, Subramaniam, Μπορούμε να ορίσουμε τα στοιχεία από τα tuple με τα πολλαπλά vars ή vals παράλληλα, όπως φαίνεται στο παρακάτω παράδειγμα: Def getpersoninfo(primarykey : Int) = { //Assume primarykey is used to fetcha person s info... //Here response is hard-coded ( VenKat, :Subramaniam, ) 31

32 val (firstname, lastname, address) = getpersoninfo(1) println( First Name is + firstname) println( Last Name is + lastname) println( Address is + address) Ακολουθεί το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα: First Name is Venkat Last Name is Subramaniam Address is Τι θα συμβεί αν προσπαθήσουμε να ορίσουμε το αποτέλεσμα της μεθόδου σε λιγότερες ή περισσότερες μεταβλητές? Η Scala θα έχει το «νου» της για εσάς και αν συμβεί αυτό θα εκθέσει λάθος. Η έκθεση λάθους θα γίνει στο χρόνο της σύνταξης υποθέτοντας ότι συντάσσετε τον κώδικα Scala και δεν τον τρέχετε σαν χειρόγραφο. Παραδείγματος χάριν, ορίζουμε το αποτέλεσμα της κλήσης μιας μεθόδου σε λιγότερες μεταβλητές από ότι στο tuple : Def getpersoninfo(primarykey : Int ) = { ( VenKat, :Subramaniam, ) val (firstname, lastname) = getpersoninfo(1) Η Scala θα αναφέρει αυτό το λάθος : (fragment of MultipleAssignment2.scala) : 5 : error : constructor cannot be instantiated to expected type; found : ( T1,T2) required : (java.lang.string, java.lang.string, java.lang.string) val (firstname, lastname) = getpersonlnfo(l) Αντί της ανάθεσης των τιμών, μπορείτε επίσης να έχετε πρόσβαση στα μεμονωμένα στοιχεία των tuple. Παραδείγματος χάριν, αν εκτελέσουμε το val info=getpersoninfo(1), τότε θα αποκτήσουμε πρόσβαση στο πρώτο στοιχείο 32

33 χρησιμοποιώντας τη σύνταξη info._1, το δεύτερο στοιχείο χρησιμοποιώντας το info._2, και ούτω καθεξής. Τα tuples είναι χρήσιμα όχι μόνο στις πολλαπλές αναθέσεις. Είναι χρήσιμα στο να περάσουν ένα κατάλογο με τις τιμές των στοιχείων ως μηνύματα μεταξύ των δραστών στον ταυτόχρονο προγραμματισμό. Η συνοπτική σύνταξη θα σας βοηθήσει να κρατήσετε τον κώδικα συνοπτικό στην πλευρά του αποστολέα μηνυμάτων. Στην πλευρά του λήπτη, μπορείτε να χρησιμοποιήσετε το ταίριασμα σχεδίων για να λάβετε και να επεξεργαστείτε τον κώδικα συνοπτικά. 3.4 STRINGS ΚΑΙ ΠΟΛΛΑΠΛΕΣ ΓΡΑΜΜΕΣ ΑΚΑΤΕΡΓΑΣΤΩΝ STRING Το String στη Scala δεν είναι τίποτα άλλο παρά το java.lang.string. Μπορείτε να χρησιμοποιήσετε το String όπως ακριβώς το κάνατε και στη Java. Ωστόσο, η Scala παρέχει μερικές πρόσθετες ευκολίες κάθε φορά που δουλεύετε με String. Η Scala μετατρέπει αυτόματα ένα String σε scala.runtime.richstring. Αυτό σας επιτρέπει να εφαρμόσετε εύκολα κάποιες μεθόδους όπως capitalize(), lines() και reverse. Στη Scala είναι πολύ απλό να δημιουργήσετε ένα string που να τρέχει τις πολλαπλές γραμμές. Απλά τοποθετήστε τις πολλαπλές γραμμές των σειρών μέσα σε τρία quotesf... ). Παρακάτω δημιουργούμε μια σειρά (String) που τρέχει τρεις γραμμές : Val str = In his famous inaugural speech, John F. Kennedy said And so, my fellow Americans : ask not what your country can do for you - ask what you can do for your country. He then proceeded to speak to the citizens of the World... Println(str) Ακολουθεί το αποτέλεσμα : In his famous inaugural speech, John F. Kennedy said And so, my fellow Americans : ask not what your country can do for you - ask what you can do for your country. He then proceeded to speak to the citizens of the World... 33

34 Η Scala σάς επιτρέπει να ενσωματώσετε τα διπλά quotes μέσα στις σειρές σας. Η Scala πήρε το περιεχόμενο από τα τριπλά διπλά quotes και αυτό ονομάζεται ακατέργαστο string στη Scala.Η Scala πήρε τη σειρά τελείως κυριολεκτικά. Δεν θα θέλαμε όμως να έχουμε μέσα στο String τις εγκοπές του κώδικα. Έτσι μπορούμε να χρησιμοποιήσουμε για ευκολία τη μέθοδο stripmargin() του RichString όπως παρακάτω : Val str = In his famous inaugural speech, John F. Kennedy said And so, my fellow Americans : ask not what your country can do for you - ask what you can do for your country. He then proceeded to speak to the citizens of the World....stripMargin Println(str) Η μέθοδος stripmargin() αφαιρεί όλα τα κενά ή τους χαρακτήρες ελέγχου πριν από την κύρια διασωλήνωση( ). Εάν το σύμβολο της διασωλήνωσης εμφανίζεται οπουδήποτε αλλού εκτός της κυρίαρχης θέσης σε κάθε γραμμή, τότε έχει διατηρηθεί. Εάν για εσάς το σύμβολο της διασωλήνωσης είναι ιερό, τότε μπορείτε να χρησιμοποιήσετε μια παραλλαγή της μεθόδου stripmargin() με έναν άλλο χαρακτήρα περιθωρίου της επιλογής σας. Ακολουθεί το παράγωγο του προηγούμενου κώδικα: In his famous inaugural speech, John F. Kennedy said And so, my fellow Americans : ask not what your country can do for you - ask what you can do for your country. He then proceeded to speak to the citizens of the World... Θα βρείτε τις ακατέργαστες σειρές πολύ χρήσιμες κατά τη δημιουργία των κανονικών εκφράσεων. Είναι ευκολότερο να δακτυλογραφηθεί και να διαβαστεί ως \d2:\d2 από ότι ως \\d2:\\d2. 34

35 3.5 ΛΟΓΙΚΕΣ ΠΡΟΕΠΙΛΟΓΕΣ Η Scala έχει μερικές προεπιλογές που καθιστούν τον κώδικα συνοπτικό και ευκολότερο στο να διαβαστεί και να γραφεί. Εδώ είναι μερικά από αυτά τα χαρακτηριστικά γνωρίσματα : Υποστηρίζει χειρόγραφα. Δεν χρειάζεται όλος ο κώδικας να βρίσκεται μέσα σε μια τάξη. Εάν ένα χειρόγραφο ικανοποιεί τις ανάγκες σας, τότε μπορείτε να βάλετε τον εκτελέσιμο κώδικα άμεσα σε ένα αρχείο χωρίς το σωρό μιας περιττής τάξης. Η επιστροφή είναι προαιρετική. Η τελευταία αξιολογημένη έκφραση επιστρέφεται αυτόματα από τις κλήσεις της μεθόδου, υποθέτοντας ότι ταιριάζει με τον τύπο της return που είχε δηλωθεί για τη μέθοδο. Χωρίς να χρειάζεται να βάλετε αυτή τη ρητή εντολή, αυτομάτως ο κώδικας σας γίνεται συνοπτικός ειδικά κατά τη διαβίβαση των περατώσεων ως παράμετροι της μεθόδου. Τα ερωτηματικά είναι προαιρετικά. Δεν είναι απαραίτητο να τελειώσετε μια δήλωση με ερωτηματικό και αυτό με τη σειρά του μειώνει το θόρυβο. Εάν θέλετε να τοποθετήσετε πολλαπλές δηλώσεις στην ίδια γραμμή, μπορείτε να τις διαχωρίσετε χρησιμοποιώντας το ερωτηματικό (;). Η Scala επίσης με επιδεξιότητα υπολογίζει εάν μια δήλωση είναι ημιτελής και σας επιτρέπει να την ολοκληρώσετε στην ακόλουθη γραμμή. Οι κατηγορίες και οι μέθοδοι είναι δημόσιοι εξ ορισμού και για αυτό δεν είναι απαραίτητο να χρησιμοποιείτε ρητά τη λέξη public. Η Scala παρέχει ελαφριά σύνταξη για να δημιουργήσει JavaBeans. Χρησιμοποιεί λιγότερο κώδικα για να δημιουργήσει τις μεταβλητές και τις τελικές ιδιότητες. Δεν είστε αναγκασμένοι να βρείτε τις εξαιρέσεις για τις οποίες δεν ενδιαφέρεστε, μειώνοντας έτσι το μέγεθος του κώδικα και αποφεύγοντας ανάρμοστο χειρισμό αυτών. 35

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

Ενημέρωση σε Windows 8.1 από τα Windows 8

Ενημέρωση σε Windows 8.1 από τα Windows 8 Ενημέρωση σε Windows 8.1 από τα Windows 8 Τα Windows 8.1 και τα Windows RT 8.1 είναι βασισμένα στα Windows 8 και στα Windows RT, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

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

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

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

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

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

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

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

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

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

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

Οδηγός Βήμα-Βήμα για να εγκαταστήσετε τα Windows 7 στον Η/Υ σας

Οδηγός Βήμα-Βήμα για να εγκαταστήσετε τα Windows 7 στον Η/Υ σας Οδηγός Βήμα-Βήμα για να εγκαταστήσετε τα Windows 7 στον Η/Υ σας ΒΗΜΑ 1 Εφεδρικό Αντίγραφο Ασφαλείας ΠΡΟΣΟΧΗ: Πριν εφαρμόσουμε τον οδηγό εγκατάστασης στον Η/Υ μας κρατούμε αντίγραφα ασφαλείας των σημαντικών

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

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

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

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

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

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0 Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

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

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

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

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

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης Φύλλα εργασίας MicroWorlds Pro Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο Β. Χ. Χρυσοχοΐδης Πρόεδρος Συλλόγου Εκπαιδευτικών Πληροφορικής Φλώρινας 2 «Σχεδίαση και ανάπτυξη δραστηριοτήτων

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

Χρήση του Office 365 σε τηλέφωνο Android

Χρήση του Office 365 σε τηλέφωνο Android Χρήση του Office 365 σε τηλέφωνο Android Οδηγός γρήγορης εκκίνησης Έλεγχος ηλεκτρονικού ταχυδρομείου Ρυθμίστε το τηλέφωνο Android για αποστολή και λήψη ηλεκτρονικού ταχυδρομείου από το λογαριασμό του Office

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

Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης Οδηγίες Αναβάθμισης (Upgrade) Ομάδα Εργασίας: Τσιμπάνης Κωνσταντίνος, Εξηνταρίδης Γιάννης Αθήνα, 30 Σεπτεμβρίου 2009 Εισαγωγή Η πλατφόρμα Open eclass

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

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

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

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

Interactive Power Point

Interactive Power Point Interactive Power Point Οι περισσότεροι χρήστες γνωρίζουν τη χρήση του Microsoft Power Point για τη δημιουργία παρουσιάσεων. Αυτό όμως που λίγοι γνωρίζουν, είναι ότι το πρόγραμμα αυτό, έχει δυνατότητες

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

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές Σκοπός του εργαστηρίου αυτού είναι η εξοικείωση με κάποιες εφαρμογές που θα μας φανούν πολύ χρήσιμες κατά τη διάρκεια του μαθήματος της Εισαγωγής στον Προγραμματισμό.

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

Οδηγίες για τη Χρήση του Google Drive

Οδηγίες για τη Χρήση του Google Drive Οδηγίες για τη Χρήση του Google Drive Χαρπαντίδου Ζαχαρούλα Επιμορφώτρια Β επιπέδου ΠΕ 19-20 Υπεύθυνη ΚΕ.ΠΛΗ.ΝΕ.Τ. Δράμας 2013 Περιεχόμενα Δημιουργία λογαριασμού στο Google Drive. 3 Διαχείριση του GoogleDrive..

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

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

YourSMS User s Manual

YourSMS User s Manual YourSMS User s Manual Contents Πίνακας περιεχομένων Κεντρική οθόνη... 2 Αποστολές... 3 Αποστολή μοναδικού μηνύματος... 3 Αποστολή μαζικού μηνύματος σε ομάδα παραληπτών... 4 Αποστολή μαζικού προγραμματισμένου

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Οδηγίες EQL Desktop (rev.1.0.23) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Οδηγίες EQL Desktop (rev.1.0.23) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ Οδηγίες EQL Desktop (rev.1.0.23) Πρόγραμμα για τον Προγραμματισμό των Μηχανών D.P.S. S-800, Open Cash και S-710 μέσω Ηλεκτρονικού Υπολογιστή ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB Εγκατάσταση ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

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

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

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

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

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

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

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

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

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 20130510 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εγκατάσταση προγράμματος DCAD 2 2. Ενεργοποίηση Registration 2 3. DCAD 3 3.1 Εισαγωγή σημείων 3 3.2 Εξαγωγή σημείων 5 3.3 Στοιχεία ιδιοκτησίας

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

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

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

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

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω.

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω. Τι είναι το debug μαμα? Με απλά λόγια, debug (αποσφαλμάτωση αλλά που να κάθεσαι να το πεις), είναι η διαδικασία εντοπισμού και διόρθωσης σφαλμάτων που υπάρχουν σε κώδικα (ασχέτως γλώσσας προγραμματισμού).

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

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

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

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

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

ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ σ. 1 από 18 _ Εγχειρίδιο ρυθµίσεων για την πρόσβαση σε ηλεκτρονικούς πόρους bibliotecas Εγχειρίδιο

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 05/10/2015 Ημερομηνία Παράδοσης: 19/10/2015, 09:00 π.μ. Στόχος Στόχος αυτής της εργασίας είναι η χρησιμοποίηση δομών ελέγχου και βρόγχων. ιαβάστε προσεχτικά το πρόβλημα

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

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

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

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Εισαγωγή-Σκοπός. Τρόποι δημιουργίας δυναμικών ιστοσελίδων. Dynamic Web Pages. Dynamic Web Page Development Using Dreamweaver. Τρόποι δημιουργίας δυναμικών

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου Μεγάλο παράδειγμα Θέλουμε να δημιουργήσουμε ένα λογισμικό για ένα τμήμα πανεπιστημίου. Το τμήμα έχει 4

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

Hase οδηγίες χρήσης.

Hase οδηγίες χρήσης. Hase οδηγίες χρήσης. Το Hase είναι ένα πρόγραμμα προσομοίωσης που έχει αναπτυχθεί στο πανεπιστήμιο του Εδιμβούργου (http://www.icsa.inf.ed.ac.uk/research/groups/hase/) και μπορεί να χρησιμοποιηθεί για

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract

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

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014 Σωτήρης Γυφτόπουλος Κανόνες του Facility Game (1/4) Στο Facility Game υπάρχει ένα σύνολο κόμβων που συνδέονται «σειριακά» και κάθε κόμβος

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

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης Γρήγορη αναφορά Αντιγραφή Δημιουργία αντιγράφων Γρήγορη δημιουργία αντιγράφου 3 Στον πίνακα ελέγχου του εκτυπωτή πατήστε το κουμπί αντίγραφο 4 Εάν τοποθετήσατε το έγγραφο στη γυάλινη επιφάνεια σάρωσης

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

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών. Σελίδα 1 από 7 Οδηγός σύνδεσης Υποστηριζόμενα λειτουργικά συστήματα Μπορείτε να πραγματοποιήσετε εγκατάσταση του λογισμικού του εκτυπωτή χρησιμοποιώντας το CD Λογισμικό και τεκμηρίωση για τα ακόλουθα λειτουργικά

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

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

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά MANAGER SIDE BAR Η Manager side bar είναι μία εφαρμογή σχεδιασμένη να προσφέρει μια σειρά από λειτουργίες και ευκολίες σε κάθε χρήστη Η/Υ προχωρημένο ή αρχάριο. Βασική λειτουργία της εφαρμογής είναι ότι

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

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ. Πρόγραμμα Διαχείρισης Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ. Πρόγραμμα Διαχείρισης Α.Π.Δ. ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ Πρόγραμμα Διαχείρισης Α.Π.Δ. Περιεχόμενα ΚΕΦΑΛΑΙΟ 1 Εγκατάσταση του προγράμματος 1 ΚΕΦΑΛΑΙΟ 2 Οδηγίες χρήσης προγράμματος με παράδειγμα 2 ΚΕΦΑΛΑΙΟ 3 Αντιγραφή Α.Π.Δ. προηγούμενης περιόδου

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

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

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

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

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i της CD V2.6 ii Copyright 2002, 2003, 2004 Sun Microsystems Copyright 2009 Στέργιος Προσινικλής (steriosprosinikls@gmail.com) Δίνεται άδεια για αντιγραφή, διανομή και/ή τροποποίηση του εγγράφου υπό τους

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

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

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

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

Οδηγός γρήγορης εκκίνησης

Οδηγός γρήγορης εκκίνησης Οδηγός γρήγορης εκκίνησης Το Microsoft Word 2013 έχει διαφορετική εμφάνιση από προηγούμενες εκδόσεις. Γι αυτό το λόγο, δημιουργήσαμε αυτόν τον οδηγό για να ελαχιστοποιήσουμε την καμπύλη εκμάθησης. Γραμμή

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

Movie Maker (Δημιουργία βίντεο)

Movie Maker (Δημιουργία βίντεο) Movie Maker (Δημιουργία βίντεο) - Με πόσους τρόπους μπορούμε να διηγηθούμε μια ιστορία; - Μπορούμε να την πούμε ο ένας στον άλλο. - Μπορούμε να την γράψουμε. - Μπορούμε να τη ζωγραφίσουμε κομμάτι-κομμάτι.

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

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή)

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή) ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility (διαδικτυακή εφαρμογή) Αύγουστος 2011 ΠΕΡΙΕΧΟΜΕΝΑ 1. Πρόσβαση

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

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Οδηγίες Χρήσης της MySQL Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Νοέμβριος 2007 1 Περιεχόμενα Εισαγωγή...2

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

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

Σενάριο 13: Προγραμματίζοντας ένα Ρομπότ

Σενάριο 13: Προγραμματίζοντας ένα Ρομπότ Σενάριο 13: Προγραμματίζοντας ένα Ρομπότ Φύλλο Εργασίας Τίτλος: Προγραμματίζοντας ένα Ρομπότ Γνωστικό Αντικείμενο: Πληροφορική Διδακτική Ενότητα: Ελέγχω-Προγραμματίζω τον Υπολογιστή Τάξη: Γ Γυμνασίου Διάρκεια:

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

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ Περιεχόμενα 1) Εισαγωγή 2) Οδηγός εγγραφής στο site της PCnews 3) Βρείτε τα καλύτερα του site Γίνετε φίλοι μας στο Facebook 4) Σχετικά με τον τύπο αρχείου PDF - 1 - Εισαγωγή Καλωσορίσατε

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

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Πως θα κατασκευάσω το πρώτο πρόγραμμα; Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να γίνει εξοικείωση το μαθητών με τον ΗΥ και το λειτουργικό σύστημα. - Επίδειξη του My Computer

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Βάσεις δεδομένων (Access)

Βάσεις δεδομένων (Access) Βάσεις δεδομένων (Access) Όταν εκκινούμε την Access εμφανίζεται το παρακάτω παράθυρο: Για να φτιάξουμε μια νέα ΒΔ κάνουμε κλικ στην επιλογή «Κενή βάση δεδομένων» στο Παράθυρο Εργασιών. Θα εμφανιστεί το

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

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1 Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1 Εγκατάσταση και ενημέρωση των Windows 8.1 Ενημερώστε το BIOS, εφαρμογές, προγράμματα οδήγησης και εκτελέστε το Windows Update Επιλέξτε τον τύπο εγκατάστασης

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

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση τη

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

PRISMA Win POS Sync Merge Replication

PRISMA Win POS Sync Merge Replication ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ Οδηγός Ρυθμίσεων Συγχρονισμού PRISMA Win POS Sync Merge Replication Η διαδικασία του συγχρονισμού γίνεται από τον Η/Υ που έχει το Back Office. Βασική προϋπόθεση για να ενεργοποιηθεί ο

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

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53 Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53 Περιεχόμενα 1. 1. Διαδικασία των Windows 8 2. Απαιτήσεις συστήματος 3. Προετοιμασία 2. 3. 4. 5. με τη 6. 1. Εξατομίκευση 2. Ασύρματο 3.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και αντικείμενα στην Java Strings Πίνακες ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά

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

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) - 1 - Αθήνα, 16 Μαρτίου 2007. 1. Εισαγωγή

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) - 1 - Αθήνα, 16 Μαρτίου 2007. 1. Εισαγωγή Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7 Οδηγίες Αναβάθμισης (Upgrade) Ομάδα Εργασίας: Τσιμπάνης Κωνσταντίνος, Εξηνταρίδης Γιάννης Αθήνα, 16 Μαρτίου 2007 1. Εισαγωγή Η πλατφόρμα eclass είναι ένα

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα.

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. «Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. Πώς θα δουλέψεις με το Χελωνόκοσμο την πρώτη φορά 1. Θα χρησιμοποιήσεις το αριστερό πλήκτρο

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Τηλ/νιών Τομέας Προγ/σμού & Τεχνολογίας Λογισμικού Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Δρ. Νικόλαος Θ. Λιόλιος Καθηγητής Φεβρουάριος 2012 1. Εισαγωγή Το Visual

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