Οι πίνακες είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα.
Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από έναν δείκτη (index) μέσα σε αγκύλες [ ]. Ο δείκτης είναι μια ακέραια έκφραση, σταθερή ή μεταβλητή.
Θερμοκρασία[1], Θερμοκρασία[2], ..., Θερμοκρασία[30]
Το όνομα του πίνακα καθορίζει μια ομάδα διαδοχικών θέσεων στη μνήμη. Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη.
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά στοιχείων ονομάζονται μονοδιάστατοι.
Ένας πίνακας με 2 δείκτες είναι ένας δισδιάστατος πίνακας. Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις (τρισδιάστατοι, τετραδιάστατοι και γενικά πολυδιάστατοι), ανάλογα με τον αριθμό των δεικτών.
Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα δήλωσης μεταβλητών. Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που περιέχει (ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων), για να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης.
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100]
ΠΡΑΓΜΑΤΙΚΕΣ: Β[50]
ΛΟΓΙΚΕΣ: C[20]
ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[30]
Η ανάγνωση, η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους, οι οποίοι επαναλαμβάνονται προκαθορισμένο αριθμό φορών (όσα είναι τα στοιχεία του πίνακα) και υλοποιούνται καλύτερα με την εντολή επανάληψης ΓΙΑ.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[ ]).Οι πίνακες είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα.
Η αναφορά σε ατομικά στοιχεία γίνεται με το όνομα του πίνακα ακολουθούμενο από έναν δείκτη μέσα σε αγκύλες [ ]. Ο δείκτης είναι μια ακέραια έκφραση (σταθερά ή μεταβλητή).
Το όνομα του πίνακα καθορίζει μια ομάδα διαδοχικών θέσεων στη μνήμη του υπολογιστή.
Πλεονεκτήματα:
Μειονεκτήματα:
Δύο ή περισσότεροι πίνακες λέγονται παράλληλοι, όταν σε αυτούς έχουμε αποθηκεύσει τα χαρακτηριστικά οντοτήτων με τέτοιο τρόπο, έτσι ώστε τα χαρακτηριστικά κάθε οντότητας να βρίσκονται σε στοιχεία με ίδια τιμή δείκτη.
Για παράδειγμα, αν έχουμε πίνακες ΟΝΟΜΑ[50] και ΒΑΘΜΟΣ[50], ο μαθητής με όνομα στη θέση 1 έχει το βαθμό του στη θέση 1 του άλλου πίνακα.
[ ]).Οι μονοδιάστατοι πίνακες χρησιμοποιούν έναν δείκτη για την αναφορά στα στοιχεία τους (π.χ. Α[i]).
Οι δισδιάστατοι πίνακες χρησιμοποιούν δύο δείκτες (π.χ. Β[i, j] ή Β[i][j] ανάλογα με τη σύνταξη).
Υπάρχουν και πολυδιάστατοι (τρισδιάστατοι, τετραδιάστατοι κ.λπ.) ανάλογα με τον αριθμό δεικτών. Τα περισσότερα προβλήματα λύνονται με μονοδιάστατους ή δισδιάστατους.
Ο πίνακας δηλώνεται στο τμήμα ΜΕΤΑΒΛΗΤΕΣ μαζί με τις υπόλοιπες μεταβλητές, αναφέροντας τον τύπο και το μέγεθος σε αγκύλες:
ΑΚΕΡΑΙΕΣ: Α[100]
ΠΡΑΓΜΑΤΙΚΕΣ: Β[50]
Το μέγεθος πρέπει να δηλώνεται για να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης από την αρχή του προγράμματος. Οι πίνακες είναι στατικές δομές — το μέγεθος παραμένει σταθερό κατά την εκτέλεση.
1. Τι τύπου δεδομένα μπορεί να περιέχει ένας πίνακας;
2. Ο δείκτης ενός πίνακα πρέπει να είναι:
3. Πόσες θέσεις μνήμης δεσμεύει ένας πίνακας από την αρχή του προγράμματος;
4. Η μέθοδος ταξινόμησης ευθείας ανταλλαγής (Bubble Sort) είναι:
5. Η σειριακή αναζήτηση χρησιμοποιείται για:
6. Η δυαδική αναζήτηση είναι αποδοτικότερη από τη σειριακή, αλλά:
7. Σε έναν ταξινομημένο κατά αύξουσα σειρά πίνακα, πού βρίσκεται το ελάχιστο στοιχείο;
8. Τι είναι οι παράλληλοι πίνακες;
9. Ποιο από τα παρακάτω ΔΕΝ είναι μειονέκτημα των πινάκων;
10. Η επεξεργασία των στοιχείων ενός πίνακα γίνεται καλύτερα με:
Να γραφεί αλγόριθμος που διαβάζει 50 ακέραιους αριθμούς σε έναν πίνακα Α[50] και υπολογίζει και εμφανίζει το άθροισμά τους.
ΑΛΓΟΡΙΘΜΟΣ Αθροισμα_Πινακα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[50], i, sum
ΑΡΧΗ
sum ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ Α[i]
sum ← sum + Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ "Το άθροισμα είναι:", sum
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Αθροισμα_Πινακα
Να γραφεί αλγόριθμος που διαβάζει 100 αριθμούς σε πίνακα Β[100] και βρίσκει το μέγιστο και το ελάχιστο στοιχείο.
ΑΛΓΟΡΙΘΜΟΣ Max_Min
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Β[100], i, max, min
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max ← Β[1]
min ← Β[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΑΝ Β[i] > max ΤΟΤΕ
max ← Β[i]
ΤΕΛΟΣ_ΑΝ
ΑΝ Β[i] < min ΤΟΤΕ
min ← Β[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ "Μέγιστο:", max
ΓΡΑΨΕ "Ελάχιστο:", min
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Max_Min
Να γραφεί αλγόριθμος που ταξινομεί έναν πίνακα 20 ακεραίων κατά αύξουσα σειρά με τη μέθοδο της ευθείας ανταλλαγής.
ΑΛΓΟΡΙΘΜΟΣ Bubble_Sort
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[20], i, j, temp
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
ΓΙΑ j ΑΠΟ 20 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ Α[j-1] > Α[j] ΤΟΤΕ
temp ← Α[j-1]
Α[j-1] ← Α[j]
Α[j] ← temp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Bubble_Sort
Να γραφεί αλγόριθμος που αναζητά έναν αριθμό key σε έναν μη ταξινομημένο πίνακα 30 ακεραίων. Να εμφανίζει τη θέση του ή μήνυμα ότι δεν βρέθηκε.
ΑΛΓΟΡΙΘΜΟΣ Σειριακη_Αναζητηση
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[30], i, key, θεση
ΛΟΓΙΚΕΣ: found
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ key
found ← ΨΕΥΔΗΣ
θεση ← 0
i ← 1
ΟΣΟ i <= 30 ΚΑΙ found = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Α[i] = key ΤΟΤΕ
found ← ΑΛΗΘΗΣ
θεση ← i
ΤΕΛΟΣ_ΑΝ
i ← i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ found = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ "Βρέθηκε στη θέση:", θεση
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Δεν βρέθηκε"
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Σειριακη_Αναζητηση
Να γραφεί αλγόριθμος δυαδικής αναζήτησης ενός αριθμού key σε έναν ταξινομημένο κατά αύξουσα σειρά πίνακα 50 ακεραίων.
ΑΛΓΟΡΙΘΜΟΣ Δυαδικη_Αναζητηση
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[50], key, left, right, mid, θεση
ΛΟΓΙΚΕΣ: found
ΑΡΧΗ
*(Ο πίνακας Α είναι ήδη ταξινομημένος)*
ΔΙΑΒΑΣΕ key
left ← 1
right ← 50
found ← ΨΕΥΔΗΣ
θεση ← 0
ΟΣΟ left <= right ΚΑΙ found = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
mid ← (left + right) DIV 2
ΑΝ Α[mid] = key ΤΟΤΕ
found ← ΑΛΗΘΗΣ
θεση ← mid
ΑΛΛΙΩΣ_ΑΝ Α[mid] < key ΤΟΤΕ
left ← mid + 1
ΑΛΛΙΩΣ
right ← mid - 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ found = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ "Βρέθηκε στη θέση:", θεση
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Δεν βρέθηκε"
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Δυαδικη_Αναζητηση
Να γραφεί αλγόριθμος που δημιουργεί έναν τρίτο ταξινομημένο πίνακα Γ[60] από δύο ταξινομημένους πίνακες Α[30] και Β[30].
ΑΛΓΟΡΙΘΜΟΣ Συγχωνευση
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[30], Β[30], Γ[60]
ΑΚΕΡΑΙΕΣ: i, j, k
ΑΡΧΗ
*(Οι Α και Β είναι ήδη ταξινομημένοι κατά αύξουσα)*
i ← 1
j ← 1
k ← 1
ΟΣΟ i <= 30 ΚΑΙ j <= 30 ΕΠΑΝΑΛΑΒΕ
ΑΝ Α[i] <= Β[j] ΤΟΤΕ
Γ[k] ← Α[i]
i ← i + 1
ΑΛΛΙΩΣ
Γ[k] ← Β[j]
j ← j + 1
ΤΕΛΟΣ_ΑΝ
k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΟΣΟ i <= 30 ΕΠΑΝΑΛΑΒΕ
Γ[k] ← Α[i]
i ← i + 1
k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΟΣΟ j <= 30 ΕΠΑΝΑΛΑΒΕ
Γ[k] ← Β[j]
j ← j + 1
k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 60
ΓΡΑΨΕ Γ[k]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Συγχωνευση
Να γραφεί αλγόριθμος που διαβάζει έναν πίνακα 5×4 ακεραίων και υπολογίζει το άθροισμα κάθε γραμμής.
ΑΛΓΟΡΙΘΜΟΣ Αθροισμα_Γραμμων
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5, 4], i, j, sum
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
ΔΙΑΒΑΣΕ Α[i, j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
sum ← 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
sum ← sum + Α[i, j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ "Άθροισμα γραμμής", i, ":", sum
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Αθροισμα_Γραμμων
Να γραφεί αλγόριθμος που διαβάζει τα ονόματα 20 μαθητών σε πίνακα ΟΝΟΜΑ[20] και τους βαθμούς τους σε πίνακα ΒΑΘΜΟΣ[20]. Να βρίσκει και να εμφανίζει το όνομα του μαθητή με τον υψηλότερο βαθμό.
ΑΛΓΟΡΙΘΜΟΣ Καλυτερος_Μαθητης
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[20]
ΑΚΕΡΑΙΕΣ: ΒΑΘΜΟΣ[20], i, max_θεση
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ ΟΝΟΜΑ[i]
ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max_θεση ← 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
ΑΝ ΒΑΘΜΟΣ[i] > ΒΑΘΜΟΣ[max_θεση] ΤΟΤΕ
max_θεση ← i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ "Ο μαθητής με τον υψηλότερο βαθμό είναι:"
ΓΡΑΨΕ ΟΝΟΜΑ[max_θεση], "με βαθμό", ΒΑΘΜΟΣ[max_θεση]
ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ Καλυτερος_Μαθητης