7 #.Μάθημα Προγραμματισμού με τη C++ Πίνακες

   
ΠΙΝΑΚΕΣ
Πολλές φορές έχουμε την ανάγκη να ομαδοποιήσουμε δεδομένα σχηματίζοντας μία ενότητα. Ο μηχανισμός με τον οποίο γίνεται αυτό είναι η δημιουργία πινάκων. Οι πίνακες υπάρχουν σε οποιαδήποτε γλώσσα προγραμματισμού, συμπεριλαμβανομένης της Pascal, BASIC και της C.
Οι πίνακες μοιάζουν με τις δομές, στο ότι και οι δύο ομαδοποιούν έναν αριθμό δεδομένων σε μία μεγαλύτερη μονάδα. Όμως σε μια δομή ομαδοποιούμε συνήθως δεδομένα διαφορετικών τύπων, ενώ σε έναν πίνακα ομαδοποιούμε δεδομένα ίδιου τύπου. Επίσης η προσπέλαση των μελών της δομής γίνεται κάνοντας χρήση των ονομάτων τους, ενώ η προσπέλαση των δεδομένων ενός πίνακα γίνεται με τη χρήση αριθμών δεικτών.
Να θυμάστε ότι όποτε χρειαζόμαστε να προσπελάσουμε όλα τα δεδομένα ενός πίνακα (είτε για εισαγωγή, είτε για επεξεργασία, είτε για εξαγωγή αυτών), χρησιμοποιούμε βρόχο επανάληψης for γιατί είναι γνωστός ο αριθμός των δεδομένων.
Στη συνέχεια θα εξετάσουμε τα βασικά στοιχεία για τους πίνακες. Θα δούμε πρώτα τους πίνακες βασικών τύπων δεδομένων, όπως οι int και float και στο τέλος του μαθήματος θα κάνουμε μια εισαγωγή στα αλφαριθμητικά που είναι πίνακες τύπου char.



 Ορισμός πινάκων
Όπως και με τις μεταβλητές, ένας πίνακας θα πρέπει να οριστεί πριν χρησιμοποιηθεί για αποθήκευση πληροφοριών. Για τον ορισμό ενός πίνακα παρέχουμε 3 πληροφορίες. Το όνομα του πίνακα, τον τύπο δεδομένων των στοιχείων του και τον αριθμό των θέσεων του πίνακα.

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

Προσπέλαση στοιχείων πίνακα
Για να προσπελάσουμε ένα στοιχείο ενός πίνακα γράφουμε το όνομα του πίνακα και μέσα σε αγκύλες τον αριθμό της θέσης. Θα πρέπει να δώσετε προσοχή στο εξής: Η C++ αριθμεί τις θέσεις του πίνακα ξεκινώντας από το μηδέν. Έτσι για τον πίνακα που ορίσαμε προηγουμένως με τις 4 θέσεις:
vathmoi[0] = 17;
vathmoi[1] = 20;
vathmoi[2] = 18;
vathmoi[3] = 15;
Έχουμε ήδη αναφέρει ότι κάθε φορά που θα προσπελάσουμε όλα τα στοιχεία ενός πίνακα, είτε για αποθήκευση τιμών, είτε για επεξεργασία, είτε για εμφάνιση των τιμών τους, χρησιμοποιούμε βρόχους for, γιατί ο αριθμός των επαναλήψεων ισούται με τον αριθμό των στοιχείων.
Στο επόμενο παράδειγμα καλούμαστε να γεμίσουμε έναν πίνακα 30 θέσεων με τους βαθμούς σπουδαστών σε ένα μάθημα. Να βρεθεί ο μέσος όρος αυτών των βαθμών:
#include <iostream>
const int theseis=30; //αριθμός θέσεων του πίνακα
void main ()
{
 int vathmoi[theseis];
 int sum=0;
 float mesos;
 //αποθήκευση δεδομένων πίνακα
 for (int i=0; i<theseis; i++)
 {
  cout<< "Δώσε το βαθμό του"<< i << "μαθητή" ;
  cin >> vathmoi[i] ;
  cout<< endl;
 }
 //επεξεργασία δεδομένων πίνακα
 for (int i=0; i<theseis; i++)
 {
  sum = sum + vathmoi[i] ; //άθροισμα βαθμών
 }
 mesos = sum / theseis;//υπολογισμός μέσου όρου
 cout << "Ο μέσος όρος είναι: "<<mesos;//εμφάνιση

}

 Απόδοση αρχικών τιμών σε πίνακες
Όταν επιθυμούμε στο σημείο που δηλώνουμε έναν πίνακα να αποδώσουμε αρχικές τιμές στα στοιχεία του, τότε χρησιμοποιούμε τον τελεστή απόδοσης τιμή (=) και τις αρχικές τιμές μέσα σε άγκιστρα, χωρισμένες με κόμματα:
Στην πραγματικότητα δεν χρειάζεται μέσα στις αγκύλες να δώσουμε το μέγεθος του πίνακα όταν αποδίδουμε αρχικές τιμές, αφού ο μεταγλωττιστής μπορεί να μετρήσει τις τιμές μέσα στις παρενθέσεις. Εάν όμως δώσουμε το μέγεθος του πίνακα και το πλήθος των αρχικών τιμών μέσα στα άγκιστρα είναι μικρότερος δεν υπάρχει πρόβλημα. Στα στοιχεία του πίνακα που απομένουν θα αποδοθεί ως αρχική τιμή το 0. Εάν όμως τα στοιχεία του πίνακα είναι λιγότερα από τις αρχικές τιμές, τότε προκαλείται ένα σφάλμα