Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

ΠΙΝΑΚΕΣ ΜΑΘΗΜΑ 6.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
1. Να γραφτεί αλγόριθμος ο οποίος θα ορίζει ένα μονοδιάστατο πίνακα Α 10 θέσεων. Ακολούθως θα διαβάζει από το πληκτρολόγιο τιμές τις οποίες θα τοποθετεί.
Πίνακες-Αλφαριθμητικά
Εισαγωγή στους Η/Υ Πίνακες.
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Τελεστές ανάθεσης (assignment)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Ολυμπιάδα Πληροφορικής
Ολυμπιάδα Πληροφορικής
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Πολυδιάστατοι Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
Δομές Επανάληψης ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Δεδομένα, μεταβλητές, υπολογισμοί
Πίνακες και αλφαριθμητικά
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
for (παράσταση_1; παράσταση_2; παράσταση_3)
Τύποι Μεταβλητών.
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
ΓΕΜΙΣΜΑ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ (Άσκηση 1)
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στον Προγ/μό Υπολογιστών
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Εισαγωγή στη Java (Μέρος Α’)
Μεταγράφημα παρουσίασης:

Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)

Δήλωση Μεταβλητής Πίνακα – [] 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.Το πλήθος των περιττών στοιχείων του πίνακα Στην συνέχεια ο χρήστης να εισάγει έναν θετικό ακέραιο αριθμό. Να γίνει αναζήτηση του συγκεκριμένου αριθμού στον πίνακα και να τυπωθεί κατάλληλο μήνυμα.

Δισδιάστατοι Πίνακες –float[][] sample=new float[5][10]; –5 πίνακες με 10 στοιχεία ο καθένας –Ο πρώτος δείκτης θέσης: καθορίζει τον πίνακα (γραμμή-row) –Ο δεύτερος δείκτης θέσης:καθορίζει το στοιχείο στον πίνακα(στήλη-column) –Στην JAVA ο τύπος float είναι 4 bytes, total Συνολικό μέγεθος=4*5*10=200 bytes

Γραφική Αναπαράσταση sample[0] sample[1] sample[2]

Αρχικοποίηση Δισδιάστατου Πίνακα int[][] array2D = { {99, 42, 74, 83, 100}, {90, 91, 72, 88, 95}, {88, 61, 74, 89, 96}, {61, 89, 82, 98, 93}, {93, 73, 75, 78, 99}, {50, 65, 92, 87, 94}, {43, 98, 78, 56, 99} }; //7 πίνακες με 5 στοιχεία ο καθένας

Δισδιάστατοι πίνακες μεταβλητού μήκους Όλοι οι πίνακες δεν είναι αναγκαίο να έχουν το ίδιο μήκος float[][] samples; samples=new float[6][]; samples[2]=new float[6]; samples[5]=new float[101]; Δεν απαιτείται να ορισθούν όλοι οι πίνακες

Αρχικοποίηση Πινάκων μεταβλητού μήκους int[][] uneven = { { 1, 9, 4 }, { 0, 2}, { 0, 1, 2, 3, 4 } }; //Τρείς πίνακες //Ο πρώτος έχει 3 στοιχεία //Ο δεύτερος έχει 2 στοιχεία //Ο τρίτος έχει 5 στοιχεία

Μέγεθος Πινάκων long[][] primes = new long[20][]; primes[2] = new long[30]; System.out.println(primes.length); //Αριθμός Πινάκων System.out.println(primes[2].length);//Αριθμός στοιχέιων στον δέυτερο πίνακα OUTPUT: 20 30

Παράδειγμα class unevenExample3 { public static void main( String[] arg ) { // δήλωση και αρχικοποίηση δισδιάστατου πίνακα int[][] uneven = { { 1, 9, 4 }, { 0, 2}, { 0, 1, 2, 3, 4 } }; // Εκτύπωση στοιχείων του πίνακα for ( int row=0; row < uneven.length; row++ ) //αλλαγή γραμμής { System.out.print("Row " + row + ": "); for ( int col=0; col < uneven[row].length; col++ ) //αλλαγή στήλης System.out.print( uneven[row][col] + " "); System.out.println(); }

Τρισδιάστατοι Πίνακες Ένας αγρότης έχει δέκα φάρμες με σιτάρι σε δύο νομούς και κάθε φάρμα έχει 30 χωράφια Τρισδιάστατος πίνακας int[][][] wheat=new int[2][10][30];

Άσκηση 1 Να γραφεί πρόγραμμα σε γλώσσα java ArrayTwoDimensions.java, στο οποίο αρχικά θα δηλώνεται ένας πίνακας ακεραίων 3 x 3 που θα δέχεται τυχαίες τιμές από το πληκτρολόγιο και στη συνέχεια θα υπολογίζεται το άθροισμα των στοιχείων του πίνακα μέχρι το πρώτο αρνητικό στοιχείο (αν υπάρχει τέτοιο) ή όλων των στοιχείων του πίνακα αν δεν υπάρχει αρνητικό στοιχείο σε αυτόν. Η διαπέραση του πίνακα θα γίνεται κατά γραμμές και σε κάθε γραμμή τα κελιά θα προσπελαύνονται από αριστερά προς τα δεξιά (κατά αύξοντα αριθμό στήλης).

Άσκηση 2 Να γραφεί πρόγραμμα σε java με όνομα ArrayTwoDimensions2 στο οποίο: 1.Θα δηλώνεται ένας πίνακας ακεραίων Ν x Ν όπου N θετικός ακέραιος που εισάγεται από τον χρήστη. 2.Στην συνέχεια να εισάγονται από τον χρήστη θετικοί ακέραιοι για κάθε θέση του πίνακα. 3.Να υπολογιστεί και να τυπωθεί το άθροισμα των στοιχείων της κυρίας διαγωνίου 4.Δημιουργήστε έναν μονοδιάστατο πίνακα ακεραίων με μήκος N που σε κάθε θέση του θα περιέχει τον μέγιστο ακέραιο της κάθε σειράς του πίνακα ΝΧN. 5.Να τυπώσετε όλους τους άρτιους αριθμούς που περιέχονται στον μονοδιάστατο πίνακα.