Αντικειμενοστραφής Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 4: Πίνακες, Συνδυασμός Βρόχων Επαναλήψεων και Πινάκων. Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε Κάντε κλικ για να ξεκινήσετε
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Ευχαριστίες Στην ανάπτυξη του υλικού βοήθησαν οι φοιτητές Λάζαρος Τουμανίδης, Λίλιαν Γούσιου και ο βοηθός εργαστηρίου Κόγιας Δημήτριος. 4
Βιβλιογραφία Harvey Deitel,Paul Deitel, «Java Προγραμματισμός, 8η έκδοση», Γκιούρδας, 2010. Γιώργος Λιακέας, «Εισαγωγή στη Java», Κλειδάριθμος, 2009. Χρήστος Κυτάγιας, Κώστας Δ. Κυτάγιας, Γιώργος Πρεζεράκος, Δημήτρης Κυτάγιας, «Αντικειμενοστραφής Προγραμματισμός με Java», Σύγχρονη Εκδοτική, 2013. Wanda Dann, Stephen Cooper, and Randy Pausch, «Learning to program with Alice» 3rd edition, Pearson Education, 2012. Michael Kölling, «Introduction to Programming with Greenfoot». «Object-Oriented Programming in Java with Games and Simulations», Pearson Education, August 2009. Οι σημειώσεις είναι βασισμένες και σε υλικό του καθηγητή του ΤΕΙ Πειραιά Γ. Πρεζεράκου. 5
Περιεχόμενα 4.1 Πίνακες 4.2 Συνδυάζοντας Βρόχους Επαναλήψεων και Πίνακες 6
Προσδοκώμενα Αποτελέσματα Στην ενότητα αυτή θα μάθετε για: Τον τρόπο δημιουργίας και τα διάφορα είδη πινάκων, Πολυδιάστατους Πίνακες, Παραδείγματα για να διατρέξετε έναν πίνακα αποκτώντας πρόσβαση στα στοιχεία του. 7
4.1 Πίνακες 8
Πίνακες Ένας πίνακας είναι ένα ευρετήριο τιμών. Μπορείτε να φτιάξετε έναν πίνακα μεταβλητή int, double, string, κοκ για κάθε Προσοχή: Όλα τα στοιχεία ενός πίνακα πρέπει να είναι του ίδιου τύπου. 9
Πίνακες Αρίθμηση στοιχείων ενός πίνακα 10
Πίνακες Παράδειγμα: Πίνακας double[] 11
Πίνακες Ο δείκτης αρχίζει από το μηδέν και τελειώνει στο μηκος -1. Παράδειγμα: int[] values = new int[5]; values[0] = 12; // ΣΩΣΤΟ values[4] = 12; // ΣΩΣΤΟ values [5] = 12; // ΛΑΘΟΣ!! Συντακτικά είναι σωστό // αλλά εμφανίζεται σφάλμα κατά την βρίσκονται // εκτέλεση, καθώς τα στοιχεία // στις θέσεις από 0 έως 4. Φτιάξτε ένα πρόγραμμα με το σφάλμα αυτό και δοκιμάστε να το τρέξετε. 12
Πίνακες Ένας πίνακας εισάγεται καλώντας ARRAY_TYPE [ ]. Οι πίνακες είναι απλά ένας ακόμα τύπος δεδομένων. int [ ] values; // πίνακας int μεταβλητών int [ ] [ ] values; // int [ ] είναι ένας τύπος δεδομένων 13
Πίνακες Για να δημιουργήσουμε πίνακα συγκεκριμένου μεγέθους, χρησιμοποιούμε τον τελεστή new : int [ ] values = new int [5]; ή μία μεταβλητή για να καθορίσουμε το μέγεθος: int size = 12; int [ ] values = new int [size]; 14
Αρχικοποίηση Πίνακα Άγκιστρα μπορούν να χρησιμοποιηθούν για να αρχικοποιήσουμε έναν πίνακα. Μπορούν ωστόσο να χρησιμοποιηθούν ΜΟΝΟ όταν ορίζουμε τη μεταβλητή/ πίνακα. int [ ] values = { 12, 24, -23, 47 } ; 15
Ώρα για Quiz! Υπάρχει λάθος σε αυτόν το τμήμα κώδικα; int[ ] values = {1, 2.5, 3, 3.5, 4}; 16
Πρόσβαση στα Στοιχεία Πινάκων Για να έχουμε πρόσβαση στα στοιχεία του πίνακα, χρησιμοποιούμε τον τελεστή [ ]: values [index] Παράδειγμα: int [ ] values = { 12, 24, -23, 47 }; values [3] = 18; // { 12, 24, -23, 18 } int x = values[1] + 3; // { 12, 24, -23, 18 } // x = 27 17
Η Εντολή length Κάθε πίνακας έχει μια ενσωματωμένη εντολή length η οποία και περιέχει το μήκος του πίνακα. int [ ] values = new int [12]; int size = values.length; // η απάντηση είναι 12 int [ ] values2 = { 1, 2, 3, 4, 5} int size2 = values2.length; // 5 18
Πoλυδιάστατοι πίνακες Ένας πολυδιάστατος πίνακας ακολουθεί τους κανόνες δήλωσης πινάκων, αλλά έχει περισσότερες από μία διαστάσεις. int [ ] [ ] values = new int [6][5]; // πίνακας 2 διαστάσεων Εδώ η πρώτη αγκύλη είναι για τις γραμμές και η δεύτερη για τις στήλες. 19
Πίνακες Συμβολοσειρών public static void main (String [ ] arguments) { System.out.println (arguments.length); System.out.println (arguments [0]); System.out.println (arguments [1]); } 20
4.2 Συνδυάζοντας Βρόχους Επαναλήψεων και Πίνακες 21
Διατρέχοντας έναν Πίνακα Με τη Βοήθεια Ενός βρόχου Παράδειγμα 1: int [ ] values = new int[5]; for (int i=0; i<values.length; i++) { values[i] = i; int y = values[i] * values[i]; System.out.println(y); } Ερώτηση: Εξηγήστε τι κάνει το παραπάνω πρόγραμμα 22
Διατρέχοντας έναν Πίνακα Με τη Βοήθεια Ενός βρόχου Παράδειγμα 2: int [ ] values = new int [5]; int i = 0; while (i < values.length) { values[i] = i; int y = values[i] * values[i]; System.out.println(y); i++; } 23
Ένα παράδειγμα με πίνακα 2 διαστάσεων Ο ακόλουθος κώδικας εκτυπώνει όλα τα στοιχεία ενός πίνακα 2 διαστάσεων. int rows =3; int columns = 2; int [ ] [ ] values = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; for (int i=0; i<rows; i++) { } for (int j=0; j<columns; j++) { } System.out.println(values[i][j]+ ); 24
Σε αυτή την ενότητα μιλήσαμε για: 4.1 Πίνακες 4.2 Συνδυάζοντας Βρόχους Επαναλήψεων και Πίνακες 26
Αντικειμενοστραφής Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 4: Πίνακες, Συνδυασμός Βρόχων Επαναλήψεων και Πινάκων. Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε