Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.

Σχετικά έγγραφα
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

ΗΥ-150. Πίνακες (Arrays)

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Μεθόδων Επίλυσης Προβλημάτων

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

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Μεθόδων Επίλυσης Προβλημάτων

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

Μεθόδων Επίλυσης Προβλημάτων

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string

Συναρτήσεις και Πίνακες

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 10 ο Υποπρογράµµατα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Επανάληψη για τις Τελικές εξετάσεις

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Προγραµµατιστικές Τεχνικές

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

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

Προγραμματισμό για ΗΜΥ

Οι δείκτες στη γλώσσα C

Μεθόδων Επίλυσης Προβλημάτων

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

Προγραμματισμός Υπολογιστών με C++

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Διάλεξη 5: Δείκτες και Συναρτήσεις

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

scanf() scanf() stdin scanf() printf() int float double %lf float

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραμματισμό για ΗΜΥ

είκτες και Πίνακες (2)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Εισαγωγή στον Προγραµµατισµό «C»

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

Διάλεξη 6: Δείκτες και Πίνακες

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

Στοιχειώδης προγραμματισμός σε C++

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

Διδάσκων: Παναγιώτης Ανδρέου

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

Διδάσκων: Παναγιώτης Ανδρέου

οµές (structures) και Eνώσεις (unions)

Ηλεκτρονικοί Υπολογιστές

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

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

8. ΠΙΝΑΚΕΣ (ARRAYS) (Πρόχειρο σχέδιο - Μαθήµατος 5) //26. Array.cpp #include <iostream> using namespace std;

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Transcript:

1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται οι διαφάνειες του επόµενου µαθήµατος Επικοινωνία: dimitris@skyblue.csd.auth.gr Περιεχόµενα 3 Πίνακες 1

Στόχοι εκµάθησης 4 Εισαγωγή στους πίνακες ήλωση και αναφορά σε πίνακες for-loops και πίνακες Αναπαράσταση πινάκων στη µνήµη Πίνακες σε συναρτήσεις Πίνακες ως ορίσµατα συναρτήσεων, ως τιµές επιστροφής Προγραµµατισµός µεπίνακεςς Μερικώς πλήρεις πίνακες, αναζήτηση, ταξινόµηση Πολυδιάστατοι πίνακες Εισαγωγή στους πίνακες 5 Ορισµός πίνακα: Συλλογή δεδοµένων ίδου τύπου Είναι ο πρώτος συγκεντρωτικός ( aggregate ) τύπος δεδοµένων Υπονοεί οµαδοποίηση int, float, double, char είναι απλοί τύποι δεδοµένων Χρησιµοποιείται για λίστες από παρόµοια αντικείµενα Αποτελέσµατα, θερµοκρασίες, ονόµατα, κ.τ.λ. Αποφεύγουµε τη δήλωση πολλαπλών απλών µετβλητών Χειριζόµαστε τη λίστα ως µια οντότητα ήλωση πινάκων 6 ήλωση πίνακα δεσµεύει µνήµη int score[5]; ηλώνει πίνακα 5 integers µε όνοµα "score" Παρόµοια µε τη δήλωση 5 µεταβλητών: int score[0], score[1], score[2], score[3], score[4] Τα επιµέρους στοιχεία τα αποκαλούµε: Indexed ή subscripted µεταβλητές Στοιχεία του πίνακα Η τιµή στις αγκύλες ονοµάζεται index ή subscript Αριθµούνται από 0 µέχρι size - 1 2

Προσπέλαση πινάκων 7 Πρόσβαση µε τη χρήση του index/subscript cout << score[3]; Να σηµειωθεί η διπλή χρήση των αγκυλών: Στη δήλωση, καθορίζει το SIZE του πίνακα Οπουδήποτε αλλού, καθορίζει το subscript Size, subscript δεν απαιτείται να είναι literal int score[max_scores]; score[n+1] = 99; Εάν το n είναι 2, τότε η δήλωση είναι ταυτόσηµη µε τη: score[3] Χρήση πινάκων Ισχυρός µηχανισµός αποθήκευσης Μπορούµε να εκτελέσουµε τα ακόλουθα: Κάνε κάτι στην i th indexed µεταβλητή όπου i υπολογίζεται από το πρόγραµµα Επίδειξη όλων των στοιχείων του πίνακα Ανάθεση τιµών από την είσοδο στα στοιχεία του πίνακα Έύρεση µεγαλύτερης τιµής στα στοιχεία του πίνακα Έύρεση µικρότερης τιµής στα στοιχεία του πίνακα 8 Παράδειγµα πίνακα (1/2) 9 3

Παράδειγµα πίνακα (2/2) 10 for-loops µε πίνακες 11 Βρόχος απαρίθµησης ουλεύει καλά για τη διάσχιση των στοιχείων του πίνακα Παράδειγµα: for (idx = 0; idx<5; idx++) { cout << score[idx] << "off by " << max score[idx] << endl; } Η µεταβλητή ελέγχου του βρόχου (idx) µετράει από 0 έως 5 Κύριες παγίδες µε τους πίνακες 12 Οι indexes του πίνακα αρχίζουν µε το µηδέν! Η C++ θα µας επιτρέψει να βγούµε εκτός ορίων του πίνακα Απρόβλεπτα αποτελέσµατα Ο compiler δεν θα ανιχνεύσει αυτά τα λάθη! Επαφίεται στον προγραµµατιστή να ελέγξει ότι είναι εντός ορίων 4

Παράδειγµα παγίδας µε πίνακες 13 Οι Indexes κυµαίνονται από 0 µέχρι (array_size 1) Παράδειγµα: double temperature[24]; // 24 is array size // ηλώνει πίνακα από 24 double τιµές, το όνοµα του πίνακα είναι temperature εικτοδοτούνται ως εξής: temperature[0], temperature[1] temperature[23] Σύνηθες σφάλµα: temperature[24] = 5; Ο Index 24 είναι εκτός ορίων! Καµία προειδοποίηση, πιθανόν καταστροφικά αποτελέσµατα 14 Ορισµός σταθεράς ως µέγεθος πίνακα Χρησιµοποιήστε πάντα defined/named σταθερά για να ορίσετε το µέγεθος ενός πίνακα Παράδειγµα: const int NUMBER_OF_STUDENTS = 5; int score[number_of_students]; Βελτιώνει την αναγνωσιµότητα Βελτιώνει την ευελιξία ιευκολύνει τη συντήρηση 15 Χρήση της defined/named σταθεράς Χρήση οπουδήποτε χρειάζεται το µέγεθος του πίνακα Στο for-loop για διάσχιση: for (idx = 0; idx < NUMBER_OF_STUDENTS; idx++) { // ιαχείριση πίνακα } Σε υπολογισµούς που εµπλέκουν το µέγεθος του πίνακα: lastindex = (NUMBER_OF_STUDENTS 1); Όταν περνάµε ως όρισµα των πίνακα σε συναρτήσεις (συνέχεια της διάλεξης) Όταν µεταβληθεί το µέγεθος του πίνακα απαιτείται µόνο ΜΙΑ αλλαγή στο πρόγραµµα! 5

Αναπαράσταση πίνακα στην µνήµη 16 Θυµηθείτε τις απλές µεταβλητές: έσµευση µνήµης σε µια διεύθυνση Οι δηλώσεις πίνακα δεσµεύουν µνήµη για ολόκληρο τον πίνακα Σειριακή δέσµευση Οι διεθύνσεις που δεσµεύονται είναι συνεχόµενες Επιτρέπει υπολογισµούς µε τις διευθύνσεις Απλή πρόσθεση από την αρχή του πίνακ (index 0) Αναπαράσταση πίνακα στην µνήµη 17 Αρχικοποίηση πινάκων 18 Όπως και οι απλές µεταβλητές µπορούν να αρχικοποιηθούν κατά τη δήλωσή τους: int price = 0; // 0 is initial value Όµοια και οι πίνακες: int children[3] = {2, 12, 1}; Ισοδύναµο µε το ακόλουθο: int children[3]; children[0] = 2; children[1] = 12; children[2] = 1; 6

Αυτό-αρχικοποίηση πινάκων 19 Εάν παρέχονται λιγότερες τιµές από το µέγεθος του πίνακα: Η ανάθεση ξεκινά από την αρχή Στα υπόλοιπα ανατίθεται η τιµή µηδέν του βασικού τύπου δεδοµένων του πίνακα Εάν δεν καθορίσουµε το µέγεθος του πίνακα ήλωση πίνακα µε µέγεθος κατάλληλο, ώστε να στεγάσει τις τιµές αρχικοποίησης που παραθέτουµε Παράδειγµα: int b[] = {5, 12, 11}; εσµεύει τον πίνακα b µε µέγθος 3 Πίνακες σε συναρτήσεις Ως ορίσµατα σε συναρτήσεις Κάποιο από τα στοιχεία (indexed variable) του πίνακα Ένα επιµέρους στοιχείο του πίνακα µπορεί να περαστεί ως παράµετρος σε κάποια συνάρτηση Ολόκληροι πίνακες Όλα τα στοιχεία του πίνακα µπορούν να περαστούν ως όρισµα ως µια οντότητα Ως τιµή επιστροφής κάποιας συνάρτησης Μπορεί να γίνει δείτε επόµενη διάλεξη, σχετική µε δείκτες (pointers) 20 Στοιχεία πίνακα ως όρισµα 21 Η Indexed variable αντιµετωπίζεται µε τον ίδιο τρόπο όπως και οι απλές µεταβλητές του ίδιου τύπου εδοµένης της παρακάτω δήλωσης συνάρτησης: void myfunction(double par1); Και των παρακάτω δηλώσεων: int i; double n, a[10]; Μπορούµε να εκτελέσουµε τις παρακάτω κλήσεις: myfunction(i); // i is converted to double myfunction(a[3]); // a[3] is double myfunction(n); // n is double 7

Λεπτοµέρεια του indexing 22 Θεωρήστε: myfunction(a[i]); Η τιµή του i προσδιορίζεται πρώτα Καθορίζεται ποια indexed variable θα αποσταλεί myfunction(a[i*5]); Καθ όλα έγκυρη, από την πλευρά του compiler Ο προγραµµατιστής είναι υπεύθυνος για να µείνει εντός ορίων του πίνακα Ολόκληροι πίνακες ως ορίσµατα 23 Τυπική παράµετρος µπορεί να είναι ολόκληρος πίνακας Το όρισµα που περνάµε στην κλήση συνάρτησης είναι το όνοµα του πίνακα Αποκαλείται πίνακας-παράµετρος Στείλτε το µέγεθος του πίνακα επίσης Τυπικά, ως η δεύτερη παράµετρος Απλός τύπος int Παράδειγµα πίνακα ως όρισµα 24 8

Παράδειγµα πίνακα ως όρισµα 25 Με δεδοµένο το προηγούµενο παράδειγµα: Σε κάποια main(), θεωρήστε την παρακάτω δήλωση και κλήση: int score[5], numberofscores = 5; fillup(score, numberofscores); 1 ο όρισµα είναι ολόκληρος ο πίνακας 2 ο όρισµα µια integer τµή Σηµειώστε ότι δεν υπάρχουν αγκύλες στον πίνακα παράµετρο! Πίνακας ως όρισµα: Πώς; 26 Τι περνάει ως παράµετρος? Σκεφτείτε τον πίνακα ως 3 κοµµάτια ιεύθυνση του πρώτου στοιχείου του πίνακα (arrname[0]) Βασικός τύπος δεδοµένων του πίνακα Μέγεθος του πίνακα Μόνο το πρώτο κοµµάτι περνάει ως όρισµα! Μόνο η διεύθυνση του πρώτου στοιχείου Παρόµοια τεχνική µε την παράµετρος-µεαναφορά Πίνακες παράµετροι 27 Φαίνεται παράξενο εν απαιτούνται αγκύλες στον πίνακα όρισµα Πρέπει να αποσταλεί το µέγεθος χωριστά Όµορφη ιδιότητα: Μπορούµε να χρησιµοποιήσουµε την Ι ΙΑ συνάρτηση για να γεµίσουµε κάθε πίνακα ανεξάρτητα από το µέγεθός του! Ευκολύνει τις ιδιότητες επαναχρησιµοποίησης των συναρτήσεων Παράδειγµα: int score[5], time[10]; fillup(score, 5); fillup(time, 10); 9

28 ήλωση const για πίνακα παράµετρο Θυµηθείτε: ο πίνακας-παράµετρος ουσιαστικά περνάει τη διεύθυνση του πρώτου στοιχείου Όµοιο µε το pass-by-reference Άρα οι συναρτήσεις µπορούν να τροποποιήσουν έναν πίνακα! Άλλες φορές επιθυµητό, άλλες όχι! Προστασία των περιεχοµένων πίνακα από τροποποίηση Χρήση του προσδιοριστή "const" πριν τον πίνακα-παράµετρο Αποκαλείται "constant array parameter" ιατάσει τον compiler να µην επιτρέψει τροποποιήσεις 29 Συναρτήσεις που επιστρέφουν πίνακα Οι συναρτήσεις δεν µπορούν να επιστρέψουν πίνακα µε τον ίδιο τρόπο που το κάνουν για απλούς τύπους Απαιτεί τη χρήση δεικτών ( pointers ) Θα το δούµε στην επόµενη διάλεξη Προγραµµατισµός µε πίνακες 30 Πληθώρα χρήσεων Μερικώς-πλήρεις πίνακες Πρέπει να δηλωθεί κάποιο µέγιστο µέγεθος Ταξινόµηση Αναζήτηση 10

