Εισαγωγή στις μεθόδους

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

Download "Εισαγωγή στις μεθόδους"

Transcript

1 Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #5 η : Μέθοδοι (methods), Πίνακες (arrays), Πίνακες αντικειμένων Γαβαλάς Δαμιανός dgavalas@aegean.gr Εισαγωγή στις μεθόδους Μια μέθοδος είναι μια συλλογή από δηλώσεις που αποτελούν μια ενότητα και πραγματοποιούν συνολικά μια συγκεκριμένη λειτουργία Τροποποιητές (modifiers) Επικεφαλίδα μεθόδου O ρισμός μεθόδου Τύπος επιστρεφόμενης τιμής Όνομα μεθόδου παράμετροι public static int max(int num1, int num2) { Κλήση μεθόδου int z = max(x, y); int result; Σώμα Πραγματικοί μεθόδο υ Λίστα παραμέτρων παράμετροι if (num1 > num2) (arguments) result = num1; else result = num2; Επιστρεφόμενη τιμή return result; 1

2 Εισαγωγή στις μεθόδους Η υπογραφή μιας μεθόδου (method signature) είναι ο συνδυασμός μιας μεθόδου και της λίστας των παραμέτρων Οι μεταβλητές που ορίζονται στην επικεφαλίδα της μεθόδου είναι γνωστές ως επίσημες παράμετροι (formal parameters) Όταν καλείται μια μέθοδος, περνάει μια τιμή στην παράμετρο. Αυτή η τιμή αναφέρεται ως πραγματική παράμετρος (actual parameter ή argument). Εισαγωγή στις μεθόδους Μία μέθοδος μπορεί να επιστρέφει μια τιμή. Αν όντως επιστρέφει τιμή πρέπει να δηλωθεί (στην υπογραφή της μεθόδου) ο τύπος της τιμής που επιστρέφεται Αν δεν επιστρέφει κάποια τιμή τότε δηλώνεται ως τύπος επιστροφής ο void. Για παράδειγμα ο τύπος επιστροφής της main μεθόδου είναι void. 2

