ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ &...

112
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Πίνακες και βασικές επεξεργασίες αυτών

Transcript of ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ &...

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ&

ΑΛΓΟΡΙΘΜΟΙΠίνακες και βασικές επεξεργασίες

αυτών

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 2

Σκοπιές από τις οποίες μελετά η Σκοπιές από τις οποίες μελετά η πληροφορική τα δεδομέναπληροφορική τα δεδομένα

• Γλωσσών προγραμματισμού• Υλικού• Δομών δεδομένων• Ανάλυσης δεδομένων

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 3

Ορισμός δομής δεδομένων και Ορισμός δομής δεδομένων και βασικές λειτουργίεςβασικές λειτουργίες

• ΟΡΙΣΜΟΣΟΡΙΣΜΟΣ• Σύνολο αποθηκευμένων

δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών

• ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑ

• ( W I R TH )

• ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ1. Προσπέλαση2. Εισαγωγή3. Διαγραφή4. Αναζήτηση5. Ταξινόμηση6. Αντιγραφή7. Συγχώνευση8. Διαχωρισμός

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 4

ΕΙΔΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ• ΣΤΑΤΙΚΕΣ• Σταθερό μέγεθος ( η

απαίτηση σε μνήμη καθορίζεται κατά τη στιγμή του προγραμματισμού – μετάφρασης )

• Δεν αλλάζει στην διάρκεια εκτέλεσης

• Αποθήκευση κόμβων σε συνεχόμενες θέσεις μνήμης

• ΔΥΝΑΜΙΚΕΣ• Δεν έχουν σταθερό

μέγεθος αλλά ο αριθμός των κόμβων μεγαλώνει ή μικραίνει ( εισαγωγή/ διαγραφή)

• Η παραχώρηση μνήμης γίνεται κατά την διάρκεια εκτέλεσης ( δυναμική παραχώρηση)

• Αποθήκευση σε μη συνεχόμενες θέσεις

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 5

ΠΙΝΑΚΕΣ• Βαθμοί, Ονόματα,

Θερμοκρασίες,

• Βαθμός 1ου μαθητή, όνομα 3ου μαθητή, θερμοκρασία 25ης του μήνα

• ΒΑΘΜΟΣ [κ]• ΟΝΟΜΑ[m]

• Σύνολο αντικειμένων ΙΔΙΟΥ ΤΥΠΟΥ, τα οποία αναφέρονται με ένα κοινό ΟΝΟΜΑ

• ΚΆΘΕ ΈΝΑ ΑΝΤΙΚΕΙΜΕΝΟ λέγεται ΣΤΟΙΧΕΙΟ του πίνακα

• Η ΑΝΑΦΟΡΑ σε ένα στοιχείο γίνεται με το ΟΝΟΜΑ ακολουθούμενο από ένα ή περισσότερους δείκτες

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 6

Βασικοί κανόνεςΒασικοί κανόνες• Δεδομένα ίδιου τύπουΔεδομένα ίδιου τύπου• Πλήθος = σταθερόΠλήθος = σταθερό• Δήλωση στο τμήμα δηλώσεων

– Ακέραιες: Α[100], Β[10, 20]– Πραγματικές: Μ[20], Μέσοι_όροι[100]– Χαρακτήρες: ΜΑΘΗΤΕΣ[20], ΥΠΑΛΛΗΛΟΙ[25]– Λογικοί: ΑΠΑΝΤΗΣΕΙΣ[10]

• Σαν όνομα οποιοδήποτε ΑΠΟΔΕΚΤΟ σύμφωνα με τους κανόνες της ΓΛΩΣΣΑΣ

• Ο [οι] δείκτες είναι ΑΚΕΡΑΙΑ [οι] μεταβλητή ή σταθερά ΜΕΣΑ ΣΕ ΑΓΚΥΛΕΣ . Συνηθίζεται η χρήση των I,J,K

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 7

Δημιουργία Μονοδιάστατου πίνακα με βαθμούς 30 Δημιουργία Μονοδιάστατου πίνακα με βαθμούς 30 μαθητών και υπολογισμό του Μέσου όρουμαθητών και υπολογισμό του Μέσου όρου

• Πρόγραμμα ΧωρίςΠίνακες1• Μεταβλητές

– Πραγματικές: Σ, Μ, Χ– Ακέραιες : I

• Αρχή• Σ0

Για ι από 1 μέχρι 30Διάβασε ΧΣΣ+Χ

Τέλος_επανάληψης Μ Σ/30 Γράψε Μ

Τέλος_προγράμματος

• Πρόγραμμα ΜεΠίνακες1• Μεταβλητές

– Πραγματικές: Σ, Μ, Β[30]– Ακέραιες : I

• Αρχή• Σ0

Για ι από 1 μέχρι 30Διάβασε Β[ι]ΣΣ +Β[ι]

Τέλος_επανάληψης Μ Σ/30 Γράψε Μ

Τέλος_προγράμματος

ΚΑΜΜΙΑ ΔΙΑΦΟΡΑ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 8

Παράδειγμα που δείχνει πότε πραγματικά χρειάζεται ο πίνακας

• (α) Διάβασμα βαθμών 30 μαθητών στον προγραμματισμό• (β) Υπολογισμός του πλήθους των μαθητών που έχουν βαθμό

πάνω από τον μέσο όρο κατά 2 μονάδες• (γ) Υπολογισμός της απόκλισης του βαθμού κάθε μαθητή από τον

μέσο όρο

• Το (α) ΔΕΝ ΑΠΑΙΤΕΙ ΠΙΝΑΚΕΣ• Τα ( β) και (γ) χρειάζονται τον κάθε βαθμό για να μπορεί να γίνει η

σύγκριση με τον μέσο όρο. Αν χρησιμοποιήσουμε ΜΙΑ μόνο μεταβλητή οι 29 βαθμοί θα χαθούν ( μετά από κάθε διάβασμα χάνεται η προηγούμενη τιμή). ΕΔΏ ΛΟΙΠΟΝ χρειάζεται να ΚΡΑΤΑΜΕ ΣΤΗ ΜΝΗΜΗ και τις 30 τιμές. ΔΗΛΑΔΗ χρειαζόμαστε πίνακα

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 9

• ΠΡΟΓΡΑΜΜΑ ΠΙΝΑΚΕΣ2• ΜΕΤΑΒΛΗΤΕΣ

– ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΘΜΟΙ [30], ΜΕΣΗ_ΤΙΜΗ, Σ– ΑΚΕΡΑΙΕΣ : Κ, πλήθος

• ΑΡΧΗ• ΓΙΑ Κ ΑΠΌ 1 ΜΕΧΡΙ 30

– ΔΙΑΒΑΣΕ ΒΑΘΜΟΙ[Κ]– Σ Σ+ΒΑΘΜΟΙ[Κ]

• ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ• ΜΕΣΗ_ΤΙΜΗ Σ/30• Πλήθος0• ΓΙΑ Κ ΑΠΌ 1 ΜΕΧΡΙ 30

– ΑΝ ΒΑΘΜΟΙ[Κ] >ΜΕΣΗ_ΤΙΜΗ +2 ΤΟΤΕ• ΠλήθοςΠλήθος+1

– ΤΕΛΟΣ_ΑΝ• ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ• ΓΡΑΨΕ ‘ΔΥΟ ΜΟΝΑΔΕΣ ΠΑΝΩ ΑΠΌ ΤΟΝ Μ.Ο:’, πλήθος• ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΌΤΑΝ ΘΕΛΟΥΜΕ ΝΑ ΣΥΓΚΡΙΝΟΥΜΕ ΚΆΘΕ ΒΑΘΜΟ

ΜΕ ΤΗΝ ΜΕΣΗ ΤΙΜΗ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 10

ΠΟΤΕ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ ΠΙΝΑΚΕΣ

• Αν τα δεδομένα είναι ΟΜΟΕΙΔΗ και πρέπει να διατηρούνται όλα στη μνήμη μέχρι το τέλος της επεξεργασίας ΤΟΤΕ Η ΧΡΗΣΗ ΕΊΝΑΙ ΑΠΑΡΑΙΤΗΤΗ

• ΠΕΡΙΤΤΗ ΧΡΗΣΗ– Απαιτείται μνήμη: Η άσκοπη χρήση πινάκων με μεγάλο αριθμό

στοιχείων περιορίζει τους υπολογιστικούς πόρους του συστήματος και μπορεί να οδηγήσει σε αδυναμία εκτέλεσης του προγράμματος

– Περιορισμός ελευθερίας προγραμματιστή: Λόγω της δομής τους ( στατικές) πρέπει ο προγραμματιστής να προσδιορίζει με ακρίβεια στη φάση των δηλώσεων το μέγεθος, που σε μερικές περιπτώσεις είναι αδύνατο με αποτέλεσμα να δηλώνει ή πολύ περισσότερες θέσεις ( σπατάλη μνήμης) ή λιγότερες ( συνεχείς αλλαγές στην σχεδίαση κάθε φορά που απαιτούνται περισσότερες θέσεις )

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 11

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ• Πρόγραμμα Πιν1• Μεταβλητές

– Ακέραιες: Α[100],κ• Αρχή

– Για κ από 1 μέχρι 100• Γράψε «δώσε:»• Διάβασε Α[κ]

– Τέλος Επανάληψης• Τέλος Προγράμματος

• Η εισαγωγή μπορεί να γίνει και με χρήση μιας μεταβλητής εισόδου Χ και μετά εκχώρηση στην αντίστοιχη θέση του πίνακα

• Για κ από 1 μέχρι 100– Διάβασε Χ– Α[κ] χ

• Τέλος Επανάληψης

• Πρόγραμμα Πιν1Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ• Αρχή

– Για κ από 1 μέχρι 10• Για ρ από 1 μέχρι 20

– Γράψε «δώσε:»– Διάβασε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 12

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΕΜΦΑΝΙΣΗ ΔΕΔΟΜΕΝΩΝ• Πρόγραμμα Πιν2 • Μεταβλητές

