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

Μέγεθος: 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 σε περιβάλλον

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

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

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

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

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

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

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

Ενημέρωση σε 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, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

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

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

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

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

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

YourSMS User s Manual

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

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

ΕΓΧΕΙΡΙΔΙΟ WEBCAM STATION EVOLUTION

ΕΓΧΕΙΡΙΔΙΟ WEBCAM STATION EVOLUTION ΕΓΧΕΙΡΙΔΙΟ WEBCAM STATION EVOLUTION ΠΕΡΙΕΧΟΜΕΝΑ Κάνοντας κλικ σε έναν τίτλο σε αυτόν τον πίνακα περιεχομένων, θα εμφανιστεί η αντίστοιχη παράγραφος 1. 2. 3. ΕΙΣΑΓΩΓΗ 3 ΡΥΘΜΙΣΗ ΗΧΟΥ ΚΑΙ ΒΙΝΤΕΟ 4 ΕΜΦΑΝΙΣΗ

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

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

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

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

Οδηγός αναβάθμισης των 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college.

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college. Χρήση της Διεπαφής Προγραμματισμού Εφαρμογής Google Maps για τη δημιουργία διαδραστικού χάρτη με τα Μνημεία Παγκόσμιας Πολιτιστικής Κληρονομιάς της ΟΥΝΕΣΚΟ στη Θεσσαλονίκη Εμμανουήλ Τσάμης 1, Κωνσταντίνος

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

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

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

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

Google Apps για το Office 365 για επιχειρήσεις