Μερικώς-πλήρεις πίνακες 31 ύσκολη η γνώση του ακριβούς µεγέθους του πίνακα Πρέπει να δηλωθεί έτσι ώστε να αποτελεί το µέγιστο δυνατό µέγεθος που µπορεί να ζητηθεί Πρέπει να ελέγχουµε ποια στοιχεία του πίνακα κρατάνε τα έγκυρα δεδοµένα Απαιτείται µια επιπλέον µεταβλητή ιχνηλάτησης των έγκυρων δεδοµένων int numberused; Κρατάει τον τρέχοντα αριθµό των στοιχείων του πίνακα 32 Παράδειγµα µερικώς-πλήρους πίνακα 33 Παράδειγµα µερικώς-πλήρους πίνακα 11

34 Παράδειγµα µερικώς-πλήρους πίνακα 35 Παράδειγµα µερικώς-πλήρους πίνακα 36 Παράδειγµα µερικώς-πλήρους πίνακα 12

37 Καθολικές σταθερές vs. παραµέτρους Οι σταθερές (constants) συνήθως είναι καθολικές ( global ) ηλώνονται πάνω από τη main() Έτσι οι συναρτήσεις γνωρίζουν το µέγεθος του πίνακα που ορίζεται από τη συγκεκριµένη σταθερά Χρειάζεται τότε να το στέλνουµε ως παράµετρο? Από τεχνικής απόψεως, ΝΑΙ Γιατί θα το κάναµε αυτό? Οι ορισµός της συνάρτησης µπορεί να είναι σε χωριστό αρχείο Η συνάρτηση µπορεί να χρησιµοποιείται κι από άλλα προγράµµατα! Αναζήτηση σε πίνακα 38 Τυπική χρήση των πινάκων Επίδειξη στις επόµενες διαφάνειες Αναζήτηση σε πίνακα (1/4) 39 13

Αναζήτηση σε πίνακα (2/4) 40 Αναζήτηση σε πίνακα (3/4) 41 Αναζήτηση σε πίνακα (4/4) 42 14

Ταξινόµηση πίνακα: Selection Short Αλγόριθµος Selection Sort 43 44 Παράδειγ. ταξινόµησης πίνακα (1/4) 45 Παράδειγ. ταξινόµησης πίνακα (2/4) 15

46 Παράδειγ. ταξινόµησης πίνακα (3/4) 47 Παράδειγ. ταξινόµησης πίνακα (4/4) Πολυδιάστατοι πίνακες 48 Πίνακες µε περισσότερους του ενός index char page[30][100]; υο indexes: Στην ουσία είναι ένας πίνακας από πίνακες Οπτικοποίηση ως: page[0][0], page[0][1],, page[0][99] page[1][0], page[1][1],, page[1][99] page[29][0], page[29][1],, page[29][99] Η C++ επιτρέπει οποιοδήποτε αριθµό από indexes Τυπικά, όχι πάνω από δυο 16

Πολυδιάστατοι πίνακες-παράµετροι Όπως και οι µονοδιάστατοι Το µέγεθος της 1 ης διάστασης δεν δίνεται Παρέχεται ως δεύτερη παράµετρος Το µέγεθος της 2 ης ΥΠΟΧΡΕΩΤΙΚΑ δίνεται Παράδειγµα: void DisplayPage(const char p[][100], int sizedimension1) { for (int index1=0; index1<sizedimension1; index1++) { for (int index2=0; index2 < 100; index2++) cout << p[index1][index2]; cout << endl; } } 49 Περίληψη 1 Ο πίνακας είναι µια συλλογή δεδοµένων του ίδιου τύπου Οι indexed variables ενός πίνακας χρησιµοποιούνται όπως και οποιαδήποτε άλλη µεταβλητή του ίδιου τύπου Το for-loop είναι ο φυσικός τρόπος για διάσχιση πινάκων Ο προγραµµατιστής είναι υπέυθυνος για να µένει εντός ορίων του πίνακα Ο πίνακας-παράµετρος είναι νέο είδος Όµοιο µε το κλήση-µε-αναφορά ( call-by-reference ) 50 Περίληψη 2 Τα στοιχεία του πίνακα αποθηκεύονται στην µνήµη σειριακά Συνεχόµενα τµήµατα της µνήµης Μόνο η διεύθυνση του 1 ου στοιχείου περνάει ως όρισµα στις συναρτήσεις Μερικώς-πλήρεις πίνακες απαιτείται περισσότερη ιχνηλάτηση Constant πίνακες-παράµετροι Αποτρέπουν τροποποίηση των περιεχοµένων του πίνακα Πολυδιάστατοι πίνακες ηµιουργούν πίνακα από πίνακες 51 17