– Ακέραιες: Α[100],κ• Αρχή

– Για κ από 1 μέχρι 100• Γράψε «δώσε:»• Διάβασε Α[κ]

– Τέλος Επανάληψης– Για κ από 1 μέχρι 100

• Γράψε Α[κ]– Τέλος Επανάληψης

• Τέλος Προγράμματος

• Πρόγραμμα Πιν2Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ• Αρχή

– Για κ από 1 μέχρι 10• Για ρ από 1 μέχρι 20

– Γράψε «δώσε:»– Διάβασε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης– Για κ από 1 μέχρι 10

• Για ρ από 1 μέχρι 20 – Γράψε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 13

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΜΕΓΙΣΤΟΣ• Πρόγραμμα Πιν3• Μεταβλητές

– Ακέραιες: Α[100],κ, θέση, Μαχ• Αρχή• ! Γέμισμα• ΜαχΑ[1]• Θέση1• Για κ από 2 μέχρι 100

– Αν Α[κ]>Μαχ τότε• ΜαχΑ[κ]• Θέσηκ

– Τέλος_αν• Τέλος_επανάληψης• Εμφάνισε θέση, μαχ• Τέλος Προγράμματος

• Πρόγραμμα 3Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ,χ,y• Αρχή

– ! Γέμισμα– ΜαχΒ[1,1]– Χ1, Υ1– Για κ από 1 μέχρι 10

• Για ρ από 1 μέχρι 20 – Αν Β[κ,ρ]>Μαχ τότε– ΜαχΒ[κ,ρ]– Χκ– Υρ– Τέλος_αν

• Τέλος Επανάληψης– Τέλος Επανάληψης– Εμφάνισε Μαχ, Χ, Υ

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 14

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΑΝΑΖΗΤΗΣΗ1Αλγόριθμος Αναζήτηση1 ! Όταν βρεθεί τερματίζει η επανάληψηΔεδομένα // Ν, Α[Ν], Χ //

Βρέθηκε ΨευδήςΘέση 0Ι1ΟΣΟ ( Βρέθηκε = ψευδής ) και ( Ι<= Ν) επανάλαβεΑν Α[Ι] =Χ τότε

Βρέθηκε ΑληθήςΘέση Ι

Αλλιώς Ι Ι +1Τέλος_ανΤέλος ΕπανάληψηςΑποτελέσματα // Βρέθηκε, Θέση //Τέλος Αναζήτηση1

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 15

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΑΝΑΖΗΤΗΣΗ2Αλγόριθμος Αναζήτηση2 ! Αναζητεί όλες τις θέσειςΔεδομένα // Ν, Α[Ν], Χ //Μ0Βρέθηκε ΨευδήςΓια Ι από 1 μέχρι ΝΑν Α[Ι] =Χ τότε

Βρέθηκε ΑληθήςΓράψε « βρέθηκε στη θέση :», Ι

Μ Μ +1Τέλος_ανΤέλος ΕπανάληψηςΑν Βρέθηκε = ψευδής τότε

Εμφάνισε « ΔΕΝ ΒΡΕΘΗΚΕ»Αλλιώς

Εμφάνισε « ΒΡΕΘΗΚΕ..», Μ, « ΦΟΡΕΣ»Τέλος_αν

Τέλος Αναζήτηση2

Μπορούμε να χρησιμοποιήσουμε και

δομή ΟΣΟ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 16

Πότε δικαιολογείται σειριακή αναζήτηση

• Πίνακας δεν είναι ταξινομημένος• Πίνακας έχει μικρό μέγεθος ( Ν<=20)• Η αναζήτηση στον πίνακα γίνεται σπάνια

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 17

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΤΑΞΙΝΟΜΗΣΗΑλγόριθμος Ταξινόμηση Δεδομένα // Ν, Α[Ν] //

Για Ι από 2 μέχρι ΝΓια J από Ν μέχρι Ι με βήμα -1

Αν Α[J-1]> A[J] τότεTempA[J-1]A[J-1] A[J]A[J] Temp

Τέλος_ανΤέλος ΕπανάληψηςΑποτελέσματα // Α[Ν] //Τέλος Ταξινόμηση

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 18

Παράδειγμα ταξινόμησης φυσαλίδας

52127156510199045

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 19

Παράδειγμα ταξινόμησης φυσαλίδας

90454590191910105657156127152125552

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 20

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 512 52 1071 12 5256 71 125 56 7110 10 5619 19 1990 45 4545 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 21

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 512 52 10 1071 12 52 1256 71 12 525 56 71 1910 10 56 7119 19 19 5690 45 45 4545 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 22

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 512 52 10 10 1071 12 52 12 1256 71 12 52 195 56 71 19 5210 10 56 71 4519 19 19 56 7190 45 45 45 5645 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 23

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 512 52 10 10 10 1071 12 52 12 12 1256 71 12 52 19 195 56 71 19 52 4510 10 56 71 45 5219 19 19 56 71 5690 45 45 45 56 7145 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 24

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 512 52 10 10 10 10 1071 12 52 12 12 12 1256 71 12 52 19 19 195 56 71 19 52 45 4510 10 56 71 45 52 5219 19 19 56 71 56 5690 45 45 45 56 71 7145 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 25

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 5 512 52 10 10 10 10 10 1071 12 52 12 12 12 12 1256 71 12 52 19 19 19 195 56 71 19 52 45 45 4510 10 56 71 45 52 52 5219 19 19 56 71 56 56 5690 45 45 45 56 71 71 7145 90 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 26

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 5 5 512 52 10 10 10 10 10 10 1071 12 52 12 12 12 12 12 1256 71 12 52 19 19 19 19 195 56 71 19 52 45 45 45 4510 10 56 71 45 52 52 52 5219 19 19 56 71 56 56 56 5690 45 45 45 56 71 71 71 7145 90 90 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 27

Επεξεργασίες πινάκων/ παράλληλη ταξινόμηση

• Ταξινόμηση 100 Μαθητών με βάση τον βαθμό.

• Χρειαζόμαστε δύο πίνακες.• Μ [100] για τα ονόματα και• Β [100] για τους βαθμούς• • 1. Εισαγωγή δεδομένων1. Εισαγωγή δεδομένων

• Για Ι από 1 μέχρι 100– Διάβασε Μ [ι], Β [ι]

• Τέλος_επανάληψης

• 2. Ταξινόμηση

• Για Ι από 2 μέχρι 100• Για J από Ν μέχρι I με βήμα -1• Αν Β[j -1] >Β[j] τότε• Αντιμετάθεσε Β[j-1], B[j]• Αντιμετάθεσε M[j-1], M[j]• Τέλος_αν• Τέλος_επανάληψης• …

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 28

ΥΠΟΛΟΓΙΣΜΟΙ ΑΘΡΟΙΣΜΑΤΩΝΥΠΟΛΟΓΙΣΜΟΙ ΑΘΡΟΙΣΜΑΤΩΝΠΙΝΑΚΑ Α[ Μ, Ν ]ΠΙΝΑΚΑ Α[ Μ, Ν ]

• ΓΡΑΜΜΩΝΓΡΑΜΜΩΝ

• Για Ι από 1 μέχρι Μ• X0

– Για J από 1 μέχρι Ν• X X + Α[ I ,J]

– Τέλος_επανάληψης– Σ[Ι]X

• Τέλος_επανάληψης

• ΣΤΗΛΩΝΣΤΗΛΩΝ

• Για J από 1 μέχρι Ν• X0

– Για I από 1 μέχρι M• X X + Α[ I,J]

– Τέλος_επανάληψης– Σ[J]X

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 29

ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ ΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΠΑΝΩ – ΚΑΤΩ ΑΠΌ ΤΗΝ ΚΥΡΙΑ ΔΙΑΓΩΝΙΟΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΠΑΝΩ – ΚΑΤΩ ΑΠΌ ΤΗΝ ΚΥΡΙΑ ΔΙΑΓΩΝΙΟ

• Σ1Σ100• Σ2Σ200• Για Ι από 1 μέχρι Ν• Για J από 1 μέχρι Ν

– Αν Ι <J τότε• Σ1 Σ1 + Α [ Ι, J]• Τέλος_αν

– Αν I>J τότε• Σ2 Σ2 + Α [ Ι, J]

– Τέλος_αν• Τέλος_επανάληψης• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

I < J

I >J

I= J

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 30

ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ ΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΚΥΡΙΑΣ – ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΔΙΑΓΩΝΙΟΥΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΚΥΡΙΑΣ – ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΔΙΑΓΩΝΙΟΥ

• 11 οςος ΤΡΟΠΟΣ ΤΡΟΠΟΣ• Σ1Σ100 ! ! Κύρια Κύρια • Σ2Σ20 ! Δευτερεύουσα0 ! Δευτερεύουσα• Για Ι από 1 μέχρι Ν• Για J από 1 μέχρι Ν

– Αν Ι = J τότε• Σ1 Σ1 + Α [ Ι, J]• Τέλος_αν

– Αν J = Ν+1-Ι τότε• Σ2 Σ2 + Α [ Ι, J]

– Τέλος_αν• Τέλος_επανάληψης• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

• 2ος τρόπος2ος τρόπος• Σ1Σ100• Σ2Σ200• Για Ι από 1 μέχρι Ν• Σ1 Σ1 + Α [ Ι, Ι]• Σ2 Σ2 + Α [ Ι, Ν+1 –Ι]• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 31

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΣΥΓΧΩΝΕΥΣΗ ΔΥΟ ΤΑΞΙΝΟΜΗΜΕΝΩΝ ΠΙΝΑΚΩΝ

• Αλγόριθμος Merging• Δεδομένα // Α[Ν], Β[Μ] //• κ1,Ι1, J 1• Όσο ( ι<=Ν) και ( j <= M)

επανάλαβε• Αν Α[ι]<Β[j] τότε

