Εισαγωγή στη Java Κωνσταντίνος Μαργαρίτης, Άδεια χρήσης: GNU FDL

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

Download "Εισαγωγή στη Java. 2004 Κωνσταντίνος Μαργαρίτης, markos@debian.org Άδεια χρήσης: GNU FDL"

Transcript

1 1.Σχετικά με τη Java Εισαγωγή στη Java 2004 Κωνσταντίνος Μαργαρίτης, Άδεια χρήσης: GNU FDL Η Java είναι μια σύγχρονη αντικειμενοστραφής (object oriented) γλώσσα προγραμματισμού με αρκετά χαρακτηριστικά που δεν συναντώνται σε άλλες γλώσσες. Αναπτύχθηκε το 1991 από την εταιρεία Sun Microsystems με σκοπό τη δημιουργία μιας γλώσσας που θα τρέχει σε πληθώρα λειτουργικών συστημάτων και επεξεργαστών χωρίς αλλαγή. Ως γλώσσα βασίστηκε στη C++ - για την ακρίβεια οι δύο γλώσσες έχουν την ίδια σύνταξη με αρκετά όμως πρόσθετα χαρακτηριστικά και διαφοροποιήσεις. Ιδιομορφίες της Java Σε αντίθεση με τις υπόλοιπες γλώσσες προγραμματισμού η Java έχει σχεδιαστεί ώστε ένα πρόγραμμα Java να μπορεί να τρέχει σε κάθε αρχιτεκτονική (δηλαδή συνδυασμό επεξεργαστή και λειτουργικού συστήματος) χωρίς την ανάγκη για εκ νέου μεταγλώττιση. Η μόνη απαίτηση είναι η ύπαρξη ενός Java Virtual Machine (JVM) για τη συγκεκριμένη αρχιτεκτονική. Μια συνηθισμένη γλώσσα προγραμματισμού (π.χ. C, C++, PASCAL) μεταγλωττίζει τον πηγαίο κώδικα του προγράμματος σε εκτελέσιμη μορφή που να καταλαβαίνει ο επεξεργαστής. Η μορφή αυτή είναι η γλώσσα μηχανής, και διαφέρει για κάθε εξεπεργαστή και αρχιτεκτονική. Η εκτελέσιμη μορφή ενός προγράμματος για έναν συγκεκριμένο επεξεργαστή δεν είναι δυνατό να χρησιμοποιηθεί σε διαφορετικής αρχιτεκτονικής επεξεργαστή, δηλαδή δεν μπορούμε να χρησιμοποιήσουμε το εκτελέσιμο πρόγραμμα για Windows σε ένα σύστημα Macintosh. Έτσι, είναι απαραίτητη η εκ νέου μεταγλώττιση του πηγαίου κώδικα (source code) για κάθε αρχιτεκτονική στην οποία θέλουμε να τρέξουμε το πρόγραμμα. Αντίθετα, η Java μεταγλωττίζει τον πηγαίο κώδικα σε μια εξειδικευμένη κωδικοποιημένη μορφή, το bytecode. Η μορφή αυτή είναι σαν την γλώσσα μηχανής ενός υποθετικού επεξεργαστή, που δεν υπάρχει στη πραγματικότητα. Αυτός ο εικονικός επεξεργαστής είναι το Java Virtual Machine (JVM) και εκτελεί το Java bytecode. Το JVM υλοποιείται ως πρόγραμμα σε κάθε πραγματικό λειτουργικό σύστημα και αναλαμβάνει να μετατρέψει κάθε εντολή του bytecode σε εντολή του πραγματικού επεξεργαστή (java bytecode to native code translation, όπως λέγεται η διαδικασία). Καθώς η διαδικασία αυτή γίνεται κατά την εκτέλεση του προγράμματος της Java, αυτός είναι και ένας λόγος που η Java είναι γενικά πιο αργή από τις παραδοσιακές γλώσσες προγραμματισμού (π.χ. C++). Αν και με σύγχρονες τεχνικές, όπως οι Just In Time (JIT) compilers και εξελιγμένο scheduling των εντολών στο JVM, η απόδοση της Java έχει βελτιωθεί σε μεγάλο βαθμό (ένα καλογραμμένο πρόγραμμα Java μπορεί να φτάσει το 90% της απόδοσης ενός αντίστοιχου προγράμματος σε C++), λόγω της φύσης της δε θα πάψει να είναι πιο αργή από αυτές τις παραδοσιακές γλώσσες. Σημειώσεις Java Σελίδα 1 ebooks4greeks.gr

2 Στο παρακάτω σχήμα απεικονίζεται η διαδικασία της μεταγλώττισης ενός προγράμματος C++ και ενός προγράμματος Java. Πηγαίος Κώδικας (source code) Πηγαίος Κώδικας (source code) C++ compiler Java compiler Κώδικας Μηχανής (Native code) Java Bytecode Java Virtual Machine (JVM) Επεξεργαστής Διαφορές με C++ (CPU) Αν και η Java έχει βασιστεί σε μεγάλο βαθμό στη C++ έχει ορισμένες σημαντικές διαφορές που πρέπει να σημειωθούν. Συγκεκριμένα: Java Παράγει Java Bytecode Portable Ασφαλής (τρέχει μέσω του JVM) Εκτέλεση κώδικα Java από το Web, μέσω Applets C++ Παράγει Native code Χρειάζεται εκ νέου μεταγλώττιση Μόνο όσους περιορισμούς ορίζει το λειτουργικό σύστημα Δεν είναι δυνατή η εκτέλεση κώδικα μέσα από το Web Διαδικαστικός ή Δομημένος Προγραμματισμός (Procedural ή Structured Programming) Οι παλαιότερες γλώσσες προγραμματισμού όπως οι C, PASCAL, FORTRAN έδιναν έμφαση στην διαδικασία και στα στάδια που ακολουθούνται για την επίτευξη κάποιου στόχου. Το αντικείμενο ήταν ο κώδικας (code-centric γλώσσες προγραμματισμού). Ο προγραμματισμός γινόταν με τον καθορισμό της ροής εκτέλεσης από κάποιο στάδιο Α σε κάποιο στάδιο Β, και την υλοποίηση των αντίστοιχων υπορουτινών. Αντικειμενοστραφής προγραμματισμός (Object-Oriented Programming) Οι αντικειμενοστραφείς γλώσσες προγραμματισμού (C++, Eiffel, Smalltalk και φυσικά Java) δίνουν έμφαση στα δεδομένα παρά στον κώδικα. Το πρόγραμμα αναπτύσσεται γύρω από τα δεδομένα (data-centric) τα οποία ορίζουν από μόνα τους τον τρόπο με τον οποίο μπορουμε να τα διαχειριστούμε. Σημειώσεις Java Σελίδα 2

3 Ο φυσικός και ο τεχνητός κόσμος που ζούμε είναι πιο κοντά στη φιλοσοφία του Αντικειμενοστραφή προγραμματισμού παρά του Δομημένου προγραμματισμού. Ένα απλό παράδειγμα που μπορούμε να χρησιμοποιήσουμε για την κατανόηση της φιλοσοφίας του αντικειμενοστραφούς προγραμματισμού είναι το αυτοκίνητο. Κάθε αυτοκίνητο είναι ένα αντικείμενο που ανήκει σε μια κλάση που ορίζει τα βασικά χαρακτηριστικά του αυτοκινήτου. Αυτά μπορεί να διαφέρουν ανάμεσα στους κατασκευαστές αλλά όλα θα παρέχουν τα βασικά χαρακτηριστικά που ορίζει η κλάση αυτοκίνητο για τη χρήση του. Δηλαδή τιμόνι, γκάζι, φρένο, συμπλέκτης και ταχύτητες. Αυτά είναι τα δεδομένα. Κάθε ένα από αυτά ορίζει τον τρόπο χρήσης του. Το τιμόνι στρίβει αριστερά/δεξιά, τα πεντάλ πιέζονται ή αφήνονται και οι ταχύτητες αλλάζουν διακριτά έχοντας μηχανισμό ασφαλείας μπορούμε να αλλάξουμε ταχύτητα σε όπισθεν ενώ το αυτοκίνητο κινείται με ταχύτητα. Η υλοποίηση καθενός από αυτούς τους μηχανισμούς διαφέρει σε κάθε κατασκευαστή, αλλά η χρήση τους είναι η ίδια για όλους. Δηλαδή η χρήση του τιμονιού και των ταχυτήτων γίνεται με τον ίδιο τρόπο ανεξαρτήτως κατηγορίας, κατασκευαστή και μοντέλου του αυτοκινήτου. Επίσης, ο μηχανισμός με τον οποίο γίνεται η χρήση των δεδομένων αυτών είναι κρυμμένος από τον χρήστη (δηλαδή τον οδηγό). Ο χρήστης δεν ενδιαφέρεται για τον τρόπο μετάδοσης της κίνησης από το τιμόνι στους τροχούς ώστε το αυτοκίνητο να στρίψει. Επίσης, η χρήση ενός αυτοκινήτου δεν αλλάζει με την επέκτασή του ή αλλαγή ορισμένων χαρακτηριστικών του (όπως π.χ. νέα μηχανή, λάστιχα, κλπ). Αλλάζει η συμπεριφορά του αλλά όχι η χρήση του. Με αυτόν τον τρόπο, περιγράψαμε με ένα απλό παράδειγμα τα πιο σημαντικά χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού: Encapsulation () Η διαδικασίες κρύβονται από το χρήστη και τα ίδια τα δεδομένα προσδιορίζουν τους τρόπους διαχείρισης τους. Polymorphism (πολυμορφισμός) Αντικείμενα που ανήκουν σε παρόμοιες κλάσεις μπορούν να έχουν κοινό τρόπο προσπέλασης, με αποτέλεσμα ο χρήστης να μπορεί να τα χειριστεί με τον ίδιο τρόπο χωρίς να χρειάζεται να μάθει νέες διαδικασίες. Inheritance (κληρονομικότητα) Μπορούμε να δημιουργήσουμε ένα νέο αντικείμενο παίρνοντας ως βάση ένα άλλο ήδη υπάρχον. Το νέο αντικείμενο θα έχει τα χαρακτηριστικά του παλιού ενώ θα μπορέι να τα τροποποιήσει, να τα επεκτείνει και να προσθέσει καινούρια για να καλύψει συγκεκριμένες ανάγκες. Σημειώσεις Java Σελίδα 3

4 2.Δομή της Java Όπως και κάθε γλώσσα προγραμματισμού, έτσι και η Java ακολουθεί κάποιους κανόνες στη σύνταξη και υλοποίηση ενός προγράμματος. Οι κανόνες αυτοί αφορούν τη δήλωση μεταβλητών, τους τύπους δεδομένων, τους ορισμούς κλάσεων κλπ. Μεταβλητές Η έννοια της μεταβλητής είναι ίσως η πιο θεμελιώδης στον προγραμματισμό γενικά. Η μεταβλητή δεν είναι άλλο από μια ονομασμένη θέση μνήμης που μπορεί να περιέχει δεδομένα οποιουδήποτε είδους. Το περιεχόμενο της μεταβλητής μπορεί να μεταβάλλεται -εξ' ού και το όνομά της- με δεδομένα παρόμοιου είδους. Οι μεταβλητές ορίζονται ως εξής: type var; όπου type το είδος της μεταβλητής και var το όνομά της. Ως είδος μπορούμε να διαλέξουμε έναν από τους διαθέσιμους τύπους δεδομένων της Java ή το όνομα μιας κλάσης αντικειμένων (σε επόμενη παράγραφο). Έυρος μεταβλητών Μια μεταβλητή θεωρείται έγκυρη, δηλαδή μια αναφορά σε αυτήν έχει νόημα μόνο μέσα στο πλάισιο στο οποίο ορίζεται. Το πλαίσιο μπορεί να είναι μια κλάση, μια συνάρτηση ή μέθοδος, το πεδίο ισχύος ενός loop for/while/do ή των εντολών if/else/switch. Παράδειγμα: type var1; if (συνθήκη) { // Επεξεργασία της var1 (σωστό). // Επεξεργασία της var2 (λάθος). type var2; // Επεξεργασία της var2 (σωστό) // Επεξεργασία της var1 (σωστό) // Επεξεργασία της var2 (λάθος) Τύποι δεδομένων Οι βασικοί τύποι δεδομένων στη Java είναι σχεδόν οι ίδιοι με αυτούς της C και C++ (καθώς η Java έχει βασιστεί σε μεγάλο βαθμό στη C++). Πέρα από μικρές διαφορές στους ίδιους τους τύπους, είναι σχετικά εύκολο για κάποιον προγραμματιστή C++ να μεταβεί στη Java και να κρατήσει παρόμοια τη δομή ενός προγράμματος και ένας από τους λόγους που γίνεται αυτό είναι η ομοιότητα στους τύπους δεδομένων. Η πιο σημαντική διαφορά είναι ότι η Java δεν έχει pointers. Σημειώσεις Java Σελίδα 4

