Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

ΠΙΝΑΚΕΣ ΜΑΘΗΜΑ 6.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Πίνακες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πίνακες-Αλφαριθμητικά
Εισαγωγή στους Η/Υ Πίνακες.
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Δείκτες (Pointers) – Δομές (Structs)
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πίνακες.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΜΑΘ106/3122 – Γλώσσα Προγραμματισμού Ξ. Ζαμπούλης ΜΑΘ106/3122 Γλώσσα Προγραμματισμού Δομές Δεδομένων.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
Πολυδιάστατοι Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Πίνακες και αλφαριθμητικά
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
[Μονοδιάστατοι πίνακες]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών Πίνακες στη Java Βελώνης Γεώργιος – Καθηγητής Πληροφορικής ΠΕ20 Σχολ. Έτος 2015-16

Περιεχόμενα Εισαγωγή Δημιουργία Πινάκων Παραδείγματα

Εισαγωγή Οι πίνακες (arrays) είναι από τις πιο συχνά χρησιμοποιούμενες δομές δεδομένων, λόγω της ευκολίας που προσφέρουν στην διαχείριση μεγάλου πλήθους δεδομένων. Ένας πίνακας αποτελείται από στοιχεία, τα οποία τοποθετούνται σε συνεχόμενες θέσεις μνήμης. Τα στοιχεία αυτά έχουν όλα τον ίδιο τύπο (int, float, κ.λπ.), που ονομάζεται βασικός τύπος του πίνακα. Το πλήθος των στοιχείων καθορίζει το μέγεθος του πίνακα, το οποίο παραμένει σταθερό (στατική δομή δεδομένων) σε όλη την διάρκεια εκτέλεσης του προγράμματος. Σχηματικά ένας πίνακας με δέκα στοιχεία μπορεί να παρασταθεί ως εξής:

Εισαγωγή Κάθε πίνακας έχει ένα όνομα. Η αναφορά στα στοιχεία ενός πίνακα γίνεται μέσων του ονόματός του και ενός δείκτη που καθορίζει την θέση του στοιχείου μέσα στον πίνακα. Μπορείτε να αναφερθείτε σε οποιοδήποτε στοιχείο του πίνακα και με οποιαδήποτε σειρά, κάτι που χαρακτηρίζει τον πίνακα σαν δομή άμεσης προσπέλασης. Τα στοιχεία ενός πίνακα μπορούν να τα χρησιμοποιηθούν στο πρόγραμμα, όπως και οποιαδήποτε μεταβλητή του βασικού τύπου. Οι πίνακες είναι δομές δεδομένων που συναντώνται σχεδόν σε όλες τις γλώσσες προγραμματισμού με μόνη διαφορά ότι στη Java οι πίνακες είναι αντικείμενα. Υπάρχουν οι μονοδιάστατοι και οι πολυδιάστατοι πίνακες. Στην ενότητα αυτή θα ασχοληθούμε μόνο με τους μονοδιάστατους πίνακες της Java.

Δημιουργία Πινάκων Υπάρχουν τρία στάδια για τη δημιουργία πινάκων: Η δήλωση του πίνακα Ο ορισμός του πίνακα Η αρχικοποίηση του πίνακα

Δημιουργία Πινάκων Η δήλωση του πίνακα (μονοδιάστατου) Όπως όλες οι μεταβλητές στη Java, έτσι και οι πίνακες πρέπει να δηλώνονται. Όταν δηλώνουμε έναν πίνακα βάζουμε στον τύπο και το [ ] που δείχνει ότι η μεταβλητή είναι ένας πίνακας. Σύνταξη: τύπος όνομα_μεταβλητής[ ] ή τύπος [ ] όνομα_μεταβλητής Παραδείγματα: float a[ ]; int [ ]x; String names[ ]; Με άλλα λόγια δηλώνουμε έναν πίνακα όπως δηλώνουμε οποιαδήποτε άλλη μεταβλητή μόνο που βάζουμε και αγκύλες στο τέλος ή την αρχή του τύπου της μεταβλητής.

Δημιουργία Πινάκων Ο ορισμός του πίνακα (μονοδιάστατου) Για να δημιουργήσουμε έναν πίνακα χρησιμοποιούμε τον τελεστή new. Πρέπει να πούμε στον compiler πόσα στοιχεία θα αποθηκευτούν στον πίνακα. Σύνταξη: όνομα_μεταβλητής = new τύπος[πλήθος_στοιχείων] Παραδείγματα: a = new float[10]; x = new int[5]; names = new String[10]; Βέβαια, μπορούμε να κάνουμε δήλωση και καταχώρηση σε μια πρόταση, όπως: int x[ ] = new int[5]; ή int [ ]x = new int[5];

Δημιουργία Πινάκων Η αρχικοποίηση του πίνακα (μονοδιάστατου) Κάθε στοιχείο του πίνακα προσδιορίζεται από το όνομα του πίνακα και από έναν ακέραιο που φανερώνει τη θέση του στον πίνακα. Οι αριθμοί που χρησιμοποιούνται ονομάζονται δείκτες του πίνακα. Οι δείκτες είναι συνεχόμενοι αριθμοί που ξεκινούν από το 0. Γι’ αυτό και ο πίνακας x (5 στοιχείων) έχει τα στοιχεία x[0], x[1], x[2], x[3] και x[4]. Εφόσον ξεκινάμε από το 0 δεν υπάρχει x[5] και αν προσπαθήσουμε να έχουμε πρόσβαση σ’ αυτό θα δημιουργήσουμε ένα ArrayIndexOutOfBoundsException. Παραδείγματα: a[0] = 4.5f; x[0] = 10; names[0] = "George";