– Γ [ κ] Α[ι]– ΚΚ+1– II+1

• Αλλιώς– Γ[κ]Β[ j ]– ΚΚ+1– J J+1

• Tέλος_αν• Τέλος_επανάληψης

• ! Μεταφορά υπολοίπων• Αν Ι>Ν τότε

– Για ρ από k μέχρι Μ+Ν• Γ[ρ]Β[ j]• J J +1

Τέλος_επανάληψηςΑλλιώς– Για ρ από k μέχρι Μ+Ν

• Γ[ρ]Α[ ι]• Ι Ι +1

Τέλος_επανάληψηςΤέλος_αν

Αποτελέσματα // Γ [ Μ+Ν] //

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 32

ΑΣΚΗΣΗ 4 : Υπολογισμοί και επεξεργασίες ανά γραμμή

• Να διαβάζει απ’ το πληκτρολόγιο τα ονόματα 25 μαθητών και να τα καταχωρεί σε πίνακα ΜΑΘΗΤΕΣ[25]• Να διαβάζει απ’ το πληκτρολόγιο τα ονόματα 14 μαθημάτων και να τα καταχωρεί σε πίνακα ΜΑΘΗΜΑΤΑ[14]• Να διαβάζει απ’ το πληκτρολόγιο τους βαθμούς του κάθε μαθητή σε όλα τα μαθήματα και να τους καταχωρεί σε πίνακα Β[25,14], κάνοντας έλεγχο ορθής εισαγωγής• Να υπολογίζει τους μέσους όρους για όλους τους μαθητές και να τους καταχωρεί σε πίνακα ΜΟ[25]• Να υπολογίζει τον μεγαλύτερο βαθμό του κάθε μαθητή και να τον καταχωρεί στην αντίστοιχη θέση του πίνακα ΜΑΧ[25]• Να υπολογίζει το πλήθος των μαθητών που έχουν ΜΟ >= 15 και <= 18• Να εμφανίζει κατάσταση με τα ονόματα των μαθητών και δίπλα τους αντίστοιχους μέσους όρους κατά φθίνουσα σειρά μέσων όρων. Σε περίπτωση ισοβαθμίας να τυπώνονται οι μαθητές αλφαβητικά• Να βρίσκει το πλήθος των μαθητών και να τυπώνει τα αντίστοιχα ονόματα όσων έχουν βαθμό ίσο με τον μεγαλύτερο • Να τυπώνει τους πέντε καλύτερους μαθητές και τους 3 χειρότερους• Να βρίσκει τα ονόματα των μαθητών που είχαν τον δεύτερο καλύτερο ΜΟ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 33

ΑΣΚΗΣΗ 4 / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ

• Για Ι από 1 μέχρι 25– Διάβασε ΟΝΟΜΑ– ΜΑΘΗΤΕΣ [Ι] ΟΝΟΜΑ

• Τέλος_ επανάληψης

• Για J από 1 μέχρι 14– ΔΙΑΒΑΣΕ Χ– ΜΑΘΗΜΑΤΑ [J] X

• Τέλος_επανάληψης

• Για I από 1 μέχρι 25– Για J από 1 μέχρι 14– Αρχή επανάληψης

• Διάβασε Χ– Μέχρις_ότου Χ>=0 και Χ<=20– Β[ I, J] X

• Tέλος Επανάληψης• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 34

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΟ

• Θα βρούμε το άθροισμα των βαθμών για κάθε μαθητή και θα διαιρέσουμε με το πλήθος των μαθημάτων

• Οι βαθμοί κάθε μαθητή βρίσκονται σε μια γραμμή, άρα θα υπολογίσουμε τα αθροίσματα των γραμμών

• Μόλις τελειώνει ο υπολογισμός για κάθε μαθητή καταχωρούμε στην αντίστοιχη θέση του πίνακα ΜΟ το πηλίκο Σ/14

• ΜΟ[Ι]Σ/14

• Για I από 1 μέχρι 25– Σ0– Για J από 1 μέχρι 14– ΣΣ +Β[ I, J]– Tέλος Επανάληψης– ΜΟ [Ι ] < Σ /14

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 35

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΑΧ

• Θα βρούμε το μέγιστο βαθμό κάθε μαθητή

• Οι βαθμοί κάθε μαθητή βρίσκονται σε μια γραμμή, άρα θα υπολογίσουμε τον μέγιστο κάθε γραμμής

• Για I από 1 μέχρι 25– Μ Β[Ι,1]– Για J από 2 μέχρι 14– Αν Β [Ι, J] > M τότε

• Μ Β [Ι, J]– Tέλος Επανάληψης– ΜAX[Ι ] M

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 36

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ ΜΕΤΑΞΥ 15 και 18

• Όταν μας ζητάνε πλήθος ακολουθούμε τρία βήματα

• 1ο βήμα : Μηδενισμός μετρητή πριν από την επανάληψη

• 2ο βήμα : ενημέρωση μετρητή μέσα στην επανάληψη ανάλογα με την συνθήκη που ζητείται

• 3ο βήμα: εκτύπωση του μετρητή μετά το τέλος της επανάληψης ( έξω)

• Πλήθος 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] >=15 και ΜΟ[Ι]<= 18 τότε

• Πλήθος Πλήθος +1– Τέλος_αν

• Τέλος_επανάληψης– Εμφάνισε Πλήθος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 37

ΑΣΚΗΣΗ 4/ ΤΑΞΙΝΟΜΗΣΗΓια Ι από 2 μέχρι 25

Για J από 25 μέχρι Ι με βήμα -1Αν ΜΟ[J-1]< ΜΟ[J] τότε

TempΜΟ[J-1]ΜΟ[J-1] ΜΟ[J]ΜΟ[J] TempΤemp1 ΜΑΘΗΤΕΣ[J-1]ΜΑΘΗΤΕΣ[J-1] ΜΑΘΗΤΕΣ[J]ΜΑΘΗΤΕΣ[J]Temp1

Αλλιώς_αν ΜΟ[J-1] = MO[J] και ΜΑΘΗΤΕΣ[J-1]>ΜΑΘΗΤΕΣ[J] τότεΤemp1 ΜΑΘΗΤΕΣ[J-1]ΜΑΘΗΤΕΣ[J-1] ΜΑΘΗΤΕΣ[J]ΜΑΘΗΤΕΣ[J]Temp1

Τέλος_ανΤέλος Επανάληψης

Τέλος_επανάληψηςΓια ι από 1 μέχρι 25 εμφάνισε Μαθητές [ι], ΜΟ[ι]Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 38

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ με ΜΟ = ΜΑΧ

• 1ος τρόπος: Αν έχετε ταξινομήσει τον πίνακα Μέσων όρων ό μεγαλύτερος θα βρίσκεται στην πρώτη θέση

• Άρα ΜΑΧ ΜΟ[1]• Σαρώνουμε τον πίνακα και

ελέγχουμε ποιοι είναι ίσοι με τον ΜΑΧ όποτε ενημερώνουμε τον μετρητή

• Ταυτόχρονα τυπώνουμε το αντίστοιχο όνομα

• MAX MO[1]• Counter 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] = MAX τότε • Counter Coumter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 39

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ με ΜΟ = ΜΑΧ

• 2ος τρόπος: Αν η άσκηση δεν έχει ζητήσει ταξινόμηση τότε μπορείτε να υπολογίσετε τον μέγιστο του πίνακα των μέσων όρων ( έστω ΜΑΧ)

• Σαρώνουμε τον πίνακα και ελέγχουμε ποιοι είναι ίσοι με τον ΜΑΧ όποτε ενημερώνουμε τον μετρητή

• Ταυτόχρονα τυπώνουμε το αντίστοιχο όνομα

• ΑΚΟΜΑ ΚΑΙ ΝΑ ΜΗΝ ΕΧΕΤΕ ΚΑΤΑΦΕΡΕΙ ΝΑ ΥΠΟΛΟΓΙΣΕΤΕ ΤΟΝ ΜΑΧ ΜΠΟΡΕΙΤΕ ΝΑ ΑΠΑΝΤΗΣΕΤΕ Σ’ ΑΥΤΉ ΤΗΝ ΕΡΩΤΗΣΗ ΜΕ ΤΟΝ ΙΔΙΟ ΤΡΟΠΟ

• Counter 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] = MAX τότε • Counter Coumter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 40

ΑΣΚΗΣΗ 4 / ΕΜΦΑΝΙΣΗ ΤΩΝ 5 ΚΑΛΥΤΕΡΩΝ ΚΑΙ 3 ΧΕΙΡΟΤΕΡΩΝ

• Αφού ο πίνακας των μαθητών και των μέσων όρων είναι ταξινομημένος κατά φθίνουσα σειρά μέσων όρων σημαίνει– Οι 5 καλύτεροι

καταλαμβάνουν τις πέντε πρώτες θέσεις

– Οι τρεις χειρότεροι καταλαμβάνουν τις 3 τελευταίες θέσεις

• Εμφάνισε « πέντε καλύτεροι»• Για I από 1 μέχρι 5

– Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ], ΜΟ[Ι]• Τέλος_επανάληψης• Εμφάνισε «Τρεις χειρότεροι»• Για Ι από 23 μέχρι 25

– Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ], ΜΟ[Ι]• Τέλος_επανάληψης

• ! Στην περίπτωση των χειρότερων αν ζητηθεί κατά αύξουσα σειρά θα πρέπει το για να αρχίζει από 25 μέχρι 23 με βήμα -1

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 41

ΑΣΚΗΣΗ 4 / ΕΜΦΑΝΙΣΗ ΤΩΝ μαθητών με δεύτερο καλύτερο

• Αφού ο πίνακας των μαθητών και των μέσων όρων είναι ταξινομημένος κατά φθίνουσα σειρά μέσων όρων σημαίνει ότι όσοι έχουν μέσο όρο = ΜΑΧ βρίσκονται στις πρώτες θέσεις

