Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ
Δήλωση Μεταβλητής Πίνακα – [] variable_name; –int [] prime; –int prime[]; Και ο δύο τρόποι είναι ισοδύναμοι Καμμία δέσμευση στην μνήμη μέχρι στιγμής
Ορισμός Μεγέθους Πίνακα Ορισμός Μεγέθους ενός πίνακα: –variable_name=new [N]; –primes=new int[10]; Δήλωση και ορισμός μεγέθους: –int[] primes=new int[10]; Μέγεθος σε bytes: –int : 4 bytes –Σύνολο: 4*10=40 bytes
ΓΡΑΦΙΚΗ ΑΝΑΠΑΡΑΣΤΑΣΗ prime TIMH ΘΕΣΗΣ ΔΕΙΚΤΗΣ ΘΕΣΗΣ ΠΙΝΑΚΑ
Τι γίνεται στην περίπτωση… Ορίσουμε –int[] prime=new long[20]; MorePrimes.java:5: incompatible types found: long[] required: int[] int[] primes = new long[20]; ^ ΣΥΝΤΑΚΙΚΟ ΛΑΘΟΣ : –Ασυμβατότητα τύπων δήλωσης και ορισμού
Τι γίνεται στην περίπτωση… Ορίσουμε –int prime[100]; MorePrimes.java:5: ']' expected long primes[20]; ^ ΣΥΝΤΑΚΙΚΟ ΛΑΘΟΣ : –Ο τρόπος ορισμού της C++ δεν επιτρέπεται στην JAVA
Εξ ορισμού Αρχικοποίηση Πίνακα Όταν δημιουργείται ο πίνακας τα στοιχεία του πίνακα αρχικοποιούνται –Αριθμητικές τιμές (int, double,κτλ.) σε 0 –Boolean τιμές σε false –Char τιμές σε ‘\u0000’ (unicode αναπαράσταση για τον κενό χαρακτήρα)
ΓΡΑΦΙΚΗ ΑΝΑΠΑΡΑΣΤΑΣΗ Εξ ορισμού αρχικοποίησης Αριθμητικές τιμές –int[] primes=new int[10]; false Boolean Τιμές boolean[] bool=new boolean[10];
Προσπέλαση Στοιχείων Πίνακα Ο Δείκτης Θέσης ενός πίνακα είναι: –Θετικός Ακέραιος int,short Κάθε άλλος τύπος είναι συντακτικό σφάλμα –long, double, κτλ. Η αρίθμηση των δεικτών θέσης ξεκινάει από το 0 και τελείωνει στο N-1 primes[2]=0;// Θέτει την τιμή 0 στην θέση 2 int k = primes[2];//Εκχωρεί την τιμή που περιέχεται στη //θέση 2 στην μεταβλητή k …
Έλεγχος Δεικτών Θέσης Η JAVA ελέγχει εάν οι δείκτες θέσης είναι έγκυροι κατά την εκτέλεση του προγράμματος Ένα μήνυμα σφάλματος IndexOutOfBoundsException θα εμφανισθεί εάν: –Εάν ο δέικτης θέσης είναι αρνητικός –Εάν ο δείκτης θέσης είναι εκτός του έγκυρου εύρους τιμών int primes[] = new int[10]; primes[15]=2;//Λάθος …. Runtime Error: Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Έγκυρο Εύρος Τιμών:0-9
Αρχικοποίηση Πινάκων Δήλωση, Ορισμός Μεγέθους και Αρχικοποίηση int[] primes={2,3,5,7,11,13,17}; //7 στοιχεία Αρχικοποίηση μέσω άλλου πίνακα int[] even={2,4,6,8,10}; int[] value=even; –Ένας πίνακας αλλά δυο μεταβλητές πινάκων –Και οι δύο μεταβλητές αναφέρονται στον ίδιο πίνακα –Ο πίνακας μπορεί να προσπελαστεί Array μέσω οποιασδήποτε εκ των δύο μεταβλητών
Παράδειγμα long[] primes = new long[20]; primes[0] = 2; primes[1] = 3; long[] primes2=primes; System.out.println(primes2[0]); primes2[0]=5; System.out.println(primes[0]);
Έξοδος 2525
Ιδιότητα length Για κάθε πίνακα υπάρχει η ιδιότητα length που δίνει τον αριθμό των θέσεων του πίνακα –array_variable_name.length –for(int k=0; k<primes.length;k++) …. Παράδειγμα: long[] primes = new long[20]; System.out.println(primes.length); Output: 20
Προσπέλαση όλων των θέσεων ενός πίνακα Για την προσπέλαση όλων των θέσεων ενός πίνακα χρησιμοποιομε μια δομή επανάληψης for με γενική μορφή: int[] array = new int[10]; for(int i=0; i<array.length; i++){ ….. }
Άσκηση 1 Να γραφεί πρόγραμμα σε Java (CopyArrays.java) στο οποίο να δημιουργούνται δύο πίνακες ακεραίων: πρώτα πίνακας με όνομα ΑrrayInt2 10 θέσεων που περιέχει τους αριθμούς από το 1-5 στις 5 πρώτες θέσεις του, και τον πίνακα με όνομα ArrayInt1 5 θέσεων που περιέχει τους αριθμούς Κάνετε τις απαραίτητες αντιγραφές στοιχείων μεταξύ των δύο πινάκων ώστε ο πίνακας ArrayInt1 να περιέχει τους αριθμούς 1-5 και ο πίνακας ArrayInt2 τους αριθμούς 1-10
Γραφική Αναπαράσταση arrayInt1 arrayInt
Άσκηση 2 Να γραφεί πρόγραμμα σε java με όνομα ArrayOperations στο οποίο να δημιουργείται ένας πίνακας ακεραίων Ν θέσεων όπου Ν θετικός ακέραιος που εισάγεται από τον χρήστη. Στην συνέχεια να εισάγονται από τον χρήστη θετικοί ακέραιοι για κάθε θέση του πίνακα. Να υπολογιστούν και να τυπωθούν: 1.Το άθροισμα των στοιχείων του πίνακα 2.Ο μέσος όρος των στοιχείων του πίνακα 3.Το μέγιστο στοιχείο του πίνακα 4.Το πλήθος των περιττών στοιχείων του πίνακα Στην συνέχεια ο χρήστης να εισάγει έναν θετικό ακέραιο αριθμό. Να γίνει αναζήτηση του συγκεκριμένου αριθμού στον πίνακα και να τυπωθεί κατάλληλο μήνυμα.