5 Ακολουθεί πίνακας με τους διαθέσιμους τύπους δεδομένων της Java: Όνομα Μέγεθος (σε bytes) Όρια byte έως 127 short έως int έως long έως float * έως 3.4 * double * έως 1.8 * bool 1 true / false char 2 - String μεταβλητό - Οι τύποι δεδομένων byte, short, int, long προορίζονται για χρήση με ακέραιους αριθμούς, ενώ οι τύποι float, double για χρήση αριθμών κινητής υποδιαστολής (δηλ. δεκαδικών αριθμών). Ο τύπος bool μπορεί να λαμβάνει μόνο δύο τιμές true και false. Ο τύπος char σε αντίθεση με την C/C++ έχει μέγεθος 2 bytes γιατί έχει σχεδιαστεί να περιέχει χαρακτήρες Unicode (UTF-16 για την ακρίβεια). Παραδείγματα δηλώσεων και αρχικοποιήσεων μεταβλητών: int an_integer; an_integer = 10; long a_long = an_integer *1000; double verysmallnumber = ; bool am_i_hungry = false; char alpha = 'a'; String text = this is a text ; Σταθερές (constants) Αν και οι μεταβλητές έχουν σχεδιαστεί να μεταβάλλονται υπάρχουν περιπτώσεις που χρειαζόμαστε κάποιες σταθερές, όπως στα Μαθηματικά. Μπορούμε να δηλώσουμε μια μεταβλητή ως σταθερά (δηλαδή που να μη μεταβάλλεται) με τη λέξη final. Δηλαδή, final double pi = ; Τελεστές (operators) Μπορούμε να εκτελέσουμε διάφορες πράξεις μεταξύ των μεταβλητών με τη χρήση των τελεστών. Οι τελεστές είναι σύμβολα που αντιστοιχούν σε αριθμητικές ή λογικές πράξεις μεταξύ των αντικειμένων. Υπάρχουν 4 είδη τελεστών στη Java (θα αναφέρουμε τα τρία πιο σημαντικά, και θα αφήσουμε τους δυαδικούς τελεστές προς το παρόν). Σημειώσεις Java Σελίδα 5

6 Αριθμητικοί τελεστές Σύμβολο Είδος + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Υπόλοιπο Διαίρεσης ++ Αυξητικός τελεστής -- Αφαιρετικός τελεστής Ειδικά για τους αυξητικούς και αφαιρετικούς τελεστές, πρέπει να αναφέρουμε ότι αυτοί αυξάνουν ή αφαιρούν την τιμή της μεταβλητής κατά μία μονάδα (κατά συνέπεια χρησιμοποιούνται μόνο σε ακέραιες μεταβλητές, όχι σε δεκαδικές). Παράδειγμα: int x = 10; x++; // τώρα η τιμή x έχει την τιμή 11 x--; // και πάλι την τιμή 10 Σχεσιακοί Τελεστές Οι σχεσιακοί τελεστές αναφέρονται στην σχέση μεταξύ δύο αντικειμένων. Σύμβολο Είδος == Ισότητα!= Ανισότητα > Μεγαλύτερο από < Μικρότερο από >= Μεγαλύτερο από ή ίσο με <= Μικρότερο από ή ίσο με Λογικοί Τελεστές Οι λογικοί τελεστές αναφέρονται στους τρόπους συνδυασμών αληθών και ψευδών προτάσεων. Σύμβολο Είδος & AND (και) OR (ή) ^ XOR (ή το ένα ή το άλλο) Σημειώσεις Java Σελίδα 6

7 Σύμβολο Είδος && Short-circuit AND Short-circuit OR! NOT (άρνηση) Η διαφορά του & και του && είναι ότι στη δεύτερη περίπτωση, αν με τον υπολογισμό της πρώτης παράστασης ο συνδυασμός βγαίνει αληθής ή ψευδής τότε αποφεύγεται ο υπολογισμός της δεύτερης. Για παράδειγμα, αν έχουμε την παράσταση (alpha == true) & (beta == 1) το πρόγραμμα θα υπολογίσει και θα εξετάσει και τίς δύο προτάσεις ακόμη και αν η πρώτη (alpha == true) είναι ψευδής. Με τη χρήση του &&, το πρόγραμμα θα επιστρέψει αμέσως ψευδή τιμή (false) αν η πρώτη είναι ψευδής, και θα προχωρήσει στον υπολογισμό της δεύτερης μόνο αν η πρώτη είναι αληθής. Στην πραγματικότητα είναι θέμα εξοικονόμησης χρόνου. Τελεστές καταχώρησης Οι τελεστές καταχώρησης χρησιμοποιούνται για να μεταβάλουν τα περιεχόμενα μιας μεταβλητής. Μπορούν να συνδυαστούν και με άλλους τελεστές για συντόμευση κάποιων πράξεων. Παραδείγματα τελεστών καταχώρησης: int x = 4; x = 10; x += 20; (είναι το ίδιο με την εντολή x = x + 20, τελικό αποτέλεσμα 30) x /= 10; (το ίδιο με x = x / 10, αποτέλεσμα 3). Σύμβολο Είδος x += y το ίδιο με x = x + y x -= y το ίδιο με x = x - y x *= y το ίδιο με x = x * y x /= y το ίδιο με x = x / y x %= y το ίδιο με x = x % y x &= y το ίδιο με x = x & y x = y το ίδιο με x = x y ^= το ίδιο με x = x ^ y Σημειώσεις Java Σελίδα 7

8 Παραστάσεις (Expressions) Οποιοσδήποτε έγκυρος συνδυασμός μεταβλητών, σταθερών, αριθμών και τελεστών καλείται μια παράσταση. Το αποτέλεσμα της παράστασης μπορεί να είναι κάποιος από τους τύπους δεδομένων της Java (int, long, double, bool, κλπ) αλλά όχι κάποιο αντικείμενο ή String. Παραδείγματα: int b = 10, i; i = 2*b*b; (παράδειγμα παράστασης) if (b * b <= 100 && i > 0) System.out.println( The expression is true ); Σημειώσεις Java Σελίδα 8

9 3.Ελεγχόμενη ροή προγράμματος Σε κάθε πρόγραμμα είναι απαραίτητο να ελέγχουμε τη ροή του αναλόγως κάποιες συνθήκες και να την ανακατευθύνουμε κατάλληλα. Υπάρχουν πολλοί τρόποι να κατευθύνουμε τη ροή του προγράμματος και ο κάθε ένας εξυπηρετεί συγκεκριμένο σκοπό. Η εντολή if Η εντολή if χρησιμοποιείται όταν θέλουμε να εκτελέσουμε κάποιες εντολές μόνο όταν ικανοποιείται κάποια συνθήκη: if (συνθήκη) { εντολές; else { εντολές; Μπορούν να συνδυαστούν πολλές εντολές if μεταξύ τους, όπως στο ακόλουθο παράδειγμα: if (x == 1) { System.out.println( x is one. ); else if (x == 2) { System.out.println( x is two. ); else if (x == 3) { System.out.println( x is three. ); else if (x == 4) { System.out.println( x is four. ); else { System.out.println( x is not between 1-4. ); Η εντολή switch Η εντολή switch χρησιμοποιείται όταν έχουμε πολλαπλές επιλογές ή τιμές για μια μεταβλητή και θέλουμε να εκτελεστούν διαφορετικές εντολές για κάθε τιμή. Με την switch, το προηγούμενο παράδειγμα θα πάρει τη μορφή: switch (x) { case 1; System.out.println( x is one. ); break; case 2; System.out.println( x is two. ); break; case 3: System.out.println( x is three. ); break; case 4: System.out.println( x is four. ); break; default: Σημειώσεις Java Σελίδα 9

10 System.out.println( x is not between 1-4. ); break; Προσέξατε την χρήση της break. Χωρίς την break η εκτέλεση του προγράμματος θα συνεχίσει μέχρι την επόμενη break ή μέχρι το τέλος της εντολής switch. Αυτό μπορούμε να το εκμεταλευτούμε αν θέλουμε κοινή αντιμετώπιση ορισμένων περιπτώσεων. switch (x) { case 1; System.out.println( x is one. ); case 2; System.out.println( x is two. ); case 3; System.out.println( x is three. ); case 4; System.out.println( x is four. ); System.out.println( x is between one and four. ); break; case 5; System.out.println( x is five. ); case 6; System.out.println( x is six. ); case 7; System.out.println( x is seven. ); case 8; System.out.println( x is eight. ); System.out.println( x is between five and eight. ); break; default: System.out.println( x is not between one and eight. ); break; Η εντολή for Η εντολή for χρησιμοποιείται για επανάληψη (loop) υπό συνθήκη κάποιων εντολών. Θεωρείται ίσως η πιο δυνατή και ευέλικτη εντολή τύπου for, σε οποιαδήποτε γλώσσα (έχει ακριβώς την ίδια λειτουργία με την αντίστοιχη της C/C++). Η σύνταξή της είναι η εξής: for (εντολή αρχικοποίηση; συνθήκη; εντολή επανάληψης) { εντολές; Η εντολή αρχικοποίησης (initialization) εκτελείται στην αρχή του loop και στη συνέχεια ελέγχεται αν είναι αληθής ή ψευδής η συνθήκη (condition). Αν είναι αληθής, εκτελούνται οι εντολές και στο τέλος εκτελείται η εντολή επανάληψης (iteration) και ελέγχεται και πάλι αν είναι αληθής η συνθήκη. Αν είναι αληθής εκτελούνται οι εντολές, κ.ο.κ. Σημειώσεις Java Σελίδα 10

11 Παράδειγμα: for (int i = 1; i < 20; i += 3) { System.out.println(i); Το αποτέλεσμα θα είναι το εξής: Κάθε μία από τις εντολές αρχικοποίησης, επανάληψης και η συνθήκη μπορεί να παραλειφθεί αλλάζοντας τη συμπεριφορά της εντολής for. Σημειώνουμε ότι χωρίζονται μεταξύ τους με το ερωτηματικό ';'. Παραδείγματα: int x = 10; for (; x < 5; x++) { System.out.println(x); double y = 20000; // (y = pi) for (; y >= 10.0;) { // υπολογίζει την τετραγωνική του y και τοποθετεί // το αποτέλεσμα πάλι στο y. // Το for loop θα εκτελείται όσο το y είναι μεγαλύτερο από 10.0 System.out.println(y); y = Math.sqrt(y); for (;;) { // infinite loop wait_for_signal(); Η εντολή while Η εντολή while χρησιμοποιείται αντί της for όταν δε μπορούμε να προβλέψουμε εύκολα πόσες φορές θέλουμε να εκτελεστούν οι εντολές, ή όταν δεν έχει σημασία ο αριθμός των επαναλήψεων αλλά η ικανοποιήση ή όχι της συνθήκης: while (συνθήκη) { εντολές; Παράδειγμα: bool exit_from_loop = false; while (exit_from_loop = false) { // υποθετική ρουτίνα που διαβάζει δεδομένα από ένα αρχείο read_bytes(file1); // άλλη ρουτίνα που γράφει δεδομένα σε ένα άλλο αρχείο write_bytes(file2); Σημειώσεις Java Σελίδα 11

12 if (file_empty(file1) == true) exit_from_loop = true; Η εντολή do/while Η εντολή do/while είναι παρόμοια με την while, με μία διαφορά, οι εντολές εντός του loop θα εκτελεστούν τουλάχιστον μια φορά ανεξαρτήτως αν είναι αληθής η συνθήκη ή όχι. do { εντολές; while (συνθήκη); Παράδειγμα: int x = 10; do { System.out.println(x); x++; while (x <10); Το αποτέλεσμα θα είναι: 10 Οι εντολές μέσα στο loop θα εκτελεστούν την πρώτη φορά ακόμη και αν δεν ισχύει η συνθήκη (x < 10). Οι εντολές break/continue Πολλές φορές θέλουμε να διακόψουμε την εκτέλεση των εντολών σε ένα loop πρίν από τη προκαθορισμένη στιγμή. Π.χ. να φύγουμε από ένα infinite loop, ή όταν το πρόγραμμα λάβει κάποιο σήμα (signal) για έξοδο (π.χ. Control-C). for (int i = 1; i < 20; i += 3) { if ( i*i > 100) break; System.out.println(i); Το αποτέλεσμα θα είναι: Η εντολή break χρησιμοποιείται σε όλα τα loops, for, while, do/while. Αντίστοιχη με την break είναι η continue, η οποία όμως διακόπτει την εκτέλεση μόνο του τρέχονος iteration και όχι ολόκληρου του loop. Συνεχίζει από το επόμενο iteration. Στο προηγούμενο παράδειγμα: for (int i = 1; i < 20; i += 3) { // να μην τυπωθούν οι άρτιοι(ζυγοί) αριθμοί if ( i % 2 = 0) Σημειώσεις Java Σελίδα 12

13 continue; System.out.println(i); Το αποτέλεσμα θα είναι: Σημειώσεις Java Σελίδα 13

14 4.Classes Class: Car Instance of Car Object: Audi TT Instance of Car Object: Jaguar XK8 Instance of Car Object: Ferrari Modena Instance of Car Object: Bertona Bella Η αντικειμενοστραφής πλευρά της Java φαίνεται με την χρήση των αντικειμένων και των κλάσεων στις οποίες ανήκουν τα αντικείμενα. Όλα τα αντικείμενα που έχουν κοινά χαρακτηριστικά ανήκουν στην ίδια κλάση και κάθε ένα από αυτά λέγεται ότι είναι στιγμιότυπο (instance) της κλάσης. Για παράδειγμα, η κλάση αυτοκίνητο θεωρεί μια γενική εικόνα του αυτοκινήτου με κάποια χαρακτηριστικά που υπάρχουν σε όλα τα στιγμιότυπα. Συγκεκριμένα, η κλάση αυτοκίνητο πιθανώς να ορίζει ότι είναι τετράτροχο, έχει τιμόνι, ταχύτητες, πεντάλ και καθίσματα για τους οδηγούς αλλά δεν ορίζει με σαφήνεια το σχήμα ή τους μηχανισμούς όλων των εξαρτημάτων, ούτε τα χαρακτηριστικά της μηχανής (κυβικά, ίπποι, κύλινδροι, κλπ). Αυτά είναι χαρακτηριστικά που αφορούν το κάθε αντικείμενο ξεχωριστά (ή κάποια υποκατηγορία/υποκλάση της κλάσης αυτοκίνητο ). Για καλύτερη κατανόηση, δείτε το παραπάνω σχήμα. Στη Java (και στη C++ στην οποία βασίστηκε η Java) η κλάση δηλώνεται με τη λέξη class. Στο παράδειγμα του αυτοκινήτου, έστω ότι θέλουμε να δηλώσουμε μια κλάση με το όνομα Car: class Car { (δεδομένα/μεταβλητές) (συναρτήσεις/μέθοδοι) member variables Τα χαρακτηριστικά του αντικειμένου είναι τα δεδομένα γύρω από τα οποία πρέπει να αναπτύξουμε το πρόγραμμά μας. Στο παράδειγμα με το αυτοκίνητο, τα δεδομένα αυτά είναι: η γωνία στρέψης του τιμονιού, η πίεση που ασκούμε στα πεντάλ, η θέση του μοχλού ταχυτήτων και άλλα. Στον προγραμματισμό, αυτά τα δεδομένα θα πρέπει να μοντελοποιηθούν, δηλαδή να γίνει η αντιστοιχία τους σε μεταβλητές τις οποίες μπορούμε να επεξεργαστούμε στο πρόγραμμά μας. Σημειώσεις Java Σελίδα 14

15 Για την κλάση Car, μπορούμε να έχουμε: class Car { // Γωνία στρέψης του τιμονιού float steering_angle; // Ποσοστό πατήματος του γκαζιού (0 = καθόλου, 100 = τερματισμένο!) float gas_pedal; // Ποσοστό πατήματος του φρένου (0 = καθόλου, 100 = τερματισμένο!) float break_pedal; // Ποσοστό πατήματος του συμπλέκτη (0 = καθόλου, // 100 = τερματισμένο!) float clutch; // θέση της τρέχουσας ταχύτητα (πιθανές τιμές: 0, 1,2,3,4,5, // 0 = νεκρό, -1 = όπισθεν) int gear; // μεταβλητές που καθορίζουν την επιτάχυνση, την ταχύτητα του // αυτοκινήτου και τις στροφές του κινητήρα float acceleration, speed, rpm; Εδώ πρέπει να σημειωθεί ότι οι μεταβλητές της κλάσης έχουν διαφορετικές τιμές για κάθε αντικείμενο, και κάθε αντικείμενο έχει πρόσβαση μόνο στις δικές του μεταβλητές. Επίσης, ο τύπος δεδομένων που επιλέχθηκε για κάθε μεταβλητή εξαρτάται από το είδος της πληροφορίας που θα κρατάει αυτή η μεταβλητή. Για παράδειγμα, εφόσον η γωνία στρέψης του τιμονιού θα είναι σε μοίρες, είναι λογικό να χρησιμοποιήσουμε ένα τύπο που θα μπορεί να κρατήσει δεκαδικούς αριθμούς, όπως ο float. Αυτά, λοιπόν, είναι τα δεδομένα μας ομαδοποιημένα υπό την έννοια της κλάσης Car. Αυτή τη στιγμή δεν είναι τίποτε παραπάνω από μια ομάδα μεταβλητών χωρίς να έχουμε ορίσει τον τρόπο επεξεργασίας τους. Γι' αυτό είναι απαραίτητη η ύπαρξη του κατάλληλου interface των δεδομένων για τον χρήστη. Το interface επιτυγχάνεται με την ύπαρξη των μεθόδων της κλάσης (member methods). member methods Οι μέθοδοι (methods) σε μια κλάση, δεν είναι τίποτε παραπάνω από συναρτήσεις (υπορουτίνες) που προσφέρουν πρόσβαση στα δεδομένα του εκάστοτε αντικειμένου της κλάσης. Η αλληλεπίδραση του χρήστη με κάθε αντικείμενο γίνεται μέσω των μεθόδων της κλάσης, οι οποίες καθορίζουν και τον τρόπο χειρισμού των μεταβλητών του αντικειμένου. Στο παράδειγμά μας, οι μέθοδοι θα καθορίζουν με ποιον τρόπο θα στρίβουμε το τιμόνι, θα αυξάνουμε το πάτημα στο γκάζι ή στο φρένο, θα αλλάζουμε ταχύτητες αλλά και πώς θα μπορούμε να γνωρίζουμε την ταχύτητα του αυτοκινήτου, τις στροφές του κινητήρα δηλαδή πληροφορίες που δε μπορούμε να ελέγξουμε άμεσα. Σημειώσεις Java Σελίδα 15

16 Πιθανές μέθοδοι για την κλάση Car θα μπορούσαν να είναι οι εξής: // Αλλαγή της γωνία στρέψης του τιμονιού, <relative_angle> μοίρες // σε σχέση με την τρέχουσα γωνία. void turn_wheel(float relative_angle); // Πάτημα πεντάλ γκαζιού void press_gas_pedal(float amount); // Πάτημα πεντάλ φρένου void press_break_pedal(float amount); // Πάτημα πεντάλ συμπλέκτη void press_clutch_pedal(float amount); // Αλλαγή της ταχύτητας. Επιστρέφει true αν η αλλαγή ήταν επιτυχής // ή false αν ήταν ανεπιτυχής (π.χ. από 5 σε όπισθεν). bool change_gear(int new_gear); // προβολή της τρέχουσας ταχύτητας, επιτάχυνσης και στροφών του // κινητήρα float get_acceleration(); float get_speed(); float get_rpm(); Οι παραπάνω μέθοδοι όπου κρίνεται αναγκαίο επιστρέφουν κάποιο αποτέλεσμα, είτε ως δεκαδικός αριθμός (float) στην περίπτωση των μεθόδων get_*(), ή ως bool στην change_gear(). Ο τύπος void είναι ειδική περίπτωση που δεν επιστρέφει κάποιο αποτέλεσμα. Χρησιμοποιείται όταν μας ενδιαφέρει η εκτέλεση κάποιας διαδικασίας χωρίς όμως να είναι απαραίτητο να γνωρίζουμε το αποτέλεσμά της, ή μπορεί να μην επιστρέφει κάποιο αποτέλεσμα εξ' αρχής. Υλοποίηση μιας μεθόδου Οι παραπάνω είναι απλώς οι δηλώσεις των μεθόδων, δηλαδή δεν περιέχουν καθόλου κώδικα. Για να είναι ολοκληρωμένος ο ορισμός μιας μεθόδου θα πρέπει να συνοδεύεται και από την υλοποίησή της (implementation). Η υλοποίηση μπορεί να γίνει ταυτόχρονα με τη δήλωση, για παράδειγμα η υλοποίηση της turn_wheel() θα μπορούσε να είναι: void turn_wheel(float relative_angle) { steering_angle += relative_angle; if (steering_angle <= ) steering_angle = ; if (steering_angle >= 720.0) steering_angle = 720.0; Όπως βλέπουμε στην υλοποίηση της μεθόδου προσθέσαμε και επιπλέον κώδικα ασφαλείας, ο οποίος απαγορεύει στο τιμόνι να κάνει περισσότερες από 2 στροφές αριστερά ή δεξιά. Παρόμοιοι περιορισμοί σε ένα κανονικό αυτοκίνητο γίνονται με μηχανικό τρόπο, αλλά σε ένα πρόγραμμα (π.χ. εξομοιωτή οδήγησης), το κάθε αντικείμενο πρέπει να θέσει τους δικούς του περιορισμούς και δικλείδες ασφαλείας με τη μορφή κώδικα στις μεθόδους. Σημειώσεις Java Σελίδα 16

17 Δημιουργία αντικειμένων με τη new Έχοντας ορίσει την κλάση μας, θα πρέπει να δημιουργήσουμε τα αντικείμενα -τα στιγμιότυπα (instances) της κλάσης. Για το σκοπό αυτό, χρησιμοποιούμε την εντολή new της Java. Η new δημιουργεί μια φυσική αναπαράσταση της κλάσης, ένα μοναδικό στιγμιότυπο, και επιστρέφει ένα δείκτη αναφοράς (reference) σε αυτό. Με αυτό το δείκτη αναφοράς μπορούμε να προσπελάσουμε το αντικείμενο με οποίον τρόπο θέλουμε (και εφόσον το επιτρέπει το ίδιο το αντικείμενο). Ο τρόπος χρήσης της new είναι ο εξής: Car acar = new Car(); Car anothercar = new Car(); Οι μεταβλητές acar και anothercar είναι οι δείκτες αναφοράς στα αντίστοιχα αντικείμενα που δημιουργούνται με τη new. Η δημιουργία του αντικείμένου δεν είναι αναγκαίο να γίνει κατά την δήλωσή του. Το ίδιο αποτέλεσμα μπορούμε να έχουμε και με τις εντολές: Car acar; acar = new Car(); Τα δεδομένα του κάθε αντικειμένου (οι μεταβλητές) αλλά και οι μέθοδοι της κλάσης που αντιστοιχούν στο αντικείμενο, μπορούν να προσπελλαστούν ως εξής: // Η γωνία στρέψης του τιμονιού του acar acar.steering_angle // Η γωνία στρέψης του τιμονιού του anothercar anothercar.steering_angle // Εντολή στο acar να στρίψει δεξιά 13.4 μοίρες. acar.turn(13.4); // Επιστρέφει την τρέχουσα ταχύτητα του acar float speed = acar.get_speed(); // Εντολή στο anothercar να στρίψει αριστερά 32 μοίρες anothercar.turn(-32.0); // Εντολή στο anοthercar να βάλει όπισθεν bool result = anothercar.ghange_gear(-1); Όπως βλέπουμε ορισμένοι μέθοδοι δέχονται κάποιες παραμέτρους (εντός παρενθέσεων). Οι παράμετροι μπορεί να είναι μεταβλητές οποιουδήποτε αποδεκτού τύπου στη Java ή ακόμη και άλλα αντικείμενα. Αν έχουμε περισσότερες από μία παραμέτρους τις διαχωρίζουμε με κόμμα ','. Constructors Όταν δημιουργείται ένα αντικείμενο με την εντολή new, στην πραγματικότητα η Java, αφού δεσμεύσει την απαραίτητη μνήμη για το αντικείμενο, εκτελεί μια συγκεκριμένη μέθοδο της κλάσης, τον δημιουργό (constructor). Ο δημιουργός πραγματοποιεί τις απαραίτητες ενέργειες για να καταστεί κάποιο αντικείμενο έτοιμο προς χρήση. Αυτές μπορεί να είναι κάτι απλό όπως η ρύθμιση κάποιων μεταβλητών με αρχικές τιμές, ή πιο Σημειώσεις Java Σελίδα 17

18 περίπλοκο όπως η δημιουργία σύνδεσης με μια βάση δεδομένων, η αρχικοποίηση των πινάκων SQL, η δέσμευση κάποιων δικτυακών θυρών (sockets) για κάποιο server ή ακόμη και το άνοιγμα κάποιου παραθύρου για εμφάνιση γραφικής πληροφορίας. Ο δημιουργός έχει τη μορφή μιας μεθόδου με το όνομα της κλάσης και χωρίς τύπο (δηλαδή δεν δηλώνεται ο τύπος δεδομένων που επιστρέφει, το οποίο είναι διαφορετικό από το να δηλωθεί ως void). Για παράδειγμα, στην κλάση Car, ένας πιθανός δημιουργός μπορεί να είναι: Car() { steering_wheel = 0.0; gas_pedal = 0.0; break_pedal = 0.0; float clutch = 0.0; int gear = 0; acceleration = 0.0; speed = 0.0; rpm = 0.0; Δηλαδή, ο δημιουργός πραγματοποιεί την αρχικοποίηση (initialization) των μεταβλητών του αντικειμένου ώστε αυτό να είναι έτοιμο προς χρήση. Μπορούμε να έχουμε περισσότερους από έναν δημιουργούς, οι οποίοι να δέχονται διαφορετικές παραμέτρους ο καθένας. Για παράδειγμα, αν υποθέσουμε ότι μπορούσαμε να ορίσουμε χαρακτηριστικά του κινητήρα (engine_cc: κυβικά, engine_hp: ίπποι) στη δημιουργία του αντικειμένου, θα μπορούσαμε να έχουμε έναν επιπλέον δημιουργό: Car(int cc, int hp) { engine_cc = cc; engine_hp = hp; // Ακολουθούν οι υπόλοιπες εντολές αρχικοποίησης του αντικειμένου επιπλέον του αρχικού δημιουργού. Η δημιουργία περισσότερων από έναν δημιουργούς καλείται constructor overloading και είναι υποπερίπτωση του χαρακτηριστικού της Java, method overloading (σε επόμενη παράγραφο). Που είναι οι Destructors? Garbage collection στη Java Όσοι γνωρίζουν C++, θα θυμούνται πιθανόν ότι παράλληλα με τους δημιουργούς ενός αντικειμένου υπάρχουν και οι καταστροφείς του (destructors). Στη C++, ό,τι αντικείμενο δημιουργούμε πρέπει να το καταστρέφουμε (συνήθως με την εντολή delete) ελευθερώνοντας όλους τους πόρους που δεσμεύσαμε κατά την ύπαρξή του (κλείσιμο αρχείων, αποσύνδεση από βάσεις δεδομένων, τερματισμός threads, αποδέσμευση μνήμης, κλπ). Στη Java κάτι τέτοιο δεν είναι απαραίτητο, για την ακρίβεια δεν παρέχεται καν αυτή η δυνατότητα! Η Java παρέχει ένα δικό της μηχανισμό περισυλλογής σκουπιδιών (garbage collection) Σημειώσεις Java Σελίδα 18

19 όπως λέγεται, με τον οποίο ελευθερώνει τα αντικείμενα που δεν χρησιμοποιούνται πλέον από το πρόγραμμα. Έτσι πλέον, δεν χρειάζεται αλλά και δεν έχουμε τη δυνατότητα να καταστρέψουμε πλέον κάποια αντικείμενα όπως σε άλλες αντικειμενοστραφείς γλώσσες (π.χ. C++). Ο δείκτης αναφοράς this Μέσα σε μια μέθοδο, μπορούμε να χρησιμοποιήσουμε μια μεταβλητή της κλάσης απλώς με το όνομά της, αναφερόμενοι φυσικά στην τιμή που έχει η μεταβλητή για το συγκεκριμένο αντικείμενο. Τις περισσότερες φορές κάτι τέτοιο είναι αρκετό, υπάρχουν όμως και περιπτώσεις που χρειάζεται πιο ρητή αναφορά στο συγκεκριμένο αντικείμενο. Για το σκοπό αυτό μπορούμε να χρησιμοποιήσουμε τη μεταβλητή this που επιστρέφει πάντα ένα δείκτη αναφοράς στο τρέχον αντικείμενο (δηλαδή αυτό που καλεί την μέθοδο). Με το δείκτη αναφοράς this, η μέθοδος turn_wheel() που είδαμε παραπάνω μετασχηματίζεται ως εξής: void turn_wheel(float relative_angle) { this.steering_angle += relative_angle; if (this.steering_angle <= ) this.steering_angle = ; if (this.steering_angle >= 720.0) this.steering_angle = 720.0; Ο δείκτης αναφοράς this είναι ιδιαίτερα χρήσιμος ειδικά σε περιπτώσεις που μεταχείριζομαστε περισσότερα από ένα όμοια αντικείμενα στην ίδια μέθοδο, για αποφυγή σύγχυσης. Method Overloading Σε ένα πρόγραμμα, υπάρχει περίπτωση να χρειαστεί να εκτελέσουμε την ίδια διαδικασία με ελαφρώς διαφορετικά δεδομένα. Αυτό συνήθως σημαίνει ότι θα χρειαστεί να έχουμε διαφορετικές συναρτήσεις/μεθόδους για κάθε διαφορετική παράμετρο που δίνουμε. Για παράδειγμα, ας υποθέσουμε ότι ο χρήστης καλεί την μέθοδο turn_wheel() με παράμετρο ένα int αντί για float. Σε μια γλώσσα όπως η C θα έπρεπε να έχουμε δύο συναρτήσεις/μεθόδους, μια για κάθε διαφορετική παράμετρο και μάλιστα με διαφορετικό όνομα: void turn_wheel_int(int relative_angle) { this.steering_angle += (float) relative_angle; if (this.steering_angle <= ) this.steering_angle = ; if (this.steering_angle >= 720.0) this.steering_angle = 720.0; void turn_wheel_float(float relative_angle) { steering_angle += relative_angle; if (steering_angle <= ) steering_angle = ; if (steering_angle >= 720.0) Σημειώσεις Java Σελίδα 19

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Website: www.dap-papei.gr E-mail: dap.papei@yahoo.gr Facebook: https://www.facebook.com/dap.papei Twitter: https://twitter.com/dap_papei

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

Εισαγωγή στη C++ 2004 Κωνσταντίνος Μαργαρίτης, markos@debian.org Γιάννης Τσιομπίκας, nuclear@siggraph.org Άδεια χρήσης: GNU FDL

Εισαγωγή στη C++ 2004 Κωνσταντίνος Μαργαρίτης, markos@debian.org Γιάννης Τσιομπίκας, nuclear@siggraph.org Άδεια χρήσης: GNU FDL Εισαγωγή στη C++ 2004 Κωνσταντίνος Μαργαρίτης, markos@debian.org Γιάννης Τσιομπίκας, nuclear@siggraph.org Άδεια χρήσης: GNU FDL 1.Σχετικά με τη C++ Μια συνηθισμένη γλώσσα προγραμματισμού (π.χ. C, C++,

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

Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 3 : Κλάσεις Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 6 : Προχωρημένα θέματα (1/2) Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός-1/2 Η αντικειμενοστραφής πλευρά της Java φαίνεται με την χρήση των αντικειμένων

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

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

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

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

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

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

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

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

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

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

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

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

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

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

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

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

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

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

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

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

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

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

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

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

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, tostring Αντικείμενα ως παράμετροι Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

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

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

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

Το πρόγραμμα 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 υποστηρίζει

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

Προγραµµατισµός JAVA. ρ Γεώργιος Μαυροµµάτης Πειραιάς 2004

Προγραµµατισµός JAVA. ρ Γεώργιος Μαυροµµάτης Πειραιάς 2004 Προγραµµατισµός JAVA ρ Γεώργιος Μαυροµµάτης Πειραιάς 2004 Αλγόριθµος Ένας Αλγόριθµος είναι µία καλά ορισµένη υπολογιστική διαδικασία που δέχεται κάποιες τιµές σαν είσοδο και παράγει κάποιες τιµές σαν έξοδο.

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

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

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

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα

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

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

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

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

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

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

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

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

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

Γενικά (για τις γραπτές εξετάσεις)

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Επαναληπτικός βρόχος καλείται το τμήμα του κώδικα μέσα σε ένα πρόγραμμα, το οποίο εκτελείται από την αρχή και επαναλαμβάνεται

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

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

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

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

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

Επανάληψη για την τελική εξέταση. (Διάλεξη 23)

Επανάληψη για την τελική εξέταση. (Διάλεξη 23) Επανάληψη για την τελική εξέταση (Διάλεξη 23) 13-1 Επανάληψη 1. Οδηγίες στον προεπεξεργαστή Εντολή: include Σύνταξη: #include Λειτουργία: Επιτρέπει τη χρήση μιας ομάδας συναρτήσεων

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

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

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

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη Αλγόριθμος (τι είναι) Στα μαθηματικά και την επιστήμη ΗΥ Ο αλγόριθμος είναι η λογική διαδικασία

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

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

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή 5. Εντολή while() Η εντολή while() είναι ίσως η πιο πολυχρησιμοποιούμενη εντολή κατά τη σύνταξη κώδικα σε γλώσσα προγραμματισμού C για μικροελεγκτές. Το κυρίως μέρος του προγράμματος κλείνεται σχεδόν πάντα

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

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

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

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

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

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

Στοιχειώδεις Δομές Δεδομένων

Στοιχειώδεις Δομές Δεδομένων Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

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

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

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

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

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

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι 2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να χρησιμοποιείτε σχόλια σε ένα πηγαίο πρόγραμμα Java. Να διακρίνετε σωστούς από λάθος προσδιοριστές. Να αναγνωρίζετε

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

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

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

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

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

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

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

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

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

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

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

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

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

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

Προγραμματισμός Συστημάτων

Προγραμματισμός Συστημάτων ΠΛΥ410 Προγραμματισμός Συστημάτων Διδάσκων: Β. Δημακόπουλος dimako@cs.uoi.gr «Προγραμματιστικά» μαθήματα 2012-14: Σημαντική αναδιάρθρωση του προγράμματος σπουδών Επανασχεδιασμός προγραμματιστικών μαθημάτων

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Ιστορία Ο Patrick Naughton απειλεί την Sun ότι θα φύγει. Τον βάζουν σε μία ομάδα αποτελούμενη από τους James Gosling και Mike Sheridan για

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 9: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Κωνσταντίνος Κουκουλέτσος Τμήμα

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

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

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

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