• Τους μετράμε• p0• Για ι από 1 μέχρι 25

– Αν ΜΟ[ι] = ΜΟ[1 ] τότε• p p+1

– Tέλος_αν• Τέλος_επανάληψης

• Εμφάνισε « οι ΔΕΎΤΕΡΟΙ»• Δεύτερος ΜΟ[ρ+1]• Για I από 1 μέχρι 25

– Αν ΜΟ[ι] =Δεύτερος τότε • Εμφάνισε ΜΑΘΗΤΕΣ[ι]

– Τέλος_αν • Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 42

ΑΣΚΗΣΗ 4 : Υπολογισμοί και επεξεργασίες ανά στήλη

• Στις πανελλαδικές εξετάσεις στον τεχνολογικό τομέα εξετάζονται 25000 μαθητές σε έξι μαθήματα. Η βαθμολογία σε κάθε μάθημα γίνεται στην κλίμακα 0 -100.

• Να γράψετε πρόγραμμα που:– Να διαβάζει τα ονόματα των 25000 μαθητών και να τα καταχωρεί σε πίνακα ΟΝ[25000]– Να διαβάζει τα ονόματα των έξι μαθημάτων και να τα καταχωρεί σε πίνακα ΜΑΘΗΜΑΤΑ[6] – Να διαβάζει την βαθμολογία κάνοντας έλεγχο ορθότητας και να την καταχωρεί σε πίνακα Β [ 25000,6 ]– Να υπολογίζει για κάθε μάθημα τον μέσο όρο και να τον καταχωρεί σε πίνακα ΜΟ[6]– Να βρίσκει το όνομα του μαθήματος που ήταν πιο δύσκολο ( δεχθείτε ότι είναι ένα )– Να βρίσκει το πλήθος των μαθητών ανά μάθημα που δεν κατάφεραν να γράψουν βαθμό πάνω από 25– Αν στο μάθημα 1 οι μαθητές έπρεπε να γράψουν τουλάχιστον 50 ( στην κλίμακα 0 -100) να υπολογίσετε πόσοι και ποιοι μαθητές αποκλείσθηκαν από τις εξετάσεις.

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 43

ΑΣΚΗΣΗ 4 / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ

• Για Ι από 1 μέχρι 25000– Διάβασε ΟΝ[ι]

• Τέλος_ επανάληψης

• Για J από 1 μέχρι 6ΔΙΑΒΑΣΕ ΜΑΘΗΜΑΤΑ [J]

• Τέλος_επανάληψης

• Για I από 1 μέχρι 25000– Για J από 1 μέχρι 6– Αρχή επανάληψης

• Διάβασε Χ– Μέχρις_ότου Χ>=0 και Χ<=20– Β[ I, J] X

• Tέλος Επανάληψης• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 44

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΟ

• Θα βρούμε το άθροισμα των βαθμών για κάθε μάθημα και θα διαιρέσουμε με το πλήθος των μαθητών

• Οι βαθμοί κάθε μαθήματος βρίσκονται σε μια στήλη, άρα θα υπολογίσουμε τα αθροίσματα των στηλών

• Μόλις τελειώνει ο υπολογισμός για κάθε μάθημα καταχωρούμε στην αντίστοιχη θέση του πίνακα ΜΟ το πηλίκο Σ/25000

• Για j από 1 μέχρι 6– Σ0– Για i από 1 μέχρι 25000– ΣΣ +Β[ I, J]– Tέλος Επανάληψης– ΜΟ [j ] < Σ /25000

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 45

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ MIN

• Δυσκολότερο είναι το μάθημα που έχει τον μικρότερο ΜΟ.

• Άρα θα βρούμε το μικρότερο ΜΟ

• Μin MO[1]• P1• Για κ από 2 μέχρι 6 • Αν ΜΟ[κ}<Μin τότε

– MinMO[k]– Pk

• Τέλος_αν• Τέλος_επανάληψης• Γράψε ΜΑΘΗΜΑΤΑ[ρ], min

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 46

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ ανά μάθημα με βαθμό <25

• Όταν μας ζητάνε πλήθος ανά μάθημα ακολουθούμε 4 βήματα

• 1ο βήμα : έναρξη επανάληψης για κάθε μάθημα

• 2ο βήμα : Μηδενισμός μετρητή πριν από την δεύτερη επανάληψη

• 3ο βήμα : ενημέρωση μετρητή μέσα στην επανάληψη ανάλογα με την συνθήκη που ζητείται

• 4ο βήμα: εκτύπωση του μετρητή μετά το τέλος της εσωτερικής επανάληψης

• Για J από 1 μέχρι 6– Πλήθος 0– Για I από 1 μέχρι 25000

• Αν Β[ I, j] <25 τότε • Πλήθος Πλήθος +1• Τέλος_αν

– Τέλος_επανάληψης– Γράψε ΜΑΘΗΜΑΤΑ[j], πλήθος

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 47

ΑΣΚΗΣΗ 4 / ΠΟΙΟΙ ΑΠΟΚΛΕΙΟΝΤΑΙ

• Αποκλείονται οι μαθητές που στο μάθημα 1 πήραν βαθμό <50

• Άρα η συνθήκη ελέγχου είναι

• Β[ι, 1] <50

• Counter 0• Για I από 1 μέχρι 25000

– Αν Β[Ι,1] <50 τότε • Counter Counter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 48

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 49

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 50

Λύση • Ο αλγόριθμος

διατρέχει τον πίνακα και κάνει δύο επεξεργασίες:

• 1. Αν βρει στοιχείο της κύριας διαγωνίου ( Ι = J) αθροίζει ( Sum Sum +A[I,j]

• 2. Αν βρει στοιχείο έξω απ’ την κύρια διαγώνιο το μηδενίζει

• Τελικά το Sum παίρνει την τιμή 1+2+3+2+1 = 9

• Ο πίνακας μένει με τα στοιχεία της κύριας διαγώνιου

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 51

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 52

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 53

Στοίβες και ουρές• Στοίβα: LIFO• Λειτουργίες

– Ώθηση (Push)– Απώθηση ( Pop)

• Δείκτες– Κορυφής ( Top) δείχνει το στοιχείο

που τοποθετήθηκε τελευταίο στην στοίβα

• ΩΘΗΣΗ : Ελέγχεται ο δείκτης top και αν είναι < Ν αυξάνεται κατά 1 και εισάγεται στην νέα θέση το στοιχείο. Αν έχουμε overflow δεν μπορεί να γίνει εισαγωγή στοιχείου

• ΑΠΩΘΗΣΗ : Ελέγχεται αν υπάρχει στοιχείο στη στοίβα ( top >=1) και τότε εκχωρείται το στοιχείο και ο δείκτης ελαττώνεται κατά 1. Αν έχουμε under flow δεν μπορεί να εξαχθεί στοιχείο.

• Ουρά : FIFO• Λειτουργίες

– Εισαγωγή (enqueue)– Εξαγωγή (Dequeue)

• Δείκτες– Εμπρός (front) δείχνει το στοιχείο

που πρόκειται να εξαχθεί– Πίσω (rear) δείχνει το στοιχείο που

εισάχθηκε τελευταίο• ΕΙΣΑΓΩΓΗ: Ελέγχεται αν υπάρχει

χώρος για εισαγωγή. Αν υπάρχει αυξάνεται ο rear κατά ένα και εισάγεται στην νέα θέση το στοιχείο

• ΕΞΑΓΩΓΗ: Ελέγχεται αν υπάρχει στοιχείο για εξαγωγή και στη συνέχεια ο δείκτης front αυξάνεται κατά 1, για να δείξει τη θέση του νέου στοιχείου προς εξαγωγή

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 54

ΩΘΗΣΗ – ΑΠΩΘΗΣΗ ΣΕ ΣΤΟΙΒΑ

• Αλγόριθμος Push• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν top < N τότε

– Top Top +1– Στοίβα[Top] X– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε,

στοίβα //• Τέλος Push

• Αλγόριθμος Pop• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν top >=1 τότε

– X Στοίβα [top]– TopTop -1– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε,

στοίβα //• Τέλος Pop

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 55

ΕΙΣΑΓΩΓΗ – ΕΞΑΓΩΓΗ ΣΕ ΟΥΡΑ

• Αλγόριθμος ENQUEUE• Δεδομένα // Ν, Ουρά[Ν], Χ//• Αν rear < N τότε

– rear rear +1– Ουρά[rear] X– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε, ουρά//• Τέλος Enqueue

• Αλγόριθμος DEQUEUE• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν front >=1 τότε

– X Ουρά [top]– frontfront+1– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε, ουρά //• Τέλος DEQUEUE

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 56

Δομές δεδομένων δευτερεύουσας μνήμης

• Αρχείο : χώρος αποθήκευσης δεδομένων στην περιφερειακή μνήμη

• Εγγραφή: τα στοιχεία ενός αρχείου

• Πεδία : χαρακτηριστικά κάθε εγγραφής

• Πρωτεύον κλειδί: πεδίο που ταυτοποιεί την εγγραφή

• Μαθητές

• Τα στοιχεία κάθε μαθητή αποτελεί μια εγγραφή. Υπάρχουν τόσες εγγραφές όσοι και οι μαθητές

• Επώνυμο, όνομα, αριθμός μητρώου, βαθμοί αποτελούν τα πεδία κάθε εγγραφής

• Αριθμός μητρώου είναι το πρωτεύον κλειδί

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 1

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ&

ΑΛΓΟΡΙΘΜΟΙΠίνακες και βασικές επεξεργασίες

αυτών

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 2

Σκοπιές από τις οποίες μελετά η Σκοπιές από τις οποίες μελετά η πληροφορική τα δεδομέναπληροφορική τα δεδομένα

• Γλωσσών προγραμματισμού• Υλικού• Δομών δεδομένων• Ανάλυσης δεδομένων

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 3

Ορισμός δομής δεδομένων και Ορισμός δομής δεδομένων και βασικές λειτουργίεςβασικές λειτουργίες

• ΟΡΙΣΜΟΣΟΡΙΣΜΟΣ• Σύνολο αποθηκευμένων

δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών

• ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑ

• ( W I R TH )

• ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ1. Προσπέλαση2. Εισαγωγή3. Διαγραφή4. Αναζήτηση5. Ταξινόμηση6. Αντιγραφή7. Συγχώνευση8. Διαχωρισμός

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 4

ΕΙΔΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ• ΣΤΑΤΙΚΕΣ• Σταθερό μέγεθος ( η

απαίτηση σε μνήμη καθορίζεται κατά τη στιγμή του προγραμματισμού – μετάφρασης )

• Δεν αλλάζει στην διάρκεια εκτέλεσης

• Αποθήκευση κόμβων σε συνεχόμενες θέσεις μνήμης

• ΔΥΝΑΜΙΚΕΣ• Δεν έχουν σταθερό

μέγεθος αλλά ο αριθμός των κόμβων μεγαλώνει ή μικραίνει ( εισαγωγή/ διαγραφή)

• Η παραχώρηση μνήμης γίνεται κατά την διάρκεια εκτέλεσης ( δυναμική παραχώρηση)

• Αποθήκευση σε μη συνεχόμενες θέσεις

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 5

ΠΙΝΑΚΕΣ• Βαθμοί, Ονόματα,

Θερμοκρασίες,

• Βαθμός 1ου μαθητή, όνομα 3ου μαθητή, θερμοκρασία 25ης του μήνα

• ΒΑΘΜΟΣ [κ]• ΟΝΟΜΑ[m]

• Σύνολο αντικειμένων ΙΔΙΟΥ ΤΥΠΟΥ, τα οποία αναφέρονται με ένα κοινό ΟΝΟΜΑ

• ΚΆΘΕ ΈΝΑ ΑΝΤΙΚΕΙΜΕΝΟ λέγεται ΣΤΟΙΧΕΙΟ του πίνακα

• Η ΑΝΑΦΟΡΑ σε ένα στοιχείο γίνεται με το ΟΝΟΜΑ ακολουθούμενο από ένα ή περισσότερους δείκτες

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 6

Βασικοί κανόνεςΒασικοί κανόνες• Δεδομένα ίδιου τύπουΔεδομένα ίδιου τύπου• Πλήθος = σταθερόΠλήθος = σταθερό• Δήλωση στο τμήμα δηλώσεων

– Ακέραιες: Α[100], Β[10, 20]– Πραγματικές: Μ[20], Μέσοι_όροι[100]– Χαρακτήρες: ΜΑΘΗΤΕΣ[20], ΥΠΑΛΛΗΛΟΙ[25]– Λογικοί: ΑΠΑΝΤΗΣΕΙΣ[10]

• Σαν όνομα οποιοδήποτε ΑΠΟΔΕΚΤΟ σύμφωνα με τους κανόνες της ΓΛΩΣΣΑΣ

• Ο [οι] δείκτες είναι ΑΚΕΡΑΙΑ [οι] μεταβλητή ή σταθερά ΜΕΣΑ ΣΕ ΑΓΚΥΛΕΣ . Συνηθίζεται η χρήση των I,J,K

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 7

Δημιουργία Μονοδιάστατου πίνακα με βαθμούς 30 Δημιουργία Μονοδιάστατου πίνακα με βαθμούς 30 μαθητών και υπολογισμό του Μέσου όρουμαθητών και υπολογισμό του Μέσου όρου

• Πρόγραμμα ΧωρίςΠίνακες1• Μεταβλητές

– Πραγματικές: Σ, Μ, Χ– Ακέραιες : I

• Αρχή• Σ0

Για ι από 1 μέχρι 30Διάβασε ΧΣΣ+Χ

Τέλος_επανάληψης Μ Σ/30 Γράψε Μ

Τέλος_προγράμματος

• Πρόγραμμα ΜεΠίνακες1• Μεταβλητές

– Πραγματικές: Σ, Μ, Β[30]– Ακέραιες : I

• Αρχή• Σ0

Για ι από 1 μέχρι 30Διάβασε Β[ι]ΣΣ +Β[ι]

Τέλος_επανάληψης Μ Σ/30 Γράψε Μ

Τέλος_προγράμματος

ΚΑΜΜΙΑ ΔΙΑΦΟΡΑ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 8

Παράδειγμα που δείχνει πότε πραγματικά χρειάζεται ο πίνακας

• (α) Διάβασμα βαθμών 30 μαθητών στον προγραμματισμό• (β) Υπολογισμός του πλήθους των μαθητών που έχουν βαθμό

πάνω από τον μέσο όρο κατά 2 μονάδες• (γ) Υπολογισμός της απόκλισης του βαθμού κάθε μαθητή από τον

μέσο όρο

• Το (α) ΔΕΝ ΑΠΑΙΤΕΙ ΠΙΝΑΚΕΣ• Τα ( β) και (γ) χρειάζονται τον κάθε βαθμό για να μπορεί να γίνει η

σύγκριση με τον μέσο όρο. Αν χρησιμοποιήσουμε ΜΙΑ μόνο μεταβλητή οι 29 βαθμοί θα χαθούν ( μετά από κάθε διάβασμα χάνεται η προηγούμενη τιμή). ΕΔΏ ΛΟΙΠΟΝ χρειάζεται να ΚΡΑΤΑΜΕ ΣΤΗ ΜΝΗΜΗ και τις 30 τιμές. ΔΗΛΑΔΗ χρειαζόμαστε πίνακα

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 9

• ΠΡΟΓΡΑΜΜΑ ΠΙΝΑΚΕΣ2• ΜΕΤΑΒΛΗΤΕΣ

– ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΘΜΟΙ [30], ΜΕΣΗ_ΤΙΜΗ, Σ– ΑΚΕΡΑΙΕΣ : Κ, πλήθος

• ΑΡΧΗ• ΓΙΑ Κ ΑΠΌ 1 ΜΕΧΡΙ 30

– ΔΙΑΒΑΣΕ ΒΑΘΜΟΙ[Κ]– Σ Σ+ΒΑΘΜΟΙ[Κ]

• ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ• ΜΕΣΗ_ΤΙΜΗ Σ/30• Πλήθος0• ΓΙΑ Κ ΑΠΌ 1 ΜΕΧΡΙ 30

– ΑΝ ΒΑΘΜΟΙ[Κ] >ΜΕΣΗ_ΤΙΜΗ +2 ΤΟΤΕ• ΠλήθοςΠλήθος+1

– ΤΕΛΟΣ_ΑΝ• ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ• ΓΡΑΨΕ ‘ΔΥΟ ΜΟΝΑΔΕΣ ΠΑΝΩ ΑΠΌ ΤΟΝ Μ.Ο:’, πλήθος• ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΌΤΑΝ ΘΕΛΟΥΜΕ ΝΑ ΣΥΓΚΡΙΝΟΥΜΕ ΚΆΘΕ ΒΑΘΜΟ

ΜΕ ΤΗΝ ΜΕΣΗ ΤΙΜΗ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 10

ΠΟΤΕ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ ΠΙΝΑΚΕΣ

• Αν τα δεδομένα είναι ΟΜΟΕΙΔΗ και πρέπει να διατηρούνται όλα στη μνήμη μέχρι το τέλος της επεξεργασίας ΤΟΤΕ Η ΧΡΗΣΗ ΕΊΝΑΙ ΑΠΑΡΑΙΤΗΤΗ

• ΠΕΡΙΤΤΗ ΧΡΗΣΗ– Απαιτείται μνήμη: Η άσκοπη χρήση πινάκων με μεγάλο αριθμό

στοιχείων περιορίζει τους υπολογιστικούς πόρους του συστήματος και μπορεί να οδηγήσει σε αδυναμία εκτέλεσης του προγράμματος

– Περιορισμός ελευθερίας προγραμματιστή: Λόγω της δομής τους ( στατικές) πρέπει ο προγραμματιστής να προσδιορίζει με ακρίβεια στη φάση των δηλώσεων το μέγεθος, που σε μερικές περιπτώσεις είναι αδύνατο με αποτέλεσμα να δηλώνει ή πολύ περισσότερες θέσεις ( σπατάλη μνήμης) ή λιγότερες ( συνεχείς αλλαγές στην σχεδίαση κάθε φορά που απαιτούνται περισσότερες θέσεις )

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 11

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ• Πρόγραμμα Πιν1• Μεταβλητές

– Ακέραιες: Α[100],κ• Αρχή

– Για κ από 1 μέχρι 100• Γράψε «δώσε:»• Διάβασε Α[κ]

– Τέλος Επανάληψης• Τέλος Προγράμματος

• Η εισαγωγή μπορεί να γίνει και με χρήση μιας μεταβλητής εισόδου Χ και μετά εκχώρηση στην αντίστοιχη θέση του πίνακα

• Για κ από 1 μέχρι 100– Διάβασε Χ– Α[κ] χ

• Τέλος Επανάληψης

• Πρόγραμμα Πιν1Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ• Αρχή

– Για κ από 1 μέχρι 10• Για ρ από 1 μέχρι 20

– Γράψε «δώσε:»– Διάβασε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 12

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΕΜΦΑΝΙΣΗ ΔΕΔΟΜΕΝΩΝ• Πρόγραμμα Πιν2 • Μεταβλητές

– Ακέραιες: Α[100],κ• Αρχή

– Για κ από 1 μέχρι 100• Γράψε «δώσε:»• Διάβασε Α[κ]

– Τέλος Επανάληψης– Για κ από 1 μέχρι 100

• Γράψε Α[κ]– Τέλος Επανάληψης

• Τέλος Προγράμματος

• Πρόγραμμα Πιν2Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ• Αρχή

– Για κ από 1 μέχρι 10• Για ρ από 1 μέχρι 20

– Γράψε «δώσε:»– Διάβασε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης– Για κ από 1 μέχρι 10

• Για ρ από 1 μέχρι 20 – Γράψε Β[κ,ρ]

• Τέλος Επανάληψης– Τέλος Επανάληψης

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 13

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ / ΜΕΓΙΣΤΟΣ• Πρόγραμμα Πιν3• Μεταβλητές

– Ακέραιες: Α[100],κ, θέση, Μαχ• Αρχή• ! Γέμισμα• ΜαχΑ[1]• Θέση1• Για κ από 2 μέχρι 100

– Αν Α[κ]>Μαχ τότε• ΜαχΑ[κ]• Θέσηκ

– Τέλος_αν• Τέλος_επανάληψης• Εμφάνισε θέση, μαχ• Τέλος Προγράμματος

• Πρόγραμμα 3Α• Μεταβλητές

– Ακέραιες: Β[10,20],κ,ρ,χ,y• Αρχή

– ! Γέμισμα– ΜαχΒ[1,1]– Χ1, Υ1– Για κ από 1 μέχρι 10

• Για ρ από 1 μέχρι 20 – Αν Β[κ,ρ]>Μαχ τότε– ΜαχΒ[κ,ρ]– Χκ– Υρ– Τέλος_αν

• Τέλος Επανάληψης– Τέλος Επανάληψης– Εμφάνισε Μαχ, Χ, Υ

• Τέλος Προγράμματος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 14

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΑΝΑΖΗΤΗΣΗ1Αλγόριθμος Αναζήτηση1 ! Όταν βρεθεί τερματίζει η επανάληψηΔεδομένα // Ν, Α[Ν], Χ //

Βρέθηκε ΨευδήςΘέση 0Ι1ΟΣΟ ( Βρέθηκε = ψευδής ) και ( Ι<= Ν) επανάλαβεΑν Α[Ι] =Χ τότε

Βρέθηκε ΑληθήςΘέση Ι

Αλλιώς Ι Ι +1Τέλος_ανΤέλος ΕπανάληψηςΑποτελέσματα // Βρέθηκε, Θέση //Τέλος Αναζήτηση1

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 15

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΑΝΑΖΗΤΗΣΗ2Αλγόριθμος Αναζήτηση2 ! Αναζητεί όλες τις θέσειςΔεδομένα // Ν, Α[Ν], Χ //Μ0Βρέθηκε ΨευδήςΓια Ι από 1 μέχρι ΝΑν Α[Ι] =Χ τότε

Βρέθηκε ΑληθήςΓράψε « βρέθηκε στη θέση :», Ι

Μ Μ +1Τέλος_ανΤέλος ΕπανάληψηςΑν Βρέθηκε = ψευδής τότε

Εμφάνισε « ΔΕΝ ΒΡΕΘΗΚΕ»Αλλιώς

Εμφάνισε « ΒΡΕΘΗΚΕ..», Μ, « ΦΟΡΕΣ»Τέλος_αν

Τέλος Αναζήτηση2

Μπορούμε να χρησιμοποιήσουμε και

δομή ΟΣΟ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 16

Πότε δικαιολογείται σειριακή αναζήτηση

• Πίνακας δεν είναι ταξινομημένος• Πίνακας έχει μικρό μέγεθος ( Ν<=20)• Η αναζήτηση στον πίνακα γίνεται σπάνια

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 17

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΤΑΞΙΝΟΜΗΣΗΑλγόριθμος Ταξινόμηση Δεδομένα // Ν, Α[Ν] //

Για Ι από 2 μέχρι ΝΓια J από Ν μέχρι Ι με βήμα -1

Αν Α[J-1]> A[J] τότεTempA[J-1]A[J-1] A[J]A[J] Temp

Τέλος_ανΤέλος ΕπανάληψηςΑποτελέσματα // Α[Ν] //Τέλος Ταξινόμηση

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 18

Παράδειγμα ταξινόμησης φυσαλίδας

52127156510199045

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 19

Παράδειγμα ταξινόμησης φυσαλίδας

90454590191910105657156127152125552

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 20

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 512 52 1071 12 5256 71 125 56 7110 10 5619 19 1990 45 4545 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 21

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 512 52 10 1071 12 52 1256 71 12 525 56 71 1910 10 56 7119 19 19 5690 45 45 4545 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 22

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 512 52 10 10 1071 12 52 12 1256 71 12 52 195 56 71 19 5210 10 56 71 4519 19 19 56 7190 45 45 45 5645 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 23

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 512 52 10 10 10 1071 12 52 12 12 1256 71 12 52 19 195 56 71 19 52 4510 10 56 71 45 5219 19 19 56 71 5690 45 45 45 56 7145 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 24

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 512 52 10 10 10 10 1071 12 52 12 12 12 1256 71 12 52 19 19 195 56 71 19 52 45 4510 10 56 71 45 52 5219 19 19 56 71 56 5690 45 45 45 56 71 7145 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 25

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 5 512 52 10 10 10 10 10 1071 12 52 12 12 12 12 1256 71 12 52 19 19 19 195 56 71 19 52 45 45 4510 10 56 71 45 52 52 5219 19 19 56 71 56 56 5690 45 45 45 56 71 71 7145 90 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 26

Παράδειγμα ταξινόμησης φυσαλίδας

52 55 5 5 5 5 5 5 512 52 10 10 10 10 10 10 1071 12 52 12 12 12 12 12 1256 71 12 52 19 19 19 19 195 56 71 19 52 45 45 45 4510 10 56 71 45 52 52 52 5219 19 19 56 71 56 56 56 5690 45 45 45 56 71 71 71 7145 90 90 90 90 90 90 90 90

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 27

Επεξεργασίες πινάκων/ παράλληλη ταξινόμηση

• Ταξινόμηση 100 Μαθητών με βάση τον βαθμό.

• Χρειαζόμαστε δύο πίνακες.• Μ [100] για τα ονόματα και• Β [100] για τους βαθμούς• • 1. Εισαγωγή δεδομένων1. Εισαγωγή δεδομένων

• Για Ι από 1 μέχρι 100– Διάβασε Μ [ι], Β [ι]

• Τέλος_επανάληψης

• 2. Ταξινόμηση

• Για Ι από 2 μέχρι 100• Για J από Ν μέχρι I με βήμα -1• Αν Β[j -1] >Β[j] τότε• Αντιμετάθεσε Β[j-1], B[j]• Αντιμετάθεσε M[j-1], M[j]• Τέλος_αν• Τέλος_επανάληψης• …

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 28

ΥΠΟΛΟΓΙΣΜΟΙ ΑΘΡΟΙΣΜΑΤΩΝΥΠΟΛΟΓΙΣΜΟΙ ΑΘΡΟΙΣΜΑΤΩΝΠΙΝΑΚΑ Α[ Μ, Ν ]ΠΙΝΑΚΑ Α[ Μ, Ν ]

• ΓΡΑΜΜΩΝΓΡΑΜΜΩΝ

• Για Ι από 1 μέχρι Μ• X0

– Για J από 1 μέχρι Ν• X X + Α[ I ,J]

– Τέλος_επανάληψης– Σ[Ι]X

• Τέλος_επανάληψης

• ΣΤΗΛΩΝΣΤΗΛΩΝ

• Για J από 1 μέχρι Ν• X0

– Για I από 1 μέχρι M• X X + Α[ I,J]

– Τέλος_επανάληψης– Σ[J]X

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 29

ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ ΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΠΑΝΩ – ΚΑΤΩ ΑΠΌ ΤΗΝ ΚΥΡΙΑ ΔΙΑΓΩΝΙΟΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΠΑΝΩ – ΚΑΤΩ ΑΠΌ ΤΗΝ ΚΥΡΙΑ ΔΙΑΓΩΝΙΟ

• Σ1Σ100• Σ2Σ200• Για Ι από 1 μέχρι Ν• Για J από 1 μέχρι Ν

– Αν Ι <J τότε• Σ1 Σ1 + Α [ Ι, J]• Τέλος_αν

– Αν I>J τότε• Σ2 Σ2 + Α [ Ι, J]

– Τέλος_αν• Τέλος_επανάληψης• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

I < J

I >J

I= J

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 30

ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ ΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΚΥΡΙΑΣ – ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΔΙΑΓΩΝΙΟΥΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΚΥΡΙΑΣ – ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΔΙΑΓΩΝΙΟΥ

• 11 οςος ΤΡΟΠΟΣ ΤΡΟΠΟΣ• Σ1Σ100 ! ! Κύρια Κύρια • Σ2Σ20 ! Δευτερεύουσα0 ! Δευτερεύουσα• Για Ι από 1 μέχρι Ν• Για J από 1 μέχρι Ν

– Αν Ι = J τότε• Σ1 Σ1 + Α [ Ι, J]• Τέλος_αν

– Αν J = Ν+1-Ι τότε• Σ2 Σ2 + Α [ Ι, J]

– Τέλος_αν• Τέλος_επανάληψης• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

• 2ος τρόπος2ος τρόπος• Σ1Σ100• Σ2Σ200• Για Ι από 1 μέχρι Ν• Σ1 Σ1 + Α [ Ι, Ι]• Σ2 Σ2 + Α [ Ι, Ν+1 –Ι]• Τέλος_επανάληψης• Εμφάνισε Σ1, Σ2

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 31

ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ/ ΣΥΓΧΩΝΕΥΣΗ ΔΥΟ ΤΑΞΙΝΟΜΗΜΕΝΩΝ ΠΙΝΑΚΩΝ

• Αλγόριθμος Merging• Δεδομένα // Α[Ν], Β[Μ] //• κ1,Ι1, J 1• Όσο ( ι<=Ν) και ( j <= M)

επανάλαβε• Αν Α[ι]<Β[j] τότε

– Γ [ κ] Α[ι]– ΚΚ+1– II+1

• Αλλιώς– Γ[κ]Β[ j ]– ΚΚ+1– J J+1

• Tέλος_αν• Τέλος_επανάληψης

• ! Μεταφορά υπολοίπων• Αν Ι>Ν τότε

– Για ρ από k μέχρι Μ+Ν• Γ[ρ]Β[ j]• J J +1

Τέλος_επανάληψηςΑλλιώς– Για ρ από k μέχρι Μ+Ν

• Γ[ρ]Α[ ι]• Ι Ι +1

Τέλος_επανάληψηςΤέλος_αν

Αποτελέσματα // Γ [ Μ+Ν] //

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 32

ΑΣΚΗΣΗ 4 : Υπολογισμοί και επεξεργασίες ανά γραμμή

• Να διαβάζει απ’ το πληκτρολόγιο τα ονόματα 25 μαθητών και να τα καταχωρεί σε πίνακα ΜΑΘΗΤΕΣ[25]• Να διαβάζει απ’ το πληκτρολόγιο τα ονόματα 14 μαθημάτων και να τα καταχωρεί σε πίνακα ΜΑΘΗΜΑΤΑ[14]• Να διαβάζει απ’ το πληκτρολόγιο τους βαθμούς του κάθε μαθητή σε όλα τα μαθήματα και να τους καταχωρεί σε πίνακα Β[25,14], κάνοντας έλεγχο ορθής εισαγωγής• Να υπολογίζει τους μέσους όρους για όλους τους μαθητές και να τους καταχωρεί σε πίνακα ΜΟ[25]• Να υπολογίζει τον μεγαλύτερο βαθμό του κάθε μαθητή και να τον καταχωρεί στην αντίστοιχη θέση του πίνακα ΜΑΧ[25]• Να υπολογίζει το πλήθος των μαθητών που έχουν ΜΟ >= 15 και <= 18• Να εμφανίζει κατάσταση με τα ονόματα των μαθητών και δίπλα τους αντίστοιχους μέσους όρους κατά φθίνουσα σειρά μέσων όρων. Σε περίπτωση ισοβαθμίας να τυπώνονται οι μαθητές αλφαβητικά• Να βρίσκει το πλήθος των μαθητών και να τυπώνει τα αντίστοιχα ονόματα όσων έχουν βαθμό ίσο με τον μεγαλύτερο • Να τυπώνει τους πέντε καλύτερους μαθητές και τους 3 χειρότερους• Να βρίσκει τα ονόματα των μαθητών που είχαν τον δεύτερο καλύτερο ΜΟ

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 33

ΑΣΚΗΣΗ 4 / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ

• Για Ι από 1 μέχρι 25– Διάβασε ΟΝΟΜΑ– ΜΑΘΗΤΕΣ [Ι] ΟΝΟΜΑ

• Τέλος_ επανάληψης

• Για J από 1 μέχρι 14– ΔΙΑΒΑΣΕ Χ– ΜΑΘΗΜΑΤΑ [J] X

• Τέλος_επανάληψης

• Για I από 1 μέχρι 25– Για J από 1 μέχρι 14– Αρχή επανάληψης

• Διάβασε Χ– Μέχρις_ότου Χ>=0 και Χ<=20– Β[ I, J] X

• Tέλος Επανάληψης• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 34

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΟ

• Θα βρούμε το άθροισμα των βαθμών για κάθε μαθητή και θα διαιρέσουμε με το πλήθος των μαθημάτων

• Οι βαθμοί κάθε μαθητή βρίσκονται σε μια γραμμή, άρα θα υπολογίσουμε τα αθροίσματα των γραμμών

• Μόλις τελειώνει ο υπολογισμός για κάθε μαθητή καταχωρούμε στην αντίστοιχη θέση του πίνακα ΜΟ το πηλίκο Σ/14

• ΜΟ[Ι]Σ/14

• Για I από 1 μέχρι 25– Σ0– Για J από 1 μέχρι 14– ΣΣ +Β[ I, J]– Tέλος Επανάληψης– ΜΟ [Ι ] < Σ /14

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 35

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΑΧ

• Θα βρούμε το μέγιστο βαθμό κάθε μαθητή

• Οι βαθμοί κάθε μαθητή βρίσκονται σε μια γραμμή, άρα θα υπολογίσουμε τον μέγιστο κάθε γραμμής

• Για I από 1 μέχρι 25– Μ Β[Ι,1]– Για J από 2 μέχρι 14– Αν Β [Ι, J] > M τότε

• Μ Β [Ι, J]– Tέλος Επανάληψης– ΜAX[Ι ] M

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 36

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ ΜΕΤΑΞΥ 15 και 18

• Όταν μας ζητάνε πλήθος ακολουθούμε τρία βήματα

• 1ο βήμα : Μηδενισμός μετρητή πριν από την επανάληψη

• 2ο βήμα : ενημέρωση μετρητή μέσα στην επανάληψη ανάλογα με την συνθήκη που ζητείται

• 3ο βήμα: εκτύπωση του μετρητή μετά το τέλος της επανάληψης ( έξω)

• Πλήθος 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] >=15 και ΜΟ[Ι]<= 18 τότε