3 Κλήση μεθόδων Περνάει η τιμή το υ i Περνάει η τιμή του j public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Προσοχή! Κάθε μη void μέθοδος απαιτείται να συμπεριλαμβάνει μια δήλωση return. Η ακόλουθη μέθοδος είναι λογικά σωστή, αλλά ωστόσο θα βγάλει λάθος μεταγλώττισης, επειδή ο Java compiler θεωρεί πιθανό να μην επιστραφεί κάποια τιμή από αυτή τη μέθοδο. public static int sign(int n) { if (n > 0) return 1; else if (n == 0) return 0; else if (n < 0) return 1; Για να λυθεί το πρόβλημα αφαιρέστε το if (n<0) 3

4 Επανάχρηση μεθόδων άλλων κλάσεων Σημείωση: ένα από τα πλεονεκτήματα των μεθόδων είναι η δυνατότητα επανάχρησής τους (δηλαδή επανάχρησης κώδικα). Η μέθοδος max μπορεί να κληθεί από οποιαδήποτε κλάση εκτός της κλάσης TestMax στην οποία ανήκει. Αν δημιουργήστε μια νέα κλάση Test, μπορείτε να καλέσετε την max μέθοδο ως εξής: ClassName.methodName (π.χ., TestMax.max) Στοίβες κλήσεων (Call Stacks) Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Χώρος που απαιτείται γι α τη μέθοδοmax result: 5 num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Χώρος που απ αιτείται για τη μέθοδο main k: 5 j: 2 i: 5 H στοίβα αδειάζει Καλείται η μέθοδος main Καλείται η μέθοδος max Η μέθοδος max έχει τελειώσει και η επ ιστρεφόμενη τιμή εκ χωρείται στην k Η μέθοδος main έχει τελειώσει 4

5 Στοίβες κλήσεων (call stacks): παράδειγμα Ορίζεται και αρχικοποιείται το i public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Καλείται η main μέθοδος i5 i: Στοίβες κλήσεων (call stacks): παράδειγμα Ορίζεται και αρχικοποιείται το j public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Καλείται η main μέθοδος j: 2 i5 i: 5

6 Στοίβες κλήσεων (call stacks): παράδειγμα Ορισμός του k public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Χώ ρος που απαιτείται για τη μέθοδο main k: j: 2 i5 i: Καλείται η main μέθοδος Στοίβες κλήσεων (call stacks): παράδειγμα Κλήση της max(i, j) public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Χώ ρος που απαιτείται για τη μέθοδο main k: j: 2 i5 i: Καλείται η main μέθοδος 6

7 Στοίβες κλήσεων (call stacks): παράδειγμα Πέρασμα των τιμών των i και j στα num1 και num2 public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Καλείται η main μέθοδος Στοίβες κλήσεων (call stacks): παράδειγμα Πέρασμα των τιμών των i και j στα num1 και num2 public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; result: num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Καλείται η main μέθοδος 7

8 Στοίβες κλήσεων (call stacks): παράδειγμα (num1 > num2) είναι true public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; result: num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Καλείται η main μέθοδος Στοίβες κλήσεων (call stacks): παράδειγμα Εκχώρηση του num1 στο result public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Space required for the max method result: 5 num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k: j: 2 i: 5 Καλείται η main μέθοδος 8

9 Στοίβες κλήσεων (call stacks): παράδειγμα Επέστρεψε το result και εκχώρησέ το στο k public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Space required for the max method result: 5 num2: 2 num1: 5 Χώρος που απαιτείται για τη μέθοδο main k:5 j: 2 i: 5 Καλείται η main μέθοδος Στοίβες κλήσεων (call stacks): παράδειγμα public static void main(string[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; Εκτέλεση της δήλωσης print Χώ ρος που απαιτείται για τη μέθοδο main k:5 j: 2 i5 i: Καλείται η main μέθοδος 9

10 Περνώντας παραμέτρους public static void nprintln(string message, int n) { for (int i = 0; i < n; i++) System.out.println(message); Ας υποθέσουμε ότι καλείτε την παραπάνω μέθοδο ως εξής: nprintln( Welcome to Java, 5); Ποιο θα είναι το output; Ας υποθέσουμε ότι καλείτε λί την παραπάνω μέθοδο έθδ ως εξής: nprintln( Computer Science, 15); Ποιο θα είναι το output; Περνώντας παραμέτρους ως τιμή (Pass by Value) public static void main(string[] args) { int num = 1; System.out.println("Πριν την changevalue num=" + num); changevalue(num); System.out.println("Μετά την changevalue num=" + num); public static void changevalue(int n) { System.out.println("\tΜέσα στην changevalue μέθοδο"); System.out.println("\t\tΠριν αλλάξω τιμή n=" + n); n = 100; System.out.println("\t\tΑφού αλλάξω τιμή n=" + n); 10

11 Περνώντας παραμέτρους ως τιμή (Pass by Value) Πριν την changevalue num=1 Μέσα στην changevalue μέθοδο Πριν αλλάξω τιμή n=1 Αφού αλλάξω τιμή n=100 Μετά την changevalue num=1 Η τιμή της num περνιέται στη n. Η εκτέλεση της changevalue δε ν επηρεάζει τη num Τι τυπώνει το πρόγραμμα Χώρος που απαιτείται για την changevalue n: 1000 Χώ ρος που απαιτείται για τη main num: 1 Χώρος που απαιτείται γι α τη main num: 1 Χώρος που απαιτείται για τη main num: 1 Η στοίβα είναι άδεια \Κλήσ η της main Κλήση της changevalue Η changevalue τελείωσε Η main τελείωσε Πεδίο ή φάσμα (scope) των τοπικών μεταβλητών Τοπική μεταβλητή: μια μεταβλητή που ορίζεται μέσα σε μια μέθοδο Πεδίο (scope): το μέρος του προγράμματος όπου μπορεί να αναφερθεί η μεταβλητή Το πεδίο μιας τοπικής μεταβλητής αρχίζει από το σημείο της δήλωσή της και ολοκληρώνεται στο τέλος της ενότητας (block) που περιέχει τη μεταβλητή. Μια τοπική μεταβλητή πρέπει, φυσικά, να δηλωθεί πριν χρησιμοποιηθεί η 11

12 Πεδίο των τοπικών μεταβλητών Μπορείτε να ορίσετε μια τοπική μεταβλητή με το ίδιο όνομα πολλαπλές φορές σε διαφορετικά (μη επικαλυπτόμενα) blocks σε μία μέθοδο, αλλά δεν μπορείτε να ορίσετε μια τοπική μεταβλητή δύο φορές σε φωλιασμένα (nested) blocks. Πεδίο των τοπικών μεταβλητών Το πεδίο μιας μεταβλητής που ορίζεται στην επικεφαλίδα ενός βρόγχου for εκτείνεται σε ολόκληρο το βρόγχο. Αν όμως ορίζεται μέσα στο σώμα του βρόγχου for, τότε το πεδίο της περιορίζεται από το σημείο της δήλωσής της μέχρι το τέλος του block που περιέχει τη μεταβλητή. Το πεδίο της i Το πεδίο της j public static void method1() {.. for (int i = 1; i < 10; i++) {.. int j;... 12

13 Πεδίο των τοπικών μεταβλητών Είναι ΟΚ να δηλώσεις το i σε δύο μη επ ικαλυπτόμενα blocks public static void method1() { int x = 1; int y = 1; for (int i = 1; i < 10; i++) { x += i; for (int i = 1; i < 10; i++) { y += i; Είναι λάθος να δηλώσεις το i σε δύο μη επικαλυπτόμενα blocks public static void method2() { int i = 1; int sum = 0; for (int i = 1; i < 10; i++) sum += i; Πεδίο των τοπικών μεταβλητών // Εκτελείται χωρίς λάθη public static void correctmethod() { int x = 1; int y = 1; // δηλώνεται το i for (int i = 1; i < 10; i++) { x += i; // το i δηλώνεται ξανά for (int i = 1; i < 10; i++) { y += i; 13

14 Πεδίο των τοπικών μεταβλητών // ποιο λάθος υπάρχει εδώ;;;; public static void incorrectmethod() { int x = 1; int y = 1; for (int i = 1; i < 10; i++) { int x = 0; x += i; Η αφαίρεση (abstraction) στις μεθόδους Μπορείτε να σκεφτείτε το σώμα των μεθόδων ως ένα «μαύρο κουτί» που περιέχει την αναλυτική υλοποίηση της μεθόδου Προαιρετικά ορίσ ματα για Input Προαιρετική επιστροφή τιμής Υπογραφή μεθόδου Σώμα μεθόδου Μαύρο κουτί 14

15 Πλεονεκτήματα των μεθόδων Γράφετε μια μέθοδο μια φορά και την επαναχρησιμοποιείτε οπουδήποτε Κρύψιμο πληροφορίας: Κρύβεται η υλοποίηση από το χρήστη Μείωση πολυπλοκότητας Η κλάση Math Σταθερές της κλάσης: PI E Μέθοδοι της κλάσης: Μέθοδοι Τριγωνομετρίας Μέθοδοι για ύψωση σε δύναμη Μέθοδοι στρογγυλοποίησης Μέθοδοι min, max, abs, και random 15

16 Μέθοδοι Τριγωνομετρίας sin(double a) cos(double a) tan(double a) acos(double a) asin(double a) Παραδείγματα: Math.sin(0) επιστρέφει 0.0 Math.sin(Math.PI / 6) επιστρέφει 0.5 Math.sin(Math.PI / 2) επιστρέφει 1.0 Math.cos(0) επιστρέφει 1.0 atan(double a) Math.cos(Math.PI / 6) επιστρέφει Math.cos(Math.PI / 2) επιστρέφει 0 Μέθοδοι για ύψωση σε δύναμη exp(double a) Επιστρέφει το e υψωμένο στην a. log(double a) Επιστρέφει το φυσικό λογάριθμο του a. log10(double a) Επιστρέφει το δεκαδικό λογάριθμο του a. pow(double a, double b) Επιστρέφει το a υψωμένο στη δύναμη του b. sqrt(double a) Επιστρέφει την τετραγωνική ρίζα του a. Παραδείγματα: Math.exp(1) επιστρέφει 2.71 Math.log(2.71) επιστρέφει 1.0 Math.pow(2, 3) επιστρέφει 8.0 Math.pow(3, 2) επιστρέφει 9.0 Math.pow(3.5, 2.5) επιστρέφει Math.sqrt(4) επιστρέφει 2.0 Math.sqrt(10.5) επιστρέφει

17 Μέθοδοι στρογγυλοποίησης double ceil(double x) Το x στρογγυλοποιείται προς τα πάνω στον πλησιέστερο ακέραιο. Αυτός ςο ακέραιος επιστρέφεται ως τιμή double. double floor(double x) Το x στρογγυλοποιείται προς τα κάτω στον πλησιέστερο ακέραιο. Αυτός ο ακέραιος επιστρέφεται ως τιμή double. double rint(double x) Το x στρογγυλοποιείται στον πλησιέστερο ακέραιο. Αν ο x βρίσκεται ανάμεσα σε δύο ακεραίους, τότε επιστρέφεται ο άρτιος ακέραιος ως double. int round(float x) Επιστρέφει το (int)math.floor(x+0.5). long round(double x) Επιστρέφει το (long)math.floor(x+0.5). Παραδείγματα μεθόδων στρογγυλοποίησης Math.ceil(2.1) επιστρέφει 3.0 Math.ceil(2.0) returns 2.0 Math.ceil(-2.0) επιστρέφει 2.0 Math.ceil(-2.1) επιστρέφει -2.0 Math.floor(2.1) επιστρέφει 2.0 Math.floor(2.0) επιστρέφει 2.0 Math.floor(-2.0) επιστρέφει 2.0 Math.floor(-2.1) επιστρέφει -3.0 Math.rint(2.1) επιστρέφει 2.0 Math.rint(2.0) επιστρέφει 2.0 Math.rint(-2.0) επιστρέφει 2.0 Math.rint(-2.1) επιστρέφει -2.0 Math.rint(2.5) επιστρέφει 2.0 Math.rint(-2.5) επιστρέφει -2.0 Math.round(2.6f) επιστρέφει 3 Math.round(2.0) επιστρέφει 2 Math.round(-2.0f) επιστρέφει -2 Math.round(-2.6) επιστρέφει -3 17

18 min, max και abs max(a, b)και min(a, b) Επιστρέφουν το μέγιστο/ελάχιστο των δύο παραμέτρων abs(a) Επιστρέφει την απόλυτη τιμή της παραμέτρου random() Επιστρέφει μια τυχαία double τιμή στο εύρος [0.0, 1.0). Παραδείγματα: Math.max(2, 3) επιστρέφει 3 Math.max(2.5, 3) επιστρέφει 3.0 Math.min(2.5, 3.6) επιστρέφει 2.5 Math.abs(-2) επιστρέφει 2 Math.abs(-2.1) επιστρέφει 2.1 Η μέθοδος Math.random Δημιουργεί μια τυχαία double τιμή μεγαλύτερη ή ίση του 0.0 και μικρότερη του 1.0 (0 <= Math.random() < 1.0). Παραδείγματα: (int)(math.random() * 10) 50 + (int)(math.random() * 50) Επιστρέφει έναν τυχαίο ακέραιο μεταξύ 0 και 9 Επιστρέφει έναν τυχαίο ακέραιο μεταξύ 50 και 99 Γενικά, a + Math.random() * b Επιστρέφει έναν τυχαίο ακέραιο μεταξύ a και a + b, μη συμπεριλαμβανομένου του a + b. 18

19 Δείτε το manual της java.lang.math online Μπορείτε να δείτε το ολοκληρωμένο manual (τεκμηρίωση) της κλάσης Math online: om/javase/6/docs/api/i ndex.html. Αυτού του είδους τα manuals ονομάζονται Javadocs Παράδειγμα: Δημιουργία τυχαίων χαρακτήρων Ένα πρόγραμμα μπορεί να επεξεργαστεί τόσο αριθμούς όσο και χαρακτήρες. Κάθε Unicode χαρακτήρας έχει μια μοναδική αριθμητική αναπαράσταση μεταξύ 0 και FFFF σε δεκαεξαδικό (65535 σε δεκαδικό). Άρα, για τη δημιουργία ενός τυχαίου χαρακτήρα αρκεί να δημιουργήσουμε έναν τυχαίο ακέραιο μεταξύ 0 και χρησιμοποιώντας την ακόλουθη έκφραση: (σημειώστε ότι καθώς 0 <= Math.random() < 1.0, πρέπει να προσθέσουμε το 1 στο ) (int)(math.random() * ( )) 19

20 Παράδειγμα: Δημιουργία τυχαίων χαρακτήρων Ας υποθέσουμε τώρα ότι θέλουμε να δημιουργήσουμε έναν τυχαίο πεζό χαρακτήρα. Οι Unicode αναπαραστάσεις για τα πεζά γράμματα είναι συνεχόμενοι ακέραιοι που αρχίζουν από τη Unicode αναπαράσταση του 'a', έπειτα του 'b', 'c',..., και 'z'. Η Unicode αναπαράσταση του 'a' είναι (int)'a' Άρα, ο τυχαίος ακέραιος μεταξύ (int)'a' και (int)'z' είναι (int)((int)'a' + Math.random() * ((int)'z' (int)'a' + 1) Άσκηση για το σπίτι: PrintCalender Όταν γράφουμε μεγάλα προγράμματα, χρησιμοποιούμε στρατηγική διαίρει και βασίλευε, για να αποδομηθεί σε υποπροβλήματα. Τα υποπροβλήματα μπορούν να αποδομηθούν περαιτέρω σε μικρότερα, πιο διαχειρήσιμα ιμα προβλήματα. Βάλτε αυτή τη στρατηγική σε εφαρμογή σε μια εφαρμογή PrintCalendar 20

21 Άσκηση για το σπίτι: Διάγραμμα σχεδιασμού της PrintCalendar Κάθε κόμβος στο διάγραμμα αντιστοιχεί σε μία μέθοδο printcalendar (main) readinput printmonth printmonthtitle getmonthname printmonthbody getstartday gettotalnumofdays getnumofdaysinmonth isleapyear Πακέτα (Packages) Υπάρχουν τρεις λόγοι για να χρησιμοποιείτε πακέτα: 1. Για την αποφυγή συγκρούσεων ονομάτων (naming conflicts). Όταν αναπτύσσετε επαναχρησιμοποιήσιμες κλάσεις για να τις ςμοιραστείτε με άλλους προγραμματιστές, είναι ενδεχόμενο να συμβούν να ορίσετε μια κλάση δίνοντάς της το ίδιο όνομα με κλάση που χρησιμοποιεί κάποιος άλλος. Αυτό αποφεύγεται αν τοποθετήσετε τις κλάσεις σε πακέτα ώστε οι αναφορές σε αυτές μα είναι μέσω των ονομάτων πακέτων 2. Για να διανέμουμε software με ένα βολικό τρόπο. Τα πακέτα ομαδοποιούν σχετιζόμενες κλάσεις ώστε να μπορούν εύκολα να ομαδοποιηθούν. 3. Για να προστατευθούν κάποιες κλάσεις. Τα πακέτα παρέχουν προστασία ώστε τα protected μέλη των κλάσεων να είναι προσβάσιμα από άλλες κλάσεις στο ίδιο πακέτο αλλά όχι από «εξωτερικές» κλάσεις. 21

22 Συμβάσεις στην ονοματοδοσία πακέτων Τα πακέτα είναι ιεραρχικά, μπορούμε δηλαδή να έχουμε πακέτα μέσα σε πακέτα. π.χ. το java.lang.math δηλώνει ότι η κλάση Math είναι μια κλάση στο πακέτο lang και ότι το lang είναι ένα πακέτο μέσα στο πακέτο java. Τα επίπεδα φωλιάσματος εξασφαλίζουν μοναδικότητα στα ονόματα των πακέτων. Η επιλογή μοναδικών ονομάτων πακέτων είναι σημαντική καθώς το πακέτο σας μπορεί να χρησιμοποιείται από άλλους προγραμματιστές, και αντίστροφα. Γενικά, συνίσταται να χρησιμοποιείτε το Internet όνομα περιοχής σας σε ανάστροφη σειρά ως πρόθεμα των πακέτων σας (π.χ. aegean.ct). Καθώς τα ονόματα περιοχής στο Internet είναι μοναδικά, αυτή η μέθοδος αποκλείει συγκρούσεις ονομάτων Για το πακέτο aegean.ct.mypackage, πρέπει να δημιουργήστε ένα φάκελο, όπως φαίνεται στην εικόνα. Δηλαδή, το πακέτο είναι στην πραγματικότητα ένας φάκελος που περιέχει το bytecode των κλάσεων (*.class αρχεία). aegean.ct.mypackage Βάζοντας κλάσεις σε πακέτα Κάθε κλάση στη Java ανήκει σε ένα πακέτο. Για να προστεθεί μία κλάση TestClass στο πακέτο aegean.ct.mypackage πρέπει: To αρχείο (bytecode) TestClass.class να αποθηκευθεί στον φάκελο C:\..\...\aegean\ct\mypackage\ Να προστεθεί η ακόλουθη γραμμή κώδικα ως πρώτη δήλωση στον κώδικα της TestClass: inport aegean.ct.mypackage.*; 22

23 Χρησιμοποιώντας κλάσεις που ανήκουν σε κάποια πακέτα Υπάρχουν δύο τρόποι για να χρησιμοποιήστε σε ένα πρόγραμμα μια κλάση που ανήκει σε κάποιο πακέτο 1. Ένας τρόπος είναι να χρησιμοποιήσετε το πλήρες όνομα της κλάσης π.χ., το πλήρες όνομα της JOptionPane είναι javax.swing.joptionpane, περιλαμβάνει δηλαδή και το πακέτο στο οποίο ανήκει. Αυτός ο τρόπος μπορεί να είναι βολικός εφόσον η κλάση χρησιμοποιείται λίγες φορές μέσα στο πρόγραμμα 2. Ο άλλος τρόπος είναι να χρησιμοποιηθεί η δήλωση import. Π.χ. για να εισάγετε (δηλαδή για να μπορείτε να χρησιμοποιήσετε όλες τις κλάσεις του πακέτου javax.swing γράφετε: import javax.swing.*; Μπορείτε ωστόσο να εισάγετε και μια συγκεκριμένη κλάση, π.χ. γράφοντας: import javax.swing.joptionpane; Η πληροφορία των κλάσεων ενός εισαχθέντος πακέτου δεν διαβάζεται κατά τη μεταγλώττιση ούτε και κατά την εκτέλεση, παρά μόνο όταν η κλάση χρησιμοποιηθεί πραγματικά στο πρόγραμμα. Η δήλωση import απλά λέει στο μεταγλωττιστή που θα βρει τις κλάσεις Εισαγωγή στους πίνακες (Arrays) Οι πίνακες είναι δομές δεδομένων που αναπαριστούν μια συλλογή από δεδομένα του ίδιου τύπου double[] mylist = new double[10]; mylist αναφορά mylist[0] mylist[1] Μεταβλητή αναφοράς στον πίνακα mylist[2] mylist[3] Στοιχείο του πίνακα στη θέση 5 mylist[4] mylist[5] mylist[6] mylist[7] mylist[8] mylist[9] Τιμή στοιχείου 23

24 Ορισμός και δημιουργία πινάκων datatype[] arrayrefvar; Παράδειγμα: double[] mylist; Δημιουργία πίνακα: arrayrefvar = new datatype[arraysize]; Παράδειγμα: mylist = new double[10]; mylist[0] references the first element in the array. mylist[9] references the last element in the array Ορισμός και δημιουργία πίνακα σε ένα βήμα: double mylist = new double[10]; Το μήκος (ή μέγεθος) ενός πίνακα Από τη στιγμή της δημιουργίας του, το μήκος ενός πίνακα είναι καθορισμένο και δεν αλλάζει. Μπορείτε να το δείτε χρησιμοποιώντας την ιδιότητα length arrayrefvar.length Για παράδειγμα, mylist.length επιστρέφει 10 24

25 Οι μεταβλητές καταλόγου (indexed variables) Τα στοιχεία του πίνακα προσπελαύνονται μέσω της θέσης τους (index). Η αρίθμηση των θέσεων αρχίζει από το 0. Κάθε στοιχείο του πίνακα αναπαρίσταται χρησιμοποιώντας τη σύνταξη, γνωστή και ως μεταβλητή καταλόγου (indexed variable): arrayrefvar[index]; Μετά τη δημιουργία του πίνακα, μία μεταβλητή καταλόγου χρησιμοποιείται όπως και οποιαδήποτε άλλη μεταβλητή, π.χ.: mylist[2] = mylist[0] + mylist[1]; Ορισμός, δημιουργία και αρχικοποίηση πινάκων double[] mylist = {1.9, 2.9, 3.4, 3.5; Η αρχικοποίηση μπορεί να γίνει και σε πολλά βήματα: double[] mylist = new double[4]; mylist[0] = 1.9; mylist[1] = 2.9; mylist[2] = 3.4; mylist[3] = 3.5; 25

26 Παράδειγμα χρήσης πινάκων public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i< 5; i++) { values[i] = i+ values[i 1]; values[0] = values[1] + values[4]; 1 Μετά τη δημιουργία του πίνακα Στο τέλος της εκτέλεσης του προγράμματος Παρακολουθώντας τις τιμές των στοιχείων ενός πίνακα στον Debugger του NetBeans 26

27 Αντιγραφή πινάκων Συχνά, σε ένα πρόγραμμα, χρειάζεται να αντιγράψετε έναν πίνακα x (ή μέρος ενός πίνακα x) σε κάποιον άλλο πίνακα y. H χρησιμοποίηση της δήλωσης εκχώρησης (π.χ. list2 = list1) έχει ως αποτέλεσμα οι δύο μεταβλητές αναφοράς των πινάκων να «δείχνουν» πλέον προς τα στοιχεία του ενός πίνακα. Τα στοιχεία του άλλου πίνακα θα διαγραφούν από τη μνήμη (garbage collection) Μετά την εκχώρηση, οποιαδήποτε αλλαγή στα στοιχεία του ενός πίνακα θα επηρεάσει και τον άλλο Πριν την εκχώρηση list2 = list1; list1 list2 Στοιχεία list1 Στοιχεία list2 Μετά την εκχώρηση list2 = list1; list1 list2 Σκουπίδια (θα διαγραφεί) Στοιχεία list1 Στοιχεία list2 Αντιγραφή πινάκων Αντιγραφή πινάκων, διατηρώντας δύο «ανεξάρτητους» πίνακες (χωρίς εκχώρηση) 1. Με χρήση βρόγχου: int[] sourcearray = {2, 3, 1, 5, 10; int[] targetarray = new int[sourcearray.length]; for (int i = 0; i < sourcearrays.length; i++) targetarray[i] = sourcearray[i]; 2. Με χρήση της μεθόδου arraycopy της κλάσης System: arraycopy(sourcearray, src_pos, targetarray, tar_pos, length); π.χ.,system.arraycopy(sourcearray,0, targetarray, 0, sourcearray.length); 27

28 Περνώντας πίνακες σε μεθόδους public static void printarray(int[] myarray) { for (int i = 0; i < myarray.length; i++) { System.out.print(myarray[i] + " "); Τι αποτέλεσμα θα έχει η παρακάτω κλήση της μεθόδου; ; int[] list = {3, 1, 2, 6, 4, 2; printarray(list); Pass by Value ή Pass by Reference;; Άλλες γλώσσες προγραμματισμού επιτρέπουν, όταν περνάς παραμέτρους σε μεθόδους, να δείχνεις κατά θέλεις τα δεδομένα των παραμέτρων αυτών να παραμείνουν αμετάβλητα μετά την κλήση της μεθόδου (pass by value) b l ή να μεταβληθούν (pass by reference) Στη Java, αυτή η επιλογή δεν υπάρχει. Αυτό που πρέπει να θυμόμαστε ως κανόνα είναι το εξής: Όταν περνάμε μια παράμετρο πρωτογενούς τύπου (π.χ. int, double, char, String, κλπ) τότε γίνεται pass by value (η τιμή τους θα μείνει ίδια μετά την κλήση της μεθόδου) ) Όταν περνάμε ως παράμετρο οποιοδήποτε αντικείμενο (π.χ. ένα αντικείμενο της κλάσης Circle ή ένα array), τότε γίνεται pass by reference (η τιμή τους θα έχει μεταβληθεί μετά την κλήση της μεθόδου) 28

29 Pass by Value ή Pass by Reference;; public static void main(string[] args) { int i = 10; int[] myarray = {4, 7, 90; String s = "this is before"; Circle circle = new Circle(10); System.out.println("i=" + i + ", myarray" + Arrays.toString(myArray) + ", s=" + s + ", Circle radius=" + circle.getradius()); test(i, myarray, s, circle); System.out.println("i=" + i + ", myarray" + Arrays.toString(myArray) + ", s=" + s + ", Circle radius=" + circle.getradius()); Pass by Value ή Pass by Reference;; public static void test (int j, int[] newarr, String str, Circle c) { j = 1000; newarr [0] = 1000; str = "this is after"; c.setradius(200); Τι θα τυπωθεί; i=10, myarray[4, 7, 90], s=this is before, Circle radius=10.0 i=10, myarray[1000, 7, 90], s=this is before, Circle radius=200.0 Δηλαδή τα i, s έμειναν αμετάβλητα ενώ το array και το αντικείμενο της Circle τροποποιήθηκαν 29

30 Παράδειγμα επιστροφής ενός πίνακα από μια μέθοδο public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; return result; Κλήση της μεθόδου (ποια θα είναι τα περιεχόμενα του πίνακα list2 μετά την κλήση;) int[] list1 = new int[]{1, 2, 3, 4, 5, 6; int[] list2 = reverse(list1); Αναζήτηση σε πίνακες Η αναζήτηση είναι η διαδικασία εξέτασης του πίνακα για το κατά πόσο περιέχει ένα συγκεκριμένο στοιχείο Η αναζήτηση είναι συνηθισμένη πράξη στον προγραμματισμό. Υπάρχουν πολλοί αλγόριθμοι που αφιερώνονται στην αναζήτηση Εδώ εξετάζονται η γραμμική (linear) και δυαδική (binary) αναζήτηση. public class LinearSearch { /** The method for finding a key in the list */ public static int linearsearch(int[] list, int key) { for (int i = 0; i < list.length; i++) if (key == list[i]) [0] [1] [2] return i; list return -1; key Σύγκρινε το keyμε το list[i] για i = 0, 1, 30

31 Γραμμική αναζήτηση Η γραμμική αναζήτηση συγκρίνει την τιμή που αναζητείται (key) σειριακά με κάθε στοιχείο στον πίνακα. Η μέθοδος συνεχίζει μέχρι να βρεθεί στοιχείο όμοιο με το key ή να εξαντληθεί ο πίνακας. Αν το key βρεθεί τότε επιστρέφεται η θέση (index) του στοιχείου στον πίνακα. Αν δε βρεθεί, επιστρέφεται η τιμή 1. int[] list = {1, 4, 4, 2, 5, -3, 6, 2; int i = linearsearch(list, 4); // returns 1 int j = linearsearch(list, -4); // returns -1 Δυαδική αναζήτηση Για να λειτουργήσει η δυαδική αναζήτηση, τα στοιχεία του πίνακα πρέπει να είναι ταξινομημένα (συνήθως, θεωρούμε σε αύξουσα σειρά) π.χ., Η δυαδική αναζήτηση πρώτα συγκρίνει το key με το μεσαίο στοιχείο του πίνακα Αν το κλειδί είναι μικρότερο από το μεσαίο στοιχείο τότε αρκεί να περιορίσεις την αναζήτηση στο πρώτο μισό του πίνακα. Αν το κλειδί είναι ίσο με το μεσαίο στοιχείο τότε η αναζήτηση τελειώνει. Αν το κλειδί είναι μεγαλύτερο από το μεσαίο στοιχείο τότε αρκεί να περιορίσεις την αναζήτηση στο δεύτερο μισό του πίνακα. 31

32 Δυαδική αναζήτηση Key Πίνακας Υλοποίηση δυαδικής αναζήτησης public static int binarysearch(int[] list, int key) { int low = 0; int high = list.length - 1; while (high >= low) { int mid = (low + high) / 2; if (key < list[mid]) high = mid - 1; else if (key == list[mid]) return mid; else low = mid + 1; return -1 - low; 32

33 Μέθοδοι της κλάσης java.util.arrays H κλάση java.util.arrays προσφέρει χρήσιμη λειτουργικότητα που αφορά τη χρήση και επεξεργασία πινάκων, αν π.χ. έχουμε τον πίνακα ακεραίων a: Ταξινόμηση Arrays.sort(a); // ταξινομεί τα στοιχεία του a σε αύξουσα σειρά (χρησιμοποιεί την quicksort) Δυαδική αναζήτηση int pos = Arrays.binarySearch(a, 5); // Επιστρέφει τη θέση του 5 στο a Αντιγραφή int[] b = Arrays.copyOf(a, num); // το b θα είναι αντίγραφο του a με μήκος num Ορισμός και δημιουργία 2 διάστατων πινάκων int[][] matrix = new int[10][10]; matrix[0][0] = 3; for (int i = 0; i < matrix.length; i++) for (int j = 0; j < matrix[i].length; j++) matrix[i][j] = (int)(math.random() * 1000); double[][] x; 33

34 Παράδειγμα 2 διάστατου πίνακα matrix = new int[5][5]; matrix[2][1] = 7; int[][] array = { {1, 2, 3, {4, 5, 6, {7, 8, 9, {10, 11, 12 ; matrix.length? 5 matrix[0].length? 5 array.length? 4 array[0].length? 3 Ορισμός και δημιουργία και αρχικοποίηση 2 διάστατων πινάκων int[][] array = { {1, 2, 3, {4, 5, 6, {7, 8, 9, {10, 11, 12 ; Αντίστοιχο με int[][] array = new int[4][3]; array[0][0] = 1; array[0][1] = 2; array[0][2] = 3; array[1][0] = 4; array[1][1] = 5; array[1][2] = 6; array[2][0] = 7; array[2][1] = 8; array[2][2] = 9; array[3][0] = 10; array[3][1] = 11; array[3][2] = 12; 34

35 Άσκηση για το σπίτι Γράψτε ένα πρόγραμμα το οποίο Αρχικοποιεί έναν 2 διάστατο πίνακα με της απαντήσεις φοιτητών σε ερωτήσεις πολλαπλής επιλογής Αρχικοποιεί έναν μονοδιάστατο πίνακα με τις σωστές απαντήσεις στις ερωτήσεις πολλαπλής επιλογής Υπολογίζει και εμφανίζει το σκορ κάθε φοιτητή (αριθμό σωστών απαντήσεων) Απαντήσεις φοιτητών σε ερωτήσεις: Student 0 Student 1 Student 2 Student 3 Student 4 Student 5 Student 6 Student 7 A B A C C D E E A D D B A B C A E E A D E D D A C B E E A D C B A E D C E E A D A B D C C D E E A D B B E C C D E E A D B B A C C D E E A D E B E C C D E E A D Key Σωστές απαν τήσεις: D B D C C D A E A D Πίνακες πολλαπλών διαστάσεων Σε κάποιες περιπτώσεις θα χρειαστεί να αναπαραστήσετε δομές δεδομένων πολλαπλών διαστάσεων. Στη Java μπορείτε να δημιουργήσετε πολυδιάστατους πίνακες (n dimensional arrays) Π.χ. παρακάτω ορίζεται ένας 3 διάστατος πίνακας με double τιμές double[][][] scores = new double[10][5][2]; 35

36 Πίνακας από αντικείμενα Circle[] circlearray = new Circle[10]; Ένας πίνακας από αντικείμενα είναι στην πραγματικότητα ένας πίνακας από μεταβλητές αναφοράς (array of reference variables). Άρα, η κλήση circlearray[1].getarea() περιλαμβάνει δύο επίπεδα αναφοράς το circlearray αποτελεί αναφορά σε ολόκληρο τον πίνακα το circlearray[1] αναφέρεται σε ένα αντικείμενο Circle circlearray reference circlearray[0] Circle object 0 circlearray[1] Circle object 1 circlearray[9] Circle object 9 36

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

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

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

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

Διάλεξη 4: Προγραμματισμός σε JAVA IΙ. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 4: Προγραμματισμός σε JAVA IΙ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: -Μέθοδοι - Πίνακες, Πολυδιάστατοι Πίνακες - Boxing/Unboxing - Χρήσιμες βιβλιοθήκες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

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

Προγραμματισμός Συστημάτων MYY502 Προγραμματισμός Συστημάτων Β. Δημακόπουλος dimako@cse.uoi.gr http://www.cse.uoi.gr/~dimako Εργαστήρια Μάλλον (!) ξεκινούν την επόμενη εβδομάδα Εγγραφές στο εργαστήριο 2 βάρδιες, 15:00 17:00 και

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2] array[0][1] Γενική δήλωση πίνακα: τύπος_στοιχείων [ ] όνομα = new τύπος_στοιχείων [μήκος]; // 1-D και φυσικά

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη 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 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 7 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2]

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Λογικά λάθη public class ShowLogicErrors

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> 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 υποστηρίζει

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

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

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

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

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

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

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

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

Εργαστήριο 2: Πίνακες

Εργαστήριο 2: Πίνακες Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης Γ7.5 Αλγόριθμοι Αναζήτησης Γ Λυκείου Κατεύθυνσης Εισαγωγή Αλγόριθμος αναζήτησης θεωρείται ένας αλγόριθμος, ο οποίος προσπαθεί να εντοπίσει ένα στοιχείο με συγκεκριμένες ιδιότητες, μέσα σε μία συλλογή από

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

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

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

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

Βασικά της γλώσσας JAVA

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

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

Διάλεξη 9η: Πίνακες (arrays)

Διάλεξη 9η: Πίνακες (arrays) Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

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

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

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

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

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

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

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

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

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

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

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

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

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

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

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

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Linear Data Structures) Ας θεωρήσουµε µία δοµή δεδοµένων το σύνολο των στοιχείων της οποίας είναι διατεταγµένο µε τέτοιο τρόπο ώστε να ισχύουν τα εξής: (α) υπάρχει ένα µόνο

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

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

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

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΔΟΜΕΣ Πίνακες Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται

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

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

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

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

Ηβασικήσυνάρτηση προγράμματος main()

Ηβασικήσυνάρτηση προγράμματος main() Ηβασικήσυνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Ησυνάρτησηείναι ένα υποπρόγραμμα που

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

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

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων 6 Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων Τι θα δούμε σε αυτό το μάθημα 1. Μεταβίβαση ορισμάτων σε μέθοδο 1. μεταβίβαση τύπου τιμής 2. μεταβίβαση αναφοράς τιμής-ref και out 3. μεταβίβαση αναφοράς αντικειμένου

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

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

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

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