Google Apps για το Office 365 για επιχειρήσεις Google Apps για το Office 365 για επιχειρήσεις Πραγματοποίηση της μετάβασης Το Office 365 για επιχειρήσεις έχει διαφορετική εμφάνιση από το Google Apps. Για το λόγο αυτό, όταν συνδεθείτε, θα δείτε αυτήν

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Οδηγός γρήγορης εγκατάστασης (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Περιεχόμενα συσκευασίας 1 Εισαγωγή στο υλικό Εξωτερική περιγραφή ΔΙΑΦΟΡΕΣ Μοντέλο

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

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

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

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

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

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

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

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

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

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

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

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

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

Οδηγίες 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 Εγκατάσταση ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

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

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

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

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

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

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

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

utorrent 1.6 Θα πρέπει ο φάκελος να είναι κάπως έτσι:

utorrent 1.6 Θα πρέπει ο φάκελος να είναι κάπως έτσι: utorrent 1.6 Πρώτα απ όλα κατεβάζουμε το utorrent 1.6 από το συγκεκριμένο link: http://download.utorrent.com/1.6/utorrent.exe (μη το τρέξετε ακόμα, απλά κατεβάστε το) Στη συνέχεια δημιουργήστε ένα καινούργιο

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

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. Τι είναι ο

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

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

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

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

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

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

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

Οδηγός αναβάθμισης των 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.

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

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή Τι είναι ένα CMS CMS ή Σύστημα Διαχείρισης Περιεχομένου (Content Management System) ονομάζουμε ένα λογισμικό που μας βοηθά να ελέγχουμε και να διαχειριζόμαστε έναν ιστότοπο δημόσιας ή περιορισμένης πρόσβασης.

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

4η ΕΝΟΤΗΤΑ ΒΑΣΙΚΕΣ ΔΕΞΙΟΤΗΤΕΣ ΣΤΟΥΣ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ (WORD & ΔΙΑΔΙΚΤΥΟ)

4η ΕΝΟΤΗΤΑ ΒΑΣΙΚΕΣ ΔΕΞΙΟΤΗΤΕΣ ΣΤΟΥΣ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ (WORD & ΔΙΑΔΙΚΤΥΟ) 4η ΕΝΟΤΗΤΑ ΒΑΣΙΚΕΣ ΔΕΞΙΟΤΗΤΕΣ ΣΤΟΥΣ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ (WORD & ΔΙΑΔΙΚΤΥΟ) ΠΡΟΟΙΜΙΟ 4 η Ενότητα Στην 4 η Ενότητα ΒΑΣΙΚΕΣ ΔΕΞΙΟΤΗΤΕΣ ΣΤΟΥΣ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ (WORD & ΔΙΑΔΙΚΤΥΟ) έχουμε δημιουργήσει

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

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

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

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

ZTrade Quick Start User Manual Version 2.2

ZTrade Quick Start User Manual Version 2.2 ZTrade Quick Start User Manual Version 2.2 1. Εισαγωγή Το κείμενο αυτό περιγράφει τις βασικές λειτουργίες της εφαρμογής ZΤrade για την παρακολούθηση των αγορών και την διαχείριση των χαρτοφυλακίων. Για

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

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

Σχεδιασµός & Ανάπτυξη Υποδοµών & Προηγµένων Υπηρεσιών για την Υλοποίηση του e-school: Υλοποίηση, οκιµαστική εφαρµογή και Πιλοτική λειτουργία συστηµάτων γραµµατειακής υποστήριξης ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΤΗ Υποσύστηµα

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

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Δημιουργία ενός απλού παιχνιδιού με το Gamemaker (μετάφραση από το http://www.stuffucanuse.com/downloads/gamemaker-introductionlessons/free_game_downloads_gamemaker.htm)

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

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP Το FTP (File Transfer Protocol) είναι το εξειδικευμένο πρωτόκολλο μεταφοράς αρχείων στα σύγχρονα δίκτυα δεδομένων όπως το Διαδίκτυο. Δίνει τη δυνατότητα μεταφοράς αρχείων από τον υπολογιστή

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

Διάγραμμα Κλάσεων. Class Diagram

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

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

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

ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΦΙΛ ΣΥΣΤΑΔΩΝ ΜΕ ΤΗ ΧΡΗΣΗ Η/Υ ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΦΙΛ ΣΥΣΤΑΔΩΝ ΜΕ ΤΗ ΧΡΗΣΗ Η/Υ ΑΤΕΙ ΚΑΒΑΛΑΣ ΠΑΡΑΡΤΗΜΑ ΔΡΑΜΑΣ ΤΜΗΜΑ ΔΑΣΟΠΟΝΙΑΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΦΥΣΙΚΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΚΑΔΑΣ ΜΑΡΙΟΣ 2008 ΕΥΧΑΡΙΣΤΙΕΣ Στον κ. Ι. Τάκο για την καθοδήγηση του σε όλη

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

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ. Κωδικός Τίτλος Επίπεδο

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ. Κωδικός Τίτλος Επίπεδο ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ Ενότητα: Υποενότητα: Διαδικτυακές Υπηρεσίες κι Εφαρμογές Υ8 - Δημοτικοί Ιστότοποι / Google Sites Λίστα Δραστηριοτήτων Κωδικός Τίτλος Επίπεδο Υ8.Δ1 Αναζήτηση δημοτικών ιστοτόπων και αξιολόγηση

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

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

ΕΝΟΤΗΤΑ 6 η OUTLOOK EXPRESS III ΕΙΣΑΓΩΓΗ

ΕΝΟΤΗΤΑ 6 η OUTLOOK EXPRESS III ΕΙΣΑΓΩΓΗ ΕΝΟΤΗΤΑ 6 η OUTLOOK EXPRESS III ΕΙΣΑΓΩΓΗ Ψάχνετε να βρείτε ένα µήνυµα από τα πολλά που έχετε, πώς θα το καταφέρετε αυτό εύκολα και γρήγορα; Θέλετε τα µηνύµατά σας να εµφανίζονται µε βάση την ηµεροµηνία

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩN ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟΔΟΣ: ΙΟΥΝΙΟΣ 2015 (10/7/2015) ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α 1. (3.5 μονάδες)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ Διδάσκων: Γ. Χαραλαμπίδης,

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

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

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

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

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ. ΕΡΓΑΣΙΑ 4 «Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ. Στόχος Στόχος της Εργασίας 4 είναι να η εξοικείωση με την αντικειμενοστρέφεια (object oriented programming). Πιο συγκεκριμένα,

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Αντί προλόγου. 1. Τι είναι το Twitter;

Αντί προλόγου. 1. Τι είναι το Twitter; Περιεχόµενα Αντί προλόγου...7 Πώς να χρησιµοποιήσετε το βιβλίο...13 Κεφάλαιο 1: Πώς δηµιουργώ τον λογαριασµό µου στο Twitter;...15 Κεφάλαιο 2: Πώς µπορώ να συνδεθώ και να αποσυνδεθώ από το Twitter;...37

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

SPSS Statistical Package for the Social Sciences

SPSS Statistical Package for the Social Sciences SPSS Statistical Package for the Social Sciences Ξεκινώντας την εφαρμογή Εισαγωγή εδομένων Ορισμός Μεταβλητών Εισαγωγή περίπτωσης και μεταβλητής ιαγραφή περιπτώσεων ή και μεταβλητών ΣΤΑΤΙΣΤΙΚΗ Αθανάσιος

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

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή 6 Δημιουργία λογαριασμού 13 Εγκατάσταση και λειτουργία του Skype 28 Βασικές λειτουργίες 32 Επιλογές συνομιλίας 48 Γενικές ρυθμίσεις Skype 64 Το Skype σε φορητές συσκευές 78 Εγγραφή

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

Οδηγός Χρήστη. Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης. http://elearning.kekdiastasi.edu.gr/

Οδηγός Χρήστη. Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης. http://elearning.kekdiastasi.edu.gr/ Οδηγός Χρήστη Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης http://elearning.kekdiastasi.edu.gr/ Περιεχόµενα 1. ΕΙΣΟ ΟΣ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ 3 2. ΤΟ ΠΡΟΦΙΛ ΣΑΣ 6 3. ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΟΥ ΜΑΘΗΜΑΤΟΣ 9 4. ΤΟ ΜΑΘΗΜΑ

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

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

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

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

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

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

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Κεφάλαιο 2 Εισαγωγή Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Η Logo είναι μία από τις πολλές γλώσσες προγραμματισμού. Κάθε γλώσσα προγραμματισμού έχει σκοπό τη δημιουργία προγραμμάτων

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

Εγχειρίδιο Έναρξης Vodafone Mobile Broadband USB Stick. Σχεδιάστηκε για τη Vodafone

Εγχειρίδιο Έναρξης Vodafone Mobile Broadband USB Stick. Σχεδιάστηκε για τη Vodafone Εγχειρίδιο Έναρξης Vodafone Mobile Broadband USB Stick Σχεδιάστηκε για τη Vodafone Καλωσορίσατε στον κόσμο των κινητών επικοινωνιών 1 Καλώς ήρθατε 2 Ρύθμιση του USB Stick 3 Εκκίνηση λογισμικού 4 Γενική

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

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα 1. Εισαγωγή 2. Εγκατάσταση λογαριασμού 3. Οδηγίες χρήσης 4. Ανάγνωση ελληνικών 1. Εισαγωγή Σ αυτό το εγχειρίδιο αναγράφονται

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

Πως να εισάγετε λίστες αναπαραγωγής διαφημίσεων

Πως να εισάγετε λίστες αναπαραγωγής διαφημίσεων JAZLER RADIOSTAR ΕΓΧΕΙΡΙΔΙΟ Πως να εισάγετε λίστες αναπαραγωγής διαφημίσεων - Ο οδηγός αυτός απευθύνεται σε έκδοση 2.8.10 ή μεγαλύτερη του Jazler RadioStar - Ο οδηγός αυτός προϋποθέτει βασικές γνώσεις

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

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE INTERNET PHONE A.S. DRIGAS Applied Technologies Department NCSR DEMOKRITOS Ag. Paraskevi GREECE dr@imm.demokritos.gr http://imm.demokritos.gr Το Internet Phone θέτει καινούργια δεδοµένα για την επικοινωνία

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

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο (Από την ομάδα εργασίας του Gmail) Το Gmail κάνει το ηλεκτρονικό ταχυδρομείο εύκολο και αποτελεσματικό.. Οι 10 κυριότεροι λόγοι για να χρησιμοποιήσετε

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

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5.1 Εισαγωγή Το πρακτικό κομμάτι της πτυχιακής μας εργασίας αφορά την δημιουργία μιας λειτουργικής ιστοσελίδας με την χρήση της πλατφόρμας του Weebly, που αποτελεί μια σύγχρονη

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

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

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

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

Εγχειρίδιο εκπαιδευτή

Εγχειρίδιο εκπαιδευτή Εγχειρίδιο εκπαιδευτή Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης http://elearning.kekdiastasi.edu.gr/ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή... 3 2. Τι είναι η Πλατφόρµα Τηλεκατάρτισης... 4 3. Απαραίτητος

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

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

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

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

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ ΜΑΘΗΜΑ : Πληροφορική Κατεύθυνσης ΤΑΞΗ : Β Αρ. σελίδων : 11 Ηµεροµηνία : 10/6/2008 Ώρα Έναρξης : 7:45 π.µ ιάρκεια : 2 ώρες Ονοµατεπώνυµο :...Τµήµα : Αριθµός :...Βαθµός

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

Υποστήριξη. Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR.

Υποστήριξη. Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR. Έναρξη χρήσης Υποστήριξη Σας ευχαριστούμε που επιλέξατε τα προϊόντα NETGEAR. Αφού εγκαταστήσετε τη συσκευή σας, εντοπίστε τον σειριακό αριθμό στην ετικέτα του προϊόντος και χρησιμοποιήστε τον για να δηλώσετε

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

Google Map Χάρτες στο διαδίκτυο

Google Map Χάρτες στο διαδίκτυο Google Map Χάρτες στο διαδίκτυο Θα μπορούσαμε να πούμε ότι το Google Maps είναι ένας online διαδραστικός χάρτης του κόσμου. Σε αυτό θα βρείτε χάρτες από τις περισσότερες χώρες και πόλεις του κόσμου παρουσιασμένους

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

ILLUSION F1S FREE TO AIR

ILLUSION F1S FREE TO AIR ILLUSION F1S FREE TO AIR ΕΙΣΑΓΩΓΗ ΣΑΣ ΕΥΧΑΡΙΣΤΟΥΜΕ ΓΙΑ ΤΗΝ ΑΓΟΡΑ ΤΟΥ ΔΕΚΤΗ ΠΑΡΑΚΑΛΩ ΔΙΑΒΑΣΤΕ ΤΙΣ ΟΔΗΓΙΕΣ ΠΡΟΣΕΚΤΙΚΑ ΠΡΙΝ ΤΗΝ ΧΡΗΣΗ. ΚΡΑΤΗΣΤΕ ΤΟ ΦΥΛΛΑΔΙΟ ΓΙΑ ΜΕΛΛΟΝΤΙΚΗ ΧΡΗΣΗ ΤΟ ΦΥΛΛΑΔΙΟ ΕΙΝΑΙ ΟΔΗΓΟΣ ΓΙΑ

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

Εγχειρίδιο εγκατάστασης και χρήσης περιοδικών etwinning

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

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

BlackBerry Internet Service. Οδηγός χρήστη

BlackBerry Internet Service. Οδηγός χρήστη BlackBerry Internet Service Οδηγός χρήστη Δημοσίευση: 2014-01-08 SWD-20140108171026083 Περιεχόμενα 1 Γρήγορα αποτελέσματα... 7 Πληροφορίες για τα σχέδια υπηρεσίας ανταλλαγής μηνυμάτων της υπηρεσίας BlackBerry

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

Οδηγός Χρήσης Η-Βιβλίων EBSCO ΒΙΒΛΙΟΘΗΚΗ & ΚΕΝΤΡΟ ΠΛΗΡΟΦΟΡΗΣΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΥΚΩΣΙΑΣ

Οδηγός Χρήσης Η-Βιβλίων EBSCO ΒΙΒΛΙΟΘΗΚΗ & ΚΕΝΤΡΟ ΠΛΗΡΟΦΟΡΗΣΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΥΚΩΣΙΑΣ Οδηγός Χρήσης Απρίλιος, 2014 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΒΙΒΛΙΑ ΤΗΣ EBSCO... 3 1. ΑΠΑΙΤΗΣΕΙΣ ΣΥΣΤΗΜΑΤΟΣ... 3 ΕΓΚΑΤΑΣΤΑΣΗ ADOBE DIGITAL EDITIONS... 3 2. ΑΝΑΖΗΤΗΣΗ Η-ΒΙΒΛΙΩΝ... 4

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αυγερινός Αραμπατζής avi@ee.duth.gr www.aviarampatzis.com Βάσεις Δεδομένων Stored Procedures 1 Stored Routines (1/2) Τμήματα κώδικα τα

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

Περιεχόµενα 1. Εγκατάσταση 2. Εισαγωγή 3. Σύνδεση 4. Ρυθµίσεις 2.1 Περιοχή εργασιών και πλοήγησης 2.2 Περιοχή απεικόνισης "Λεπτοµέρειες" 2.3 Περιοχή απεικόνισης "Στατιστικά" 4.1 Προφίλ 4.2 ίκτυο 4.2.1

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

Λογισμικό Διαχείρισης Περιεχομένου

Λογισμικό Διαχείρισης Περιεχομένου Εάν χρησιμοποιείτε έναν υπολογιστή για να εισάγετε, οργανώσετε και να δείτε βίντεο, κατεβάστε το λογισμικό διαχείρισης περιεχομένου (συμβατό μόνο με PC). Επισκεφθείτε τη διεύθυνση www.fisher-price.com/kidtough

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

TeleCost Hotel για Panasonic TDA

TeleCost Hotel για Panasonic TDA TeleCost Hotel για Panasonic TDA 1. Οδηγίες Εγκατάστασης του Λογισμικού του Συστήματος Telecost Hotel Γενικά Για την εγκατάσταση του Λογισμικού του Συστήματος TeleCost HL θα πρέπει να ακολουθηθούν συνοπτικά

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

Saxo Bank A/S Cyprus Αγίας Φυλάξεως 1, 1ος όροφος Τ.Κ. 3022 Λεμεσός

Saxo Bank A/S Cyprus Αγίας Φυλάξεως 1, 1ος όροφος Τ.Κ. 3022 Λεμεσός Saxo Bank A/S Cyprus Αγίας Φυλάξεως 1, 1ος όροφος Τ.Κ. 3022 Λεμεσός ΤΗΛ: +357 250 21 121 ΦΑΞ: +357 250 21 120 Τηλέφωνο χωρίς χρέωση (Από Σταθερό) Κύπρος: 800 932 93 E mail: CyrpusDesk@SaxoBank.com Web

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

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης Σελίδα 1 από 6 Οδηγός σύνδεσης Υποστηριζόμενα λειτουργικά συστήματα Μπορείτε να εγκαταστήσετε το λογισμικό του εκτυπωτή χρησιμοποιώντας το CD λογισμικού στα ακόλουθα λειτουργικά συστήματα: Windows 8.1

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

Marmitek UltraViewPro 1

Marmitek UltraViewPro 1 IP CAMERA SERIES IP Eye Anywhere 10 11 20 21 470 IP RoboCam 10 11 21 541 641 ULTRAVIEW PRO ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1..1 ΕΙΣΑΓΩΓΗ....1 ΚΕΦΑΛΑΙΟ 2.. 2 ΕΓΚΑΤΑΣΤΑΣΗ... 2 ΚΕΦΑΛΑΙΟ......3 ΧΡΗΣΗ MARMITEK Ultraview

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com /

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com / ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com / 1. Τι είναι το wikidot Το wikidot είναι ένας δικτυακός τόπος στον οποίο κάθε χρήστης έχει το δικαίωμα να δημιουργήσει

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΜΑΘΗΜΑ : Η/Υ I (ενότητα WINDOWS) ΥΠΕΥΘΥΝΟΣ : ΑΝΑΣΤΑΣΙΟΣ ΟΙΚΟΝΟΜΙΔΗΣ, Καθηγητής ΕΡΓΑΣΤΗΡΙΑ : ΘΕΑΝΩ ΧΑΤΖΙΔΑΚΗ, Εργαστηριακό

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

Τύποι, Σταθερές και Μεταβλητές

Τύποι, Σταθερές και Μεταβλητές ΚΕΦΑΛΑΙΟ 3 Τύποι, Σταθερές και Μεταβλητές Η έννοια της μεταβλητής Γενικά μπορούμε να πούμε ότι η έννοια της μεταβλητής στον προγραμματισμό είναι άμεσα συνδεδεμένη με την έννοια που αυτή έχει σε μαθηματικό

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

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Μανώλης Κιαγιάς, MSc Aiolos Project Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Χανιά, 2015 2 (C) 2014 Μανώλης Κιαγιάς, manolis@freebsd.org Το παρόν έργο διατίθεται υπό τους όρους της Άδειας: Αναφορά

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ EV3 Επίπεδο Ι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ EV3 Επίπεδο Ι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ EV3 Επίπεδο Ι Δρ. Γιώργος Α. Δημητρίου Εργαστήριο Ρομποτικής και Αυτομάτων Συστημάτων & Ακαδημία Ρομποτικής Τμήμα Πληροφορικής και Μηχανικών Υπολογιστών Σχολή Μηχανικής και Εφαρμοσμένων

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