• Πλήθος Πλήθος +1– Τέλος_αν

• Τέλος_επανάληψης– Εμφάνισε Πλήθος

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 37

ΑΣΚΗΣΗ 4/ ΤΑΞΙΝΟΜΗΣΗΓια Ι από 2 μέχρι 25

Για J από 25 μέχρι Ι με βήμα -1Αν ΜΟ[J-1]< ΜΟ[J] τότε

TempΜΟ[J-1]ΜΟ[J-1] ΜΟ[J]ΜΟ[J] TempΤemp1 ΜΑΘΗΤΕΣ[J-1]ΜΑΘΗΤΕΣ[J-1] ΜΑΘΗΤΕΣ[J]ΜΑΘΗΤΕΣ[J]Temp1

Αλλιώς_αν ΜΟ[J-1] = MO[J] και ΜΑΘΗΤΕΣ[J-1]>ΜΑΘΗΤΕΣ[J] τότεΤemp1 ΜΑΘΗΤΕΣ[J-1]ΜΑΘΗΤΕΣ[J-1] ΜΑΘΗΤΕΣ[J]ΜΑΘΗΤΕΣ[J]Temp1

Τέλος_ανΤέλος Επανάληψης

Τέλος_επανάληψηςΓια ι από 1 μέχρι 25 εμφάνισε Μαθητές [ι], ΜΟ[ι]Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 38

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ με ΜΟ = ΜΑΧ