Δημιουργία Πινάκων Η αρχικοποίηση του πίνακα (μονοδιάστατου) Ακόμα και για τους πίνακες μεσαίου μεγέθους είναι σπάνιο να αρχικοποιούμε κάθε στοιχείο ξεχωριστά. Συχνά είναι πιο εύκολο να χρησιμοποιούμε τον βρόγχο for: int[ ] x = new int[5]; for (int i=0; i < 5; i++) { x[i] = 0; } Ένας άλλος τρόπος απόδοσης αρχικών τιμών σε πίνακα, είναι να τις τοποθετήσουμε μέσα σε άγκιστρα: int x[ ] = {0,0,0,0,0};

Δημιουργία Πινάκων Η αρχικοποίηση του πίνακα (μονοδιάστατου) Μπορούμε επίσης να αποδώσουμε αρχικές τιμές σε έναν πίνακα με τη βοήθεια ενός άλλου πίνακα: int y[ ] = x; Αποδίδουμε αρχικές τιμές στα στοιχεία του πίνακα y με βάση τα στοιχεία του x. Με αυτόν τον τρόπο δημιουργούμε δύο μεταβλητές με δείκτη (πίνακες), οι οποίες δείχνουν τα ίδια στοιχεία της μνήμης. Για να αναφερθούμε στο πλήθος των στοιχείων ενός πίνακα χρησιμοποιούμε το όνομα του πίνακα, μια τελεία και τη λέξη length. Το x.length αποδίδει το μήκος του πίνακα x. Παράδειγμα: for (int i=0; i < x.length; i++){ x[i] = 0; }

Παραδείγματα Παράδειγμα 1α public class example1a{ public static void main(String[ ] args) { char[ ] letters= new char[4]; letters[0] = 'A'; letters[1] = 'n'; letters[2] = 'n'; letters[3] = 'a'; for (int i=0;i<=3;i++) { System.out.print(letters[i]); }

Παραδείγματα Παράδειγμα 1β public class example1b{ public static void main(String[ ] args) { char letters[ ] ={'A','n','n','a'}; for (int i=0;i<=3;i++) { System.out.print(letters[i]); }

Παραδείγματα Παράδειγμα 2 import java.util.*; public class exmple2{ public static void main(String args[]){ int i; int[ ] x= new int[5]; Scanner read = new Scanner(System.in); for (i=0;i<x.length;i++) { System.out.format("Enter %2d element: ",i+1); x[i]=read.nextInt(); } System.out.println(2*x[i]);

Παραδείγματα Παράδειγμα 3 import java.util.*; public class exmple3{ public static void main(String args[]){ int i,sum=0; int[ ] x= new int[5]; Scanner read = new Scanner(System.in); for (i=0;i<x.length;i++) { System.out.format("Enter %2d element: ",i+1); x[i]=read.nextInt(); } sum+=x[i]; System.out.println("sum : "+ sum);

Παραδείγματα Παράδειγμα 4 Σειριακή αναζήτηση (Sequential Search): import java.util.*; public class exmple4{ public static void main(String args[]){ int numbers[ ] ={2,3,6,4,9,7,10,5}; Scanner read = new Scanner(System.in); System.out.print("Enter the integer to be searched: "); int x=read.nextInt(); boolean flag=false; int i=0,position=0;

Παραδείγματα while(flag==false && i<numbers.length) { Παράδειγμα 4 Σειριακή αναζήτηση (Sequential Search) συνέχεια: while(flag==false && i<numbers.length) { if (numbers[i]==x){ flag=true; position=i; } else i+=1; if (flag==true) System.out.println("The integer found at position "+(position+1)); System.out.println("Search unsuccessful");

Παραδείγματα public class example5{ Παράδειγμα 5 Αναζήτηση μεγίστου στοιχείου πίνακα: public class example5{ public static void main(String args[]){ int numbers[ ] ={2,3,6,4,9,7,10,5}; int max,i; max=numbers[0]; for(i=1;i<numbers.length;i++) if(numbers[i]>max) max=numbers[i]; System.out.println("Max: "+max); }

Παραδείγματα Παράδειγμα 6 Ταξινόμηση με επιλογή (Selection Sort): public class example6{ public static void main(String args[]){ int numbers[ ] ={2,3,6,4,9,7,10,5}; int i,j,minIndex,temp; for (i = 0; i < numbers.length - 1; i++) { minIndex = i; for (j = i + 1; j < numbers.length; j++) if (numbers[j] < numbers[minIndex]) minIndex = j; if (minIndex != i) { temp = numbers[i]; numbers[i] = numbers[minIndex]; numbers[minIndex] = temp; }

Παραδείγματα Παράδειγμα 6 Ταξινόμηση με επιλογή (Selection Sort) συνέχεια: for(i=0;i<numbers.length;i++) System.out.print(numbers[i]+" "); }

Πηγές http://www.it.uom.gr/project/java/tutorial.htm#arrays Εισαγωγή στην Java 2 – Γεώργιος Λιακέας Algorithms and Data Structures (http://www.algolist.net)