• 1ος τρόπος: Αν έχετε ταξινομήσει τον πίνακα Μέσων όρων ό μεγαλύτερος θα βρίσκεται στην πρώτη θέση

• Άρα ΜΑΧ ΜΟ[1]• Σαρώνουμε τον πίνακα και

ελέγχουμε ποιοι είναι ίσοι με τον ΜΑΧ όποτε ενημερώνουμε τον μετρητή

• Ταυτόχρονα τυπώνουμε το αντίστοιχο όνομα

• MAX MO[1]• Counter 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] = MAX τότε • Counter Coumter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 39

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ με ΜΟ = ΜΑΧ

• 2ος τρόπος: Αν η άσκηση δεν έχει ζητήσει ταξινόμηση τότε μπορείτε να υπολογίσετε τον μέγιστο του πίνακα των μέσων όρων ( έστω ΜΑΧ)

• Σαρώνουμε τον πίνακα και ελέγχουμε ποιοι είναι ίσοι με τον ΜΑΧ όποτε ενημερώνουμε τον μετρητή

• Ταυτόχρονα τυπώνουμε το αντίστοιχο όνομα

• ΑΚΟΜΑ ΚΑΙ ΝΑ ΜΗΝ ΕΧΕΤΕ ΚΑΤΑΦΕΡΕΙ ΝΑ ΥΠΟΛΟΓΙΣΕΤΕ ΤΟΝ ΜΑΧ ΜΠΟΡΕΙΤΕ ΝΑ ΑΠΑΝΤΗΣΕΤΕ Σ’ ΑΥΤΉ ΤΗΝ ΕΡΩΤΗΣΗ ΜΕ ΤΟΝ ΙΔΙΟ ΤΡΟΠΟ

• Counter 0• Για I από 1 μέχρι 25

– Αν ΜΟ [Ι] = MAX τότε • Counter Coumter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 40

ΑΣΚΗΣΗ 4 / ΕΜΦΑΝΙΣΗ ΤΩΝ 5 ΚΑΛΥΤΕΡΩΝ ΚΑΙ 3 ΧΕΙΡΟΤΕΡΩΝ

• Αφού ο πίνακας των μαθητών και των μέσων όρων είναι ταξινομημένος κατά φθίνουσα σειρά μέσων όρων σημαίνει– Οι 5 καλύτεροι

καταλαμβάνουν τις πέντε πρώτες θέσεις

– Οι τρεις χειρότεροι καταλαμβάνουν τις 3 τελευταίες θέσεις

• Εμφάνισε « πέντε καλύτεροι»• Για I από 1 μέχρι 5

– Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ], ΜΟ[Ι]• Τέλος_επανάληψης• Εμφάνισε «Τρεις χειρότεροι»• Για Ι από 23 μέχρι 25

– Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ], ΜΟ[Ι]• Τέλος_επανάληψης

• ! Στην περίπτωση των χειρότερων αν ζητηθεί κατά αύξουσα σειρά θα πρέπει το για να αρχίζει από 25 μέχρι 23 με βήμα -1

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 41

ΑΣΚΗΣΗ 4 / ΕΜΦΑΝΙΣΗ ΤΩΝ μαθητών με δεύτερο καλύτερο

• Αφού ο πίνακας των μαθητών και των μέσων όρων είναι ταξινομημένος κατά φθίνουσα σειρά μέσων όρων σημαίνει ότι όσοι έχουν μέσο όρο = ΜΑΧ βρίσκονται στις πρώτες θέσεις

• Τους μετράμε• p0• Για ι από 1 μέχρι 25

– Αν ΜΟ[ι] = ΜΟ[1 ] τότε• p p+1

– Tέλος_αν• Τέλος_επανάληψης

• Εμφάνισε « οι ΔΕΎΤΕΡΟΙ»• Δεύτερος ΜΟ[ρ+1]• Για I από 1 μέχρι 25

– Αν ΜΟ[ι] =Δεύτερος τότε • Εμφάνισε ΜΑΘΗΤΕΣ[ι]

– Τέλος_αν • Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 42

ΑΣΚΗΣΗ 4 : Υπολογισμοί και επεξεργασίες ανά στήλη

• Στις πανελλαδικές εξετάσεις στον τεχνολογικό τομέα εξετάζονται 25000 μαθητές σε έξι μαθήματα. Η βαθμολογία σε κάθε μάθημα γίνεται στην κλίμακα 0 -100.

• Να γράψετε πρόγραμμα που:– Να διαβάζει τα ονόματα των 25000 μαθητών και να τα καταχωρεί σε πίνακα ΟΝ[25000]– Να διαβάζει τα ονόματα των έξι μαθημάτων και να τα καταχωρεί σε πίνακα ΜΑΘΗΜΑΤΑ[6] – Να διαβάζει την βαθμολογία κάνοντας έλεγχο ορθότητας και να την καταχωρεί σε πίνακα Β [ 25000,6 ]– Να υπολογίζει για κάθε μάθημα τον μέσο όρο και να τον καταχωρεί σε πίνακα ΜΟ[6]– Να βρίσκει το όνομα του μαθήματος που ήταν πιο δύσκολο ( δεχθείτε ότι είναι ένα )– Να βρίσκει το πλήθος των μαθητών ανά μάθημα που δεν κατάφεραν να γράψουν βαθμό πάνω από 25– Αν στο μάθημα 1 οι μαθητές έπρεπε να γράψουν τουλάχιστον 50 ( στην κλίμακα 0 -100) να υπολογίσετε πόσοι και ποιοι μαθητές αποκλείσθηκαν από τις εξετάσεις.

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 43

ΑΣΚΗΣΗ 4 / ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ

• Για Ι από 1 μέχρι 25000– Διάβασε ΟΝ[ι]

• Τέλος_ επανάληψης

• Για J από 1 μέχρι 6ΔΙΑΒΑΣΕ ΜΑΘΗΜΑΤΑ [J]

• Τέλος_επανάληψης

• Για I από 1 μέχρι 25000– Για J από 1 μέχρι 6– Αρχή επανάληψης

• Διάβασε Χ– Μέχρις_ότου Χ>=0 και Χ<=20– Β[ I, J] X

• Tέλος Επανάληψης• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 44

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΜΟ

• Θα βρούμε το άθροισμα των βαθμών για κάθε μάθημα και θα διαιρέσουμε με το πλήθος των μαθητών

• Οι βαθμοί κάθε μαθήματος βρίσκονται σε μια στήλη, άρα θα υπολογίσουμε τα αθροίσματα των στηλών

• Μόλις τελειώνει ο υπολογισμός για κάθε μάθημα καταχωρούμε στην αντίστοιχη θέση του πίνακα ΜΟ το πηλίκο Σ/25000

• Για j από 1 μέχρι 6– Σ0– Για i από 1 μέχρι 25000– ΣΣ +Β[ I, J]– Tέλος Επανάληψης– ΜΟ [j ] < Σ /25000

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 45

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ MIN

• Δυσκολότερο είναι το μάθημα που έχει τον μικρότερο ΜΟ.

• Άρα θα βρούμε το μικρότερο ΜΟ

• Μin MO[1]• P1• Για κ από 2 μέχρι 6 • Αν ΜΟ[κ}<Μin τότε

– MinMO[k]– Pk

• Τέλος_αν• Τέλος_επανάληψης• Γράψε ΜΑΘΗΜΑΤΑ[ρ], min

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 46

ΑΣΚΗΣΗ 4 / ΥΠΟΛΟΓΙΣΜΟΣ ΠΛΗΘΟΥΣ ανά μάθημα με βαθμό <25

• Όταν μας ζητάνε πλήθος ανά μάθημα ακολουθούμε 4 βήματα

• 1ο βήμα : έναρξη επανάληψης για κάθε μάθημα

• 2ο βήμα : Μηδενισμός μετρητή πριν από την δεύτερη επανάληψη

• 3ο βήμα : ενημέρωση μετρητή μέσα στην επανάληψη ανάλογα με την συνθήκη που ζητείται

• 4ο βήμα: εκτύπωση του μετρητή μετά το τέλος της εσωτερικής επανάληψης

• Για J από 1 μέχρι 6– Πλήθος 0– Για I από 1 μέχρι 25000

• Αν Β[ I, j] <25 τότε • Πλήθος Πλήθος +1• Τέλος_αν

– Τέλος_επανάληψης– Γράψε ΜΑΘΗΜΑΤΑ[j], πλήθος

• Τέλος_επανάληψης

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 47

ΑΣΚΗΣΗ 4 / ΠΟΙΟΙ ΑΠΟΚΛΕΙΟΝΤΑΙ

• Αποκλείονται οι μαθητές που στο μάθημα 1 πήραν βαθμό <50

• Άρα η συνθήκη ελέγχου είναι

• Β[ι, 1] <50

• Counter 0• Για I από 1 μέχρι 25000

– Αν Β[Ι,1] <50 τότε • Counter Counter +1• Εμφάνισε ΜΑΘΗΤΕΣ[ Ι ]

– Τέλος_αν• Τέλος_επανάληψης

– Εμφάνισε Coumter

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 48

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 49

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 50

Λύση • Ο αλγόριθμος

διατρέχει τον πίνακα και κάνει δύο επεξεργασίες:

• 1. Αν βρει στοιχείο της κύριας διαγωνίου ( Ι = J) αθροίζει ( Sum Sum +A[I,j]

• 2. Αν βρει στοιχείο έξω απ’ την κύρια διαγώνιο το μηδενίζει

• Τελικά το Sum παίρνει την τιμή 1+2+3+2+1 = 9

• Ο πίνακας μένει με τα στοιχεία της κύριας διαγώνιου

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 51

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 52

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 53

Στοίβες και ουρές• Στοίβα: LIFO• Λειτουργίες

– Ώθηση (Push)– Απώθηση ( Pop)

• Δείκτες– Κορυφής ( Top) δείχνει το στοιχείο

που τοποθετήθηκε τελευταίο στην στοίβα

• ΩΘΗΣΗ : Ελέγχεται ο δείκτης top και αν είναι < Ν αυξάνεται κατά 1 και εισάγεται στην νέα θέση το στοιχείο. Αν έχουμε overflow δεν μπορεί να γίνει εισαγωγή στοιχείου

• ΑΠΩΘΗΣΗ : Ελέγχεται αν υπάρχει στοιχείο στη στοίβα ( top >=1) και τότε εκχωρείται το στοιχείο και ο δείκτης ελαττώνεται κατά 1. Αν έχουμε under flow δεν μπορεί να εξαχθεί στοιχείο.

• Ουρά : FIFO• Λειτουργίες

– Εισαγωγή (enqueue)– Εξαγωγή (Dequeue)

• Δείκτες– Εμπρός (front) δείχνει το στοιχείο

που πρόκειται να εξαχθεί– Πίσω (rear) δείχνει το στοιχείο που

εισάχθηκε τελευταίο• ΕΙΣΑΓΩΓΗ: Ελέγχεται αν υπάρχει

χώρος για εισαγωγή. Αν υπάρχει αυξάνεται ο rear κατά ένα και εισάγεται στην νέα θέση το στοιχείο

• ΕΞΑΓΩΓΗ: Ελέγχεται αν υπάρχει στοιχείο για εξαγωγή και στη συνέχεια ο δείκτης front αυξάνεται κατά 1, για να δείξει τη θέση του νέου στοιχείου προς εξαγωγή

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 54

ΩΘΗΣΗ – ΑΠΩΘΗΣΗ ΣΕ ΣΤΟΙΒΑ

• Αλγόριθμος Push• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν top < N τότε

– Top Top +1– Στοίβα[Top] X– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε,

στοίβα //• Τέλος Push

• Αλγόριθμος Pop• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν top >=1 τότε

– X Στοίβα [top]– TopTop -1– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε,

στοίβα //• Τέλος Pop

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 55

ΕΙΣΑΓΩΓΗ – ΕΞΑΓΩΓΗ ΣΕ ΟΥΡΑ

• Αλγόριθμος ENQUEUE• Δεδομένα // Ν, Ουρά[Ν], Χ//• Αν rear < N τότε

– rear rear +1– Ουρά[rear] X– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε, ουρά//• Τέλος Enqueue

• Αλγόριθμος DEQUEUE• Δεδομένα // Ν, Στοίβα[Ν], Χ//• Αν front >=1 τότε

– X Ουρά [top]– frontfront+1– Έγινε Αληθής

• Αλλιώς– Έγινε Ψευδής

• Τέλος_αν• Αποτελέσματα // έγινε, ουρά //• Τέλος DEQUEUE

22/11/08 Παρουσιάσεις Ανάπτυξης Εφαρμογών -2006 56

Δομές δεδομένων δευτερεύουσας μνήμης

• Αρχείο : χώρος αποθήκευσης δεδομένων στην περιφερειακή μνήμη

• Εγγραφή: τα στοιχεία ενός αρχείου

• Πεδία : χαρακτηριστικά κάθε εγγραφής

• Πρωτεύον κλειδί: πεδίο που ταυτοποιεί την εγγραφή

• Μαθητές

• Τα στοιχεία κάθε μαθητή αποτελεί μια εγγραφή. Υπάρχουν τόσες εγγραφές όσοι και οι μαθητές

• Επώνυμο, όνομα, αριθμός μητρώου, βαθμοί αποτελούν τα πεδία κάθε εγγραφής

• Αριθμός μητρώου είναι το πρωτεύον κλειδί