ÐËÉÁÔÓÉÏÓ...

182
1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ Λυκείου Τεχνολογική Κατεύθυνση Σημειώσεις 2012/2013 από τον καθηγητή Πληροφορικής Πλιάτσιο Αντώνιο B’ Μέρος Τηλέφωνο 6977253713 Site:aeppedu.blogspot.gr ΠΛΙΑΤΣΙΟΣ ΑΝΤΩΝΙΟΣ

Transcript of ÐËÉÁÔÓÉÏÓ...

Page 1: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

1

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ Λυκείου Τεχνολογική Κατεύθυνση

Σημειώσεις 2012/2013 από τον καθηγητή Πληροφορικής Πλιάτσιο Αντώνιο

B’ Μέρος

Τηλέφωνο 6977253713 Site:aeppedu.blogspot.gr

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 2: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

2

ΚΚΕΕΦΦΑΑΛΛΑΑΙΙΟΟ 33οο

Δομές Δεδομένων και Αλγόριθμοι

3.1 Δεδομένα 3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα 3.3 Πίνακες 3.4 Στοίβα 3.5 Ουρά 3.6 Αναζήτηση 3.7 Ταξινόμηση

ΚΚααθθηηγγηηττήήςς ΠΠλληηρροοφφοορριικκήήςς ΤΤεεχχννοολλοογγιικκήήςς ΕΕκκππααίίδδεευυσσηηςς

ΠΛΙΑΤΣΙΟΣ ΑΝΤΩΝΙΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 3: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

3

Η Πληροφορική ορίζεται ως επιστήμη σε συνάρτηση με την έννοια του αλγορίθμου, κατά τον ίδιο τρόπο η Πληροφορική ορίζεται και σε σχέση με την έννοια των δεδομένων. Έτσι, Πληροφορική θεωρείται η επιστήμη που μελετά τα δεδομένα από τις ακόλουθες σκοπιές:

Υλικού

Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations). Τέτοιες μορφές είναι η δυαδική, ο κώδικας ΑSCII, ο κώδικας EBCDIC, το συμπλήρωμα του 1 ή του 2 κ.λπ.

Γλωσσών προγραμματισμού

Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής στον υπολογιστή.

Δομών Δεδομένων

Δομή δεδομένων (data structure) είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Για παράδειγμα, μία τέτοια δομή είναι η εγγραφή (record), που μπορεί να περιγράφει ένα είδος, ένα πρόσωπο κλπ. Η εγγραφή αποτελείται από τα πεδία (fields) που αποθηκεύουν χαρακτηριστικά (attributes) διαφορετικού τύπου, όπως για παράδειγμα ο κωδικός, η περιγραφή κλπ. Άλλη μορφή δομής δεδομένων είναι το αρχείο που αποτελείται από ένα σύνολο εγγραφών. Μία επιτρεπτή λειτουργία σε ένα αρχείο είναι η σειριακή προσπέλαση όλων των εγγραφών του.

Ανάλυσης Δεδομένων

Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων (Databases), της Μοντελοποίησης Δεδομένων (Data Modeling) και της Αναπαράστασης Γνώσης (Knowledge Representation) ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Δομή Δεδομένων: Είναι ένας τρόπος αποθήκευσης (οργάνωσης) δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Η δομές αποτελείται από ένα σύνολο κόμβων. Κάθε κόμβος περιέχει μία απλή τιμή (αριθμό, αλφάβητο κλπ) ή μία πιο σύνθετη τιμή (π.χ. μία εγγραφή). Π.χ. δομή λίστας που περιέχει ακέραιους αριθμούς:

Π.χ. δομή λίστας που περιέχει εγγραφές (records. Εγγραφή = Μία ομάδα τιμών διαφορετικού τύπου σχετικά με ένα αντικείμενο. Π.χ. μία εγγραφή μαθητή περιέχει το όνομα, επώνυμο, έτος γέννησης, τάξη κλπ).

Βασικές λειτουργίες (ή πράξεις) επί των δομών δεδομένων:

Προσπέλαση (access) Είναι η δυνατότητα πρόσβαση σε ένα κόμβο με σκοπό την ανάγνωση ή τροποποιήσει του περιεχομένου του.

Πρόγραμμα Προσπέλαση Μεταβλητές

Ακέραιος: Π [Ν] Ακέραιος: i

Αρχή Για i από 1 μέχρι Ν

12 -4 16 48

Νίκος Γεωργίου

1986 Γ2

Μαρία Στεφανή

1987 Γ1

Άκης Βεργίτσης

1986 Γ2

Πάρης Ζαχαριάς

1986 Γ2

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 4: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

4

Εκτύπωσε "Το ",i, " στοιχείο του πίνακα είναι ",Π[i] Τέλος_επανάληψης Τέλος_προγράμματος

Εισαγωγή (insertion) Προσπελαύνονται οι κόμβοι μίας δομής με σκοπό να εντοπιστεί κάποιος που περιέχει μία συγκεκριμένη τιμή.

Πρόγραμμα Προσθήκη Μεταβλητές

Ακέραιος: Π [Ν] Ακέραιος: ΝΕΟΣ_ΠΙΝΑΚΑΣ [Μ] Ακέραιος: i

Αρχή Διάβασε νέο_στοιχείο Για i από 1 μέχρι Ν ΝΕΟΣ_ΠΙΝΑΚΑΣ[i] ← Π [i] Τέλος_επανάληψης

ΝΕΟΣ_ΠΙΝΑΚΑΣ[Ν + 1] ← νέο_στοιχείο Μ ← Ν + 1 Τέλος_προγράμματος

Διαγραφή (deletion) Προσθήκη νέου κόμβου στη δομή.

Πρόγραμμα Διαγραφή_Μεσαιου_Στοιχείου Μεταβλητές

Ακέραιος: Π [Ν] Ακέραιος: ΝΕΟΣ_ΠΙΝΑΚΑΣ [Μ] Ακέραιος: i, μεσαίο, στοιχείο

Αρχή μεσαίο ← Ν div 2 στοιχείο ← 0

Για i από 1 μέχρι Ν Αν (i <> μεσαίο) τότε στοιχείο ← στοιχείo + 1 ΝΕΟΣ_ΠΙΝΑΚΑΣ[στοιχείο] ← Π [i]

Τέλος_Αν Τέλος_επανάληψης Μ ← στοιχείο Τέλος_προγράμματος

Αναζήτηση (searching) Αφαιρούμε έναν κόμβο από στη δομή. Ταξινόμηση (sorting) Διατάσσουμε τους κόμβους της δομής σε αύξουσα ή φθίνουσα σειρά (π.χ.

αλφάβητα κατά επώνυμο, όνομα).

Αντιγραφή (copying) Όλοι ή μερικοί κόμβοι αντιγράφονται σε μία άλλη δομή.

Πρόγραμμα Αντιγραφή_Πίνακα Μεταβλητές

Ακέραιος: Π [Ν] Ακέραιος: ΝΕΟΣ_ΠΙΝΑΚΑΣ [Μ] Ακέραιος: i, πλήθος

Αρχή πλήθος ← 0 Για i από 1 μέχρι Ν Αν (Π [i] > 0) και (Π [i] mod 2 = 0) τότε πλήθος ← πλήθος + 1 ΝΕΟΣ_ΠΙΝΑΚΑΣ [πλήθος] ← Π [i]

Τέλος_Αν Τέλος_επανάληψης Τέλος_προγράμματος

Συγχώνευση (merging) Δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 5: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

5

Αρχικά λοιπόν, η εικόνα των πινάκων είναι η εξής:

Πίνακας Α: 1 5 8 11 16 i = 1

Πίνακας Β: -2 4 9 j = 1

Τελικός Πίνακας: μ = 0

Αρχικά λοιπόν, θα συγκριθούν τα στοιχεία A[1] = 1 και Β[1] = -2, οπότε το μικρότερο στοιχείο (-2) θα τοποθετηθεί στον τελικό πίνακα στην πρώτη θέση και η μεταβλητή μ θα αυξηθεί κατά 1

Πίνακας Α: 1 5 8 11 16 i = 1

Πίνακας Β: -2 4 9 j = 2

Τελικός Πίνακας: -2 μ = 1

Στη συνέχεια, θα συγκριθούν τα στοιχεία A[1] = 1 και Β[2] = 4, οπότε το μικρότερο στοιχείο (1) θα τοποθετηθεί στον τελικό πίνακα στην πρώτη θέση και η μεταβλητή μ θα αυξηθεί κατά 1 (θα γίνει 2)

Πίνακας Α: 1 5 8 11 16 i = 2

Πίνακας Β: -2 4 9 j = 2

Τελικός Πίνακας: -2 1 μ = 2

Στη συνέχεια, θα συγκριθούν τα στοιχεία A[2] = 5 και Β[2] = 4, οπότε το μικρότερο στοιχείο (4) θα τοποθετηθεί στον τελικό πίνακα στην πρώτη θέση και η μεταβλητή μ θα αυξηθεί κατά 1 (θα γίνει 3)

Πίνακας Α: 1 5 8 11 16 i = 2

Πίνακας Β: -2 4 9 j = 2

Τελικός Πίνακας: -2 1 4 μ = 3

Όπως γίνεται εύκολα αντιληπτό με την παραπάνω διαδικασία κάποια στιγμή εξαντλείται ο μικρότερος πίνακας και θα υπάρχει η παρακάτω εικόνα. Σε αυτήν την περίπτωση πρέπει να αντιγραφεί ο αρχικός πίνακας ως έχει:

Πίνακας Α: 1 5 8 11 16 i = 4

Πίνακας Β: -2 4 9 j = 4

Τελικός Πίνακας: -2 1 4 5 8 9 μ = 6

Η τελική εικόνα είναι η εξής:

Πίνακας Α: 1 5 8 11 16 i = 7

Πίνακας Β: -2 4 9 j = 4

Τελικός Πίνακας: -2 1 4 5 8 9 11 16 μ = 8

Διαχωρισμός (separation) Μία δομή διασπάται σε δύο ή περισσότερες. Είναι το αντίγραφο της συγχώνευσης.

Πρόγραμμα Διαχωρισμός_Πινάκων Μεταβλητές

Ακέραιος: Π1 [Ν1]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 6: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

6

Ακέραιος: Π2 [Ν2] Ακέραιος: Π [Ν] Ακέραιος: i

Αρχή Ν1 ← 0 Ν2 ← 0 Για i από 1 μέχρι Ν Αν (Π [i] > 0) τότε Ν1 ← Ν1 + 1 Π1 [Ν1] ← Π [i] Αλλιώς Ν2 ← Ν2 + 1 Π2 [Ν2] ← Π [i] Τέλος_Αν Τέλος_επανάληψης Τέλος_προγράμματος

Για κάθε λειτουργία δημιουργείται και ένας αλγόριθμος (π.χ. αλγόριθμος αναζήτησης κάποιου στοιχείου). Αρκετές φορές υπάρχουν διαφορετικοί αλγόριθμοι που υλοποιούν μία συγκεκριμένη λειτουργία (π.χ. υπάρχουν αρκετοί αλγόριθμοι για τη λειτουργία της ταξινόμησης). Όταν συμβαίνει αυτό, επιλέγουμε τον αλγόριθμο που είναι πιο αποδοτικός (π.χ. πιο γρήγορος) για τα συγκεκριμένα δεδομένα. Κανόνας:

Προγράμματα = Δομές δεδομένων + Αλγόριθμοι

Κατηγορίες δομών δεδομένων:

Στατικές Δυναμικές

Το μέγεθος τους είναι καθορισμένο (σταθερό) και δεν μεταβάλλεται κατά τη διάρκεια εκτέλεσης του προγράμματος.

Το μέγεθος τους δεν είναι καθορισμένο (δεν είναι σταθερό) και μεταβάλλεται κατά τη διάρκεια εκτέλεσης του προγράμματος. Μπορούν να εισάγονται νέοι κόμβοι και να διαγράφονται υπάρχοντες.

Οι κόμβοι αποθηκεύονται σε συνεχόμενες θέσεις στη μνήμη.

Οι κόμβοι δεν αποθηκεύονται σε συνεχόμενες θέσεις στη μνήμη.

3.3 Πίνακες Χαρακτηριστικός εκπρόσωπος των στατικών δομών. Περιέχει ένα σταθερό σύνολο κόμβων (θέσεις) που αποθηκεύονται σε συνεχόμενες θέσεις στη μνήμη. Επίσης, όλα τα στοιχεία είναι του ίδιου τύπου (δηλαδή ακέραιοι, πραγματικοί κλπ). α) Μονοδιάστατοι πίνακες (μίας γραμμής ή μίας στήλης)

Π.χ. Πίνακας ακεραίων Π [5] Π.χ. Πίνακας αλφαριθμητικών Π [4]

12 -4 22 45 -7 “Γιάννης” “Αλέκα” “Μάριος” “Άκης” 1 2 3 4 5 1 2 3 4

Οι αριθμοί κάτω από τις θέσεις του πίνακα δηλώνουν τον αριθμό θέσης του πίνακα. Ο αριθμός θέσης λέγεται και δείκτης θέσης. Ο πίνακας ορίζεται ως εξής: τύπος όνομα_πίνακα [διαστάσεις]. Π.χ. ακέραιος Π [5] δηλώνει μονοδιάστατο πίνακα μίας γραμμής πέντε θέσεων (στήλες) που περιέχει ακεραίους. Γενικά, ορίζεται ως Π [Ν] Για να αναφερθούμε στο περιεχόμενο μίας θέσης του πίνακα βάζουμε το όνομα[θέση]. Για παράδειγμα, Π[1] = το περιεχόμενο της θέσης 1, Π[6] = το περιεχόμενο της θέσης 6. β) Δισδιάστατοι πίνακες (πολλών γραμμών και στηλών) Εδώ έχουμε περισσότερες από μία γραμμές. Κάθε γραμμή έχει ένα σύνολο θέσεων (στήλες). Στο παρακάτω παράδειγμα ο πίνακας ορίζεται ως εξής: ακέραιος Π [1:3 , 1:4]. Η πρώτη διάσταση αναφέρεται στις γραμμές και η δεύτερη στις στήλες. Γενικά, ορίζεται ως Π [Μ , Ν] για έναν πίνακα ΜxΝ.

1 2 3 4

Π[1,1] Π[1,2] Π[1,3] Π[1,4] 1 Π[2,1] Π[2,2] Π[2,3] Π[2,4] 2

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 7: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

7

Π[3,1] Π[3,2] Π[3,3] Π[3,3] 3

Για να αναφερθούμε στο περιεχόμενο μίας θέσης του δισδιάστατου πίνακα βάζουμε το όνομα[γραμμή , στήλη]. Δηλαδή, η θέση προσδιορίζεται από τον αριθμό γραμμής και στήλης. Για παράδειγμα, Π[1,2] = το περιεχόμενο της θέσης στη γραμμή 1 και στήλη 2, Π[3,2] = το περιεχόμενο της θέσης στη γραμμή 3 και στήλη 2. Τυπικές επεξεργασίες (λειτουργίες) σε έναν πίνακα:

Διάβασμα των στοιχείων του πίνακα, δηλαδή εισαγωγή τιμών στις θέσεις του. Εκτύπωση των στοιχείων του πίνακα. Υπολογισμός του αθροίσματος των στοιχείων του. Υπολογισμός του μέσου όρου των στοιχείων του. Εύρεση του ελάχιστου ή μέγιστου στοιχείου του. Αναζήτηση ενός στοιχείου. Ταξινόμηση του πίνακα. Συγχώνευση δύο πινάκων.

Στους αλγόριθμους του πίνακα χρησιμοποιούμε, ως επί το πλείστον, τη δομή Για…από…μέχρι…

Αλγόριθμοι μονοδιάστατου πίνακα α) Διάβασμα στοιχείων (δηλ. εισαγωγή στοιχείων στις θέσεις του πίνακα)

Πρόγραμμα Διάβασμα_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Αρχή Για i από 1 μέχρι Ν Διάβασε Π [i] Τέλος_επανάληψης Τέλος_προγράμματος

β) Εκτύπωση στοιχείων

Πρόγραμμα Εκτύπωση_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Αρχή Για i από 1 μέχρι Ν Τύπωσε Π [i] Τέλος_επανάληψης Τέλος_προγράμματος

γ) Υπολογισμός αθροίσματος στοιχείων

Πρόγραμμα Άθροισμα_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Ακέραιος: SUM Αρχή SUM 0 ! αρχικοποίηση πριν μπει στην επανάληψη Για i από 1 μέχρι Ν SUM SUM + Π [i] Τέλος_επανάληψης

Τύπωσε “Το άθροισμα είναι: ”, SUM Τέλος_προγράμματος

δ) Υπολογισμός μέσου όρου (ΜΟ) στοιχείων

Πρόγραμμα ΜΟ_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Ακέραιος: SUM

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 8: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

8

Πραγματικός: ΜΟ Αρχή SUM 0 ! αρχικοποίηση πριν μπει στην επανάληψη Για i από 1 μέχρι Ν SUM SUM + Π [i] Τέλος_επανάληψης

ΜΟ SUM / Ν Τύπωσε “Ο μέσος όρος είναι: ”, ΜΟ

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

ε) Εύρεση μέγιστου στοιχείου

Πρόγραμμα Max_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Ακέραιος: MAX Αρχή MAX Π [1] ! Θέτουμε σαν αρχική τιμή στο MAX το

! πρώτο στοιχείο του πίνακα. Για i από 2 μέχρι Ν ! Ξεκινάμε από τη 2η θέση

Αν Π [i] > MAX τότε ! αν το i στοιχείο είναι μεγαλύτερο ! από την τρέχουσα τιμή του MAX

ΜΑΧ Π [i] ! τότε βάλε στο MAX το i στοιχείο Τέλος_αν

Τέλος_επανάληψης Τύπωσε “Το μέγιστο στοιχείο του πίνακα είναι : ”, ΜΑΧ

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

στ) Εύρεση ελάχιστου στοιχείου

Πρόγραμμα Min_στοιχείων Μεταβλητές Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Ακέραιος: MIN Αρχή MIN Π [1] ! Θέτουμε σαν αρχική τιμή στο MIN το

! πρώτο στοιχείο του πίνακα. Για i από 2 μέχρι Ν ! Ξεκινάμε από τη 2η θέση

Αν Π [i] > MIN τότε ! αν το i στοιχείο είναι μικρότερο ! από την τρέχουσα τιμή του MIN

MIN Π [i] ! τότε βάλε στο MIN το i στοιχείο Τέλος_αν

Τέλος_επανάληψης Τύπωσε “Το ελάχιστο στοιχείο του πίνακα είναι : ”, MIN

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

ζ) Αναζήτηση στοιχείου

Εδώ θα δούμε την σειριακή μέθοδο. Η λογική είναι η εξής: Σαρώνουμε τον πίνακα και εξετάζουμε σε κάθε θέση αν το στοιχείο της θέσης αυτής είναι ίσο με αυτό που ψάχνουμε. Αν ναι, τότε σταματάμε. Πότε χρησιμοποιούμε την μέθοδο αυτή;

Όταν ο πίνακας είναι μη ταξινομημένος Ο πίνακας είναι μικρού μεγέθους (π.χ. Ν <=20 ) Η αναζήτηση να πραγματοποιείται σπάνια, διότι η μέθοδος αυτή είναι σχετικά αργή.

Θα χρειαστούμε μία μεταβλητή λογικού τύπου, που θα γίνει αληθής αν το στοιχείο βρεθεί. Επίσης, δεν γνωρίζουμε σε ποια θέση βρίσκεται. Μπορεί να είναι στην 1η θέση, αλλά μπορεί να είναι στη Νστή θέση. Θα χρησιμοποιήσουμε και μία μεταβλητή θέση που θα κρατήσει τη θέση όπου βρέθηκε. Πρόγραμμα Σειριακή_αναζήτηση Μεταβλητές

Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! ο δείκτης θέσης Ακέραιος: key ! αυτό που ψάχνουμε

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 9: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

9

Ακέραιος: θέση ! ο αριθμός θέσης όπου βρίσκεται το στοιχείο Λογική: βρέθηκε ! θα γίνει TRUE αν βρεθεί το στοιχείο

Αρχή βρέθηκε ψευδής θέση 0 i 1 Όσο (i <= N) και (βρέθηκε = ψευδής) επανέλαβε ! όσο δεν είμαστε στο τέλος του πίνακα και δεν βρέθηκε

Αν Π [i] = key τότε ! αν το i στοιχείο ισούται με αυτό που ψάχνουμε τότε βρέθηκε αληθής ! βρέθηκε

θέση i ! βάλε τον αριθμό θέσης αλλιώς ! αλλιώς στη μεταβλητή θέση i i + 1 ! προχωρά στην επόμενη θέση Τέλος_αν

Τέλος_επανάληψης Αν βρέθηκε = αληθής τότε

Τύπωσε “Το στοιχείο βρέθηκε στη θέση : ”, θέση αλλιώς

Τύπωσε “ Το στοιχείο δεν βρέθηκε !” Τέλος_αν

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

Σημείωση: Όταν ο πίνακας είναι ταξινομημένος είναι προτιμότερο να χρησιμοποιείται μία πιο αποδοτική (γρήγορη) μέθοδο που ονομάζεται δυαδική αναζήτηση.

η) Ταξινόμηση πίνακα Θα δούμε τη μέθοδο της φυσαλίδας (Bubble Sort) ή ευθείας ανταλλαγής. Βασίζεται στην αρχή της σύγκρισης γειτονικών στοιχείων του πίνακα και ανταλλαγής τους μέχρι να διαταχθούν όλα σε μία σειρά (αύξουσα ή φθίνουσα). Η λογική είναι η εξής: Κάνουμε διαδοχικές σαρώσεις στον πίνακα. Σε κάθε σάρωση, το μικρότερο στοιχείο (για αύξουσα) μετακινείται προς την κορυφή του πίνακα αφού γίνουν όλες οι σαρώσεις θα έχει επιτευχθεί η ταξινόμηση. Πρόγραμμα Φυσαλίδα_Bubble_Sort Μεταβλητές

Ακέραιος: Π [Ν] ! Ν θέσεις Ακέραιος: i ! για τις διαδοχικές σαρώσεις από την αρχή προς το τέλος Ακέραιος: j ! για τη σάρωση που ελέγχει για το μικρότερο στοιχείο, ! ξεκινά από το τέλος Ακέραιος: temp ! βοηθητική μεταβλητή για την ανταλλαγή

Αρχή Για i από 2 μέχρι Ν ! το i σαρώνει από τη 2η θέση έως το τέλος Για j από N μέχρι i με_βήμα -1 ! το j από το τέλος προς τη θέση i Αν Π [j-1] > Π [j] τότε

! αν το j-1 στοιχείο είναι μεγαλύτερο από το j στοιχείο τότε κάνε ! αντιμετάθεση στοιχείων. Δηλαδή, το j στοιχείο θα πάει στη θέση ! του j-1 και το j-1 στη θέση του j.

temp Π [j-1] Π [j-1] temp ! Επειδή δε μπορεί να γίνει άμεσα διότι θα χαθεί το στοιχείο j-1,

! προσωρινά τοποθετείτε στη βοηθητική μεταβλητή temp Π [j] temp Τέλος_αν

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

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

Παράδειγμα: Να ταξινομηθούν οι ακέραιοι 12, 7, 5, 3, 10 ενός πίνακα. Πώς διαμορφώνεται ο πίνακας σε κάθε βήμα του αλγορίθμου;

δείκτες θέσεις πίνακα

i j 1 2 3 4 5

2 5 12 7 5 3 10

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 10: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

10

4 12 7 3 5 10

3 12 3 7 5 10

2 3 12 7 5 10

3 5 3 12 7 5 10

4 3 12 5 7 10

3 3 5 12 7 10

4 5 3 5 12 7 10

4 3 5 7 12 10

5 5 3 5 7 10 12

Αλγόριθμοι δισδιάστατου πίνακα α) Διάβασμα στοιχείων (δηλ. εισαγωγή στοιχείων στις θέσεις του πίνακα)

Πρόγραμμα Διάβασμα_στοιχείων Μεταβλητές Ακέραιος: Π [Μ, Ν] ! M γραμμές, Ν στήλες Ακέραιος: i ! ο δείκτης γραμμής Ακέραιος: j ! ο δείκτης στήλης Αρχή Για i από 1 μέχρι Μ Για j από 1 μέχρι N Διάβασε Π [i,j]

Τέλος_επανάληψης Τέλος_επανάληψης Τέλος_προγράμματος

β) Εκτύπωση στοιχείων

Πρόγραμμα Εκτύπωση_στοιχείων Μεταβλητές Ακέραιος: Π [Μ, Ν] ! M γραμμές, Ν στήλες Ακέραιος: i ! ο δείκτης γραμμής Ακέραιος: j ! ο δείκτης στήλης Αρχή Για i από 1 μέχρι Μ Για j από 1 μέχρι N

Τύπωσε Π [i,j] Τέλος_επανάληψης

Τέλος_επανάληψης Τέλος_προγράμματος

γ) Υπολογισμός μέσου όρου (ΜΟ) ανά γραμμή

Πρόγραμμα ΜΟ_ανά_γραμμή Μεταβλητές Ακέραιος: Π [Μ, Ν] ! M γραμμές, Ν στήλες Ακέραιος: i ! ο δείκτης γραμμής Ακέραιος: j ! ο δείκτης στήλης Ακέραιος: SUM Πραγματικός: ΜΟ Αρχή Για i από 1 μέχρι M

SUM 0 ! αρχικοποίηση πριν υπολογίσει για τη νέα γραμμή Για j από 1 μέχρι Ν SUM SUM + Π [i,j]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 11: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

11

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

ΜΟ SUM / Ν Τύπωσε “Ο μέσος όρος της γραμμής ”, i , “είναι: ”, ΜΟ

Τέλος_προγράμματος δ) Υπολογισμός μέσου όρου (ΜΟ) ανά γραμμή αλλά με αποθήκευσή του σε ξεχωριστό πίνακα

Πρόγραμμα ΜΟ_ανά_γραμμή_και_αποθήκευση_σε_αλλόν_πίνακα Μεταβλητές Ακέραιος: Π [Μ, Ν] ! M γραμμές, Ν στήλες Ακέραιος: i ! ο δείκτης γραμμής Ακέραιος: j ! ο δείκτης στήλης Ακέραιος: SUM Πραγματικός: ΜΟ [Μ] ! ο ΜΟ θα αποθηκεύει τους ΜΟ ανά γραμμή Αρχή Για i από 1 μέχρι M

SUM 0 ! αρχικοποίηση πριν υπολογίσει για τη νέα γραμμή Για j από 1 μέχρι Ν SUM SUM + Π [i,j]

Τέλος_επανάληψης ΜΟ [i] SUM / Ν ! Εδώ αποθηκεύει στην i θέση του πίνακα ΜΟ τον μέσο όρο

Τέλος_επανάληψης Για i από 1 μέχρι Ν ! Εκτύπωση των ΜΟ ανά γραμμή.

Τύπωσε “Ο μέσος όρος της γραμμής ”, i , “είναι: ”, ΜΟ [i] Τέλος_επανάληψης Τέλος_προγράμματος

j

Π 1 2 3 … Ν MO

1

2

3

i

Μ

3.4 Στοίβα Η στοίβα υλοποιεί τη λογική LIFO (Last In First Out). Τα δεδομένα εισάγονται στην κορυφή της στοίβας ενώ η αφαίρεση ενός στοιχείου γίνεται πάντα από την κορυφή της στοίβας. Η στατική στοίβα υλοποιείται με μονοδιάστατο πίνακα και χρησιμοποιεί ένα δείκτη Top που δείχνει στην κορυφή της στοίβας. Οι λειτουργίες είναι δύο:

Η εισαγωγή-ώθηση (Push) ενός στοιχείου στην κορυφή της στοίβας. Η εξαγωγή-απώθηση (Pop) ενός στοιχείου από την κορυφή της στοίβας.

Παράδειγμα:

Top 32

Top 4 4

3 3 -6 -6 8

8 10 10

Top 4

3 Top 3

-6 -6 8

8

Εισαγωγή του 32

Αφαίρεση στοιχείου. Το 4 θα αφαιρεθεί.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 12: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

12

10 10

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

3.5 Ουρά Η ουρά υλοποιεί τη λογική FIFO (First In First Out). Τα δεδομένα εισάγονται στο πίσω μέρος της ουράς ενώ η εξαγωγή ενός στοιχείου γίνεται πάντα από το μπροστινό μέρος της ουράς (όπως συμβαίνει σε μία ουρά σε τράπεζα). Η στατική ουρά υλοποιείται με μονοδιάστατο πίνακα και χρησιμοποιεί δύο δείκτες: Τον Front που δείχνει στο μπροστινό μέρος της ουράς και τον Rear που δείχνει στο πίσω μέρος της ουράς. Οι λειτουργίες είναι δύο:

Η εισαγωγή ενός στοιχείου στο πίσω μέρος της ουράς. Η εξαγωγή ενός στοιχείου από το μπροστινό μέρος της ουράς.

Παράδειγμα:

5 12 7 4 5 12 7 4 8

Front Rear Front Rear

5 12 7 4 12 7 4

Front Rear

Front Rear

Σημείωση: Κατά την εισαγωγή ενός στοιχείου, πρέπει να γίνεται έλεγχος μήπως η ουρά είναι γεμάτη (δηλαδή δεν υπάρχει άλλη θέση στον πίνακα). Αντίστοιχα, κατά την εξαγωγή ενός στοιχείου, πρέπει να γίνεται έλεγχος μήπως η ουρά είναι άδεια.

Πλεονεκτήματα / Μειονεκτήματα των πινάκων

Πλεονεκτήματα Είναι ένας βολικός κι εύκολος τρόπος διαχείρισης του ίδιου τύπου.

Μειονεκτήματα

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

2. Περιορίζουμε τις δυνατότητες του προγράμματος. Επειδή ο πίνακας είναι στατική δομή, δεν μπορεί να αλλάξει το μέγεθός του κατά την εκτέλεση του προγράμματος.

Πότε είναι προτιμότερο να χρησιμοποιούμε τους πίνακες; Όταν τα δεδομένα που εισάγουμε, απαιτείται να βρίσκονται στη μνήμη RAM καθ’ όλη τη διάρκεια εκτέλεσης του προγράμματος.

3.6 Αναζήτηση

Αλγόριθμος σειριακής αναζήτησης Αλγόριθμος Sequential_Search Δεδομένα // n, table, key // done ψευδής position 0 i 1 Όσο (done = ψευδής) και (i <= n) επανάλαβε Αν (table[i] = key) τότε done αληθής position i

Εισαγωγή του 8

Εξαγωγή στοιχείου. Το5 θα εξαχθεί.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 13: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

13

Αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν (done = αληθής) τότε Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση ", position Αλλιώς Εκτύπωσε "Το στοιχείο ", key, " δεν ευρέθη στον δοθέντα πίνακα" Τέλος_Αν Αποτελέσματα // done, position // Τέλος Sequential_Search

Ή εναλλακτικά χρησιμοποιώντας τη δομή Μέχρις_Ότου Αλγόριθμος Sequential_Search Δεδομένα // n, table, key // done ψευδής position 0 i 1

Αρχή_επανάληψης Αν (table[i] = key) τότε done αληθής position i Αλλιώς i i + 1 Τέλος_αν

Μέχρις_Ότου (done = αληθής) ή (i > n) Αν (done = αληθής) τότε

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση ", position Αλλιώς Εκτύπωσε "Το στοιχείο ", key, " δεν ευρέθη στον δοθέντα πίνακα" Τέλος_Αν Αποτελέσματα // done, position // Τέλος Sequential_Search Παρατηρήσεις: 1. Η αναζήτηση σταματά μόλις εντοπίσει κάποιο στοιχείο που είναι ίσο με την αναζητούμενη τιμή. Ο αλγόριθμος Παραλλαγή Νο1 στη συνέχεια αποτελεί τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να καλύπτει την αδυναμία αυτή και συνεχίζει την αναζήτηση ώστε να εντοπίσει όλες τις τιμές του πίνακα table που έχουν τιμή ίση με τη μεταβλητή key. 2. Ο πίνακας table δεν είναι ταξινομημένος. Ο αλγόριθμος Παραλλαγή Νο2 στη συνέχεια αποτελεί τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να καλύπτει την αδυναμία αυτή και σταματά την αναζήτηση μόλις συναντήσει κάποιο στοιχείο του πίνακα table που είναι μεγαλύτερο από το ζητούμενο (μεταβλητή key) σε ταξινομημένο πίνακα. Παραλλαγή Νο1: Τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να αναζητά όλες τις θέσεις που βρίσκεται η αναζητούμενη τιμή Για την αποφυγή τερματισμού του βρόχου αναζήτησης, εξαλείφουμε την μεταβλητή done από ολόκληρο το πρόγραμμα. Είναι προφανές ότι η τιμή που αναζητούμε στον πίνακα (μεταβλητή key) μπορεί να βρίσκεται σε περισσότερες από μια θέσεις του πίνακα table. Αν δεν επιθυμούμε περαιτέρω επεξεργασία των θέσεων αυτών απλά τις εκτυπώνουμε Ωστόσο, υπάρχει η περίπτωση οι θέσεις αυτές να πρέπει να αποθηκευτούν ώστε να χρησιμοποιηθούν σε κάποιο άλλο σημείο του αλγορίθμου. Πώς πρέπει να αποθηκεύσουμε τις θέσεις αυτές; Δεδομένου ότι δεν γνωρίζουμε εξ αρχής το πλήθος των δεδομένων δεν μπορούμε να χρησιμοποιήσουμε μεταβλητές για το σκοπό αυτό. Κατά συνέπεια, πρέπει να χρησιμοποιήσουμε έναν άλλο πίνακα (έστω με όνομα POSITION_TABLE) ώστε να καταχωρούνται σε αυτόν οι θέσεις του πίνακα table που εντοπίστηκε η τιμή της μεταβλητής key Το μέγεθος του πίνακα POSITION_TABLE είναι n καθώς πρέπει να καλύψουμε την ακραία περίπτωση να υπάρχουν και στις n θέσεις του πίνακα table η τιμή που έχει η μεταβλητή key. Η μεταβλητή count_found θα περιέχει το πλήθος των θέσεων που ικανοποιούν την αναζήτηση. Ο αλγόριθμος παρουσιάζεται εναλλακτικά με δυο τρόπους. Αφού επιθυμούμε να σαρώσουμε ολόκληρο τον πίνακα αυτό μπορεί να γίνει με την δομή επανάληψης Για…από…μέχρι αντί για την Όσο…επανάλαβε που χρησιμοποιήθηκε στα προηγούμενα παραδείγματα. Αλγόριθμος Sequential_Search_Non_Stop

Δεδομένα // n, table, key // count_found 0 i 1

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 14: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

14

Όσο (i <= n) επανάλαβε Αν (table[i] = key) τότε

count_found count_found + 1 POSITION_TABLE[count_found] i Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση", i Τέλος_αν i i + 1 Τέλος_επανάληψης Αν (count_found <> 0) τότε

Εκτύπωσε "Το στοιχείο ", key, " εντοπίστηκε σε ", count_found, " θέσεις" Αλλιώς

Εκτύπωσε "Δεν βρέθηκε κανένα στοιχείο" Τέλος_Αν Αποτελέσματα // count_found, POSITION_TABLE //

Τέλος Sequential_Search_Non_Stop

‘Η Αλγόριθμος Sequential_Search_Non_Stop

Δεδομένα // n, table, key // count_found 0 i 1 Για i από 1 μέχρι n Αν (table[i] = key) τότε count_found count_found + 1 POSITION_TABLE[count_found] i Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση", i Τέλος_αν Τέλος_επανάληψης Αν (count_found <> 0) τότε

Εκτύπωσε "Το στοιχείο ", key, " εντοπίστηκε σε ", count_found, " θέσεις" Αλλιώς

Εκτύπωσε "Δεν βρέθηκε κανένα στοιχείο" Τέλος_Αν Αποτελέσματα // count_found, POSITION_TABLE //

Τέλος Sequential_Search_Non_Stop Παραλλαγή Νο2: Τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να λειτουργεί βέλτιστα σε ταξινομημένο πίνακα Αλγόριθμος Sequential_Search_Sorted_Table Δεδομένα // n, table, key // done ψευδής position 0 i 1 Όσο (done = ψευδής) και (i <= n) επανάλαβε

! για ταξινομημένο πίνακα με αύξουσα διάταξη Αν (table[i] > key) τότε

! σταμάτα την επανάληψη, δεν θα βρεθεί το στοιχείο done αληθής Αλλιώς_Αν (table[i] = key) τότε

! σταμάτα την επανάληψη, το στοιχείο βρέθηκε done αληθής

position i Αλλιώς ! συνέχισε την επανάληψη i i + 1 Τέλος_αν

Τέλος_επανάληψης Αν (position <> 0) τότε

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση ", position Αλλιώς Εκτύπωσε "Το στοιχείο ", key, " δεν ευρέθη στον δοθέντα πίνακα" Τέλος_αν

Αποτελέσματα // position // Τέλος Sequential_Search_Sorted_Table

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 15: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

15

Παρατηρήσεις: Η αναζήτηση σταματά όταν η τιμή προς αναζήτηση (μεταβλητή key) είναι μικρότερη από την τρέχουσα τιμή του πίνακα table. Σε αυτήν την περίπτωση δεν έχει νόημα να συνεχιστεί η αναζήτηση καθώς δεν αναμένεται να έχει επιτυχές αποτέλεσμα.

4 9 12 19 23 45 53 67 Για παράδειγμα η αναζήτηση για την τιμή 14 στον παραπάνω πίνακα δεν έχει νόημα να συνεχιστεί μετά την 4η επανάληψη (i=4, table[i]=19) καθώς ο αριθμός 14 που είναι μικρότερος του 19 αποκλείεται να βρίσκεται σε κάποια από τις επόμενες θέσεις του πίνακα. Έτσι, αποφεύγονται άσκοπες επαναλήψεις. Το αν εντοπίστηκε ή όχι η τιμή key το ανιχνεύουμε με τη μεταβλητή position και όχι με την done καθώς η τελευταία λαμβάνει την τιμή αληθής ακόμη κι αν δεν ευρέθη η key.

3.7 Ταξινόμηση Αλγόριθμος ταξινόμησης ευθείας ανταλλαγής – φυσσαλίδας Αλγόριθμος Φυσσαλίδα Δεδομένα // n, table // Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα –1 Αν table[j - 1] > table[j] τότε ! αύξουσα ταξινόμηση temp ← table[j - 1] table[j - 1] ← table[j] table[j] ← temp Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Φυσσαλίδα Παρατηρήσεις: Η εντολή αντιμετάθεσε ορίζεται στην ψευδογλώσσα και μπορούμε να τη χρησιμοποιήσουμε σε αλγορίθμους αλλά

καλό να την αποφεύγουμε καθώς δεν ορίζεται στη ΓΛΩΣΣΑ και δεν μπορούμε να τη χρησιμοποιήσουμε σε προγράμματα.

Η διάταξη της ταξινόμησης είναι αύξουσα. Για φθίνουσα ταξινόμηση, αρκεί να αντιστραφεί η φορά της συνθήκης της δομής επιλογής Αν

Ο πίνακας table είναι μονοδιάστατος Παρατηρούμε στο επόμενο σχήμα την «εικόνα» του πίνακα στο τέλος κάθε επανάληψης της εξωτερικής δομής Για. Από την τελευταία θέση του πίνακα έως την i, αν η τιμή κάποιου κελιού του πίνακα είναι μικρότερη από αυτή του επόμενου κελιού, τότε αντιμεταθέτουμε τις τιμές τους. Έτσι, αν υπάρχει κάποιος μικρός αριθμός σε "χαμηλή" θέση στον πίνακα διαδοχικά "ανεβαίνει" σε "υψηλότερες" θέσεις όπως μια φυσσαλίδα στο υγρό.

Ας δούμε όμως και ένα άλλο παράδειγμα, θέλουμε να ταξινομήσουμε τον πίνακα:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 16: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

16

3 16 11 1 8 Το εξωτερικό Για επιβάλλει την εκτέλεση 4 βημάτων. Αυτά είναι τα εξής:

i = 2 j = 5 j = 5 j = 5 j = 5

3 3 3 1 16 16 1 3 11 1 16 16 1 11 11 11 8 8 8 8

Αλλαγή: Όχι Ναι Ναι Ναι

Παρατηρούμε, ότι ο μικρότερος αριθμός έχει βρεθεί στην πρώτη θέση του πίνακα. Στη συνέχεια:

i = 3 j = 5 j = 4 j = 3

1 1 1 3 3 3 16 8 8 8 16 16 11 11 11

Αλλαγή: Ναι Ναι Όχι

Παρατηρούμε, ότι οι δυο πρώτες θέσεις περιέχουν τους δυο μικρότερους αριθμούς του πίνακα. Στη συνέχεια:

i = 4 j = 5 j = 4

1 1 3 3 8 8 11 11 16 16

Αλλαγή: Ναι Όχι

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

i = 5 j = 5

1 3 8 11 16

Αλλαγή: Όχι

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

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 17: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

17

Αλγόριθμος Φυσσαλίδα_Τροποποίηση Δεδομένα // n, table // i ← 2 Αρχή_Επανάληψης έγινε_αντιμετάθ ← ψευδής Για j από n μέχρι i με_βήμα –1 Αν table[j - 1] > table[j] τότε ! αύξουσα ταξινόμηση temp ← table[j - 1] table[j - 1] ← table[j] table[j] ← temp έγινε_αντιμετάθ ← αληθής Τέλος_αν Τέλος_επανάληψης i ← i + 1 Μέχρις_Ότου (i > n) ή (έγινε_αντιμετάθ = ψευδής) Αποτελέσματα // table // Τέλος Φυσσαλίδα_Τροποποίηση Μια άλλη προσέγγιση είναι: Αλγόριθμος Φυσσαλίδα_Τροποποίηση2 Δεδομένα // n, table // Αρχή_επανάληψης έγινε_αντιμετάθ ← ψευδής Για i από 1 μέχρι n Αν table[i + 1] < table[i] τότε ! αύξουσα ταξινόμηση temp ← table[i + 1] table[i + 1] ← table[i] table[i] ← temp έγινε_αντιμετάθ ← αληθής Τέλος_Αν Τέλος_επανάληψης Μέχρις_Ότου (έγινε_αντιμετάθ = ψευδής)

Αποτελέσματα // table // Τέλος Φυσσαλίδα_Τροποποίηση2

Αλγόριθμος ταξινόμησης με επιλογή Αλγόριθμος Tαξινόμηση_με_επιλογή Δεδομένα // n, table // Για i από 1 μέχρι n j ← i Για k από i + 1 μέχρι n Αν table[k] < table[j] τότε j ← k Τέλος_αν Τέλος_επανάληψης temp ← table[j] table[j] ← table[i] table[i] ← temp Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Tαξινόμηση_με_επιλογή Ο αλγόριθμος βασίζεται στην επιλογή του μικρότερου στοιχείου από αυτά που δεν έχουν ταξινομηθεί μέχρι τώρα. Για κάθε στοιχείο δηλαδή από το πρώτο μέχρι το τελευταίο, ελέγχεται ποιο από τα στοιχεία που ακολουθούν είναι μικρότερο και αν υπάρχει τέτοιο τα περιεχόμενα των δυο θέσεων αντιμετατίθενται. Η μέθοδος αυτή παρουσιάζεται στο επόμενο σχήμα καθώς εφαρμόζεται σε μονοδιάστατο πίνακα. Το ταξινομημένο τμήμα του πίνακα εμφανίζεται με σκίαση, ενώ με τα βέλη εμφανίζονται τα στοιχεία που ανταλλάσσονται αμοιβαία. Λόγου χάριν, στην πρώτη σειρά βρίσκουμε ότι το στοιχείο 5 είναι το μικρότερο και αντιμετατίθεται με το πρώτο στοιχείο του πίνακα, το 52. Έτσι προκύπτει η μορφή του πίνακα στη δεύτερη σειρά. Στη συνέχεια η διαδικασία προχωρεί με την ίδια λογική μέχρι την τελική ταξινόμηση του πίνακα

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 18: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

18

Αλγόριθμος ταξινόμησης ευθείας εισαγωγής Ο αλγόριθμος αυτός είναι ιδανικός για περιπτώσεις δεδομένων "περίπου" ταξινομημένων. Αλγόριθμος Tαξινόμηση_με_ευθεία_εισαγωγή Δεδομένα // table, n // Για i από 2 μέχρι n temp ← table[i] j ← i - 1 done ← ψευδής Όσο done = ψευδής επανάλαβε Αν j = 0 τότε

! φτάσαμε στην αρχή του πίνακα, άρα πρέπει να σταματήσουμε done ← αληθής

Αλλιώς_Αν temp < table[j] τότε ! βρήκαμε ένα μεγαλύτερο στοιχείο, άρα πρέπει να σταματήσουμε

table[j + 1] ← table[j] j ← j – 1 Αλλιώς ! πρέπει να σταματήσουμε την επανάληψη γιατί το στοιχείο ! θα μείνει σε αυτήν τη θέση

done ← αληθής Τέλος_Αν

Τέλος_επανάληψης table[j + 1] ← temp Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Tαξινόμηση_με_ευθεία_εισαγωγή

Η τεχνική είναι η εξής: συγκρίνουμε τον δεύτερο με τον πρώτο αριθμό και αν χρειαστεί τους αντιμεταθέτουμε ώστε ο πρώτος να είναι μεγαλύτερος. Στη συνέχεια ελέγχουμε τον τρίτο και τον τοποθετούμε στη χωστή θέση σε σχέση με τους 2 πρώτους (αν χρειαστεί μετακινούμε μια θέση τους αριθμούς που είναι μεγαλύτερη ώστε να τοποθετηθεί). Το ίδιο επαναλαμβάνουμε για όλους τους αριθμούς. Ακολουθεί παράδειγμα:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 19: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

19

Δομές δεδομένων δευτερεύουσας μνήμης Επειδή η RAM δεν επαρκεί για την αποθήκευση των δεδομένων καθώς και το ότι δεν αποθηκεύει μόνιμα, χρησιμοποιούμε τους μαγνητικούς δίσκους (ταινίες, σκληροί δίσκοι κ.ά.) και οπτικούς δίσκους (CD-ROM, DVD-ROM κ.ά.). Αυτά αποτελούν την περιφερειακή ή δευτερεύουσα μνήμη. Για την αποθήκευση δεδομένων σε αυτή κάνουμε χρήση ειδικών δομών που λέγονται αρχεία (files). Κάθε αρχείο περιέχει μία συλλογή εγγραφών (π.χ. ένα αρχείο με εγγραφές μαθητών). Μία εγγραφή (record) αποτελεί τη συλλογή στοιχειωδών πληροφοριών σχετικά με ένα αντικείμενο (π.χ. μαθητής, ένα βιβλίο κλπ). Μία στοιχειώδης πληροφορία συνιστά ένα πεδίο (field). Π.χ. μία εγγραφή μαθητή περιέχει στοιχειώδεις πληροφορίες (πεδία) όπως: Επώνυμο, Όνομα, Πατρώνυμο, Έτος γέννησης, Τάξη κλπ.

Πεδίο

Ευθυμίου Νίκος 1988 Γ2

Παπαδάκης Στέλιος 1988 Γ1

Αγγελάκη Δήμητρα 1987 Β2

………. ………. ………. ……….

Εγγραφές

Αρχείο

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 20: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

20

Ερωτήσεις θεωρίας

1. Περιγράψτε τις σκοπιές από τις οποίες μελετά τα δεδομένα η Πληροφορική

2. Δώστε τον ορισμό της δομής δεδομένων. Ποιες είναι οι βασικές λειτουργίες επί των δομών δεδομένων;

3. Τι είναι οι δυναμικές δομές δεδομένων; Τι είναι οι στατικές δομές δεδομένων;

4. Περιγράψτε τη δομή της στοίβας, καθώς και τις κύριες λειτουργίες της. Τι σημαίνει δομή LIFO;

5. Περιγράψτε τη δομή της ουράς, καθώς και τις κύριες λειτουργίες της. Τι σημαίνει δομή FIFO;

6. Τι είναι η σειριακή (γραμμική) μέθοδος αναζήτησης; Σε ποιες περιπτώσεις δικαιολογείται η χρήση της; Δώστε τον αντίστοιχο αλγόριθμο

7. Δώστε τον ορισμό της ταξινόμησης (διάταξης)

8. Τι σημαίνει δομή δεδομένων δευτερεύουσας μνήμης;

9. Δώστε τον αλγόριθμο της ταξινόμησης ευθείας ανταλλαγής (ταξινόμηση φυσαλίδας)

Ερωτήσεις Πολλαπλής Επιλογής

1. Οι δομές δεδομένων διακρίνονται σε στατιστικές και δυναμικές

2. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

3. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης

4. Ένας πίνακας έχει σταθερό μέγεθος αλλά μεταβαλλόμενο περιεχόμενο

5. Ένας πίνακας μπορεί να υποθηκεύσει ακεραίους αριθμούς και ονόματα

6. Μία ουρά διατηρεί τα δεδομένα ταξινομημένα ως προς τη σειρά άφιξής τους

7. Η υλοποίηση της ουράς χρησιμοποιεί μία μόνο μεταβλητή-δείκτη για τη διαχείριση των εισαγωγών/διαγραφών, όπως και η περίπτωση της στοίβας

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

9. Η δυναμική παραχώρηση μνήμης είναι η τεχνική που χρησιμοποιείται στους πίνακες

10. Υπερχείλιση συμβαίνει όταν συμβεί απώθηση σε γεμάτη στοίβα

11. Υποχείλιση συμβαίνει σε μια ουρά όταν ζητήσουμε διαγραφή και ο δείκτης εμπρός είναι ίσος με τον δείκτη πίσω

12. Η ταξινόμηση είναι χρήσιμη διαδικασία γιατί έτσι εκτελείται γρηγορότερα η αναζήτηση

13. Δομή δεδομένων είναι ένα σύνολο δεδομένων που μπορούμε να εφαρμόσουμε μια σειρά λειτουργιών

14. Αλγόριθμοι + Δεδομένα = Προγράμματα

15. Η ουρά και η στοίβα είναι οι μόνες δομές δεδομένων στις οποίες εφαρμόζονται και οι 8 λειτουργίες

16. Η ταξινόμηση ευθείας ανταλλαγής είναι πολύ αποτελεσματική αν ο πίνακας έχει λίγα στοιχεία

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 21: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

21

17. Για να εφαρμοστεί η μέθοδος της σειριακής αναζήτησης είναι απαραίτητο τα στοιχεία να είναι ταξινομημένα

18. Τα στοιχεία ενός πίνακα είναι απαραίτητο να είναι όλα του ίδιου τύπου

19. Η σειριακή αναζήτηση μπορεί να οδηγήσει στην προσπέλαση ακόμη και ολόκληρου του πίνακα

20. Η ταξινόμηση έχει ως στόχο να διατάξει τα στοιχεία ενός μονοδιάστατου πίνακα με αύξουσα ή φθίνουσα διάταξη

21. Η σειριακή αναζήτηση χρησιμοποιείται κυρίως για μικρούς ή μη ταξινομημένους πίνακες

22. Στην υλοποίηση της στοίβας με τη χρήση πίνακα χρησιμοποιούνται 2 δείκτες για να δείχνουν την είσοδο και την έξοδο των δεδομένων

23. Στη στοίβα το στοιχείο που ωθείται τελευταίο απωθείται πρώτο

24. Η σειριακή αναζήτηση μπορεί να εκτελεστεί μόνο σε μη ταξινομημένους πίνακες

25. Στην ουρά το στοιχείο που εισάγεται πρώτο εξάγεται και πρώτο

26. Στη στοίβα το στοιχείο που εισάγεται τελευταίο εξάγεται και τελευταίο

27. Σε μια ουρά μπορούμε να προσθέσουμε στοιχεία στο μέσο της

28. Ο πίνακας είναι μια δυναμική δομή δεδομένων

29. Η ταξινόμηση της φυσαλίδας ταξινομεί τα στοιχεία ενός μονοδιάστατου πίνακα μόνο σε αύξουσα σειρά

30. Η θέση ενός στοιχείου σ' έναν δισδιάστατο πίνακα καθορίζεται από δυο αριθμούς

31. Οι διαστάσεις ενός πίνακα μπορούν να μεταβληθούν κατά την διάρκεια εκτέλεσης ενός αλγορίθμου

32. Η χρήση πινάκων έχει το μειονέκτημα της υπερβολικής χρήσης μνήμης

33. Η ταξινόμηση εφαρμόζεται και σε δισδιάστατους πίνακες

34. Στο ΠΙΝΑΚΑΣ[α, β] το α αντιστοιχεί στη γραμμή του πίνακα και το β στη στήλη

35. Προσπέλαση είναι η εύρεση ενός κόμβου με κάποιο κριτήριο

36. Για την υλοποίηση της ουράς χρησιμοποιούνται δυο δείκτες εμπρός και πίσω

37. Υποχείλιση συμβαίνει όταν εισαχθεί τιμή σε μια γεμάτη στοίβα

38. Για να προσπελάσουμε τα στοιχεία ενός πίνακα χρησιμοποιούμε επαναληπτική δομή

39. Για τον υπολογισμό μέσου όρου 120 αριθμών πρέπει να χρησιμοποιηθεί πίνακας

40. Στην ουρά όποιο στοιχείο μπαίνει πρώτο, βγαίνει τελευταίο

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

α) γραμμικός

β) δισδιάστατος

γ) μονοδιάστατος

δ) τετραγωνικός

42. Η πληροφορική ως επιστήμη μελετά τους αλγορίθμους σε σχέση με την έννοια των δεδομένων από τη σκοπιά:

α) υλικού

β) θεωρητική

γ) ανάλυσης δεδομένων

δ) αρχείο

43. Θεωρούμε πίνακα Α διάστασης 3x3, όπου το A[i,j] στοιχείο δίνεται από τον τύπο A[i, j]=i*j. Να βρεθεί τι θα τυπώσει το παρακάτω τμήμα αλγορίθμου:

α) s=12 p=48 s ← 0 p ← 1

β) s=14 p=36

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 22: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

22

γ) s=55 p=108 Για i από 1 μέχρι 3 s ← s + A[i, i] p ← p * A[i, i]

Τέλος_Επανάληψης Εκτύπωσε “s=”, s, “p=”, p

δ) s=5 p=6

44. Έστω ο πίνακας Α που περιέχει με την σειρά τους 100 πρώτους άρτιους αριθμούς, (δηλ. 2,4,6,8,...), μετά την εκτέλεση του κάτωθι τμήματος αλγορίθμου:

s ← 0

Για i από 1 μέχρι n s ←s + A[Α[2*i]]

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

αν το s=80 , τι τιμή θα έχει το n;

α) n=2 β) n=3 γ) n=4 δ) n=5

45. Κατά την ώθηση στοιχείου σε στοίβα πραγματοποιείται έλεγχος για ______________

46. Σε μια ___________ δομή δεδομένων το μέγεθος της μνήμης που χρησιμοποιείται δεν είναι προκαθορισμένο

47. Οι δυναμικές δομές δεδομένων στηρίζονται στην τεχνική ___________ ___________ __________

48. Δεν μπορεί να χρησιμοποιηθεί ο αλγόριθμος της φυσαλίδας σε πίνακα χαρακτήρων

49. Η ταξινόμηση της φυσαλίδας χρησιμοποιείται μόνο σε ταξινομημένους πίνακες

50. Οι δισδιάστατοι πίνακες μπορούν να θεωρηθούν ως μονοδιάστατοι πίνακες όπου κάθε θέση τους θεωρούνται άλλοι μονοδιάστατοι πίνακες

51. Η σειριακή αναζήτηση και η δυαδική αναζήτηση μπορούν να χρησιμοποιηθούν σε όλους τους μονοδιάστατους πίνακες

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

53. Η ταξινόμηση δεν μπορεί να εφαρμοστεί σε δισδιάστατους πίνακες

54. Σε μια ουρά απαιτούνται δυο δείκτες, front και rear

55. Να αντιστοιχίσετε τα στοιχεία της στήλης Α και της στήλης Β

Α Β

1. Πίνακας Α) FIFO

2. Ουρά B) Δυναμική Δομή Δεδομένων

3. Στοίβα Γ) Στατική Δομή Δεδομένων

Δ) LIFO

Κεφαλαίο 3ο 1: Λάθος 2: Λάθος 3: Λάθος 4: Σωστό

5: Λάθος 6: Σωστό 7: Λάθος 8: Λάθος

9: Λάθος 10: Λάθος 11: Λάθος 12: Σωστό

13: Σωστό 14: Λάθος 15: Λάθος 16: Σωστό

17: Λάθος 18: Σωστό 19: Σωστό 20: Σωστό

21: Σωστό 22: Λάθος 23: Σωστό 24: Λάθος 25: Σωστό 26: Λάθος 27: Λάθος 28: Λάθος

29: Λάθος 30: Σωστό 31: Λάθος 32: Σωστό

33: Λάθος 34: Σωστό 35: Λάθος 36: Σωστό

37: Λάθος 38: Σωστό 39: Λάθος 40: Λάθος

41: β 42: α, γ 43: β 44: γ

45: υπερχείλιση 46: δυναμική 47: δυναμικής παραχώρησης μνήμης

48:Λάθος

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 23: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

23

49: Λάθος 50: Λάθος 51: Λάθος 52: Λάθος

53: Σωστό 54: Σωστό 55: 1Γ, 2Γ-Α, 3Γ-Δ

Λυμένες Ασκήσεις

1. Μονοδιάστατοι Πίνακες 1. Ποια θα είναι τα περιεχόμενα του πίνακα Α μετά την εκτέλεση του παρακάτω αλγορίθμου;

Αλγόριθμος Δημιουργία_Πίνακα Για i από 1 μέχρι 5 Α[i] ← i

Τέλος_επανάληψης Για i από 2 μέχρι 5 Αν (i mod 2 = 0) τότε Α[i] ← 2 * A[i - 1] + 1

Αλλιώς Α[i] ← A[i] + A[i - 1]

Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // Α // Τέλος Δημιουργία_Πίνακα

Λύση

i A[1] A[2] A[3] A[4] A[5] 1η επανάλ 1 1

2η επανάλ 2 2

3η επανάλ 3 3

4η επανάλ 4 4

5η επανάλ 5 5

1η επανάλ 2 1 2 3 4 5

2 mod 2 = 0 - Ισχύει 3

2η επανάλ 3

3 mod 2 = 0 - Δεν ισχύει 6

3η επανάλ 4

4 mod 2 = 0 - Ισχύει 13

Οι τελικές τιμές του πίνακα είναι : 1 3 6 13 18

2. Να αναπτύξετε αλγόριθμο που με δεδομένα τα στοιχεία ενός πίνακα Α[500] θα μετρά το πλήθος των στοιχείων που είναι μικρότερα του 11 και αυτά που είναι μικρότερα από το μισό του μέσου όρου Λύση

Αλγόριθμος Μελέτη_Πίνακα Δεδομένα // Α // Πλήθος ← 500 άθροισμα ← 0

Για i από 1 μέχρι Πλήθος άθροισμα ← άθροισμα + Α[i]

Τέλος_επανάληψης μο ← άθροισμα / Πλήθος μικρότερα_11 ← 0 μικρότερα_μισό_μο ← 0

Για i από 1 μέχρι Πλήθος Αν (Α[i] < 11) τότε

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 24: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

24

μικρότερα_11 ← μικρότερα_11 + 1

Τέλος_αν Αν (Α[i] < μο / 2) τότε μικρότερα_μισό_μο ← μικρότερα_μισό_μο + 1

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε μικρότερα_11, μικρότερα_μισό_μο Τέλος Μελέτη_Πίνακα

3. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένο μονοδιάστατο πίνακα Ν αριθμών θα δημιουργεί νέο πίνακα όπου θα περιέχει μόνο τους θετικούς Λύση

Αλγόριθμος Θετικοί Δεδομένα // Ν, Α // Μ ← 0 ! δείκτης νέου πίνακα

Για i από 1 μέχρι Ν Αν (Α[i] > 0) τότε Μ ← Μ + 1 Β[Μ] ← Α[i]

Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // Μ, Β // Τέλος Θετικοί

4. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένο έναν μονοδιάστατο πίνακα αριθμών θα υπολογίζει και θα εκτυπώνει τον ελάχιστο καθώς και τη θέση του στον πίνακα Λύση Αλγόριθμος Εύρεση_Ελαχίστου Δεδομένα // Ν, Α // ελάχιστος ← Α[1] θέση ← 1

Για i από 2 μέχρι N Αν ελάχιστος > Α[i] τότε ελάχιστος ← A[i] θέση ← i

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Το ελάχιστο είναι ο αριθμός ", ελάχιστο, " και βρέθηκε στη θέση ", θέση Τέλος Εύρεση_Ελαχίστου 5. Σε έναν πίνακα μπορούν να εισαχθούν μόνο οι αριθμοί 1, 9, 11, 25 και 32. Να αναπτύξετε αλγόριθμο που με δεδομένα τα στοιχεία ενός τέτοιου πίνακα Α[100] θα μετρά τη συχνότητα εμφάνισης για κάθε έναν από τους παραπάνω αριθμούς Λύση Θα χρησιμοποιήσουμε πίνακα μετρητών 5 θέσεων όπου κάθε θέση θα αποτελεί μετρητή για τους αριθμούς 1, 9, 11, 25, 32 αντίστοιχα Αλγόριθμος Μελέτη_Πίνακα Δεδομένα // Α // Για i από 1 μέχρι 100 ΣΥΧΝΟΤΗΤΑ[i] ← 0 ! αρχικοποίηση πίνακα μετρητών

Τέλος_επανάληψης Για i από 1 μέχρι 100 Επίλεξε Α[i] Περίπτωση 1

ΣΥΧΝΟΤΗΤΑ[1] ← ΣΥΧΝΟΤΗΤΑ[1] + 1

Περίπτωση 9 ΣΥΧΝΟΤΗΤΑ[2] ← ΣΥΧΝΟΤΗΤΑ[2] + 1

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 25: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

25

Περίπτωση 11 ΣΥΧΝΟΤΗΤΑ[3] ← ΣΥΧΝΟΤΗΤΑ[3] + 1

Περίπτωση 25 ΣΥΧΝΟΤΗΤΑ[4] ← ΣΥΧΝΟΤΗΤΑ[4] + 1

Περίπτωση Αλλιώς ΣΥΧΝΟΤΗΤΑ[5] ← ΣΥΧΝΟΤΗΤΑ[5] + 1

Τέλος_Επιλογών Τέλος_επανάληψης Αποτελέσματα // ΣΥΧΝΟΤΗΤΑ // Τέλος Μελέτη_Πίνακα 6. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένο μονοδιάστατο πίνακα Ν αριθμών θα ελέγχει αν τα συμμετρικά του στοιχεία είναι ίσα Λύση Αλγόριθμος Συμμετρικός_Πίνακας Δεδομένα // Ν, Α // συμμετρικός ← αληθής ! έστω οι ο πίνακας είναι συμμετρικός

Για i από 1 μέχρι (Ν div 2) ! έλεγχος μέχρι το μέσο του πίνακα Αν Α[i] <> Α[Ν + 1 - i] τότε ! αν βρεθεί έστω και ένα ζευγάρι άνισων

!τιμών τότε ο πίνακας δεν είναι συμμετρικός

συμμετρικός ← ψευδής

Τέλος_αν Τέλος_επανάληψης Αν (συμμετρικός = αληθής) τότε Εκτύπωσε "Συμμετρικός πίνακας" Αλλιώς Εκτύπωσε "Όχι συμμετρικός πίνακας" Τέλος_αν Τέλος Συμμετρικός_Πίνακας Παρατηρούμε ότι αν βρεθεί κάποιο ζευγάρι άνισων τιμών ο πίνακας αποχαρακτηρίζεται αλλά ο έλεγχος συνεχίζεται... Ο παρακάτω αλγόριθμος διορθώνει την ατέλεια αυτή και η επανάληψη τερματίζεται μόλις βρεθεί ένα άνισο ζεύγος τιμών Αλγόριθμος Συμμετρικός_Πίνακας_Εναλ Δεδομένα // Ν, Α // συμμετρικός ← αληθής i ← 1

Όσο (i <= N div 2) και (συμμετρικός = αληθής) επανάλαβε Αν Α[i] <> Α[Ν + 1 - i] τότε συμμετρικός < ψευδής Αλλιώς i ← i + 1

Τέλος_αν Τέλος_επανάληψης Αν (συμμετρικός = αληθής) τότε Εκτύπωσε "Συμμετρικός πίνακας" Αλλιώς Εκτύπωσε "Όχισυμμετρικός πίνακας" Τέλος_αν Τέλος Συμμετρικός_Πίνακας_Εναλ 7. Ο καθηγητής πληροφορικής θέλει να επεξεργαστεί στατιστικά την απόδοση των μαθητών στο μάθημα Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Από τη μηχανογράφηση του σχολείου λαμβάνονται με ηλεκτρονικό τρόπο οι προφορικοί βαθμοί των δυο τετραμήνων και οι γραπτοί βαθμοί μαθητών στις εξετάσεις. Έχοντας υπόψην ότι ο μέσος προφορικός βαθμός διορθώνεται στην περίπτωση που η διαφορά του με τον γραπτό βαθμό είναι μεγαλύτερη των 2 μονάδων και πως τα ποσοστά συμμετοχής των παραπάνω στο βαθμό πρόσβασης είναι 30% και 70 % αντίστοιχα, να αναπτυχθεί αλγόριθμος που: i. Θα υπολογίζει και θα εκτυπώνει τους βαθμούς πρόσβασης όλων των μαθητών

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 26: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

26

ii. Θα εκτυπώνει τα ονόματα των μαθητών με βαθμό πρόσβασης μικρότερο από 9.5 iii. Θα εκτυπώνει τα ονόματα των μαθητών με βαθμό πρόσβασης μεγαλύτερο από 18 iv. Ποιος είναι ο μέγιστος βαθμός πρόσβασης; v. Πόσοι μαθητές έχουν βαθμός πρόσβασης ίσο με τον μέγιστο; Λύση Αλγόριθμος Εξαγωγή_Αποτελεσμάτων Δεδομένα // ΟΝΟΜΑ, Α_ΤΕΤΡΑΜΗΝΟ, Β_ΤΕΤΡΑΜΗΝΟ, ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ // Πλήθος ← 50000

Για i από 1 μέχρι Πλήθος προφορικός_βαθμός ← (Α_ΤΕΤΡΑΜΗΝΟ[i] + Β_ΤΕΤΡΑΜΗΝΟ[i]) / 2

Αν (προφορικός_βαθμός - ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ[i] > 2) τότε ! διόρθωση βαθμού προφορικός_βαθμός ← ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ[i] + 2

Αλλιώς_Αν (ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ[i] - προφορικός_βαθμός > 2) τότε προφορικός_βαθμός ← ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ[i] - 2 Τέλος_αν ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] ← 0.7 * ΓΡΑΠΤΟΣ_ΒΑΘΜΟΣ[i] +

0,3*προφορικός_βαθμός ! υπολογισμός βαθμού πρόσβασης

Τέλος_επανάληψης Εκτύπωσε "Βαθμοί πρόσβασης < 9.5" ! ερώτημα ii Για i από 1 μέχρι Πλήθος Αν (ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] < 9.5) τότε Εκτύπωσε ΟΝΟΜΑ[i], ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Βαθμοί πρόσβασης >= 18" ! ερώτημα iii Για i από 1 μέχρι Πλήθος Αν (ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] >= 18) τότε Εκτύπωσε ΟΝΟΜΑ[i], ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] Τέλος_αν Τέλος_επανάληψης μέγιστος < ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[1] ! ερώτημα iv Για i από 2 μέχρι 30 Αν (ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] > μέγιστος) τότε μέγιστος ← ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i]

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Ο μεγαλύτερος βαθμός πρόσβασης είναι ", ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[θέση]

! τέλος ερώτημα iv ! Για την επίλυση του ερωτήματος "v" θα προσπελάσουμε ξανά τον πίνακα

!ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ, για τον εντοπισμό τιμών ίσων με το μέγιστο Εκτύπωσε "Ακολουθούν οι βαθμοί πρόσβασης ίσοι με τον μέγιστο" ! ερώτημα v Για i από 1 μέχρι 30 Αν (ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] = μέγιστος) τότε Εκτύπωσε ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] Τέλος_αν Τέλος_επανάληψης ! τέλος ερώτημα v Τέλος Εξαγωγή_Αποτελεσμάτων 8. Η τράπεζα του κου Αρβίλογλου διαθέτει πελατολόγιο 15000 κατόχων πιστωτικής κάρτας σε ολόκληρη την Ελλάδα. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία των πελατών της τράπεζας και των οφειλών τους θα εκτυπώνει: i. Τα ονόματα των πελατών της τράπεζας με οφειλές πάνω του μέσου όρου ii. Τα ονόματα των πελατών με μηδενικές οφειλές iii. Ποια είναι η μεγαλύτερη οφειλή προς την τράπεζα iv. Ποιοι πελάτες έχουν οφειλή ίση με την μέγιστη Λύση Αλγόριθμος Πιστωτικές_Κάρτες Δεδομένα // ΟΝΟΜΑΤΑ, ΟΦΕΙΛΕΣ //

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 27: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

27

Πλήθος ← 15000 άθροισμα ← 0 ! ερώτημα i

Για i από 1 μέχρι Πλήθος άθροισμα ← άθροισμα + ΟΦΕΙΛΕΣ[i] Τέλος_επανάληψης μέσος_όρος ← άθροισμα / Πλήθος

Εκτύπωσε "Ακολουθούν τα ονόματα πελατών με οφειλές πάνω του μέσου όρου" Για i από 1 μέχρι Πλήθος Αν (ΟΦΕΙΛΕΣ[i] > μέσος_όρος) τότε Εκτύπωσε ΟΝΟΜΑ[i] Τέλος_αν Τέλος_επανάληψης ! τέλος ερώτημα i Εκτύπωσε "Ακολουθούν τα ονόματα πελατών με μηδενικές οφειλές" ! ερώτημα ii Για i από 1 μέχρι Πλήθος Αν (ΟΦΕΙΛΕΣ[i] = 0) τότε Εκτύπωσε ΟΝΟΜΑ[i] Τέλος_αν Τέλος_επανάληψης ! τέλος ερώτημα ii μέγιστος ← ΟΦΕΙΛΕΣ[1] ! ερώτημα iii

Για i από 2 μέχρι 30 Αν (ΟΦΕΙΛΕΣ[i] > μέγιστος) τότε μέγιστος ← ΟΦΕΙΛΕΣ[i]

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Ο πελάτης με τη μέγιστη οφειλή είναι ", μέγιστος Εκτύπωσε "Οι πελάτης με τέτοια οφειλή είναι οι ακόλουθοι" ! τέλος ερώτημα iii Για i από 1 μέχρι 30 ! ερώτημα iv Αν (ΟΦΕΙΛΕΣ[i] = μέγιστος) τότε Εκτύπωσε ΟΝΟΜΑ[i] Τέλος_αν Τέλος_επανάληψης Τέλος Πιστωτικές_Κάρτες 9. Το τμήμα μισθοδοσίας καταχωρεί τις εισπράξεις της αλυσίδας των 30 καταστημάτων "Γιαρίτσιος ΑΕ" που διαθέτει σε έναν πίνακα. Αντίστοιχα, σε έναν πίνακα 30 θέσεων καταχωρούνται τα ονόματα - επωνυμία των καταστημάτων. Να αναπτυχθεί αλγόριθμος όπου: i. Να εκτυπώνει το όνομα του καταστήματος με τις μεγαλύτερες εισπράξεις ii. Να εκτυπώνει το όνομα του καταστήματος με τις μικρότερες εισπράξεις iii. Να υπολογίζει και να εκτυπώνει το σύνολο των εισπράξεων της εταιρείας και τον μέσο όρο για κάθε κατάστημα Λύση Αλγόριθμος Αλυσίδα_Καταστημάτων Για i από 1 μέχρι 30 Διάβασε ΟΝΟΜΑ[i], ΕΙΣΠΡΑΞΕΙΣ[i] Τέλος_επανάληψης μέγιστος ← ΕΙΣΠΡΑΞΕΙΣ[1] ! ερώτημα i θέση ← 1

Για i από 2 μέχρι 30 Αν (ΕΙΣΠΡΑΞΕΙΣ[i] > μέγιστος) τότε μέγιστος ← ΕΙΣΠΡΑΞΕΙΣ[i] θέση ← i

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Το κατάστημα με τις μεγαλύτερες εισπράξεις είναι το ", ΟΝΟΜΑ[θέση]

! τέλος ερώτημα i ελάχιστος ← ΕΙΣΠΡΑΞΕΙΣ[1] ! ερώτημα ii

θέση ← 1

Για i από 2 μέχρι 30 Αν (ΕΙΣΠΡΑΞΕΙΣ[i] < ελάχιστος) τότε ελάχιστος ← ΕΙΣΠΡΑΞΕΙΣ[i]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 28: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

28

θέση ← i

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

Εκτύπωσε "Το κατάστημα με τις λιγότερες εισπράξεις είναι το ", ΟΝΟΜΑ[θέση] ! τέλος ερώτημα ii

άθροισμα ← 0 ! ερώτημα iii Για i από 1 μέχρι 30 άθροισμα ← άθροισμα + ΕΙΣΠΡΑΞΕΙΣ[i]

Τέλος_επανάληψης μέσος_όρος ← άθροισμα / 30

Εκτύπωσε "Το άθροισμα των εισπράξεων είναι ", άθροισμα Εκτύπωσε "Ο μέσος όρος των εισπράξεων ανά κατάστημα είναι ", μέσος_όρος

Τέλος Αλυσίδα_Καταστημάτων

2. Δισδιάστατοι Πίνακες

1. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία δυο δισδιάστατων πινάκων αριθμών ιδίων διαστάσεων θα εξετάζει αν οι πίνακες είναι ίσοι, ενώ στην περίπτωση που δεν είναι θα εκτυπώνει το ποσοστό των στοιχείων που είναι ίσα Λύση Θα ελέγξουμε αν τα στοιχεία στις αντίστοιχες θέσεις είναι ένα προς ένα ίσα Αλγόριθμος Ισότητα_Πινάκων Δεδομένα // Ν, Μ, ΠΙΝΑΚΑΣ_1, ΠΙΝΑΚΑΣ_2 // ισότητα ← αληθής ! έστω ότι οι δυο πίνακες είναι ίσοι πλήθος ← 0

Για i από 1 μέχρι N Για j από 1 μέχρι M Αν ΠΙΝΑΚΑΣ_1[i, j] <> ΠΙΝΑΚΑΣ_2[i, j] τότε ! Αν βρεθεί έστω και ένα ζεύγος τιμών που δεν είναι ίσα

! τότε οι πίνακες δεν είναι ίσοι ισότητα ← ψευδής πλήθος ← πλήθος + 1

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

Αν (ισότητα = αληθής) τότε Εκτύπωσε "Οι δύο πίνακες είναι ίσοι" Αλλιώς ποσοστό ← πλήθος / (Ν * Μ)

Εκτύπωσε "Οι δύο πίνακες δεν είναι ίσοι, αλλά το ποσοστό των στοιχείων που είναι ίσα είναι ", ποσοστό

Τέλος_αν Τέλος Ισότητα_Πινάκων 2. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία δυο δισδιάστατων πινάκων αριθμών ιδίων διαστάσεων θα επιστρέφει νέο πίνακα όπου κάθε στοιχείο του θα είναι το άθροισμα των αντίστοιχων κελιών των δυο αρχικών πινάκων Λύση Θα προσθέσουμε ένα προς ένα τα στοιχεία στις αντίστοιχες θέσεις Αλγόριθμος Άθροισμα_Πινάκων Δεδομένα // Ν, Μ, ΠΙΝΑΚΑΣ_1, ΠΙΝΑΚΑΣ_2 // Για i από 1 μέχρι N Για j από 1 μέχρι M

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 29: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

29

ΤΕΛΙΚΟΣ_ΠΙΝΑΚΑΣ[i, j] ← ΠΙΝΑΚΑΣ_1[i, j] + ΠΙΝΑΚΑΣ_2[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // Ν, Μ, ΤΕΛΙΚΟΣ_ΠΙΝΑΚΑΣ // Τέλος Άθροισμα_Πινάκων 3. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τα στοιχεία ενός δισδιάστατου πίνακα αριθμών: i. Θα διαβάζει έναν αριθμό που θα αντιστοιχεί σε στήλη και θα υπολογίζει το ελάχιστο της στήλης αυτής ii. Θα διαβάζει έναν αριθμό που θα αντιστοιχεί σε γραμμή και θα υπολογίζει το μέγιστο στοιχείο της γραμμής αυτής Λύση Αλγόριθμος Επεξεργασία_Πινάκων1 Δεδομένα // Ν, Μ, ΠΙΝΑΚΑΣ // Αρχή_Επανάληψης ! ερώτημα i Διάβασε στήλη Μέχρις_Ότου (στήλη > 0) και (στήλη <= Μ) μέγιστο ← ΠΙΝΑΚΑΣ[1, στήλη] Για i από 2 μέχρι Ν Αν ΠΙΝΑΚΑΣ[i, στήλη] > μέγιστο τότε μέγιστο ← ΠΙΝΑΚΑΣ[i, στήλη]

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Το μέγιστο στοιχείο της στήλης", στήλη, "είναι το ", μέγιστο Αρχή_Επανάληψης ! ερώτημα ii Διάβασε γραμμή Μέχρις_Ότου (γραμμή > 0) και (γραμμή <= Ν) ελάχιστο ← ΠΙΝΑΚΑΣ[γραμμή, 1]

Για j από 2 μέχρι M Αν ΠΙΝΑΚΑΣ[γραμμή, j] < ελάχιστο τότε ελάχιστο ← ΠΙΝΑΚΑΣ[γραμμή, j]

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Το ελάχιστο στοιχείο της γραμμής", γραμμή, "είναι το ", ελάχιστο Τέλος Επεξεργασία_Πινάκων1 4. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τα στοιχεία ενός δισδιάστατου πίνακα αριθμών και θα υπολογίζει το ελάχιστο στοιχείο κάθε στήλης και το μέγιστο στοιχείο κάθε γραμμής τοποθετώντας τα σε αντίστοιχους πίνακες Λύση Αλγόριθμος Επεξεργασία_Πινάκων2 Δεδομένα // Ν, Μ // Για i από 1 μέχρι N Για j από 1 μέχρι M Διάβασε ΠΙΝΑΚΑΣ[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι N ΕΛΑΧ_ΓΡΑΜΜΩΝ[i] ← ΠΙΝΑΚΑΣ[i, 1] ! τοποθετώ το πρώτο στοιχείο

Για j από 2 μέχρι M Αν ΠΙΝΑΚΑΣ[i, j] < ΕΛΑΧ_ΓΡΑΜΜΩΝ[i] τότε ΕΛΑΧ_ΓΡΑΜΜΩΝ[i] ← ΠΙΝΑΚΑΣ[i, j]

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για j από 1 μέχρι M μέγιστο ← ΠΙΝΑΚΑΣ[1, j] ! τοποθετώ το πρώτο στοιχείο

! προσοχή στο ότι ο πίνακας ΠΙΝΑΚΑΣ προσπελαύνετε στήλη-γραμμή

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 30: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

30

Για i από 2 μέχρι N Αν ΠΙΝΑΚΑΣ[i, j] > μέγιστο τότε μέγιστο ← ΠΙΝΑΚΑΣ[i, j]

Τέλος_αν Τέλος_επανάληψης ΜΕΓ_ΣΤΗΛΩΝ[j]← μέγιστο Τέλος_επανάληψης Αποτελέσματα // Ν, ΕΛΑΧ_ΓΡΑΜΜΩΝ, Μ, ΜΕΓ_ΣΤΗΛΩΝ // Τέλος Επεξεργασία_Πινάκων2 5. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τα στοιχεία ενός δισδιάστατου πίνακα αριθμών θα εξετάζει αν ο πίνακας είναι αραιός. Θεωρούμε ότι ένας πίνακας είναι αραιός αν πάνω από 80% του πλήθους των στοιχείων του είναι μηδέν Λύση Σε πρώτη φάση πρέπει να υπολογιστεί το πλήθος των μηδενικών στοιχείων του πίνακα και συγκριθεί με το 80% των στοιχείων του πίνακα Αλγόριθμος Αραιός_Πίνακας Δεδομένα // Ν, Μ // Για i από 1 μέχρι N Για j από 1 μέχρι M Διάβασε Α[i, j] Τέλος_επανάληψης Τέλος_επανάληψης πλήθος_μηδέν ← 0

Για i από 1 μέχρι N Για j από 1 μέχρι M Αν Α[i, j] = 0 τότε πλήθος_μηδέν ← πλήθος_μηδέν + 1

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αν πλήθος_μηδέν >= 0.80 * Ν *Μ τότε Εκτύπωσε "Ο πίνακας είναι αραιός" Αλλιώς Εκτύπωσε "Ο πίνακας δεν είναι αραιός" Τέλος_αν Τέλος Αραιός_Πίνακας 6. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία ενός τετραγωνικού (διαστάσεων ΝxN) δισδιάστατου πίνακα: i. θα υπολογίζει και θα εκτυπώνει τo το άθροισμα των στοιχείων της κυρίας διαγωνίου ii. θα υπολογίζει και θα εκτυπώνει τo το άθροισμα των στοιχείων της δευτερεύουσας διαγωνίου

Λύση Όπως φαίνεται και στο παραπάνω σχήμα τα στοιχεία της κυρίας διαγωνίου είναι τα περιεχόμενα των κελιών Α[i, i], όπου 1 <= i <= Ν. Αντίστοιχα τα στοιχεία της κυρίας διαγωνίου είναι τα κελιά Α[i, N + 1 - i], όπου 1<= i <= Ν. Επομένως ο αλγόριθμος θα είναι:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 31: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

31

Αλγόριθμος Διαγώνιες Δεδομένα // Ν, Α // άθροισμα ← 0

Για i από 1 μέχρι N άθροισμα ← άθροισμα + Α[i, i]

Τέλος_επανάληψης Εκτύπωσε "Το άθροισμα των στοιχείων της κύριας διαγωνίου είναι ", άθροισμα άθροισμα ← 0

Για i από 1 μέχρι N άθροισμα ← άθροισμα + Α[i, Ν + 1 - i]

Τέλος_επανάληψης Εκτύπωσε "Το άθροισμα των στοιχείων της δευτερεύουσας διαγωνίου είναι ", άθροισμα Τέλος Διαγώνιες 7. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία ενός τετραγωνικού (διαστάσεων ΝxN) δισδιάστατου πίνακα, να ελέγχει αν ο πίνακας είναι: i. Άνω τριγωνικός ii. Κάτω τριγωνικός iii. Διαγώνιος Λύση i. Ένας πίνακας χαρακτηρίζεται ως άνω τριγωνικός όταν όλα τα στοιχεία που βρίσκονται κάτω της κυρίας διαγωνίου (έχει οριστεί στην προηγούμενη άσκηση) είναι μηδέν. Τα στοιχεία αυτά είναι τα περιεχόμενα των κελιών Α[i, j], όπου i > j ii. Ένας πίνακας χαρακτηρίζεται ως κάτω τριγωνικός όταν όλα τα στοιχεία που βρίσκονται άνω της κυρίας διαγωνίου (έχει οριστεί στην προηγούμενη άσκηση) είναι μηδέν. Τα στοιχεία αυτά είναι τα περιεχόμενα των κελιών Α[i, j], όπου i < j Παρατήρηση: έχει γίνει αντιληπτό ότι τα κελιά Α[i, j], όπου i = j ανήκουν στην κύρια διαγώνιο !! iii. Ένας πίνακας χαρακτηρίζεται ως διαγώνιος αν είναι ταυτόχρονα άνω και κάτω τριγωνικός Επομένως ο αλγόριθμος θα είναι: Αλγόριθμος Τριγωνικοί Δεδομένα // Ν, Α // άνω_τριγωνικός ← αληθής ! έστω ότι ο πίνακας είναι άνω τριγωνικός

Για i από 1 μέχρι N Για j από 1 μέχρι N Αν (Α[i, j] <> 0) και (i > j) τότε

! αν βρεθεί έστω και ένα στοιχείο <> 0 τον αποχαρακτηρίζω άνω_τριγωνικός ← ψευδής

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης κάτω_τριγωνικός ← αληθής ! έστω ότι ο πίνακας είναι άνω τριγωνικός

Για i από 1 μέχρι N Για j από 1 μέχρι N Αν (Α[i, j] <> 0) και (i < j) τότε

! αν βρεθεί έστω και ένα στοιχείο <> 0 τον αποχαρακτηρίζω κάτω_τριγωνικός ← ψευδής

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αν (άνω_τριγωνικός = αληθής) και (κάτω_τριγωνικός = αληθής) τότε Εκτύπωσε "Ο πίνακας είναι διαγώνιος..." ! ερώτημα iii Αλλιώς_Αν (άνω_τριγωνικός = αληθής) τότε Εκτύπωσε "Ο πίνακας είναι άνω τριγωνικός..." ! ερώτημα i Αλλιώς_Αν (κάτω_τριγωνικός = αληθής) τότε Εκτύπωσε "Ο πίνακας είναι κάτω τριγωνικός..." ! ερώτημα ii Αλλιώς Εκτύπωσε "Ο πίνακας δεν έχει καμία από τις ιδιότητες της εκφώνησης..." Τέλος_αν Τέλος Τριγωνικοί

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 32: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

32

8. Να μετατρέψετε σε κωδικοποίηση το παρακάτω διάγραμμα ροής

Λύση max ← Α[1, 1]

Για i από 1 μέχρι 20 Για j από 1 μέχρι 50 Αν (Α[i, j] > max) τότε max ← Α[i, j]

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Εκτύπωσε max

9. Να αναπτύξετε αλγόριθμο που θα συνενώνει (λειτουργία συγχώνευσης) δύο πίνακες: Α διαστάσεων Ν1xM και Β διαστάσεων Ν2xM

Λύση Θα μεταφέρουμε τον πίνακα Α στο "πάνω μέρος" του πίνακα Γ στις γραμμές 1..Ν1 και στη συνέχεια θα μεταφερθεί ο πίνακας Β στον πίνακα Γ στις γραμμές Ν1+1..Ν1+Ν2. Όμοια, η συνένωση θα μπορούσε να πραγματοποιηθεί κατά "πλάτος" Αλγόριθμος Συνένωση_Πινάκων Δεδομένα // Ν1, Μ, Ν2, Α, Β // Για i από 1 μέχρι Ν1 Για j από 1 μέχρι Μ Γ[i, j] ← A[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από N1+1 μέχρι N1+Ν2 Για j από 1 μέχρι M Γ[i, j] ← B[i - N1, j]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 33: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

33

Τέλος_επανάληψης Τέλος_επανάληψης N ← N1 + N2

Αποτελέσματα // Γ, Ν // Τέλος Συνένωση_Πινάκων

10. Η ΕΜΥ μελετάει τις θερμοκρασίες σε διάφορες πόλεις της Ελλάδας. Καταχωρούνται λοιπόν τα ονόματα των 100 πόλεων που συμμετέχουν στην έρευνα καθώς και οι θερμοκρασίες των πόλεων αυτών τον μήνα που πέρασε. Να αναπτυχθεί αλγόριθμος όπου: i. Θα διαβάζει τα απαραίτητα στοιχεία. Να περιγραφούν οι δομές δεδομένων που θα χρησιμοποιηθούν ii. Θα εντοπίζει και θα εκτυπώνει το όνομα της κατά μέσο όρο θερμότερης πόλης του μήνα iii. Θα εντοπίζει για κάθε πόλη τις μέρες του μήνα όπου υπάρχει θερμοκρασία μεγαλύτερη από την προηγούμενη και την επόμενη μέρα Λύση Θα χρησιμοποιήσουμε δυο πίνακες: τον πίνακα ΟΝΟΜΑΤΑ, μονοδιάστατο 100 θέσεων που θα περιέχει τα ονόματα των πόλεων και τον πίνακα ΘΕΡΜΟΚΡΑΣΙΕΣ[100, 30] που κατέχει αντίστοιχα για κάθε πόλη την ημερήσια θερμοκρασία της. Για τη μέση θερμοκρασία κάθε πόλης θα χρησιμοποιήσουμε μονοδιάστατο πίνακα 100 θέσεων με όνομα ΜΕΣΗ_ΘΕΡΜΟΚΡΑΣΙΑ Αλγόριθμος Επεξεργασία_Θερμοκρασίες Πλήθος ← 100

Για i από 1 μέχρι Πλήθος Διάβασε ΟΝΟΜΑ[i] Για j από 1 μέχρι 30 Διάβασε ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι Πλήθος ! ερώτημα ii άθροισμα ← 0

Για j από 1 μέχρι 30 άθροισμα ← άθροισμα + ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j] Τέλος_επανάληψης ΜΕΣΗ_ΘΕΡΜΟΚΡΑΣΙΑ[i] ← άθροισμα / 30

Τέλος_επανάληψης μέγιστος ← ΜΕΣΗ_ΘΕΡΜΟΚΡΑΣΙΑ[1] θέση ← 1 Για i από 2 μέχρι Πλήθος Αν (ΜΕΣΗ_ΘΕΡΜΟΚΡΑΣΙΑ[i] > μέγιστος) τότε μέγιστος ← ΜΕΣΗ_ΘΕΡΜΟΚΡΑΣΙΑ[i] θέση ← i

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Η θερμότερη κατά μέσο όρο πόλη είναι η ", ΟΝΟΜΑ[θέση] Για i από 1 μέχρι Πλήθος ! ερώτημα iii Εκτύπωσε "Αναφορά για την πόλη", ΟΝΟΜΑ[i] Για j από 2 μέχρι 29 ! η πρώτη και η τελευταία μέρα του μήνα δεν μπορεί ελεγχθεί καθώς δεν

! υπάρχουν στοιχεία για την προηγούμενη και την επόμενη μέρα αντίστοιχα Αν (ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j] > ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j-1])

και (ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j] > ΘΕΡΜΟΚΡΑΣΙΕΣ[i, j+1]) τότε Εκτύπωσε "Ημέρα: ", j Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Τέλος Επεξεργασία_Θερμοκρασίες 11. Να αναπτυχθεί αλγόριθμος που θα επεξεργάζεται τα στοιχεία των αγώνων ποδοσφαίρου. Θα καταχωρεί σε δισδιάστατο πίνακα τα γκολ που πέτυχε κάθε μια από τις 16 ομάδες του πρωταθλήματος σε κάθε μία από τις 32 αγωνιστικές του πρωταθλήματος και θα εκτυπώνει: i. Ποια ομάδα και σε ποια αγωνιστική πέτυχε τα περισσότερα γκολ;

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 34: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

34

ii. Την καλύτερη επίθεση του πρωταθλήματος iii. Την χειρότερη επίθεση του πρωταθλήματος iv. Σε πόσους αγώνες κάθε ομάδα πέτυχε περισσότερα γκολ από το μέσο όρο της; Λύση Θα χρησιμοποιήσουμε δυο πίνακες: τον πίνακα ΟΜΑΔΑ, μονοδιάστατο 16 θέσεων που θα περιέχει τα ονόματα των ομάδων και τον πίνακα ΓΚΟΛ[16, 32] που θα περιέχει αντίστοιχα για κάθε ομάδα τα γκολ που πέτυχε στην αντίστοιχη αγωνιστική. Για την απάντηση των ερωτημάτων ii, iii και iv θα δημιουργήσουμε τον πίνακα ΜΟ_ΓΚΟΛ μονοδιάστατο 16 θέσεων Αλγόριθμος Α_Εθνική Δεδομένα // ΟΜΑΔΑ // Για i από 1 μέχρι 16 Για j από 1 μέχρι 32 Διάβασε ΓΚΟΛ[i, j] Τέλος_επανάληψης Τέλος_επανάληψης μέγιστος ← ΓΚΟΛ[1,1] ! ερώτημα i μεγ_γραμμή ← 1 μεγ_στήλη ← 1

Για i από 1 μέχρι 16 Για j από 1 μέχρι 32 Αν (ΓΚΟΛ[i, j] > μέγιστος) τότε μέγιστος ← ΓΚΟΛ[i, j] μεγ_γραμμή ← i μεγ_στήλη ← j

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Εκτύπωσε "Τα περισσότερα γκολ τα πέτυχε η ομάδα ", ΟΜΑΔΑ[μεγ_γραμμή]," στην ",

μεγ_στήλη, " αγωνιστική" ! τέλος ερώτημα i Για i από 1 μέχρι 16

άθροισμα ← 0

Για j από 1 μέχρι 32 άθροισμα ← άθροισμα + ΓΚΟΛ[i, j]

Τέλος_επανάληψης ΜΟ_ΓΚΟΛ[i] ← άθροισμα / 32

Τέλος_επανάληψης μέγιστος ← ΜΟ_ΓΚΟΛ[1] ! ερώτημα ii θέση ← 1

Για i από 2 μέχρι 16 Αν (ΜΟ_ΓΚΟΛ[i] > μέγιστος) τότε μέγιστος ← ΜΟ_ΓΚΟΛ[i] θέση ← i

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Την καλύτερη επίθεση έχει η ομάδα ", ΟΜΑΔΑ[θέση] ! τέλος ερώτημα ii ελάχιστος ← ΜΟ_ΓΚΟΛ[1] ! ερώτημα iii θέση ← 1

Για i από 2 μέχρι 16 Αν (ΜΟ_ΓΚΟΛ[i] < ελάχιστος) τότε ελάχιστος ← ΜΟ_ΓΚΟΛ[i] θέση ← i

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Την χειρότερη επίθεση έχει η ομάδα ", ΟΜΑΔΑ[θέση] ! τέλος ερώτημα iii Για i από 1 μέχρι 16 ! ερώτημα iv μετρητής ← 0

Για i από 1 μέχρι 32 Αν (ΓΚΟΛ[i, j] > ΜΟ_ΓΚΟΛ[i]) τότε

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 35: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

35

μετρητής ← μετρητής + 1

Τέλος_αν Τέλος_επανάληψης Εκτύπωσε "Η ομάδα ", ΟΜΑΔΑ[i], "έχει πετύχει σε", μετρητής,

" αγωνιστικές περισσότερα γκολ από το μέσο όρο της" Τέλος_επανάληψης Τέλος Α_Εθνική

3. Γενικές στους πίνακες

1. Στο νομό Κορινθίας διενεργείται δημοψήφισμα για ένα φλέγον ζήτημα που αριθμεί 5 απαντήσεις. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει την θέση καθενός από τους 50.000 κατοίκους του Νομού και να εκτυπώνει τα ποσοστά που έλαβαν κάθε μια από τις απαντήσεις με φθίνουσα διάταξη Λύση Ο πίνακας απόψεις (δεδομένα προβλήματος) περιέχει τις 5 διαφορετικές απαντήσεις Θα χρησιμοποιήσουμε τον πίνακα ΠΡΟΤΙΜΗΣΕΙΣ[5] που θα καταχωρείται η καταμέτρηση των ψήφων - πίνακας μετρητών Αλγόριθμος Δημοψήφισμα Δεδομένα // ΑΠΟΨΕΙΣ // Πλήθος ← 50000

Για i από 1 μέχρι 5 ! αρχικοποίηση του πίνακα μετρητών ΠΡΟΤΙΜΗΣΕΙΣ[i] ← 0

Τέλος_Επανάληψης Για i από 1 μέχρι Πλήθος Διάβασε ψήφος Επίλεξε ψήφος Περίπτωση "Α"

ΠΡΟΤΙΜΗΣΕΙΣ[1] ← ΠΡΟΤΙΜΗΣΕΙΣ[1] + 1 Περίπτωση "Β"

ΠΡΟΤΙΜΗΣΕΙΣ[2] ← ΠΡΟΤΙΜΗΣΕΙΣ[2] + 1

Περίπτωση "Γ" ΠΡΟΤΙΜΗΣΕΙΣ[3] ← ΠΡΟΤΙΜΗΣΕΙΣ[3] + 1

Περίπτωση "Δ" ΠΡΟΤΙΜΗΣΕΙΣ[4] ← ΠΡΟΤΙΜΗΣΕΙΣ[4] + 1

Περίπτωση "Ε" ΠΡΟΤΙΜΗΣΕΙΣ[5] ← ΠΡΟΤΙΜΗΣΕΙΣ[5] + 1

Τέλος_Επιλογών Τέλος_Επανάληψης ! τέλος καταμέτρησης

Για i από 1 μέχρι 5 ! υπολογισμός ποσοστών ΠΟΣΟΣΤΟ[i] ← ΠΡΟΤΙΜΗΣΕΙΣ[i] / Πλήθος

Τέλος_Επανάληψης Για i από 2 μέχρι 5 ! ταξινόμηση του πίνακα ΠΟΣΟΣΤΟ Για j από 5 μέχρι i με_βήμα –1

Αν ΠΟΣΟΣΤΟ[j-1] < ΠΟΣΟΣΤΟ[j] τότε ! φθίνουσα ταξινόμηση βοηθητική ← ΠΟΣΟΣΤΟ[j-1] ΠΟΣΟΣΤΟ[j-1] ← ΠΟΣΟΣΤΟ[j] ΠΟΣΟΣΤΟ[j] ← βοηθητική

! αντίστοιχη αντιμετάθεση των στοιχείων του πίνακα ΑΠΟΨΕΙΣ, ! ώστε να παραμείνουν οι πίνακες παράλληλοι

βοηθητική1 ← ΑΠΟΨΕΙΣ[j-1] ΑΠΟΨΕΙΣ[j-1] ← ΑΠΟΨΕΙΣ[j] ΑΠΟΨΕΙΣ[j] ← βοηθητική1

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 36: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

36

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 5 ! εκτύπωση των ποσοστών Εκτύπωσε "Η άποψη ", ΑΠΟΨΕΙΣ[i], " έλαβε ποσοστό ", ΠΟΣΟΣΤΟ[i] Τέλος_Επανάληψης Τέλος Δημοψήφισμα 2. Να αναπτύξετε αλγόριθμο ο οποίος θα καταγράφει σε έναν μονοδιάστατο πίνακα ΟΝΟΜΑΤΑ τα ονόματα 20 αθλητών που συμμετέχουν στον τελικό της σφαιροβολίας και σε έναν δισδιάστατο πίνακα ΕΠΙΔΟΣΕΙΣ τις επιδόσεις κάθε αθλητή στις 5 προσπάθειες που δικαιούται. Στη συνέχεια ο αλγόριθμος να εκτυπώνει τα ονόματα των αθλητών που πήραν μετάλλιο (θεωρούμε οτι μόνο 3 δικαιούνται το μετάλλιο) Λύση Για το δεύτερο ερώτημα πρέπει να δημιουργηθεί ο πίνακας ΜΕΓ_ΕΠΙΔΟΣΗ που θα περιέχει για κάθε αθλητή (δηλαδή γραμμή του πίνακα ΕΠΙΔΟΣΕΙΣ) το μέγιστο. Στη συνέχεια θα ταξινομείται ο πίνακας αυτός με φθίνουσα διάταξη και θα εκτυπώνονται οι 3 πρώτες θέσεις του Αλγόριθμος Σφαιροβολία Για i από 1 μέχρι 20 Διάβασε ΟΝΟΜΑΤΑ[i] Για j από 1 μέχρι 5 Διάβασε ΕΠΙΔΟΣΕΙΣ[i, j] Τέλος_Επανάληψης Τέλος_Επανάληψης Για i από 1 μέχρι 20 μέγιστος ← ΕΠΙΔΟΣΕΙΣ[i, 1]

Για j από 2 μέχρι 5 Αν ΕΠΙΔΟΣΕΙΣ[i, j] > μέγιστος τότε μέγιστος ← ΕΠΙΔΟΣΕΙΣ[i, j]

Τέλος_αν Τέλος_Επανάληψης ΜΕΓ_ΕΠΙΔΟΣΗ[i] ← μέγιστος

Τέλος_Επανάληψης ! Δημιουργήθηκε ο πίνακας ΜΕΓ_ΕΠΙΔΟΣΗ και στη συνέχεια θα ταξινομηθεί Για i από 2 μέχρι 20 Για j από 20 μέχρι i με_βήμα -1

Αν ΜΕΓ_ΕΠΙΔΟΣΗ[j-1] < ΜΕΓ_ΕΠΙΔΟΣΗ[j] τότε ! Φθίνουσα διάταξη βοηθητική ← ΜΕΓ_ΕΠΙΔΟΣΗ[j-1]

ΜΕΓ_ΕΠΙΔΟΣΗ[j-1] ← ΜΕΓ_ΕΠΙΔΟΣΗ[j] ΜΕΓ_ΕΠΙΔΟΣΗ[j] ← βοηθητική βοηθητική1 ← ONOMATA[j-1]

! Αντίστοιχη αντιμετάθεση του πίνακα ΟΝΟΜΑΤΑ ΟNOMATA[j-1] ← ONOMATA[j] ONOMATA[j] ← βοηθητική1

Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης Για i από 1 μέχρι 3 Εκτύπωσε "Την ", i, "η θέση κατέλαβε ο αθλητής ", ΟΝΟΜΑ[i] Τέλος_Επανάληψης Τέλος Σφαιροβολία 3. Να αναπτύξετε αλγόριθμο ο οποίος θα επεξεργάζεται και θα εκδίδει τα αποτελέσματα των μαθητικών εκλογών για το 15μελές συμβούλιο του σχολείου σας. Στο Ενιαίο Λύκειο Χιλιομοδίου το παρόν σχολικό έτος φοιτούν 113 μαθητές σε όλες τις τάξεις και οι υποψήφιοι για το μαθητικό συμβούλιο είναι 35 - κάθε μαθητής έχει δικαίωμα να δώσει μέχρι 3 ψήφους. Επιπρόσθετα, να περιγράψετε τις δομές δεδομένων που χρειάζονται.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 37: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

37

Λύση Θα χρησιμοποιηθούν οι πίνακες: ΜΑΘΗΤΕΣ τύπου αλφαριθμητικών, μονοδιάστατος 113 θέσεων που θα περιέχει τα ονόματα όλων των μαθητών του σχολείου, ο πίνακας ΥΠΟΨΗΦΙΟΙ τύπου αλφαριθμητικών, μονοδιάστατος 35 θέσεων που θα περιέχει τα ονόματα των υποψηφίων (είναι προφανές ότι ο πίνακας ΥΠΟΨΗΦΙΟΙ είναι υποσύνολο του πίνακα ΜΑΘΗΤΕΣ). Τέλος, θα χρησιμοποιηθεί ο πίνακας ΨΗΦΟΙ τύπου λογικός, δισδιάστατος [113, 35] ώστε αν το κελί [2, 1] έχει την τιμή ψευδής τότε ο μαθητής 2 (Γεωργαντάς) δεν ψηφίζει τον μαθητή 1 (Τόγκας) , ενώ αν το κελί [112, 2] έχει την τιμή αληθής σημαίνει πως ο μαθητής 112 (Βαζάρογλου) ψηφίζει τον μαθητή 2 (Αποστόλου). Είναι δεδομένο πως ο πίνακας ΨΗΦΟΙ σε κάθε γραμμή θα έχει μόνο σε τρία κελιά την τιμή αληθής. Στην παρούσα φάση δε θα μας απασχολήσει η δημιουργία του πίνακα ΨΗΦΟΙ Θα χρησιμοποιηθεί και ο πίνακας ΣΥΝ_ΨΗΦΩΝ τύπου αριθμών, μονοδιάστατος 35 θέσεων που θα περιέχει το σύνολο των ψήφων για κάθε υποψήφιο Αλγόριθμος Μαθητικές_Εκλογές Δεδομένα // ΨΗΦΟΙ //

Για i από 1 μέχρι 113 Διάβασε ΜΑΘΗΤΕΣ[i] Τέλος_Επανάληψης

Για i από 1 μέχρι 35 Διάβασε ΥΠΟΨΗΦΙΟΙ[i] Τέλος_Επανάληψης Για i από 1 μέχρι 35 ΣΥΝ_ΨΗΦΩΝ[i] ← 0

Τέλος_Επανάληψης Για i από 1 μέχρι 113

μετρητής ← 0 j ← 1

Όσο (μετρητής <=3) και (j <= 35) επανάλαβε ! Συνεχίζω την επανάληψη μέχρι να βρεθούν τρεις ψήφοι ! ή να εξαντληθεί ο πίνακας

Αν (ΨΗΦΟΙ[i, j] = αληθής) τότε μετρητής ← μετρητής + 1 ΣΥΝ_ΨΗΦΩΝ[j] ← ΣΥΝ_ΨΗΦΩΝ[j] + 1

Αλλιώς j ← j + 1

Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης ! Ταξινόμηση του πίνακα ΣΥΝ_ΨΗΦΩΝ ώστε να καταταχθούν οι υποψήφιοι Για i από 2 μέχρι 35

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 38: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

38

Για j από 35 μέχρι i με βήμα -1 Αν ΣΥΝ_ΨΗΦΩΝ[j-1] < ΣΥΝ_ΨΗΦΩΝ[j] τότε ! Φθίνουσα διάταξη βοηθητική ← ΣΥΝ_ΨΗΦΩΝ[j-1] ΣΥΝ_ΨΗΦΩΝ[j-1] ← ΣΥΝ_ΨΗΦΩΝ[j] ΣΥΝ_ΨΗΦΩΝ[j] ← βοηθητική βοηθητική1 ← ΥΠΟΨΗΦΙΟΙ[j-1]

! Αντίστοιχη αντιμετάθεση του πίνακα ΥΠΟΨΗΦΙΟΙ ΥΠΟΨΗΦΙΟΙ[j-1] ← ΥΠΟΨΗΦΙΟΙ[j] ΥΠΟΨΗΦΙΟΙ[j] ← βοηθητική1 Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης Εκτύπωσε "Ακολουθούν τα μέλη του 15μελούς"

Για i από 1 μέχρι 15 Εκτύπωσε "Την ", i, "η θέση κατέλαβε ο μαθητής ", ΥΠΟΨΗΦΙΟΙ[i] Τέλος_Επανάληψης

Εκτύπωσε "Ακολουθούν τα 5 αναπληρωματικά μέλη του μαθητικού συμβουλίου" Για i από 16 μέχρι 20

Εκτύπωσε "Την ", i-15 , "η θέση κατέλαβε ο μαθητής ", ΥΠΟΨΗΦΙΟΙ[i] Τέλος_Επανάληψης Τέλος Μαθητικές_Εκλογές 4. Να αναπτύξετε τον αλγόριθμο που εκτελεί η εφαρμογή μηχανογράφησης ενός λυκείου για τον υπολογισμό του βαθμού πρόσβασης. θα θεωρήσετε δεδομένους τους προφορικούς βαθμούς των δυο τετραμήνων καθώς και τους γραπτούς βαθμούς των 50 μαθητών της τάξης σε ένα μάθημα και να υπολογίζει τους βαθμούς πρόσβασης των μαθητών (πρέπει να λάβετε υπόψη την διόρθωση βαθμού). Ποιο είναι το όνομα του μαθητή με το μεγαλύτερο βαθμός πρόσβασης; Ποιο ποσοστό μαθητών είχαν βαθμό πρόσβασης κάτω από τη βάση; Λύση Θα χρησιμοποιηθούν οι πίνακες: ΟΝΟΜΑ τύπου αλφαριθμητικών, μονοδιάστατος 50 θέσεων που θα περιέχει τα ονόματα όλων των μαθητών του σχολείου, οι πίνακες ΠΡΟΦ_Α_ΤΕΤ, ΠΡΟΦ_Β_ΤΕΤ, ΓΡΑΠΤ_ΒΑΘΜΟΙ τύπου αριθμητικών που περιέχουν αντίστοιχα τον βαθμό Α τετράμηνου, Β τετράμηνου και τον γραπτό βαθμό για κάθε μαθητή Αλγόριθμος Βαθμολογία Δεδομένα // ΟΝΟΜΑ, ΠΡΟΦ_Α_ΤΕΤ, ΠΡΟΦ_Β_ΤΕΤ, ΓΡΑΠΤ_ΒΑΘΜΟΣ // Για i από 1 μέχρι 50 μέσος_προφ ← (ΠΡΟΦ_Α_ΤΕΤ[i] + ΠΡΟΦ_Β_ΤΕΤ[i]) / 2

Αν (μέσος_προφ - ΓΡΑΠΤ_ΒΑΘΜΟΣ[i] > 2) τότε μέσος_προφ ← ΓΡΑΠΤ_ΒΑΘΜΟΣ[i] + 2

Αλλιώς_αν (ΓΡΑΠΤ_ΒΑΘΜΟΣ[i] - μέσος_προφ > 2) τότε μέσος_προφ ← ΓΡΑΠΤ_ΒΑΘΜΟΣ[i] - 2

Τέλος_αν ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] ← 0.7 * ΓΡΑΠΤ_ΒΑΘΜΟΣ[i] + 0.3 * μέσος_προφ

Τέλος_Επανάληψης ! Ταξινόμηση του πίνακα ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ ώστε να καταταχθούν οι μαθητές

Για i από 2 μέχρι 50 Για j από 50 μέχρι i με_βήμα -1 Αν ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j-1] < ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j] τότε

! Φθίνουσα διάταξη βοηθητική ← ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j-1] ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j-1] ← ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j] ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[j] ← βοηθητική βοηθητική1 ← ΟΝΟΜΑ[j-1]

! Αντίστοιχη αντιμετάθεση του πίνακα ΥΠΟΨΗΦΙΟΙ ΟΝΟΜΑ[j-1] ← ΟΝΟΜΑ[j] ΟΝΟΜΑ[j] ← βοηθητική1

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

Εκτύπωσε "Το μεγαλύτερο βαθμό πρόσβασης έχει ο ", ΟΝΟΜΑ[1] ! ερώτημα 1

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 39: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

39

μετρητής ← 0 ! ερώτημα 2

Για i από 1 μέχρι 50 Αν (ΒΑΘΜΟΣ_ΠΡΟΣΒΑΣΗΣ[i] < 9.5) τότε μετρητής ← μετρητής + 1

Τέλος_αν Τέλος_Επανάληψης ποσοστό ← μετρητής / 50

Εκτύπωσε "Βαθμό πρόσβασης κάτω από τη βάση κατέχει το ", ποσοστό, " % των μαθητών" Τέλος Βαθμολογία 5. Ένας φανατικός συλλέκτης δίσκων βινυλίου αποφάσισε αναπτύξει αλγόριθμο ώστε να μπορεί να επεξεργαστεί στατιστικά την συλλογή του. Διαθέτει 2500 δίσκους και για κάθε έναν από αυτούς επιθυμεί να καταχωρεί τίτλο, καλλιτέχνη και έτος κυκλοφορίας. Να αναπτυχθεί αλγόριθμος που θα διαβάζει σε τρεις μονοδιάστατους πίνακες τα παραπάνω στοιχεία και: i. Θα διαβάζει έναν αριθμό που αντιστοιχεί σε έτος και να εκτυπώνει το πλήθος των δίσκων που κυκλοφόρησαν το έτος αυτό ii. Θα εκτυπώνει το πλήθος και τα ονόματα των διαφορετικών καλλιτεχνών που δίσκοι τους υπάρχουν στη συλλογή Λύση Για την απάντηση του ερωτήματος ii θα δημιουργήσουμε έναν πίνακα που θα προστίθενται σε αυτόν τα μοναδικά ονόματα καλλιτεχνών με όνομα ΜΟΝΑΔΙΚΟΙ. Για κάθε στοιχείο του πίνακα ΚΑΛΛΙΤΕΧΝΗΣ, θα αναζητούμε αν υπάρχει ήδη στον πίνακα ΜΟΝΑΔΙΚΟΙ και αν όχι θα το προσθέτουμε Αλγόριθμος Συλλογή_δίσκων Πλήθος ← 2500

Για i από 1 μέχρι Πλήθος Διάβασε ΤΙΤΛΟΣ[i], ΚΑΛΛΙΤΕΧΝΗΣ[i], ΕΤΟΣ_ΚΥΚΛΟΦ[i] Τέλος_Επανάληψης

Αρχή_Επανάληψης Διάβασε έτος Μέχρις_Ότου (έτος >= 1900) και (έτος <= 2003)

Για i από 1 μέχρι Πλήθος Αν (ΕΤΟΣ_ΚΥΚΛΟΦ[i] = έτος) τότε Εκτύπωσε ΤΙΤΛΟΣ[i], ΚΑΛΛΙΤΕΧΝΗΣ[i] Τέλος_αν Τέλος_Επανάληψης

μετρητής ← 0 ! μετρητής του πίνακα ΜΟΝΑΔΙΚΟΙ

Για i από 1 μέχρι Πλήθος υπάρχει ← ψευδής

! έστω οτι ο τρέχων καλλιτέχνης δεν υπάρχει στον πίνακα ΜΟΝΑΔΙΚΟΙ Για j από 1 μέχρι μετρητής ! ελέγχω, μπορούμε και σειριακή αναζήτηση Αν (ΚΑΛΛΙΤΕΧΝΗΣ[i] = ΜΟΝΑΔΙΚΟΙ[j]) τότε υπάρχει ← αληθής

Τέλος_αν Τέλος_Επανάληψης Αν (υπάρχει = ψευδής) τότε ! αν τελικά, δεν υπάρχει τον τοποθετώ μετρητής ← μετρητής + 1 ΜΟΝΑΔΙΚΟΙ[μετρητής] ← ΚΑΛΛΙΤΕΧΝΗΣ[i]

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

Για i από 1 μέχρι μετρητής ! εκτυπώνω τον πίνακα ΜΟΝΑΔΙΚΟΙ Εκτύπωσε ΜΟΝΑΔΙΚΟΙ[i] Τέλος_Επανάληψης Τέλος Συλλογή_δίσκων 6. Ενόψει των γιορτών η εταιρεία ΧΖΣ αποφάσισε να στείλει ευχετήριες κάρτες στους πελάτες της. Να αναπτυχθεί αλγόριθμος που με δεδομένο δισδιάστατο πίνακα ΣΤΟΙΧΕΙΑ[1000, 3] που περιέχει τα ονοματεπώνυμα των 1000 πελατών της εταιρείας στη στήλη 1, το πατρώνυμο στη στήλη 2 και

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 40: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

40

τις διευθύνσεις των πελατών στη στήλη 3, θα ταξινομεί τα στοιχεία ως προς την πρώτη στήλη και θα εκτυπώνει τα ονόματα και τις διευθύνσεις για τις ευχετήριες κάρτες Λύση Πρέπει να εφαρμοστεί ο αλγόριθμος ταξινόμησης θεωρώντας την πρώτη στήλη ως μονοδιάστατο πίνακα Αλγόριθμος Ευχετήριες_Κάρτες Δεδομένα // ΣΤΟΙΧΕΙΑ // Πλήθος ← 1000

Για i από 2 μέχρι Πλήθος Για j από Πλήθος μέχρι i με_βήμα -1 Αν ΣΤΟΙΧΕΙΑ[j-1, 1] > ΣΤΟΙΧΕΙΑ[j, 1] τότε

! Θα ταξινομήσω με βάση την πρώτη στήλη Για k από 1 μέχρι 3 ! Αντιμετάθεση και για τις 3 στήλες βοηθητική ← ΣΤΟΙΧΕΙΑ[j-1, k] ΣΤΟΙΧΕΙΑ[j-1, k] ← ΣΤΟΙΧΕΙΑ[j, k] ΣΤΟΙΧΕΙΑ[j, k] ← βοηθητική

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

Για i από 1 μέχρι Πλήθος ! Εκτύπωση Εκτύπωσε ΣΤΟΙΧΕΙΑ[i, 1], " του ", ΣΤΟΙΧΕΙΑ[i, 2], " Διεύθυνση: ", ΣΤΟΙΧΕΙΑ[i, 3] Τέλος_Επανάληψης Τέλος Ευχετήριες_Κάρτες 7. Να αναπτύξετε αλγόριθμο που θα διαχειρίζεται τις κρατήσεις σε ένα πολυκινηματογράφο. Σε πίνακα ΕΡΓΟ [15,2] θέσεων υπάρχουν τα έργα που προβάλλονται στην αντίστοιχη αίθουσα στην πρώτη στήλη και λοιπά στοιχεία (ώρα προβολής κ.λ.π.) στη δεύτερη στήλη. Σε μονοδιάστατο πίνακα περιέχεται ΧΩΡΗΤΙΚΟΤΗΤΑ η χωρητικότητα της αντίστοιχης αίθουσας και σε τρίτο πίνακα ΘΕΣΕΙΣ περιέχονται οι μέχρι τώρα δεσμευμένες θέσεις. Να αναπτύξετε αλγόριθμο που θα διαβάζει το όνομα του έργου που επιθυμεί να παρακολουθήσει ο θεατής και να πραγματοποιεί την κράτηση στην πρώτη διαθέσιμη αίθουσα, ενώ αν δεν υπάρχει να εκτυπώνει αντίστοιχο μήνυμα. Για την επανάληψη της διαδικασίας να ερωτάται ο χρήστης αν έχει ολοκληρώσει την καταχώρηση Λύση Αλγόριθμος Κινηματογράφος Δεδομένα // ΕΡΓΟ, ΧΩΡΗΤΙΚΟΤΗΤΑ // Για i από 1 μέχρι 15 ΘΕΣΕΙΣ[i] ← 0

Τέλος_Επανάληψης Αρχή_Επανάληψης Εκτύπωσε "Δώστε τον τίτλο της ταινίας που επιθυμείτε να παρακολουθήσετε" Διάβασε επιθ_έργο ! θα αναζητήσουμε στην πρώτη στήλη του πίνακα ΕΡΓΟ την τιμή επιθ_έργο βρέθηκε ← ψευδής θέση ← 0 i ← 1

Όσο (βρέθηκε = ψευδής) και (i <= 15) επανάλαβε Αν (ΕΡΓΟ[i, 1] = επιθ_έργο) και (ΘΕΣΕΙΣ[i] <= ΧΩΡΗΤΙΚΟΤΗΤΑ[i]) τότε

βρέθηκε ← αληθής θέση ← i

Αλλιώς i ← i + 1

Τέλος_αν Τέλος_επανάληψης Αν (βρέθηκε = αληθής) τότε ΘΕΣΕΙΣ[θέση] ← ΘΕΣΕΙΣ[θέση] + 1

Εκτύπωσε "Ώρα προβολής: ", ΕΡΓΟ[i, 2] Αλλιώς Εκτύπωσε "Μάλλον πρέπει να δείτε κάποιο άλλο έργο"

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 41: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

41

Τέλος_αν Εκτύπωσε "Επιθυμείτε να συνεχίσετε (Ναι/Όχι) ;" Διάβασε απάντηση Μέχρις_Ότου (απάντηση = "Όχι") Τέλος Κινηματογράφος 8. Η εταιρεία διοδίων Πελοποννήσου επιθυμεί να επεξεργαστεί στατιστικά τα στοιχεία των συναλλαγών των ταμείων της. Καταχωρεί λοιπόν τα στοιχεία των 80 ταμείων της σε μονοδιάστο πίνακα με όνομα ΤΑΜΕΙΑ και τις ημερήσιες εισπράξεις σε δισδιάστατο πίνακα ΕΙΣΠΡΑΞΕΙΣ[80,360] (θεωρούμε ότι κάθε μήνας έχει 30 μέρες και το έτος 360) . Να αναπτυχθεί αλγόριθμος που θα διαβάζει τα παραπάνω στοιχεία, θα υπολογίζει και θα εκτυπώνει: i. Το ταμείο με τις περισσότερες εισπράξεις τη χρονιά που πέρασε ii. Το ταμείο με τις λιγότερες εισπράξεις το 2 τρίμηνο της χρονιάς που πέρασε iii. Τα ταμεία που ξεπέρασαν το συνολικό μέσο όρο εισπράξεων Λύση Θα χρησιμοποιήσουμε τους μονοδιάστατους πίνακες ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ, ΕΙΣΠΡΑΞΕΙΣ_ΤΡΙΜ_2 για την επίλυση της άσκησης Αλγόριθμος Εταιρεία_Διοδίων Δεδομένα // ΤΑΜΕΙΑ, ΕΙΣΠΡΑΞΕΙΣ // Πλήθος ← 80

Για i από 1 μέχρι Πλήθος ! ερώτημα i άθροισμα ← 0

Για j από 1 μέχρι 360 άθροισμα ← άθροισμα + ΕΙΣΠΡΑΞΕΙΣ[i, j]

Τέλος_Επανάληψης ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[i] ← άθροισμα

Τέλος_Επανάληψης μέγιστος ← ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[1]

θέση ← 1

Για i από 2 μέχρι Πλήθος Αν (ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[i] > μέγιστος) τότε μέγιστος ← ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[i] θέση ← i

Τέλος_αν Τέλος_Επανάληψης Εκτύπωσε "Το ταμείο διοδίων με τις περισσότερες εισπράξεις είναι το ", ΤΑΜΕΙΑ[θέση] ! τέλος ερώτημα i Για i από 1 μέχρι Πλήθος ! ερώτημα ii άθροισμα ← 0

Για j από 91 μέχρι 180 ! 2ο τρίμηνο άθροισμα ← άθροισμα + ΕΙΣΠΡΑΞΕΙΣ[i, j]

Τέλος_Επανάληψης ΕΙΣΠΡΑΞΕΙΣ_ΤΡΙΜ_2[i] ← άθροισμα Τέλος_Επανάληψης ελάχιστος ← ΕΙΣΠΡΑΞΕΙΣ_ΤΡΙΜ_2[1] θέση ← 1

Για i από 2 μέχρι Πλήθος Αν (ΕΙΣΠΡΑΞΕΙΣ_ΤΡΙΜ_2[i] < ελάχιστος) τότε ελάχιστος ← ΕΙΣΠΡΑΞΕΙΣ_ΤΡΙΜ_2[i] θέση ← i

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

Εκτύπωσε "Το ταμείο διοδίων με τις λιγότερες εισπράξεις είναι το ", ΤΑΜΕΙΑ[θέση] ! τέλος ερώτημα ii

άθροισμα ← 0 ! ερώτημα iii Για i από 1 μέχρι Πλήθος άθροισμα ← άθροισμα + ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[i]

Τέλος_Επανάληψης συν_μέσος_όρος ← άθροισμα / 360 Για i από 1 μέχρι Πλήθος

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 42: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

42

μέσος_όρος ← ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ[i] / 360

Αν (μέσος_όρος > συν_μέσος_όρος) τότε Εκτύπωσε ΤΑΜΕΙΑ[i] Τέλος_αν Τέλος_Επανάληψης Τέλος Εταιρεία_Διοδίων 9. Το στρατολογικό γραφείο Κορίνθου έχει καλέσει την τρέχουσα κλάση να περάσει περιοδεύον. Για τους 3000 νέους υπάρχουν σε 3 μονοδιάστατους πίνακες ισάριθμων θέσεων τα ονόματα, η ημερομηνία γέννησης και το επιλεγμένο σώμα κατάταξης (στρατός ξηράς, ναυτικό, αεροπορία). Να αναπτυχθεί αλγόριθμος όπου: i. Να διαβάζει το όνομα ενός νέου και να εκτυπώνει την ημερομηνία γέννησης καθώς και το σώμα κατάταξης που επέλεξε ii. Να εκτυπώνει σε 3 λίστες αλφαβητικά τα ονόματα των νέων ανά σώμα κατάταξης Λύση Για την επίλυση του δεύτερου ερωτήματος πρέπει να ταξινομηθεί ο πίνακας ΟΝΟΜΑΤΑ με ταυτόχρονη αντιμετάθεση των άλλων δυο πινάκων ώστε να παραμένει σε σχέση η λογική εξάρτηση τους Αλγόριθμος Στρατολογία Δεδομένα // ΟΝΟΜΑΤΑ, ΗΜΕΡ_ΓΕΝΝΗΣΗΣ, ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ // Πλήθος ← 3000

Διάβασε όνομα_αναζ ! ερώτημα i βρέθηκε ← ψευδής ! σειριακή αναζήτηση θέση ← 0 i ← 1

Όσο (βρέθηκε = ψευδής) και (i <= Πλήθος) επανάλαβε Αν (ΟΝΟΜΑΤΑ[i] = όνομα_αναζ) τότε βρέθηκε ← αληθής θέση ← i Αλλιώς i ← i + 1

Τέλος_αν Τέλος_επανάληψης Αν (βρέθηκε = αληθής) τότε Εκτύπωσε "Ημερομηνία γέννησης:", ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[θέση],

" και σώμα κατάταξης:", ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[θέση] Αλλιώς Εκτύπωσε "Δεν υπάρχει νέος με αυτό το όνομα" Τέλος_αν ! Θα ταξινομηθεί ο πίνακας μετρητές με αύξουσα διάταξη και αντίστοιχα

! θα αντιμετατεθούν και οι άλλοι δυο πίνακες Για i από 2 μέχρι Πλήθος Για j από Πλήθος μέχρι i με_βήμα -1 Αν ΟΝΟΜΑΤΑ[j-1] > ΟΝΟΜΑΤΑ[j] τότε βοηθητική ← ΟΝΟΜΑΤΑ[j-1] ΟΝΟΜΑΤΑ[j-1] ← ΟΝΟΜΑΤΑ[j] ΟΝΟΜΑΤΑ[j] ← βοηθητική βοηθητική1 ← ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[j-1]

! Αντίστοιχη αντιμετάθεση του πίνακα ΗΜΕΡ_ΓΕΝΝΗΣΗΣ ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[j-1] ← ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[j] ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[j] ← βοηθητική1 βοηθητική2 ← ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[j-1]

! Αντίστοιχη αντιμετάθεση του πίνακα ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[j-1] ← ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[j] ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[j] ← βοηθητική2

Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης Εκτύπωσε "Ακολουθούν όσοι επέλεξαν στρατό ξηράς"

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 43: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

43

Για i από 1 μέχρι Πλήθος Αν (ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[i] = "στρατός ξηράς") τότε Εκτύπωσε ΟΝΟΜΑΤΑ[i], ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[i] Τέλος_αν Τέλος_Επανάληψης

Εκτύπωσε "Ακολουθούν όσοι επέλεξαν ναυτικό" Για i από 1 μέχρι Πλήθος Αν (ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[i] = "ναυτικό") τότε Εκτύπωσε ΟΝΟΜΑΤΑ[i], ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[i] Τέλος_αν Τέλος_Επανάληψης Εκτύπωσε "Ακολουθούν όσοι επέλεξαν αεροπορία" Για i από 1 μέχρι Πλήθος Αν (ΣΩΜΑ_ΚΑΤΑΤΑΞΗΣ[i] = "αεροπορία") τότε Εκτύπωσε ΟΝΟΜΑΤΑ[i], ΗΜΕΡ_ΓΕΝΝΗΣΗΣ[i] Τέλος_αν Τέλος_Επανάληψης Τέλος Στρατολογία 10. Η εταιρεία "Γιαννιτσιώτης ΕΠΕ" εισάγει και προωθεί 20 προϊόντα στην Ελληνική αγορά - οι τιμές τους περιέχονται σε πίνακα ΤΙΜΕΣ[20] και τα ονόματα στον πίνακα ΕΠΩΝΥΜΙΑ[20]. Οι πωλήσεις σε τεμάχια που επιτευχθήκαν από κάθε έναν από τους 200 πωλητές της εταιρείας περιέχονται σε πίνακα ΠΩΛΗΣΕΙΣ[200, 20] για τα προϊόντα, ενώ τα ονόματα των πωλητών είναι υποθηκευμένες σε πίνακα ΟΝΟΜΑ[200]. Να αναπτυχθεί αλγόριθμος που με δεδομένα τα παραπάνω στοιχεία, θα υπολογίζει και θα εκτυπώνει: i. Το συνολικό ποσό είσπραξης κάθε πωλητή, και την προμήθεια των πωλητών 10% επί των πωλήσεων ii. Τα 5 προϊόντα με τις περισσότερες πωλήσεις (να θεωρήσετε ότι είναι μόνο 5) Λύση Αλγόριθμος Πωλήσεις_Προϊόντων Δεδομένα // ΤΙΜΕΣ, ΠΩΛΗΣΕΙΣ //

Για i από 1 μέχρι 200 ! ερώτημα i ! δημιουργία πίνακα ΕΙΣΠΡΑΞΕΙΣ ανά πωλητή άθροισμα ← 0

Για j από 1 μέχρι 20 άθροισμα ← άθροισμα + ΠΩΛΗΣΕΙΣ[i, j] * ΤΙΜΕΣ[j]

Τέλος_Επανάληψης ΕΙΣΠΡΑΞΕΙΣ[i] ← άθροισμα

Τέλος_Επανάληψης Για i από 1 μέχρι 200 Εκτύπωσε "Ο πωλητής ", ΟΝΟΜΑ[i], " θα πάρει προμήθεια ", 0.1 * ΕΙΣΠΡΑΞΕΙΣ[i]

! τέλος ερώτημα i Τέλος_Επανάληψης Για j από 1 μέχρι 20 ! ερώτημα ii ! δημιουργία πίνακα ΤΕΜ_ΠΩΛΗΣΕΙΣ ανά προϊόν άθροισμα ← 0 Για i από 1 μέχρι 200 άθροισμα ← άθροισμα + ΕΙΣΠΡΑΞΕΙΣ[i, j]

Τέλος_Επανάληψης ΤΕΜ_ΠΩΛΗΣΕΙΣ[j] ← άθροισμα

Τέλος_Επανάληψης ! φθίνουσα ταξινόμηση του πίνακα ΤΕΜ_ΠΩΛΗΣΕΙΣ Για i από 2 μέχρι 6 Για j από 6 μέχρι i με_βήμα –1 ! φθίνουσα ταξινόμηση Αν ΤΕΜ_ΠΩΛΗΣΕΙΣ[j-1] < ΤΕΜ_ΠΩΛΗΣΕΙΣ[j] τότε βοηθητική ← ΤΕΜ_ΠΩΛΗΣΕΙΣ[j-1] ΤΕΜ_ΠΩΛΗΣΕΙΣ[j-1] ← ΤΕΜ_ΠΩΛΗΣΕΙΣ[j] ΤΕΜ_ΠΩΛΗΣΕΙΣ[j] ← βοηθητική βοηθητική1 ← ΕΠΩΝΥΜΙΑ[j-1] ΕΠΩΝΥΜΙΑ[j-1] ← ΕΠΩΝΥΜΙΑ[j]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 44: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

44

ΕΠΩΝΥΜΙΑ[j] ← βοηθητική1

Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 5 ! εκτύπωση των 5 πιο εμπορικών προϊόντων Εκτύπωσε i, "ο προϊόν είναι το ", ΕΠΩΝΥΜΙΑ[i] Τέλος_Επανάληψης Τέλος Πωλήσεις_Προϊόντων

12. Σε πίνακα 1000 θέσεων διαβάζονται με τη βοήθεια αλγορίθμου οι ονομασίες των προϊόντων ενός πολυκαταστήματος. Η θέση στον πίνακα κάθε προϊόντος δείχνει και τον κωδικό του. Δηλ. το προϊόν με κωδικό i αποθηκεύεται στην i-οστη θέση του πίνακα. Σε δεύτερο πίνακα διαβάζεται η τιμή κάθε προϊόντος και σε τρίτο πίνακα ο αριθμός τεμαχίων που διαθέτει το κατάστημα ως απόθεμα. Αφού διαβαστούν τα δεδομένα ο αλγόριθμος θα διευκολύνει τον υπεύθυνο καταστήματος στα ακόλουθα: α) Ο αλγόριθμος θα διαβάζει τον κωδικό ενός προϊόντος και θα εμφανίζει τα υπόλοιπα τρία στοιχεία του. β) Ο αλγόριθμος θα εμφανίζει τα στοιχεία των προϊόντων χωρίς απόθεμα. γ) Ο αλγόριθμος θα εμφανίζει τα στοιχεία των προϊόντων με το μεγαλύτερο απόθεμα. δ) Ο αλγόριθμος θα διαβάζει την ονομασία ενός προϊόντος και αν υπάρχει στην αποθήκη θα εμφανίζει το απόθεμά του. Διαφορετικά θα ενημερώνει με σχετικό μήνυμα για την μη ύπαρξη του προϊόντος. ε) Να εμφανίζει τα στοιχεία των πινάκων σε φθίνουσα σειρά αποθέματος. Σε περίπτωση που κάποια προϊόντα έχουν ίδιο απόθεμα, να εμφανίζονται πρώτα τα προϊόντα αλφαβητικά ταξινομημένα.

Απάντηση

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

Στο β ερώτημα, πρέπει να εμφανιστούν τα στοιχεία των προϊόντων όπου ΑΠΟΘ[i] = 0.

Για το γ ερώτημα απαιτείται ο υπολογισμός του max ΑΠΟΘ[i] και έπειτα η εμφάνιση των προϊόντων όπου ΑΠΟΘ[i] = max.

Το δ ερώτημα είναι σειριακή αναζήτηση στον πίνακα.

Το ε ερώτημα απαιτεί ταξινόμηση στον πίνακα και σε περίπτωση ισότητας αποθεμάτων να γίνεται σύγκριση των ονομάτων.

Αλγόριθμος Ασκ

Για i από 1 μέχρι 1000

Διάβασε ΟΝ[i], Τ[i], ΑΠΟΘ[i]

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

Διάβασε i ! ερώτημα α

Εμφάνισε ΟΝ[i], Τ[i], ΑΠΟΘ[i]

Για i από 1 μέχρι 1000 ! ερώτημα β

Αν ΑΠΟΘ[i] = 0 τότε

Εμφάνισε ΟΝ[i], Τ[i], ΑΠΟΘ[i]

Τέλος_αν

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

max ← -1 ! ερώτημα γ

Για i από 1 μέχρι 1000

Αν ΑΠΟΘ[i] > max τότε

Παραδείγματα πινάκων εισόδου ON Τ ΑΠΟΘ

1 Υπολογ. 1000 23 2 Τηλέφ. 264 48

… … … … 1000 Εκτυπωτ. 99 0

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 45: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

45

max ← ΑΠΟΘ[i]

Τέλος_αν

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

Για i από 1 μέχρι 1000

Αν ΑΠΟΘ[i] = max τότε

Εμφάνισε ΟΝ[i], Τ[i], ΑΠΟΘ[i]

Τέλος_αν

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

Διάβασε ΟΝΠΡ ! ερώτημα δ

flag ← Ψευδής

i ← 1

Όσο i <= 1000 και flag = Ψευδής επανάλαβε

Αν ΟΝ[i] = ΟΝΠΡ τότε

flag ← Αληθής

Εμφάνισε ΑΠΟΘ[i]

Τέλος_αν

i ← i + 1

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

Αν flag = Ψευδής τότε

Εμφάνισε "Μη υπαρκτό προϊόν"

Τέλος_αν

Για i από 2 μέχρι 1000 ! ερώτημα ε

Για j από 1000 μέχρι i με_βήμα -1

Αν ΑΠΟΘ[j-1] < ΑΠΟΘ[j] τότε

Αντιμετάθεσε ΑΠΟΘ[j-1], ΑΠΟΘ[j]

Αντιμετάθεσε Τ[j-1], Τ[j]

Αντιμετάθεσε ΟΝ[j-1], ΟΝ[j]

Αλλιώς_αν ΑΠΟΘ[j-1] = ΑΠΟΘ[j] τότε

Αν ΟΝ[j-1] > ΟΝ[j] τότε

Αντιμετάθεσε Τ[j-1], Τ[j]

Αντιμετάθεσε ΟΝ[j-1], ΟΝ[j]

Τέλος_αν

Τέλος_αν

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

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

Για i από 1 μέχρι 1000

Εμφάνισε ΟΝ[i], Τ[i], ΑΠΟΘ[i]

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

Τέλος Ασκ

13. Να γραφεί αλγόριθμος που για 100 φοιτητές θα διαβάζει το βαθμό τους στα 48 μαθήματα που έχουν

εξεταστεί στη διάρκεια των σπουδών τους. Επίσης θα διαβάζει το επίθετο των φοιτητών και τον αριθμό μητρώου τους. α) Για να πάρει πτυχίο ένας φοιτητής πρέπει και στα 48 μαθήματα να έχει βαθμό τουλάχιστον 5. Να εμφανιστούν τα επίθετα και οι αριθμοί μητρώων αυτών που μπορούν να πάρουν πτυχίο. β) Για όσους παίρνουν πτυχίο να εμφανιστεί το επίθετό τους, ο αριθμός μητρώου, ο μέσος όρος τους και ένας από τους ακόλουθους χαρακτηρισμούς ανάλογα με το μέσο όρο:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 46: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

46

Σχεδόν Καλώς [5 - 6,5) Καλώς [6,5 - 7,5) Λίαν Καλώς [7,5 - 8,5) Άριστα [8,5 - 10] Θεωρείστε ότι οι βαθμοί εισόδου είναι μεταξύ 0 και 10.

Απάντηση

α) Για να πάρει πτυχίο κάποιος φοιτητής πρέπει σε 48 μαθήματα να έχει βαθμό μεγαλύτερο ή ίσο του 5. Άρα πρέπει να υπολογίσουμε για κάθε φοιτητή το πλήθος των μαθημάτων που έχει βαθμό μεγαλύτερο ή του 5. Χρειαζόμαστε το πλήθος κατά γραμμή διότι οι φοιτητές, όπως και οι γραμμές, είναι 100. β) Θα υπολογιστεί ο μέσος όρος ανά φοιτητή (κατά γραμμή) και θα εμφανιστεί ο μέσος όρος μόνο των φοιτητών που παίρνουν πτυχίο.

Αλγόριθμος Ασκ Για i από 1 μέχρι 100 ! διάβασμα πινάκων

Για j από 1 μέχρι 48 Διάβασε B[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 100

Διάβασε ΟΝ[i], ΑΜ[i]

Τέλος_επανάληψης Για i από 1 μέχρι 100 ! α ερώτημα

πλ[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 100

Για j από 1 μέχρι 48 Αν B[i, j] >= 5 τότε

πλ[i] ← πλ[i] + 1

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

Τέλος_επανάληψης Για i από 1 μέχρι 100

Αν πλ[i] = 48 τότε Εμφάνισε ΟΝ[i], ΑΜ[i]

Τέλος_αν Τέλος_επανάληψης Για i από 1 μέχρι 100 ! β ερώτημα

Α[i] ← 0 Τέλος_επανάληψης Για i από 1 μέχρι 100

Για j από 1 μέχρι 48 Α[i] ← Α[i] + Β[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 100 ! υπολογισμός μέσου όρου όλων των φοιτητών

ΜΟ[i] ← Α[i]/48 Αν πλ[i] = 48 τότε ! εμφάνιση μόνο όσων παίρνουν πτυχίο

Εμφάνισε ΟΝ[i], ΑΜ[i], ΜΟ[i] Αν ΜΟ[i] < 6.5 τότε ! εφόσον παίρνει πτυχίο, ο ΜΟ είναι >= 5

Εμφάνισε "Σχεδόν Καλώς" Αλλιώς_αν ΜΟ[i] < 7.5 τότε

Εμφάνισε "Καλώς" Αλλιώς_αν ΜΟ[i] < 8.5 τότε

Εμφάνισε "Λίαν Καλώς"

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 47: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

47

Αλλιώς Εμφάνισε "Άριστα"

Τέλος_αν Τέλος_αν

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

14. Στα πλαίσια στατιστικής μελέτης εισάγουμε σε πίνακα 10x70 τους βαθμούς γραπτών στο μάθημα της

Α.Ε.Π.Π. από 10 σχολεία του Ν. Αττικής. Οι μαθητές ανά σχολείο είναι από 50 ως και 70. Αν έναν σχολείο έχει λιγότερους από 70 μαθητές τότε εισάγεται -1 στις θέσεις του πίνακα για τις οποίες δεν υπάρχει βαθμός (π.χ. αν το πρώτο σχολείο έχει 67 μαθητές τότε τα στοιχεία Π[1, 68], Π[1, 69], Π[1, 70] θα έχουν τιμή -1). Επίσης διαβάζουμε τους τίτλους των σχολείων σε 2ο πίνακα. α) Να γίνει έλεγχος ορθής καταχώρησης βαθμολογίας. Ο μέγιστος βαθμός επιτρέπεται να είναι 20 και ο ελάχιστος ακολουθεί την πιο πάνω λογική. β) Για καθένα από τα σχολεία να εμφανιστεί ο μέσος όρος του μετά τον τίτλο του. γ) Να εμφανιστούν οι ονομασίες σχολείων με το μικρότερο ποσοστό αριστούχων στο μάθημα (βαθμός μαθήματος > 19). δ) Να εμφανιστεί σε πόσα σχολεία υπήρχε μαθητής με βαθμό στο μάθημα της Α.Ε.Π.Π. κάτω από τη βάση (< 9.5).

Απάντηση

α) Η ελάχιστη τιμή που μπορεί να εισαχθεί στον πίνακα είναι -1. β) Πρέπει να βρούμε 10 μέσους όρους όσα και τα σχολεία και όσες και οι γραμμές. Άρα χρειαζόμαστε το άθροισμα κατά γραμμή και το πλήθος των έγκυρων βαθμών κατά γραμμή. Στη συγκεκριμένη άσκηση δεν έχουμε 70 έγκυρα στοιχεία σε κάθε γραμμή, άρα πρέπει να υπολογίσουμε τους βαθμούς ανά γραμμή, δηλαδή τον πλήθος των βαθμών ανά γραμμή. γ) Πρέπει να βρούμε το ποσοστό αριστούχων ανά σχολείο και έπειτα να βρούμε το σχολείο με το μικρότερο ποσοστό. δ) Πρέπει να υπολογίσουμε σε πόσες γραμμές υπήρχε βαθμός μικρότερος από 9.5. Θα υπολογίσουμε το πλήθος των βαθμών ανά γραμμή (ανά σχολείο) που είναι μικρότεροι από 9.5 και έπειτα τον αριθμό των φορών (πλήθος) όπου το πλήθος κατά γραμμή ήταν >= 1. Έτσι θα βρούμε πόσα σχολεία είχαν τουλάχιστον έναν βαθμό < 9.5.

Αλγόριθμος Ασκ Για i από 1 μέχρι 10 ! διάβασμα πινάκων

Για j από 1 μέχρι 70

Αρχή_επανάληψης Διάβασε Β[i, j]

Μέχρις_ότου Β[i, j] >= -1 και Β[i, j] <= 20

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 10

Διάβασε ΣΧ[i]

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

Για i από 1 μέχρι 10 ! β ερώτημα Α[i] ← 0 πλ[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 10

Για j από 1 μέχρι 70 Αν B[i, j] > -1 τότε

Α[i] ← A[i] + Β[i, j] πλ[i] ← πλ[i] + 1

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

Τέλος_επανάληψης Για i από 1 μέχρι 10

ΜΟ[i] ← Α[i]/πλ[i]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 48: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

48

Εμφάνισε ΣΧ[i], ΜΟ[i]

Τέλος_επανάληψης Για i από 1 μέχρι 10 ! γ ερώτημα

πληθ[i] ← 0 Τέλος_επανάληψης Για i από 1 μέχρι 10

Για j από 1 μέχρι 70 Αν B[i, j] > 19 τότε

πληθ[i] ← πληθ[i] + 1

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

Τέλος_επανάληψης Για i από 1 μέχρι 10

ΠΟΣ[i] ← πληθ[i]*100/πλ[i] ! το πλ[i] υπολογίστηκε στο β ερώτημα

Τέλος_επανάληψης min ← 10^6 Για i από 1 μέχρι 10

Αν ΠΟΣ[i] < min τότε min ← ΠΟΣ[i]

Τέλος_αν Τέλος_επανάληψης Για i από 1 μέχρι 10

Αν ΠΟΣ[i] = min τότε Εμφάνισε ΣΧ[i]

Τέλος_αν Τέλος_επανάληψης Για i από 1 μέχρι 10 ! δ ερώτημα

πλΚ[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 50

Για j από 1 μέχρι 70 Αν B[i, j] < 9.5 τότε

πλΚ[i] ← πλΚ[i] + 1

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

Τέλος_επανάληψης πλήθος ← 0 Για i από 1 μέχρι 10

Αν πλΚ[i] >= 1 τότε πλήθος ← πλήθος + 1

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

Τέλος Ασκ

15. Μια εταιρεία κινητής τηλεφωνίας κάνει δειγματοληπτικό έλεγχο πελατών. Να γραφεί αλγόριθμος που θα διαβάζει τον αριθμό λεπτών που μίλησαν 500 πελάτες της εταιρείας κάθε μήνα του τελευταίου έτους. Να δημιουργηθεί δεύτερος πίνακας που θα περιέχει τη χρέωση σε Ευρώ ανά μήνα για κάθε πελάτη. Η χρέωση είναι κλιμακωτή ως εξής: ▪ 0-10 λεπτά 0.40 λεπτά του Ευρώ ανά λεπτό, ▪ στα υπόλοιπα λεπτά η χρέωση είναι 0.20 ανά λεπτό. α) Να υπολογιστεί και εμφανιστεί η συνολική χρέωση για το έτος ανά πελάτη. β) Να υπολογιστεί και εμφανιστεί το συνολικό καθαρό κέρδος της εταιρείας. Η εταιρεία έχει καθαρό κέρδος ίσο με 20% του συνολικού ποσού που εισέπραξε στη διάρκεια του έτους.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 49: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

49

γ) Να υπολογιστεί και εμφανιστεί ο αριθμός των πελατών που το δεύτερο τρίμηνο είχαν συνολικά μικρότερο χρόνο ομιλίας από ότι στο τρίτο τρίμηνο.

Απάντηση

Αφού διαβαστεί ο πρώτος δισδιάστατος πίνακας 500x12, πρέπει να δημιουργηθεί δεύτερος πίνακας 500x12 που θα περιέχει τη χρέωση ανά μήνα για κάθε πελάτη. Έπειτα πρέπει να υπολογιστεί το άθροισμα κατά γραμμή για τη συνολική χρέωση έτους ανά πελάτη. Για το β ερώτημα πρέπει να βρεθεί το συνολικό άθροισμα των χρεώσεων και έπειτα να υπολογιστεί το 20%. Για το γ ερώτημα πρέπει να υπολογιστεί ανά πελάτη ο χρόνος ομιλίας για το 2ο τρίμηνο (j από 4 μέχρι 6) και για το 3ο τρίμηνο (j από 7 μέχρι 9) Έπειτα πρέπει να υπολογιστεί το πλήθος όπου το πρώτο άθροισμα ανά πελάτη είναι μικρότερο από το δεύτερο άθροισμα.

Αλγόριθμος Ασκ

Για i από 1 μέχρι 500

Για j από 1 μέχρι 12

Διάβασε Λ[i, j]

Αν Λ[i, j] <= 10 τότε

Χ[i, j]← Λ[i, j]*0.40

Αλλιώς

Χ[i, j]← 10*0.40 + (Λ[i, j] - 10)*0.20

Τέλος_αν

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

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

Για i από 1 μέχρι 500 ! ερώτημα α

sum[i] ← 0

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

Για i από 1 μέχρι 500

Για j από 1 μέχρι 12

sum[i] ← sum[i] + Χ[i, j]

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

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

Για i από 1 μέχρι 500

Εμφάνισε sum[i]

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

αθρ ← 0 ! ερώτημα β

Για i από 1 μέχρι 500

αθρ ← αθρ + sum[i]

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

Κ ← αθρ*0.20

Εμφάνισε Κ

Για i από 1 μέχρι 500 ! ερώτημα γ

s1[i] ← 0

s2[i] ← 0

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

Για i από 1 μέχρι 500

Για j από 4 μέχρι 6

s1[i] ← s1[i] + Λ[i, j]

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

Για j από 7 μέχρι 9

s2[i] ← s2[i] + Λ[i, j]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 50: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

50

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

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

πλ ← 0

Για i από 1 μέχρι 500

Αν s1[i] < s2[i] τότε

πλ ← πλ + 1

Τέλος_αν

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

Εμφάνισε πλ

Τέλος Ασκ

16. Στα πλαίσια του οικονομικού ελέγχου, το υπουργείο οικονομικών θέλει να ελέγξει τους φορολογούμενους που ο κωδικός ειδικότητάς τους αρχίζει με έναν από τους αριθμούς 112, 173, 341, 462, ή 734. Οι κωδικοί ειδικότητας είναι 6-ψήφιοι ακέραιοι αριθμοί, π.χ. 112564. Να γραφεί αλγόριθμος που: α) Για καθέναν από 350000 φορολογούμενους διαφόρων ειδικοτήτων, θα διαβάζει σε μονοδιάστατους πίνακες το ΑΦΜ τους (ένας ακέραιος αριθμός) και τον κωδικό ειδικότητάς τους. Σε δισδιάστατο πίνακα θα διαβάζονται τα έσοδα που δήλωσαν στην εφορία και τα έσοδα που υπολόγισε το υπουργείο οικονομικών με βάση τα ακίνητά τους και τα οχήματά τους. Θεωρούμε ότι πάντα τα δηλωθέντα είναι το πολύ ίσα με τα υπολογισθέντα. β) Για καθέναν φορολογούμενο που ανήκει σε κάποια από τις παραπάνω ειδικότητες θα εμφανίζει το ΑΦΜ του μόνο αν τα δηλωθέντα έσοδα υπολείπονται κατά τουλάχιστον 10% από τα υπολογισμένα από το υπουργείο έσοδα. γ) Θα υπολογίζει σε δισδιάστατο πίνακα 5x2, το σύνολο των δηλωθέντων χρημάτων και το σύνολο των υπολογισθέντων χρημάτων καθεμίας από τις παραπάνω 5 ειδικότητες. Στη συνέχεια θα εμφανίζει την πρώτη στήλη του πίνακα. δ) Με βάση τα δεδομένα εισόδου θα υπολογίζει και εμφανίζει τον αριθμό αυτών που έχουν δηλώσει τουλάχιστον 100€ και μέχρι 1000€ λιγότερα σε σχέση με τα υπολογισμένα από το υπουργείο, αυτών που έχουν δηλώσει από 1000€ έως και 10000€ λιγότερα και αυτών που έχουν δηλώσει από 10000€ και πάνω, λιγότερα από ότι έπρεπε.

Απάντηση

α) Πρέπει να διαβαστούν δύο πίνακες 350000 και ένας πίνακας 350000x2. β) Πρέπει πρώτα να γίνει έλεγχος αν τα τρία πρώτα ψηφία του ΑΦΜ είναι 112, 173, 341, 462, ή 734. Έπειτα πρέπει να γίνει έλεγχος των εσόδων που δηλώθηκαν (ΕΣ[i, 1]) σε σχέση με τα έσοδα που υπολογίστηκαν (ΕΣ[i, 2]). Το ποσοστό υπολογίζεται ως: Στα ΕΣ[i, 2] έχουμε ΕΣ[i, 2] - ΕΣ[i, 1] λιγότερα έσοδα, Στα 100 x; Αν το ποσοστό είναι θετικό και μεγαλύτερο από 10, τότε θα εμφανίζονται το ΑΦΜ. γ) Πρέπει να υπολογιστεί το άθροισμα της πρώτης και το άθροισμα της δεύτερης στήλης του πίνακα ΕΣ[i, j]. δ) Πρέπει να υπολογιστούν 3 πλήθη όπου οι διαφορές των 2 στηλών του πίνακα είναι ανάμεσα στα όρια 100 – 1000, 1000 – 10000, >= 10000.

Αλγόριθμος Ασκ

Για i από 1 μέχρι 350000 ! ερώτημα α

Διάβασε ΑΦΜ[i], Κ[i]

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

Για i από 1 μέχρι 350000

Για j από 1 μέχρι 2

Διάβασε ΕΣ[i, j]

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

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

Για i από 1 μέχρι 350000 ! ερώτημα β

ΑΡ ← Κ[i] div 1000 ! πρώτο 3-ψήφιο τμήμα

Αν ΑΡ = 112 ή ΑΡ = 173 ή ΑΡ = 341 ή ΑΡ = 462 ή ΑΡ = 734 τότε

Αν (ΕΣ[i, 2] - ΕΣ[i, 1])*100/ΕΣ[i, 2] >= 10 τότε

Εμφάνισε ΑΦΜ[i]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 51: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

51

Τέλος_αν

Τέλος_αν

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

Για i από 1 μέχρι 5 ! ερώτημα γ

Για j από 1 μέχρι 2

SUM[i, j] ← 0

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

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

Για i από 1 μέχρι 350000

ΑΡ ← Κ[i] div 1000

Αν ΑΡ = 112 τότε

SUM[1, 1] ← SUM[1, 1] + ΕΣ[i, 1]

SUM[1, 2] ← SUM[1, 2] + ΕΣ[i, 2]

Αλλιώς_αν ΑΡ = 173 τότε

SUM[2, 1] ← SUM[2, 1] + ΕΣ[i, 1]

SUM[2, 2] ← SUM[2, 2] + ΕΣ[i, 2]

Αλλιώς_αν ΑΡ = 341 τότε

SUM[3, 1] ← SUM[3, 1] + ΕΣ[i, 1]

SUM[3, 2] ← SUM[3, 2] + ΕΣ[i, 2]

Αλλιώς_αν ΑΡ = 462 τότε

SUM[4, 1] ← SUM[4, 1] + ΕΣ[i, 1]

SUM[4, 2] ← SUM[4, 2] + ΕΣ[i, 2]

Αλλιώς_αν ΑΡ = 173 τότε

SUM[5, 1] ← SUM[5, 1] + ΕΣ[i, 1]

SUM[5, 2] ← SUM[5, 2] + ΕΣ[i, 2]

Tέλος_αν

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

Για i από 1 μέχρι 5

Εμφάνισε SUM[i, 1]

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

πλ1 ← 0 ! ερώτημα γ

πλ2 ← 0

πλ3 ← 0

Για i από 1 μέχρι 350000

Δ ← ΕΣ[i, 2] - ΕΣ[i, 1]

Αν Δ >= 100 και Δ <= 1000 τότε

πλ1 ← πλ1 + 1

Αλλιώς_αν Δ > 1000 και Δ <= 10000 τότε

πλ2 ← πλ2 + 1

Αλλιώς_αν Δ > 10000 τότε

πλ3 ← πλ3 + 1

Tέλος_αν

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

Εμφάνισε πλ1, πλ2, πλ3

Τέλος Ασκ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 52: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

52

Άλυτες Ασκήσεις

1. Μονοδιάστατοι Πίνακες

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

2. Να αναπτυχθεί αλγόριθμος με δεδομένο έναν πίνακα Ν στοιχείων θα εκτυπώνει το πλήθος των άρτιων

3. Να αναπτυχθεί αλγόριθμος που θα διαβάζει έναν αριθμό μεγαλύτερο του 10, να διαβάζει αντίστοιχες ρίψεις ζαριού και να εμφανίζει την συχνότητα εμφάνισης κάθε αριθμού, ποια ζαριά εμφανίστηκε περισσότερες φορές και ποια λιγότερες;

4. Να αναπτυχθεί αλγόριθμος που θα διαβάζει Ν αριθμούς σε έναν μονοδιάστατο πίνακα και στη συνέχεια θα υπολογίζει και θα εκτυπώνει το μέγιστο καθώς και τις θέσεις του πίνακα που αυτό εντοπίζεται. Μπορείτε να υλοποιήσετε τον αλγόριθμο με μια προσπέλαση του πίνακα;

5. Να αναπτυχθεί αλγόριθμος που θα δημιουργεί μονοδιάστατο πίνακα τοποθετώντας την τιμή -1 στις περιττές θέσεις και 1 στις άρτιες

6. Ένας συλλέκτης γραμματοσήμων αποφάσισε να χρησιμοποιήσει τις εξής δομές δεδομένων για την διαχείριση της συλλογής του: πίνακα με όνομα ΘΕΜΑ που περιέχει το θέμα του κάθε γραμματοσήμου, πίνακα ΕΤΟΣ που. Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τα συλλεκτικά κομμάτια που υπάρχουν στη συλλογή και το πλήθος τους

7. Η εταιρεία "Χαραμόπετρος Α.Ε." καταγράφει τα μηνιαία έσοδά της σε πίνακα ΕΣΟΔΑ 12 θέσεων και τα έξοδά της σε πίνακα ΕΞΟΔΑ αντίστοιχα, ταυτόχρονα υπάρχει πίνακας ΜΗΝΑΣ 12 θέσεων που περιέχει τα ονόματα των μηνών. Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τον μήνα που:

i. Εμφανίστηκαν τα ελάχιστα έσοδα

ii. Εμφανίστηκαν τα μέγιστα έξοδα

iii. Εμφανίστηκαν τα μέγιστα κέρδη

Η χρονιά ήταν κερδοφόρα για την εταιρεία ή όχι;

8. Να αναπτύξετε αλγόριθμο που θα καταγράφει σε δισδιάστατο πίνακα ΖΑΡΙΕΣ τις 500 ρίψεις ενός παιχνιδιού τάβλι. Στη συνέχεια ο αλγόριθμος πρέπει να υπολογίζει και να εκτυπώνει:

α) πόσες διπλές καταγράφηκαν;

β) Πόσες ζαριές είχαν άθροισμα 11;

γ) Τι ποσοστό των ζαριών ήταν ντόρτια (τεσσάρες);

9. Ο διαχειριστής μιας πολυκατοικίας χρησιμοποιεί τις ακόλουθες δομές δεδομένων για την διαχείριση των οικονομικών: μονοδιάστατος πίνακας ΟΝΟΜΑ με τα ονόματα των 25 ιδιοκτητών διαμερισμάτων της πολυκατοικίας και επίσης μονοδιάστατος πίνακας ΤΜ που περιέχει αντίστοιχα τα τετραγωνικά μέτρα του κάθε διαμερίσματος. Να αναπτύξετε αλγόριθμο που θα διαβάζει το συνολικό ποσό κοινοχρήστων και θα επιμερίζει τα έξοδα στους ιδιοκτήτες διαμερισμάτων με βάση τα τετραγωνικά μέτρα

2. Δισδιάστατοι Πίνακες

1. Να αναπτυχθεί αλγόριθμος που θα δημιουργεί τον παρακάτω πίνακα:

i. 1 2 3 4 ii. 1 0 0 1

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 53: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

53

5 6 7 8

9 10 11 12

13 14 15 16

0 1 1 0

0 1 1 0

1 0 0 1

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

3. Να αναπτύξετε αλγόριθμο ο οποίος με δεδομένα τα στοιχεία δυο δισδιάστατων πινάκων αριθμών ιδίων διαστάσεων θα επιστρέφει νέο πίνακα όπου κάθε στοιχείο του θα είναι:

i. το διαφορά των αντίστοιχων κελιών των δυο αρχικών πινάκων

ii. το γινόμενο των αντίστοιχων κελιών των δυο αρχικών πινάκων

4. Να αναπτυχθεί αλγόριθμος που με δεδομένα τα στοιχεία ενός δισδιάστατου πίνακα Α[10, 15] να υπολογίζει και να εκτυπώνει:

i. Το άθροισμα των στοιχείων της γραμμής 7

ii. Το μέσο όρο των στοιχείων της στήλης 12

iii. Το μέγιστο των στοιχείων της κυρίας διαγωνίου

5. Να αναπτύξετε αλγόριθμο που θα εντοπίζει το ελάχιστο σ' ένα δισδιάστατο πίνακα και θα εκτυπώνει τη θέση του (γραμμή και στήλη)

i. στην πρώτη θέση που αυτό εντοπίστηκε

ii. στην τελευταία θέση που αυτό εντοπίστηκε

6. Να αναπτύξετε αλγόριθμο που θα καταχωρεί σε μονοδιάστατο πίνακα ΠΕΡΙΟΧΗ τα ονόματα 200 περιοχών στην Ελλάδα και σε δισδιάστατο πίνακα ΜΕΤΡΗΣΕΙΣ[200, 100] τις 100 μετρήσεις που έχουν πραγματοποιηθεί για κάθε περιοχή αντίστοιχα και στη συνέχεια :

i. Να εντοπίζει και θα εκτυπώνει το όνομα της περιοχής με τη μεγαλύτερη μέση μόλυνση

ii. Να εντοπίζει το μέγιστο που καταγράφηκε στην έρευνα καθώς και σε ποια περιοχή

7. Να αναπτύξετε αλγόριθμο που θα καταχωρεί σε μονοδιάστατο πίνακα ΟΝΟΜΑ τα ονόματα των 150 μαθητών ενός σχολείου και σε δισδιάστατο πίνακα ΒΑΘΜΟΙ[150, 13] τους βαθμούς του κάθε μαθητή στα 13 μαθήματα που διαγωνίζεται και στη συνέχεια :

i. Να δημιουργεί πίνακα με τους μέσους όρους των μαθητών

ii. Να εκτυπώνει τα ονόματα όσων δικαιούνται αριστείο (μέσος όρος > 18) και όσων απορρίπτονται (μέσος όρος < 9.5)

8. Να αναπτυχθεί αλγόριθμος θα διαβάζει 30 θερμοκρασίες ενός μήνα για 20 πόλεις σε ολόκληρη την Ελλάδα καθώς και τα ονόματα των πόλεων αυτών. Στη συνέχεια:

i. Nα υπολογίζει και να εκτυπώνει τη μέση θερμοκρασία το μήνα αυτό

ii. Να εκτυπώνει ανά πόλη, πόσες μέρες του μήνα η θερμοκρασία ήταν κατώτερη από τον εθνικό μέσο όρο

9. Η εταιρεία ΓΗΓΗ διαθέτει υποκαταστήματα σε 5 ελληνικές πόλεις. Κάθε κατάστημα έχει 10 πωλητές. Μηνιαίως καταγράφονται σε πίνακα ΕΙΣΠΡΑΞΕΙΣ[5, 10] τα έσοδα ανά κατάστημα και ανά πωλητή. Να αναπτυχθεί αλγόριθμος που με δεδομένα τα ονόματα των πωλητών :

i. Θα διαβάζει τα στοιχεία του πίνακα ΕΙΣΠΡΑΞΕΙΣ

ii. Θα εκτιμά ποιο είναι το κατάστημα που επέτυχε τις περισσότερες πωλήσεις

iii. Θα εκτιμά ποιος είναι ο "πωλητής του μήνα" της εταιρείας ΓΗΓΗ

10. Η Ε.Μ.Υ. καταγράφει τις θερμοκρασίες ανά 8ωρο για 30 πόλεις της Ελλάδας. Να αναπτυχθεί αλγόριθμος που θα αποθηκεύει τις θερμοκρασίες για μια ημέρα να υπολογίζει και να εκτυπώνει:

i. Τον συνολικό μέσο όρο για τη μέρα αυτή

ii. Τη μέση θερμοκρασία για κάθε πόλη και την απόκλιση από το συνολικό μέσο όρο

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 54: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

54

11. Κατά τη διάρκεια του τοπικού πρωταθλήματος μπάσκετ για μαθητές Λυκείου του νομού Λάρισας καταγράφονται οι πόντοι που πέτυχαν 80 παίκτες σε 6 αγώνες. Να γραφεί αλγόριθμος ο οποίος:

Α) να καταγραφεί σε μονοδιάστατο πίνακα το όνομα του κάθε παίκτη και σε δισδιάστατο πίνακα οι πόντοι που πέτυχε σε κάθε αγώνα

Β) να υπολογίζει και να εμφανίζει το σύνολο των πόντων για κάθε αγώνα (να γίνει χρήση πινάκων)

Γ) να εμφανίζει ποιος παίκτης και σε ποιο αγώνα πέτυχε τους περισσότερους πόντους

12. Ο Γιωργάκης είναι μαθητής Γυμνασίου χρησιμοποιούνται οι εξής δομές δεδομένων: μονοδιάστατος πίνακας μάθημα που περιέχει τα ονόματα για κάθε ένα από τα 17 μαθήματα που παρακολουθεί στο σχολείο και δισδιάστατο πίνακα ΤΡΙΜΗΝΟ[17, 3] όπου κάθε στήλη περιέχει τον βαθμό στο αντίστοιχο τρίμηνο για το μάθημα που αντιστοιχεί στην γραμμή αυτή.

Να αναπτυχθεί αλγόριθμος που θα υπολογίζει:

i. τον μέσο όρων του Γιωργάκη ανά μάθημα,

ii. Τον μέσο όρο του 2ου τριμήνου, iii. Τον γενικό μέσο όρο

13. Τα καταστήματα "Χαραγιαννής ενδύματα" διατηρούν 10 υποκαταστήματα και για την διατήρηση των στοιχείων των εσόδων τους χρησιμοποιούν δισδιάστατο πίνακα ΠΩΛΗΣΕΙΣ[10, 365] όπου κάθε γραμμή αντιστοιχεί σε κάποιο κατάστημα και κάθε στήλη σε μια από τις μέρες του χρόνου.

Να αναπτύξετε αλγόριθμο που θα υπολογίζει και θα εκτυπώνει:

i. Τα έσοδα του Μαρτίου του 4 ου καταστήματος,

ii. Τα έσοδα όλων των καταστημάτων κατά την καλοκαιρινή περίοδο

3. Συνδυαστικές Ασκήσεις στους Πίνακες

1. Η εταιρεία ΤΤΤ με 1000 εργαζομένους προέβη σε εξαγορά της εταιρείας ΡΤΡ που απασχολεί 250 άτομα. Για κάθε μια από τις δυο εταιρείες στη διάθεσή σας υπάρχουν δυο πίνακες: ο πίνακας ΟΝΟΜΑΤΑ με δυο στήλες με τα επώνυμα και τα ονόματα των εργαζομένων αντίστοιχα και ο πίνακας ΑΠΟΔΟΧΕΣ που περιέχει τους μισθούς τους αντίστοιχα. Να αναπτυχθεί αλγόριθμος όπου:

i. Θα δημιουργεί τους ενοποιημένους πίνακες ΟΝΟΜΑΤΑ_ΟΛΟΙ και ΑΠΟΔΟΧΕΣ_ΟΛΟΙ

ii. Θα εκτυπώνει τα ονόματα των 100 πιο καλά αμειβομένων υπαλλήλων με φθίνουσα διάταξη

iii. Θα εκτυπώνει τα ονοματεπώνυμα όσων γιορτάζουν σήμερα (σήμερα π.χ. είναι της Αγ. Ειρήνης) και να τους αποδίδει μπόνους 5% επί του μισθού τους

2. Η εταιρεία ΔΣΣΔ με 450 εργαζομένους έχει καταχωρήσει τα στοιχεία τους σε δισδιάστατο πίνακα όπου στην 1η στήλη έχει καταχωρήσει τα ονόματά τους, στη 2η στήλη τις διευθύνσεις και στην 3η στήλη σε ποιο από τα 2 τμήματα της εταιρείας απασχολούνται. Να αναπτύξετε αλγόριθμο όπου, θα επεξεργάζεται τα στοιχεία και στη συνέχεια:

i. Να εκτυπώνει ταξινομημένα αλφαβητικά τα ονόματα και τις διευθύνσεις των υπαλλήλων της εταιρείας που εργάζονται στο 2ο τμήμα

ii. Να διαβάζει το όνομα ενός υπαλλήλου και να εκτυπώνει το τμήμα που απασχολείται

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 55: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

55

3. Για την εκπόνηση μιας εργασίας ένας φοιτητής στατιστικής καλείται να συγκεντρώσει από το διαδίκτυο τις θερμοκρασίες του περασμένου μήνα για 10 πόλεις στην Ελλάδα σε πίνακα ΘΕΡΜΟΚΡΑΣΙΕΣ[10,30], επιπρόσθετα υπάρχει πίνακας ΠΟΛΗ[10] που περιέχει τα ονόματα των πόλεων. Να αναπτύξετε αλγόριθμο που θα διαβάζει τα προαναφερθέντα στοιχεία και θα υπολογίζει και θα εκτυπώνει:

i. Την πιο θερμή πόλη το μήνα που πέρασε

ii. Ποια ήταν η πόλη με τη χαμηλότερη θερμοκρασία την τελευταία μέρα του μήνα

iii. Ποια μέρα και σε ποια πόλη σημειώθηκε η μεγαλύτερη αλλά και η μικρότερη θερμοκρασία

iv. Ποια μέρα σημειώθηκε η μεγαλύτερη % αύξηση θερμοκρασίας

4. Να αναπτυχθεί αλγόριθμος όπου θα αποθηκεύει σε έναν μονοδιάστατο πίνακα ΜΟΥΣΕΙΟ 120 θέσεων τα ονόματα ισάριθμων μουσείων και σε πίνακα ΕΠΙΣΚΕΨΕΙΣ[120,12] το πλήθος των επισκεπτών που δέχτηκαν τους περασμένους 12 μήνες. Να αναπτύξετε αλγόριθμο που:

i. θα διαβάζει το όνομα ενός μουσείου και να εκτυπώνει το πλήθος ημερήσιων επισκέψεων

ii. θα εκτυπώνει τα 10 μουσεία με τις περισσότερες επισκέψεις

5. Το Υπουργείο Πολιτισμού χρησιμοποιεί τις εξής δομές δεδομένων για την διαχείριση των Ελληνικών θεάτρων: τον πίνακα ΟΝΟΜΑ που περιέχει το όνομα του θεάτρου, τον πίνακα ΠΟΛΗ που περιέχει αντίστοιχα την πόλη που το κάθε θέατρο βρίσκεται καθώς και τον πίνακα ΧΩΡΗΤΙΚΟΤΗΤΑ που περιέχει το πλήθος των καθισμάτων κάθε θεάτρου. Να αναπτύξετε αλγόριθμο που με δεδομένα τα παραπάνω στοιχεία θα:

i. Εκτυπώνει την συνολική χωρητικότητα των θεάτρων στην Ελλάδα

ii. Διαβάζει το όνομα ενός θεάτρου και θα εκτυπώνει σε ποιες πόλεις υπάρχει ομώνυμο θέατρο (αν υπάρχει)

iii. Θα εκτυπώνει κατά αύξουσα διάταξη τα θέατρα με βάση το ονομά τους (αν υπάρχουν θέατρα με το ίδιο όνομα θα λαμβάνεται υπόψη το όνομα της πόλης)

6. Το δημοτικό parking διαθέτει 300 θέσεις για τα αυτοκίνητα και 50 για μοτοσικλέτες. Να αναπτύξετε αλγόριθμο που θα χρησιμοποιεί πίνακες ΑΥΤΟΚΙΝΗΤΑ, ΜΗΧΑΝΕΣ με αντίστοιχες θέσεις και να καταχωρεί στον κάθε έναν τον αριθμό κυκλοφορίας τους οχήματος/δικύκλου που εισέρχεται, σε θέση του πίνακα που αντιστοιχεί στη θέση που καταλαμβάνει το όχημα στο parking. Ο αλγόριθμος στη συνέχεια θα διαβάζει έναν αριθμό κυκλοφορίας και θα εκτυπώνει το είδος του οχήματος και τη θέση του στο parking και θα «αδειάζει» τη θέση διαγράφοντας τη θέση του πίνακα. Αν το όχημα δεν υπάρχει στο parking τότε θα ζητάει αριθμό θέσης, τύπο οχήματος και θα καταχωρεί τα στοιχεία στον αντίστοιχο πίνακα

7. Στο σχολικό πρωτάθλημα στίβου διεξάγεται το αγώνισμα του τριάθλου ως εξής: Οι αθλητές την ίδια μέρα αγωνίζονται στον αγώνα 100 μέτρων, στα 1000 μέτρα και στο άλμα εις μήκος. Σε κάθε αγώνισμα ο αθλητής συγκεντρώνει βαθμούς ως εξής: Για τα 100 και τα 1000 μέτρα κάθε δευτερόλεπτο παίρνει "ποινή" 25 βαθμούς και για το άλμα εις μήκος κάθε εκατοστό αφαιρεί 15 βαθμούς. Να αναπτυχθεί αλγόριθμος που θα διαβάζει τα ονόματα των 120 μαθητών που συμμετείχαν στο πρωτάθλημα σε μονοδιάστατο πίνακα ΟΝΟΜΑ[120] και τις επιδόσεις τους σε τρισδιάστατο πίνακα ΕΠΙΔΟΣΕΙΣ[120, 3] όπου κάθε στήλη αντιστοιχεί σε ένα άθλημα με τη σειρά που αναφέρθηκαν παραπάνω. Ο αλγόριθμος στη συνέχεια πρέπει να εκτυπώνει τα ονόματα των αθλητών που έλαβαν τα μετάλλια

8. Στον τελικό της άρσης βαρών συμμετέχουν 20 αθλητές για τους οποίους καταχωρούμε τα ακόλουθα στοιχεία στους κάτωθι πίνακες: Πίνακας ΑΘΛΗΤΗΣ[20, 2] στην πρώτη στήλη του οποίου καταχωρούμε το όνομα και στη δεύτερη τη χώρα του, επίσης χρησιμοποιούμε πίνακα ΒΑΡΟΣ[20] με το βάρος του αντίστοιχου αθλητή καθώς και πίνακας ΕΠΙΔΟΣΗ[20, 3] με τις 3 επιδόσεις κάθε αθλητή. Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τα ονόματα και τις χώρες των αθλητών που θα πάρουν τα μετάλλια καθώς και την υπόλοιπη κατάταξη. Πρέπει να σημειωθεί ότι σε περίπτωση που κάποιοι αθλητές έχουν την ίδια επίδοση τότε τα κιλά τους καθορίζουν την τελική κατάταξη

9. Καταχωρούμε σε δισδιάστατο πίνακα ΧΩΡΙΑ τα ονόματα όλων των Ελληνικών χωριών (πρώτη στήλη) καθώς και το νομό που βρίσκονται (δεύτερη στήλη). Να αναπτύξετε αλγόριθμο που α) θα εκτυπώνει όλα τα χωριά ταξινομημένα με αύξουσα σειρά κατά όνομα – αν κάποια χωριά έχουν το ίδιο όνομα να λαμβάνεται υπόψη ο νομός, β) να διαβάζει το όνομα ενός χωριού και να εκτυπώνει πόσες φορές εντοπίζεται στην Ελλάδα

10. Η δανειστική βιβλιοθήκη του δήμου Τενεούπολης χρησιμοποιεί τις εξής δομές: Δισδιάστατος πίνακας ΒΙΒΛΙΑ του οποίου οι γραμμές αντιστοιχούν στα 25.000 βιβλία που υπάρχουν, η πρώτη

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 56: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

56

στήλη περιέχει τον τίτλο κάθε βιβλίου, η δεύτερη στήλη περιέχει τον συγγραφέα του κάθε βιβλίου και η τρίτη το θέμα - περιγραφή του βιβλίου. Να αναπτύξετε αλγόριθμου που α) θα διαβάζει το όνομα ενός συγγραφέα και θα εκτυπώνει τα βιβλία του που υπάρχουν (αν υπάρχουν) στη βιβλιοθήκη , β) θα διαβάζει ένα θέμα και θα επιστρέφει τα βιβλία που υπάρχουν (αν υπάρχουν) με αυτό το θέμα στη βιβλιοθήκη

11. Οι καθηγητές πληροφορικής του ιδιωτικού εκπαιδευτηρίου "Ακαδημία Πλάτωνα" της Τενεούπολης συλλέγουν υλικό από το διαδίκτυο για το μάθημα ΑΕΠΠ της Γ' Λυκείου. Για να διατηρήσουν ένα αρχείο για το υλικό αυτό χρησιμοποιούν τους εξής μονοδιάστατους πίνακες: ΕΚΦΩΝΗΣΗ που περιέχει τις εκφωνήσεις των ασκήσεων που έχουν εντοπίσει, ΚΕΦΑΛΑΙΟ που περιέχει αντίστοιχα το κεφάλαιο κάθε άσκησης και τον πίνακα ΠΡΟΕΛΕΥΣΗ που περιέχει την URL διεύθυνση απ' όπου προέρχεται η άσκηση. Να αναπτυχθεί αλγόριθμος που:

i. Να διαβάζει τον αριθμό των ασκήσεων που υπάρχουν (μέγιστος αριθμός 10.000)

ii. Να διαβάζει τα απαραίτητα στοιχεία και να τα αποθηκεύει στους παραπάνω πίνακες

iii. Να ταξινομεί τις ασκήσεις με βάση την προέλευση και να εκτυπώνει τις εκφωνήσεις και το κεφάλαιο

iv. Να διαβάζει μια διεύθυνση "προέλευσης" της άσκησης και το επιθυμητό κεφάλαιο και να δημιουργεί νέο πίνακα με τις εκφωνήσεις αυτές

ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ

ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ Π[Ν].

Για Ι από 1 μέχρι Ν

Εμφάνισε ΄Δώσε το΄,Ι,΄στοιχείο του πίνακα΄

Διάβασε Π[Ι]

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

ΕΜΦΑΝΙΣΗ ΠΙΝΑΚΑ Π[Ν].

Για Ι από 1 μέχρι Ν

Εμφάνισε ΄Το΄,Ι,΄στοιχείο του πίνακα είναι:΄,Π[Ν]

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

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΜΕΓΠ[1]

Για Ι από 2 μέχρι Ν

Αν Π[Ι]>ΜΕΓ τότε

ΜΕΓΠ[Ι]

Τέλος_αν

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΕΛΠ[1]

Για Ι από 2 μέχρι Ν

Αν Π[Ι]<ΕΛ τότε

ΕΛΠ[Ι]

Τέλος_αν

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

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΑΙ ΕΛΑΧΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΜΕΓΠ[1]

ΕΛΠ[1]

Για Ι από 2 μέχρι Ν

Αν Π[Ι]>ΜΕΓ τότε

ΜΕΓΠ[Ι]

Τέλος_αν

Αν Π[Ι]<ΕΛ τότε

ΕΛΠ[Ι]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 57: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

57

Τέλος_αν

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΑΙ ΘΕΣΗΣ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΜΕΓΠ[1]

ΘΕΣΗ1

Για Ι από 2 μέχρι Ν

Αν Π[Ι]>ΜΕΓ τότε

ΜΕΓΠ[Ι]

ΘΕΣΗΙ

Τέλος_αν

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ,΄και βρίσκεται στην θέση΄,ΘΕΣΗ

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ ΚΑΙ ΘΕΣΗΣ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΕΛΠ[1]

ΘΕΣΗ1

Για Ι από 2 μέχρι Ν

Αν Π[Ι]<ΕΛ τότε

ΕΛΠ[Ι]

ΘΕΣΗΙ

Τέλος_αν

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

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ,΄και βρίσκεται στην θέση΄,ΘΕΣΗ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΑΙ ΕΛΑΧΙΣΤΟΥ ΚΑΙ ΘΕΣΕΩΝ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΜΕΓΠ[1]

ΕΛΠ[1]

ΘΕΣΗΜΕΓ1

ΘΕΣΗΕΛ1

Για Ι από 2 μέχρι Ν

Αν Π[Ι]>ΜΕΓ τότε

ΜΕΓΠ[Ι]

ΘΕΣΗΜΕΓΙ

Τέλος_αν

Αν Π[Ι]<ΕΛ τότε

ΕΛΠ[Ι]

ΘΕΣΗΕΛΙ

Τέλος_αν

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ,΄και βρίσκεται στην θέση:΄,ΘΕΣΗΜΕΓ

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ,΄και βρίσκεται στην θέση:΄,ΘΕΣΗΕΛ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΑΙ ΘΕΣΕΩΝ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΜΕΓΠ[1]

Για Ι από 2 μέχρι Ν

Αν Π[Ι]>ΜΕΓ τότε

ΜΕΓΠ[Ι]

Τέλος_αν

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

Για Ι από 1 μέχρι Ν

Αν Π[Ι]=ΜΕΓ τότε

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ,΄και βρίσκεται στην θέση΄,Ι

Τέλος_αν

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

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ ΚΑΙ ΘΕΣΕΩΝ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΕΛΠ[1]

Για Ι από 2 μέχρι Ν

Αν Π[Ι]<ΕΛ τότε

ΕΛΠ[Ι]

Τέλος_αν

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 58: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

58

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

Για Ι από 1 μέχρι Ν

Αν Π[Ι]=ΕΛ τότε

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ,΄και βρίσκεται στην θέση΄,Ι

Τέλος_αν

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

ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Π[Ν].

Σ0

Για Ι από 1 μέχρι Ν

ΣΣ+Π[Ι]

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

Εμφάνισε ΄Το άθροισμα είναι:΄,Σ

ΕΥΡΕΣΗ ΜΕΣΟΥ ΟΡΟΥ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Π[Ν].

Σ0

Για Ι από 1 μέχρι Ν

ΣΣ+Π[Ι]

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

ΜΟΣ/Ν

Εμφάνισε ΄Ο μέσος όρος είναι:΄,ΜΟ

ΕΥΡΕΣΗ ΓΙΝΟΜΕΝΟΥ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Π[Ν].

Γ1

Για Ι από 1 μέχρι Ν

ΓΓ*Π[Ι]

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

Εμφάνισε ΄Το γινόμενο είναι:΄,Σ

ΤΑΞΙΝΟΜΙΣΗ (αύξουσα) ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Π[Ν].

Για Ι από 2 μέχρι Ν

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

Αν Π[Κ-1]>Π[Κ] τότε

Αντιμετέθεσε (Π[Κ-1],Π[Κ])

Τέλος_αν

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

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

ΤΑΞΙΝΟΜΙΣΗ (φθίνουσα) ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Π[Ν].

Για Ι από 2 μέχρι Ν

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

Αν Π[Κ-1]<Π[Κ] τότε

Αντιμετέθεσε (Π[Κ-1],Π[Κ])

Τέλος_αν

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

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

ΕΥΡΕΣΗ ΠΛΗΘΟΥΣ ΠΕΡΙΤΤΩΝ ΚΑΙ ΑΡΤΙΩΝ ΑΡΙΘΜΩΝ ΣΕ ΠΙΝΑΚΑ Π[Ν].

ΝΠ0

ΝΑ0

Για Ι από 1 μέχρι Ν

Αν Π[Ι] mod 2 = 0 τότε

ΝΑΝΑ+1

Αλλιώς

ΝΠΝΠ+1

Τέλος_αν

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

Εμφάνισε ΄Οι άρτιοι είναι:΄,ΝΑ

Εμφάνισε ΄Οι περιττοί είναι:΄,ΝΠ

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ ΣΕ ΠΙΝΑΚΑ Π[Ν]. (στο πρώτο που βρίσκει σταματά)

Εμφάνισε ΄Δώσε την τιμή που αναζητάς:΄

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 59: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

59

Διάβασε ΖΗΤ_ΤΙΜΗ

ΒΡΕΘΗΚΕ ΨΕΥΔΗΣ

Ι 1

ΘΕΣΗ0

Όσο (ΒΡΕΘΗΚΕ=ΨΕΥΔΗΣ) και (Ι<=10) επανάλαβε

Αν Π[Ι]=ΖΗΤ_τιμή τότε

ΒΡΕΘΗΚΕ ΑΛΗΘΗΣ

ΘΕΣΗ Ι

Αλλιώς

Ι Ι+1

Τέλος_αν

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

Αν ΒΡΕΘΗΚΕ=ΑΛΗΘΗΣ τότε

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄βρέθηκε στη θέση΄,ΘΕΣΗ,΄του πίνακα΄

Αλλιώς

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄δε βρέθηκε στον πίνακα΄

Τέλος_αν

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ ΣΕ ΠΙΝΑΚΑ Π[Ν]. (να βρει το τελευταίο)

Εμφάνισε ΄Δώσε την τιμή που αναζητάς:΄

Διάβασε ΖΗΤ_ΤΙΜΗ

ΒΡΕΘΗΚΕ ΨΕΥΔΗΣ

Για Ι από 1 μέχρι Ν

Αν Π[Ι]=ΖΗΤ_ΤΙΜΗ τότε

ΒΡΕΘΗΚΕΑΛΗΘΗΣ

ΘΕΣΗΙ

Τέλος_αν

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

Αν ΒΡΕΘΗΚΕ=ΨΕΥΔΗΣ τότε

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄δε βρέθηκε στον πίνακα΄

Αλλιώς

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄βρέθηκε στη θέση΄,ΘΕΣΗ,΄του πίνακα΄

Τέλος_αν

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ ΣΕ ΠΙΝΑΚΑ Π[Ν]. (να τα βρει όλα)

Εμφάνισε ΄Δώσε την τιμή που αναζητάς:΄

Διάβασε ΖΗΤ_ΤΙΜΗ

ΒΡΕΘΗΚΕ ΨΕΥΔΗΣ

Για Ι από 1 μέχρι Ν

Αν Π[Ι]=ΖΗΤ_τιμή τότε

ΒΡΕΘΗΚΕΑΛΗΘΗΣ

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄βρέθηκε στη θέση΄, Ι, ΄του πίνακα΄

Τέλος_αν

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

Αν ΒΡΕΘΗΚΕ=ΨΕΥΔΗΣ τότε

Εμφάνισε ΄Η τιμή΄,ΖΗΤ_ΤΙΜΗ,΄δε βρέθηκε στον πίνακα΄

Τέλος_αν

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 60: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

60

ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΔΥΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ

ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ Π[Ν,Μ] ΚΑΤΑ ΓΡΑΜΜΗ.

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Εμφάνισε ΄Δώσε το στοιχείο της΄,Ι,΄γραμμής και της΄,Κ,΄στήλης του πίνακα΄

Διάβασε Π[Ι,Κ]

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

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

ΓΕΜΙΣΜΑ ΠΙΝΑΚΑ Π[Ν,Μ] ΚΑΤΑ ΣΤΗΛΗ.

Για Κ από 1 μέχρι Μ

Για Ι από 1 μέχρι Ν

Εμφάνισε ΄Δώσε το στοιχείο της΄,Ι,΄γραμμής και της΄,Κ,΄στήλης του πίνακα΄

Διάβασε Π[Ι,Κ]

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

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

ΕΜΦΑΝΙΣΗ ΠΙΝΑΚΑ Π[Ν,Μ] ΚΑΤΑ ΓΡΑΜΜΗ.

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Εμφάνισε ΄Το στοιχείο της΄,Ι,΄γραμμής και της΄,Κ,΄στήλης του πίνακα είναι:΄,Π[Ι,Κ]

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

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

ΕΜΦΑΝΙΣΗ ΠΙΝΑΚΑ Π[Ν,Μ] ΚΑΤΑ ΣΤΗΛΗ.

Για Κ από 1 μέχρι Μ

Για Ι από 1 μέχρι Ν

Εμφάνισε ΄Το στοιχείο της΄,Ι,΄γραμμής και της΄,Κ,΄στήλης του πίνακα είναι:΄,Π[Ι,Κ]

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

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

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

Σ0

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

ΣΣ+Π[Ι,Κ]

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

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

Εμφάνισε ΄Το άθροισμα των στοιχείων του πίνακα είναι:΄,Σ

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

Για Ι από 1 μέχρι Ν

Σ0

Για Κ από 1 μέχρι Μ

ΣΣ+Π[Ι,Κ]

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

ΑΘ[Ι]Σ

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

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

Για Κ από 1 μέχρι Μ

Σ0

Για Ι από 1 μέχρι Ν

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 61: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

61

ΣΣ+Π[Ι,Κ]

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

ΑΘ[Κ]Σ

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

ΥΠΟΛΟΓΙΣΜΟΣ ΑΘΡΟΙΣΜΑΤΟΣ ΤΗΣ 5ης ΓΡΑΜΜΗΣ ΠΙΝΑΚΑ Π[Ν,Μ].

Σ0

Για Κ από 1 μέχρι Μ

ΣΣ+Π[5,Κ]

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

Εμφάνισε ΄Το άθροισμα της 5ης γραμμής είναι:΄,Σ

ΥΠΟΛΟΓΙΣΜΟΣ ΑΘΡΟΙΣΜΑΤΟΣ ΤΗΣ 3ης ΣΤΗΛΗΣ ΠΙΝΑΚΑ Π[Ν,Μ].

Σ0

Για Ι από 1 μέχρι Ν

ΣΣ+Π[Ι,3]

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

Εμφάνισε ΄Το άθροισμα της 3ης στήλης είναι:΄,Σ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν,Μ].

ΜΕΓΠ[1,1]

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]>ΜΕΓ τότε

ΜΕΓΠ[Ι,Κ]

Τέλος_αν

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

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν,Μ] ΜΕ ΚΑΘΟΡΙΣΜΟ ΘΕΣΗΣ.

ΜΕΓΠ[1,1]

ΓΡΑΜΜΗ1

ΣΤΗΛΗ1

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]>ΜΕΓ τότε

ΜΕΓΠ[Ι,Κ]

ΓΡΑΜΜΗΙ

ΣΤΗΛΗΚ

Τέλος_αν

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

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

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ,΄και βρίσκεται στην γραμμή΄,ΓΡΑΜΜΗ,΄και στην στήλη΄,ΣΤΗΛΗ

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

ΜΕΓΠ[1,1]

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]>ΜΕΓ τότε

ΜΕΓΠ[Ι,Κ]

Τέλος_αν

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

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

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 62: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

62

Αν Π[Ι,Κ]=ΜΕΓ τότε

Εμφάνισε ΄Το μέγιστο είναι:΄,ΜΕΓ,΄και βρίσκεται στην γραμμή΄,Ι,΄και στην στήλη΄,Κ

Τέλος_αν

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

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

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν,Μ].

ΕΛΠ[1,1]

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]<ΕΛ τότε

ΕΛΠ[Ι,Κ]

Τέλος_αν

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

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

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ ΣΕ ΠΙΝΑΚΑ Π[Ν,Μ] ΜΕ ΚΑΘΟΡΙΣΜΟ ΘΕΣΗΣ.

ΕΛΠ[1,1]

ΓΡΑΜΜΗ1

ΣΤΗΛΗ1

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]<ΕΛ τότε

ΕΛΠ[Ι,Κ]

ΓΡΑΜΜΗΙ

ΣΤΗΛΗΚ

Τέλος_αν

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

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

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ,΄και βρίσκεται στην γραμμή΄,ΓΡΑΜΜΗ,΄και στην στήλη΄,ΣΤΗΛΗ

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΣΕ ΠΙΝΑΚΑ Π[Ν,Μ] ΜΕ ΚΑΘΟΡΙΣΜΟ ΘΕΣΗΣ.

ΕΛΠ[1,1]

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]<ΕΛ τότε

ΕΛΠ[Ι,Κ]

Τέλος_αν

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

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

Για Ι από 1 μέχρι Ν

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]=ΕΛ τότε

Εμφάνισε ΄Το ελάχιστο είναι:΄,ΕΛ,΄και βρίσκεται στην γραμμή΄,Ι,΄και στην στήλη΄,Κ

Τέλος_αν

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

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

ΕΥΡΕΣΗ ΜΕΓΙΣΤΩΝ ΚΑΤΑ ΓΡΑΜΜΗ ΠΙΝΑΚΑ Π[Ν,Μ].

Για Ι από 1 μέχρι Ν

ΜΕΓΠ[Ι,1]

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]>ΜΕΓ τότε

ΜΕΓΠ[Ι,Κ]

Τέλος_αν

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

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 63: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

63

ΜΑΧ[Ι]ΜΕΓ

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

ΕΥΡΕΣΗ ΜΕΓΙΣΤΩΝ ΚΑΤΑ ΣΤΗΛΗ ΠΙΝΑΚΑ Π[Ν,Μ].

Για Κ από 1 μέχρι Μ

ΜΕΓΠ[1,Κ]

Για Ι από 1 μέχρι Ν

Αν Π[Ι,Κ]>ΜΕΓ τότε

ΜΕΓΠ[Ι,Κ]

Τέλος_αν

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

ΜΑΧ[Κ]ΜΕΓ

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

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΚΑΤΑ ΓΡΑΜΜΗ ΠΙΝΑΚΑ Π[Ν,Μ].

Για Ι από 1 μέχρι Ν

ΕΛΠ[Ι,1]

Για Κ από 1 μέχρι Μ

Αν Π[Ι,Κ]<ΕΛ τότε

ΕΛΠ[Ι,Κ]

Τέλος_αν

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

ΜΙΝ[Ι]ΕΛ

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

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΚΑΤΑ ΣΤΗΛΗ ΠΙΝΑΚΑ Π[Ν,Μ].

Για Κ από 1 μέχρι Μ

ΕΛΠ[1,Κ]

Για Ι από 1 μέχρι Ν

Αν Π[Ι,Κ]<ΕΛ τότε

ΕΛΠ[Ι,Κ]

Τέλος_αν

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

ΜΙΝ[Κ]ΕΛ

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

Αναζήτηση

Αλγόριθμος σειριακής αναζήτησης (παράγραφος 3.6 σχολ. βιβλίου)

Ο αλγόριθμος σειριακής αναζήτησης, όπως παρουσιάζεται στο βιβλίο έχει ως εξής:

Αλγόριθμος Sequential_Search

Δεδομένα // n, table, key //

done ← ψευδής

position ← 0

i ← 1

Όσο (done = ψευδής) και (i <= n) επανάλαβε

Αν (table[i] = key) τότε

done ← αληθής

position ← i

Αλλιώς

i ← i + 1

Τέλος_αν

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

Αν (done = αληθής) τότε

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση ", position

Αλλιώς

Εκτύπωσε "Το στοιχείο ", key, " δεν ευρέθη στον δοθέντα

Ή εναλλακτικά χρησιμοποιώντας τη δομή

Μέχρις_Ότου

Αρχή_επανάληψης

Αν (table[i] = key) τότε

done ← αληθής

position ← i

Αλλιώς

i ← i + 1

Τέλος_αν

Μέχρις_Ότου (done = αληθής) ή (i > n)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 64: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

64

πίνακα"

Τέλος_Αν

Αποτελέσματα // done, position //

Τέλος Sequential_Search

Παρατηρήσεις:

1. Η αναζήτηση σταματά μόλις εντοπίσει κάποιο στοιχείο που είναι ίσο με την αναζητούμενη τιμή. Ο αλγόριθμος Παραλλαγή Νο

1 στη συνέχεια αποτελεί τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να καλύπτει την αδυναμία αυτή και συνεχίζει την

αναζήτηση ώστε να εντοπίσει όλες τις τιμές του πίνακα table που έχουν τιμή ίση με τη μεταβλητή key.

2. Ο πίνακας table δεν είναι ταξινομημένος. Ο αλγόριθμος Παραλλαγή Νο 2 στη συνέχεια αποτελεί τροποποίηση του αλγορίθμου

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

πίνακα table που είναι μεγαλύτερο από το ζητούμενο (μεταβλητή key) σε ταξινομημένο πίνακα.

Παραλλαγή Νο 1: Τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να αναζητά όλες τις θέσεις που

βρίσκεται η αναζητούμενη τιμή

Για την αποφυγή τερματισμού του βρόχου αναζήτησης, εξαλείφουμε την μεταβλητή done από ολόκληρο το πρόγραμμα. Είναι

προφανές ότι η τιμή που αναζητούμε στον πίνακα (μεταβλητή key) μπορεί να βρίσκεται σε περισσότερες από μια θέσεις του πίνακα

table. Αν δεν επιθυμούμε περαιτέρω επεξεργασία των θέσεων αυτών απλά τις εκτυπώνουμε

Ωστόσο, υπάρχει η περίπτωση οι θέσεις αυτές να πρέπει να αποθηκευθούν ώστε να χρησιμοποιηθούν σε κάποιο άλλο σημείο του

αλγορίθμου. Πώς πρέπει να αποθηκεύσουμε τις θέσεις αυτές; Δεδομένου ότι δεν γνωρίζουμε εξ αρχής το πλήθος των δεδομένων

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

(έστω με όνομα POSITION_TABLE) ώστε να καταχωρούνται σε αυτόν οι θέσεις του πίνακα table που εντοπίστηκε η τιμή της

μεταβλητής key

Το μέγεθος του πίνακα POSITION_TABLE είναι n καθώς πρέπει να καλύψουμε την ακραία περίπτωση να υπάρχουν και στις n θέσεις

του πίνακα table η τιμή που έχει η μεταβλητή key. Η μεταβλητή count_found θα περιέχει το πλήθος των θέσεων που ικανοποιούν

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

αυτό μπορεί να γίνει με την δομή επανάληψης Για…από…μέχρι αντί για την Όσο…επανάλαβε που χρησιμοποιήθηκε στα

προηγούμενα παραδείγματα.

Αλγόριθμος Sequential_Search_Non_Stop

Δεδομένα // n, table, key //

count_found ←0

i ← 1

Όσο (i <= n) επανάλαβε

Αν (table[i] = key) τότε

count_found ← count_found + 1

POSITION_TABLE[count_found] ← i

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση", i

Τέλος_αν

i ← i + 1

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

Για i από 1 μέχρι n

Αν (table[i] = key) τότε

count_found ← count_found + 1

POSITION_TABLE[count_found] ← i

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση", i

Τέλος_αν

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

Αν (count_found <> 0) τότε

Εκτύπωσε "Το στοιχείο ", key, " εντοπίστηκε σε ", count_found, " θέσεις"

Αλλιώς

Εκτύπωσε "Δεν βρέθηκε κανένα στοιχείο"

Τέλος_Αν

Αποτελέσματα // count_found, POSITION_TABLE //

Τέλος Sequential_Search_Non_Stop

Παραλλαγή Νο 2: Τροποποίηση του αλγορίθμου σειριακής αναζήτησης ώστε να λειτουργεί βέλτιστα σε

ταξινομημένο πίνακα

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 65: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

65

Αλγόριθμος Sequential_Search_Sorted_Table

Δεδομένα // n, table, key //

done ← ψευδής

position ← 0

i ← 1

Όσο (done = ψευδής) και (i <= n) επανάλαβε ! για ταξινομημένο πίνακα με αύξουσα διάταξη

Αν (table[i] > key) τότε ! σταμάτα την επανάληψη, δεν θα βρεθεί το στοιχείο

done ← αληθής

Αλλιώς_Αν (table[i] = key) τότε ! σταμάτα την επανάληψη, το στοιχείο βρέθηκε

done ← αληθής

position ← i

Αλλιώς ! συνέχισε την την επανάληψη

i ← i + 1

Τέλος_αν

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

Αν (position <> 0) τότε

Εκτύπωσε "Το στοιχείο ", key, " ευρέθη στη θέση ", position

Αλλιώς

Εκτύπωσε "Το στοιχείο ", key, " δεν ευρέθη στον δοθέντα πίνακα"

Τέλος_αν

Αποτελέσματα // position //

Τέλος Sequential_Search_Sorted_Table

Παρατηρήσεις:

Η αναζήτηση σταματά όταν η τιμή προς αναζήτηση (μεταβλητή key) είναι μικρότερη από την τρέχουσα τιμή του πίνακα table

Σε αυτήν την περίπτωση δεν έχει νόημα να συνεχιστεί η αναζήτηση καθώς δεν αναμένεται να έχει επιτυχές αποτέλεσμα

4 9 12 19 23 45 53 67

Για παράδειγμα η αναζήτηση για την τιμή 14 στον παραπάνω πίνακα δεν έχει νόημα να συνεχιστεί μετά την 4η επανάληψη (i=4,

table[i]=19) καθώς ο αριθμός 14 που είναι μικρότερος του 19 αποκλείεται να βρίσκεται σε κάποια από τις επόμενες θέσεις του

πίνακα. Έτσι, αποφεύγονται άσκοπες επαναλήψεις. Το αν εντοπίστηκε ή όχι η τιμή key το ανιχνεύουμε με τη μεταβλητή position και

όχι με την done καθώς η τελευταία λαμβάνει την τιμή αληθής ακόμη κι αν δεν ευρέθη η key

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 66: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

66

Ταξινόμηση

Αλγόριθμος ταξινόμησης ευθείας ανταλλαγής – φυσσαλίδας (παράγραφος 3.7 του σχολ. βιβλίου)

Ο αλγόριθμος ταξινόμησης ευθείας ανταλλαγής όπως παρουσιάζεται στο βιβλίο έχει ως εξής:

Αλγόριθμος Φυσσαλίδα

Δεδομένα // n, table //

Για i από 2 μέχρι n

Για j από n μέχρι i με_βήμα –1

Αν table[j - 1] > table[j] τότε ! αύξουσα ταξινόμηση

temp ← table[j - 1]

table[j - 1] ← table[j]

table[j] ← temp

Τέλος_αν

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

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

Αποτελέσματα // table //

Τέλος Φυσσαλίδα

Παρατηρήσεις:

- Η εντολή αντιμετάθεσε ορίζεται στην ψευδογλώσσα και μπορούμε να τη χρησιμοποιήσουμε σε αλγορίθμους αλλά καλό να την

αποφεύγουμε καθώς δεν ορίζεται στη ΓΛΩΣΣΑ και δεν μπορούμε να τη χρησιμοποιήσουμε σε προγράμματα

- Η διάταξη της ταξινόμησης είναι αύξουσα. Για φθίνουσα ταξινόμηση, αρκεί να αντιστραφεί η φορά της συνθήκης της δομής

επιλογής Αν

- Ο πίνακας table είναι μονοδιάστατος (εφαρμογή σε δισδιάστατο πίνακα - με ταξινόμηση κάποιας στήλης παρουσιάζεται στην

άσκηση 3.3.2.Ασκ6)

Το σχολικό βιβλίο παραθέτει ένα παράδειγμα για την καλύτερη

κατανόηση του αλγορίθμου

Παρατηρούμε στο επόμενο σχήμα την «εικόνα» του πίνακα στο

τέλος κάθε επανάληψης της εξωτερικής δομής Για

Από την τελευταία θέση του πίνακα έως την i, αν η τιμή κάποιου

κελιού του πίνακα είναι μικρότερη από αυτή του επόμενου κελιού,

τότε αντιμεταθέτουμε τις τιμές τους. Έτσι, αν υπάρχει κάποιος μικρός

αριθμός σε "χαμηλή" θέση στον πίνακα διαδοχικά "ανεβαίνει" σε

"υψηλότερες" θέσεις όπως μια φυσσαλίδα στπ υγρό

Ας δούμε όμως και ένα άλλο παράδειγμα, θέλουμε να ταξινομήσουμε τον πίνακα: 3 16 11 1 8

Το εξωτερικό Για επιβάλλει την εκτέλση 4 βημάτων. Αυτά είναι τα εξής:

i = 2

j = 5 j = 4 j = 3 j = 2

3 16

3 16

3 1

1 3

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 67: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

67

11 1 8

1 11 8

16 11 8

16 11 8

Αλλαγή: Όχι Ναι Ναι Ναι

Παρατηρούμε, οτι ο μικρότερος αριθμός έχει βρεθεί στην πρώτη θέση του πίνακα. Στη συνέχεια:

i = 3

j = 5 j = 4 j = 3

1 3 16 8

11

1 3 8

16 11

1 3 8 16 11

Αλλαγή: Ναι Ναι Όχι

Παρατηρούμε, οτι οι δυο πρώτες θέσεις περιέχουν τους δυο μικρότερους αριθμούς του πίνακα. Στη συνέχεια:

i = 4

j = 5 j = 4

1 3 8

11 16

1 3 8

11 16

Αλλαγή: Ναι Όχι

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

στον πίνακα

i = 5

j = 5

1 3 8

11 16

Αλλαγή: Όχι

Με την κατάλληλη τροποποίηση του αλγορίθμου της φυσσαλίδας όπως παρουσιάζεται στο βιβλίο μπορούμε να αποφύγουμε την

εκτέλεση περιττών βημάτων. Αυτό μπορεί να επιτευχθεί με τη βοήθεια μίας λογικής μεταβλητής, που σε κάθε νέα επανάληψη του

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

σε κάποιο πέρασμα δεν εκτελεσθεί καμία ανταλλαγή, τότε η σημαία παραμένει ψευδής και αυτομάτως τελειώνει ο αλγόριθμος

Αλγόριθμος Φυσσαλίδα_Τροποποίηση

Δεδομένα // n, table //

i ← 2

Αρχή_Επανάληψης

έγινε_αντιμετάθ ← ψευδής

Για j από n μέχρι i με_βήμα –1

Αν table[j - 1] > table[j] τότε ! αύξουσα ταξινόμηση

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 68: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

68

temp ← table[j - 1]

table[j - 1] ← table[j]

table[j] ← temp

έγινε_αντιμετάθ ← αληθής

Τέλος_αν

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

i ← i + 1

Μέχρις_Ότου (i > n) ή (έγινε_αντιμετάθ = ψευδής)

Αποτελέσματα // table //

Τέλος Φυσσαλίδα_Τροποποίηση

Μια άλλη προσέγγιση παρουσιάζεται στην παράγραφο 3.3 δραστηριότητα ΔΤ2 τετράδιο μαθητή. Αυτή είναι:

Αλγόριθμος Φυσσαλίδα_Τροποποίηση2

Δεδομένα // n, table //

Αρχή_επανάληψης

έγινε_αντιμετάθ ← ψευδής

Για i από 1 μέχρι n-1

Αν table[i + 1] < table[i] τότε ! αύξουσα ταξινόμηση

temp ← table[i + 1]

table[i + 1] ← table[i]

table[i] ← temp

έγινε_αντιμετάθ ← αληθής

Τέλος_Αν

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

Μέχρις_Ότου (έγινε_αντιμετάθ = ψευδής)

Αποτελέσματα // table //

Τέλος Φυσσαλίδα_Τροποποίηση2

Αλγόριθμος ταξινόμησης με επιλογή (παράγραφος 4.2.1 τετραδίου μαθητή και βιβλίο καθηγητή)

Αλγόριθμος Tαξινόμηση_με_επιλογή

Δεδομένα // n, table //

Για i από 1 μέχρι n

j ← i

Για k από i + 1 μέχρι n

Αν table[k] < table[j] τότε

j ← k

Τέλος_αν

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

temp ← table[j]

table[j] ← table[i]

table[i] ← temp

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

Αποτελέσματα // table //

Τέλος Tαξινόμηση_με_επιλογή

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

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 69: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

69

Για κάθε στοιχείο δηλαδή από το πρώτο μέχρι το τελευταίο, ελέγχεται ποιο από τα στοιχεία που ακολουθούν είναι μικρότερο και αν

υπάρχει τέτοιο τα περιεχόμενα των δυο θέσεων αντιμετατίθενται. Η μέθοδος αυτή παρουσιάζεται στο επόμενο σχήμα καθώς

εφαρμόζεται σε μονοδιάστατο πίνακα. Το ταξινομημένο τμήμα του πίνακα εμφανίζεται με σκίαση, ενώ με τα βέλη εμφανίζονται τα

στοιχεία που ανταλλάσσονται αμοιβαία. Λόγου χάριν, στην πρώτη σειρά βρίσκουμε ότι το στοιχείο 5 είναι το μικρότερο και

αντιμετατίθεται με το πρώτο στοιχείο του πίνακα, το 52. Έτσι προκύπτει η μορφή του πίνακα στη δεύτερη σειρά. Στη συνέχεια η διαδικασία προχωρεί με την ίδια λογική μέχρι την τελική ταξινόμηση του πίνακα

Αλγόριθμος ταξινόμησης ευθείας εισαγωγής (δραστηριότητα ΔΣ3 τετράδιο μαθητή, κεφάλαιο 3)

Ο αλγόριθμος αυτός είναι ιδανικός για περιπτώσεις δεδομένων "περίπου" ταξινομημένων. Παρουσιάζεται στη συνέχεια

Αλγόριθμος Tαξινόμηση_με_ευθεία_εισαγωγή

Δεδομένα // table, n //

Για i από 2 μέχρι n

temp ← table[i]

j ← i - 1

done ← ψευδής

Όσο done = ψευδής επανάλαβε

Αν j = 0 τότε ! φτάσαμε στην αρχή του πίνακα, άρα πρέπει να σταματήσουμε

done ← αληθής

Αλλιώς_Αν temp < table[j] τότε ! βρήκαμε ένα μεγαλύτερο στοιχείο, άρα πρέπει να σταματήσουμε

table[j + 1] ← table[j]

j ← j - 1

Αλλιώς ! πρέπει να σταματήσουμε την επανάληψη γιατί το στοιχείο θα μείνει σε αυτήν τη θέση

done ← αληθής

Τέλος_Αν

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

table[j + 1] ← temp

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

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 70: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

70

Αποτελέσματα // table //

Τέλος Tαξινόμηση_με_ευθεία_εισαγωγή

Η τεχνική είναι η εξής: συγκρίνουμε τον δεύτερο με τον πρώτο αριθμό και αν χρειαστεί τους αντιμεταθέτουμε ώστε ο πρώτος να

είναι μεγαλύτερος. Στη συνέχεια ελέγχουμε τον τρίτο και τον τοποθετούμε στη χωστή θέση σε σχέση με τους 2 πρώτους (αν

χρειαστεί μετακινούμε μια θέση τους αριθμούς που είναι μεγαλύτερη ώστε να τοποθετηθεί). Το ίδιο επαναλαμβάνουμε για όλους

τους αριθμούς. Ακολουθεί παράδειγμα:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 71: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

71

ΔΙΑΓΩΝΙΣΜΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ενότητα: Πίνακες

Θέμα 1ο

A. Η παρακάτω ακολουθία εντολών είναι τμήμα αλγορίθμου; Αν όχι τότε ποια κριτήρια παραβιάζει; Να κάνετε τις απαραίτητες τροποποιήσεις έτσι ώστε να μετατραπεί σε αλγόριθμο. Δίνεται ότι ο πίνακας α είναι πίνακας 100 ακέραιων αριθμών και τα στοιχεία έχουν πάρει όλα τιμές από προηγούμενη είσοδο.

i 1 Όσο i <> 100 επανάλαβε

i i + 2 Γράψε α[i]

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

Μονάδες 5

B. Να σημειώσετε με Σ ή Λ ανάλογα με το αν θεωρείτε Σωστή ή Λάθος κάθε μία από τις παρακάτω προτάσεις:

1. Η σειριακή αναζήτηση είναι μέθοδος που χρησιμοποιείται κυρίως για μικρούς ή μη ταξινομημένους πίνακες..

2. Μια ουρά διατηρεί τα δεδομένα της ταξινομημένα ως προς την σειρά άφιξής τους. 3. Στη στοίβα το στοιχείο που εισάγεται τελευταίο εξάγεται και τελευταίο. 4. Υπερχείλιση συμβαίνει όταν γίνει απώθηση (pop) σε γεμάτη στοίβα. 5. Ο βρόχος {Για x από 5 μέχρι 6} εκτελείται μία μόνο φορά. 6. Οι πίνακες είναι στατικές δομές δεδομένων 7. Ένας πίνακας έχει το ίδιο μέγεθος σε όλη τη διάρκεια εκτέλεσης του αλγόριθμου 8. Η σειριακή αναζήτηση δεν μπορεί να γίνει σε ταξινομημένο πίνακα 9. Τα δεδομένα που αποθηκεύονται σε έναν πίνακα δεν μπορούν να είναι διαφορετικού τύπου. 10. Για να προσπελάσουμε έναν πίνακα δεν μπορούμε να χρησιμοποιήσουμε τη δομή επανάληψης

Όσο…Επανέλαβε Μονάδες 5

Γ. Τι θα εμφανίσει το παρακάτω τμήμα αλγορίθμου για n = 11, και A[1]=4, A[2]=5, A[3]=6, A[4]=7, A[5]=8, A[6]=7, A[7]=8, A[8]=7, A[9]=6, A[10]=5, A[11]=4;

i 1 mid n div 2 Οσο i <= mid και A[i] = A[n – i +1] Επανάλαβε Εμφάνισε Α[n–i+1] i i +1 Τέλος_επανάληψης Αν i > mid τότε Εμφάνισε ‘ΝΑΙ’ Αλλιώς Εμφάνισε ‘ΟΧΙ’ Τέλος_αν

Μονάδες 10

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 72: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

72

Δ. Δίνεται το παρακάτω τμήμα αλγορίθμου:

X ← 16 i ← 12 Όσο (i >= 10) ή (X > i) επανάλαβε

X ← X/2 + i mod 2 i ← i div 2 Y ← i + X div i Για j από 12 μέχρι i με βήμα –3

Y ← Y + 1 Z ← X - Y X ← Z div Y

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

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

(i) Να γίνει πίνακας τιμών για όλες τις μεταβλητές. Δηλαδή να εμφανίζεται η τιμή κάθε μεταβλητής για κάθε βήμα της επανάληψης

Μονάδες 16

(ii) Ποιος θα είναι ο νέος πίνακας τιμών αν απλά οι δύο επαναληπτικές διαδικασίες αλλάξουν θέσεις μεταξύ τους; Δηλαδή αν η Όσο πάρει τη θέση της Για και το ανάποδο, χωρίς όμως να αλλάξουν θέση οι ομάδες εντολών; (Δηλαδή οι γραμμές αλλάζουν αυτούσιες όπως είναι)

Μονάδες 4

Θέμα 2ο

Ένας επιστήμονας έκανε 200 μετρήσεις για κάθε φυτό πάνω σε 100 είδη φυτών. Δίνεται ότι τα ονόματα των φυτών είναι αποθηκευμένα σε έναν πίνακα. Να δοθεί αλγόριθμος ο οποίος θα

Α. Διαβάζει τις μετρήσεις και θα τις αποθηκεύει σε έναν πίνακα

Β. Θα υπολογίζει και θα εμφανίζει

(i) Πόσες φορές το αποτέλεσμα των μετρήσεων για κάθε φυτό ήταν διαφορετικό από τη φυσιολογική τιμή 50

(ii) Το όνομα του φυτού με τη μέγιστη απόκλιση από την τιμή 50. Αν υπάρχουν περισσότερα από ένα φυτά με αυτή την απόκλιση να εμφανίζει τα ονόματα όλων.

Μονάδες 20

Θέμα 3ο

Σε έναν μονοδιάστατο πίνακα Α είναι καταχωρημένοι 100 ακέραιοι αριθμοί και σε έναν δεύτερο πίνακα Β είναι καταχωρημένοι 200 ακέραιοι αριθμοί. Να γίνει αλγόριθμος ο οποίος:

A. Θα υπολογίζει και θα εμφανίζει το πλήθος των διαφορετικών αριθμών που υπάρχουν σε κάθε πίνακα ξεχωριστά

B. Θα εμφανίζει το πλήθος των διαφορετικών αριθμών που εμφανίζονται μόνο στον έναν από τους δυο πίνακες, δηλαδή αυτούς που εμφανίζονται μόνο στον Α ή μόνο στον Β.

Να θεωρήσετε τους πίνακες Α, Β δεδομένους. Να μη γίνει εισαγωγή των στοιχείων τους.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 73: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

73

Μονάδες 20

Θέμα 4ο

Τα αποτελέσματα των αγώνων του Eurobasket (νίκη ή ήττα) καθώς και η διαφορά πόντων για τον όμιλο που ήταν και η Εθνική μας περιέχονται στους παρακάτω πίνακες:

Τα ονόματα των ομάδων σε μονοδιάστατο πίνακα ΟΝ[6]

Τον χαρακτηρισμό κάθε αγώνα (″Ν″ ή ″Η″) σε δισδιάστατο πίνακα Α[6,6]

Τη διαφορά πόντων κάθε αγώνα σε δισδιάστατο πίνακα Π[6,6]

Να γραφεί πρόγραμμα που διαβάζει τα δεδομένα στους παραπάνω πίνακες και εκτυπώνει τη τελική βαθμολογία του ομίλου (ονόματα και βαθμούς) ξεκινώντας από τον καλύτερο

Σημείωση: Σε περίπτωση ισοβαθμίας προηγείται η ομάδα που έχει την καλύτερη διαφορά πόντων από τις ισόβαθμες. Αν έχουν την ίδια διαφορά πόντων, τότε η κατάταξη γίνεται ονομαστικά.

Για παράδειγμα οι πίνακες θα έχουν τη μορφή

ΠΙΝΑΚΑΣ Α Γερμανία Ελλάδα Σερβία Ιταλία Ρωσία Γαλλία Γερμανία Ελλάδα Ν Σερβία Η Η Ιταλία Ν Ν Η Ρωσία Η Η Η Ν Γαλλία Ν Ν Ν Ν Η

ΠΙΝΑΚΑΣ Π Γερμανία Ελλάδα Σερβία Ιταλία Ρωσία Γαλλία Γερμανία Ελλάδα 5 Σερβία 6 7 Ιταλία 3 4 8 Ρωσία 8 6 9 9 Γαλλία 1 8 2 2 7

ΠΙΝΑΚΑΣ ΟΝ Γερμανία Ελλάδα Σερβία Ιταλία Ρωσία Γαλλία

Κάθε κελί αντιστοιχεί σε έναν αγώνα μεταξύ της ομάδας που αντιστοιχεί στη γραμμή και της ομάδας που αντιστοιχεί στη στήλη.

Το αποτέλεσμα ″Ν″ ή ″Η″ σημαίνει ότι η ομάδα που αντιστοιχεί στη γραμμή νίκησε ή αντίστοιχα έχασε από την ομάδα που αντιστοιχεί στη στήλη. Ο αριθμός δείχνει τη διαφορά πόντων. Π.χ. η Ελλάδα νίκησε τη Γερμανία με 5 πόντους διαφορά ενώ η Σερβία ηττήθηκε από την Ελλάδα με 7 πόντους διαφορά.

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

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

Για κάθε αγώνα η νικήτρια ομάδα παίρνει 2 βαθμούς και η ηττημένη 1 βαθμό.

Μονάδες 20

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 74: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

74

ΚΚΕΕΦΦΑΑΛΛΑΑΙΙΟΟ 44οο

Τεχνικές Σχεδίασης Αλγορίθμων

4.1 Ανάλυση προβλημάτων 4.2 Μέθοδοι σχεδίασης αλγορίθμων

ΠΠΛΛΙΙΑΑΤΤΣΣΙΙΟΟΣΣ ΑΑΝΝΤΤΩΩΝΝΙΙΟΟΣΣ ΚΚααθθηηγγηηττήήςς ΠΠλληηρροοφφοορριικκήήςς

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 75: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

75

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

Την κατανόηση του προβλήματος και τον καθορισμό απαιτήσεων (ποια δεδομένα παρέχονται και ποια είναι τα ζητούμενα, δες κεφάλαιο 1)

Διερεύνηση αν το πρόβλημα έχει κάποιες ιδιαιτερότητες. Ποιες είναι οι συνθήκες και προϋποθέσεις για την επίλυσή του. Ποια είναι η πλέον αποδοτική μέθοδος επίλυσή του και πώς θα γραφεί αυτή. (π.χ. σχεδίαση με ψευδογλώσσα) Την τελική επίλυση του προβλήματος σε ένα περιβάλλον Η/Υ χρησιμοποιώντας μία γλώσσα προγραμματισμού.

Οι λόγοι για τους οποίους οι μέθοδοι ανάλυσης και επίλυσης των προβλημάτων παρουσιάζουν ενδιαφέρον είναι οι εξής:

o Παρέχουν έναν τυποποιημένο σχεδόν τρόπο για την επίλυση προβλημάτων μεγάλης κλίμακας. o Μπορούν να χρησιμοποιούν δομές δεδομένων και ελέγχου που υποστηρίζονται από όλες τις σύγχρονες γλώσσες

προγραμματισμού. o Παρέχουν τη δυνατότητα να εκτιμήσουμε το «κόστος» της κάθε μεθόδου (χρονικές και χωρικές απαιτήσεις),

δηλαδή το πόσο χρόνο θα απαιτήσει η μέθοδος για την επίλυση και το πόσους πόρους του Η/Υ θα χρειαστεί (π.χ. μέγεθος μνήμης). Με βάση το κόστος αυτό θα κρίνουμε αν η μέθοδος είναι αποτελεσματική.

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

4.2 Μέθοδοι σχεδίασης αλγορίθμων

Μετά το πέρας της ανάλυσης του προβλήματος προκύπτουν κάποιες μέθοδοι επίλυσης που οδηγούν στη σχεδίαση του αλγορίθμου. Για λόγους διευκόλυνσης και τυποποίησης έχουμε ξεχωρίσει τρεις:

1. Μέθοδος «Διαίρει και Βασίλευε» 2. Μέθοδος δυναμικού προγραμματισμού 3. Άπληστη μέθοδος

Κάθε μέθοδος πρέπει να υποστηρίζει τα εξής:

o Να αντιμετωπίζει με το δικό της τρόπο τα δεδομένα. o Να έχει τη δική της ακολουθία εντολών. o Να έχει τη δική της αποδοτικότητα.

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

Ερωτήσεις θεωρίας

1. Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον;

2. Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης και επίλυσης προβλημάτων;

3. Ποια χαρακτηριστικά πρέπει να έχει μία τεχνική επίλυσης προβλημάτων ώστε να αποτελεί ξεχωριστή κατηγορία;

4. Αναφέρατε τρεις τυποποιημένες κατηγορίες τεχνικών επίλυσης προβλημάτων

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 76: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

76

Ερωτήσεις Πολλαπλής Επιλογής

1. Η λύση σε ένα πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις, τεχνικές και μεθόδους

2. Η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον περιλαμβάνει την εισαγωγή και εξαγωγή

3. Ένα πρόβλημα μπορεί συνήθως να επιλύεται με περισσότερους από 1 τρόπους

4. Η ανάλυση ενός προβλήματος έχει ως στόχο την πρόταση πιο αποδοτικών λύσεων

5. Το πρόβλημα του ταχυδρόμου είναι πρόβλημα βελτιστοποίησης

6. Η ανάλυση ενός προβλήματος είναι προαιρετικό βήμα για την επίλυση ενός προβλήματος

7. Η ανάλυση ενός προβλήματος πρέπει να οδηγήσει σε μια αποδοτική λύση

8. Στην επίλυση ενός προβλήματος μπορούν να χρησιμοποιηθούν περισσότερες από μια τεχνικές

9. Μια νέα τεχνική επίλυσης προβλημάτων πρέπει να έχει τη δική της ακολουθία εντολών

10. Για την επίλυση ενός προβλήματος πρέπει να συγκρίνονται διάφορες τεχνικές και να επιλέγεται η πλέον κατάλληλη

11. Κάθε πρόβλημα μπορεί να επιλυθεί με μια από τις γνωστές τεχνικές

12. Υπάρχει ένας ενιαίος κανόνας που αναφέρεται στην επίλυση του συνόλου των προβλημάτων

13. Τρεις γνωστές τεχνικές επίλυσης προβλημάτων είναι:

α) μέθοδος _________________________________,

β) μέθοδος ______________ προγραμματισμού και

γ) __________________ μέθοδος

14. Συχνά στα προβλήματα εφαρμόζεται μια νέα αντίληψη με τη χρήση ____________________ τεχνικών

15. Κάθε τεχνική αλγορίθμων πρέπει να έχει:

α) τη δική της υπολογιστική μηχανή γ) τη δική της είσοδο και έξοδο

β) τη δική της ακολουθίας εντολών δ) τη δική της γλώσσα προγραμματισμού

16. Η ανάλυση προβλημάτων περιλαμβάνει:

α) καταγραφή υπάρχουσας πληροφορίας γ) αναγνώριση στοιχείων εισόδου του προβλήματος

β) καταγραφή αποτελεσμάτων δ) πρόταση για την είσοδο και έξοδο των δεδομένων

17. Κάθε τεχνική αλγορίθμων πρέπει να έχει:

α) τη δική της υπολογιστική μηχανή γ) τη δική της είσοδο και έξοδο

β) τη δική της ακολουθία εντολών δ) τη δική της γλώσσα προγραμματισμού

18. Ποιο από τα παρακάτω δεν αποτελεί μέθοδο δημιουργίας αλγορίθμου

α) Άπληστη μέθοδος

β) Μέθοδος τμηματικού προγραμματισμού

γ) Μέθοδος διαίρει και βασίλευε

19. Η ανάλυση προβλημάτων περιλαμβάνει:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 77: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

77

α) Καταγραφή της υπάρχουσας πληροφορίας για το πρόβλημα

β) Ανάπτυξη μιας νέας τεχνικής για την επίλυση του προβλήματος

γ) Πρόταση επίλυσης με τη χρήση κάποιας γνωστής μεθόδου

δ) Βελτίωση της αποδοτικότητας

Κεφαλαίο 4ο

1: Σωστό 2: Λάθος 3: Σωστό 4: Σωστό

5: Σωστό 6: Λάθος 7: Σωστό 8: Σωστό

9: Σωστό 10: Σωστό 11: Λάθος 12: Λάθος

13: διαίρει και βασίλευε, δυναμικού, άπληστη

14: ευριστικών 15: β 16: α

17: β 18: β 19: α, γ

7.1 Το αλφάβητο της ΓΛΩΣΣΑΣ Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από τα γράμματα του ελληνικού και του λατινικού αλφαβήτου, τα ψηφία, καθώς και από ειδικά σύμβολα, που χρησιμοποιούνται για προκαθορισμένες ενέργειες, στις οποίες θα αναφερθούμε στη συνέχεια.

7.2 Τύποι δεδομένων

Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι:

οι αριθμητικοί, που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς, οι χαρακτήρες [Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά,’ ‘.Τα δεδομένα

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

οι λογικοί.

7.3 Σταθερές Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του προγράμματος. Οι σταθερές είναι τύπου δεδομένων, δηλαδή

ακέραιες, πραγματικές, αλφαριθμητικές ή λογικές.

7.4 Μεταβλητές Η έννοια της μεταβλητής (variable) είναι γνωστή από τα μαθηματικά. Για παράδειγμα ο τύπος της γεωμετρίας Ε=αβ υπολογίζει το εμβαδόν (Ε) ενός ορθογωνίου με διαστάσεις, που συμβολίζονται με α και β. Αν στο α και στο β δοθούν οι αντίστοιχες τιμές, τότε ο τύπος αυτός υπολογίζει το εμβαδόν του ορθογωνίου. Μια μεταβλητή λοιπόν, παριστάνει μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται.

7.5 Αριθμητικοί τελεστές

Θεωρία (Σελίδες 7-9)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 78: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

78

Αριθμητικός τελεστής Πράξη

+ Πρόσθεση

- Αφαίρεση

* Πολλαπλασιασμός

/ Διαίρεση

^ Ύψωση σε δύναμη

DIV Ακέραια διαίρεση

MOD Υπόλοιπο ακέραιας διαίρεσης

7.6 Συναρτήσεις Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ. Οι συναρτήσεις αυτές είναι:

ΗΜ(Χ) Υπολογισμός ημιτόνου

ΣΥΝ(Χ) Υπολογισμός συνημιτόνου

ΕΦ(Χ) Υπολογισμός εφαπτομένης

Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας

ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου

Ε(Χ) Υπολογισμός του ex

A_M(X) Ακέραιο μέρος του Χ

Α_Τ(Χ) Απόλυτη τιμή του Χ

7.7 Αριθμητικές εκφράσεις

Όταν μια τιμή προκύπτει από υπολογισμό, τότε αναφερόμαστε σε εκφράσεις (expressions). Για τη σύνταξη μιας αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές, μεταβλητές, συναρτήσεις, αριθμητικοί τελεστές και παρενθέσεις. Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις.

Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή, η οποία βρίσκεται μετά την εκτέλεση των πράξεων. Γι’ αυτό είναι απαραίτητο όλες οι μεταβλητές, που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα, δηλαδή να έχουν κάποια τιμή. Ιεραρχία

1. Ύψωση σε δύναμη. 2. Πολλαπλασιασμός και διαίρεση. 3. Πρόσθεση και αφαίρεση.

7.8 Εντολή εκχώρησης Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του προγράμματος.

7.9 Εντολές εισόδου εξόδου

Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ.

Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών. Αν υπάρχουν περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα (,).

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 79: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

79

Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου. Συσκευή εξόδου μπορεί να είναι η οθόνη του υπολογιστή, ο εκτυπωτής, βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο πρόγραμμα.

7.10 Δομή προγράμματος

Η πρώτη εντολή κάθε προγράμματος είναι υποχρεωτικά η επικεφαλίδα του προγράμματος, η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος. Το τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ.

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

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

Ακολουθεί το κύριο μέρος του προγράμματος, που περιλαμβάνει όλες τις εκτελέσιμες εντολές. Οι εντολές αυτές περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες (κεφ. 10), αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

Κάθε εντολή γράφεται σε ξεχωριστή γραμμή. Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή, τότε ο πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας &.

Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό (!), σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες εντολές.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 80: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

80

ΚΚΕΕΦΦΑΑΛΛΑΑΙΙΟΟ 66οο

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

6.1 Η έννοια του προγραμματισμού 6.2 Ιστορική αναδρομή 6.3 Φυσικές και τεχνητές γλώσσες 6.4 Τεχνικές σχεδίασης προγραμμάτων

6.4.1 Ιεραρχική σχεδίαση προγράμματος 6.4.2 Τμηματικός προγραμματισμός 6.4.3 Δομημένος προγραμματισμός

6.5 Αντικειμενοστρεφής προγραμματισμός 6.6 Παράλληλος προγραμματισμός 6.7 Προγραμματιστικά περιβάλλοντα

ΠΠΛΛΙΙΑΑΤΤΣΣΙΙΟΟΣΣ ΑΑΝΝΤΤΩΩΝΝΙΙΟΟΣΣ ΚΚααθθηηγγηηττήήςς ΠΠλληηρροοφφοορριικκήήςς

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 81: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

81

6.1 Η έννοια του προγραμματισμού

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

Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου. Τη διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή.

Ο προγραμματισμός ασχολείται με το τρίτο αυτό στάδιο, τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος. Ο προγραμματισμός είναι η διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέμε στην ορολογία της Πληροφορικής). Η διατύπωση γίνεται χρησιμοποιώντας μία γλώσσα προγραμματισμού.

6.2 Ιστορική αναδρομή

Κατηγορίες γλωσσών προγραμματισμού

Γλώσσα μηχανής

Το πρόγραμμα περιέχει εντολές που είναι σε δυαδική μορφή, άμεσα κατανοητή από τον Η/Υ (όχι όμως από τον άνθρωπο). Δηλαδή, το πρόγραμμα αποτελείται από ακολουθίες 0 και 1 π.χ. 10101000 00001010 11000000 00000001 …………………… Πλεονεκτήματα: o Ταχύτατη εκτέλεση των εντολών. o Δεν απαιτείται μεταφραστικό πρόγραμμα. Μειονεκτήματα: o Το γράψιμο του προγράμματος είναι μία ιδιαίτερα επίπονη και

χρονοβόρα διαδικασία. o Απαιτείται βαθιά γνώση της αρχιτεκτονικής του Η/Υ. o Το πρόγραμμα «τρέχει» μόνο στο συγκεκριμένο τύπο του Η/Υ.

Γλώσσες χαμηλού

επιπέδου ή Συμβολικές

γλώσσες

Οι εντολές που είναι σε μορφή 0 και 1 αντικαθίστανται από μνημονικά (συμβολικά) ονόματα. Για παράδειγμα, η εντολή 100001100 αντικαθίστανται από το ADD. Ένα δείγμα χρήσης θα ήταν: INDEX =$01 {βάλε στην INDEX την τιμή 1} ADD INDEX {πρόσθεσε την τιμή της INDEX στον συσσωρευτή} LDA #10 {φόρτωσε στο συσσωρευτή την τιμή 10} CLA {καθάρισε το συσσωρευτή} ……………….. Πλεονεκτήματα: o Ταχύτατη εκτέλεση των εντολών. o Η μορφή του προγράμματος είναι καλύτερα κατανοητή από τον

άνθρωπο σε σχέση με τη γλώσσα μηχανής. Μειονεκτήματα: o Η αντιστοιχία 1 προς 1 με τις εντολές της γλώσσας παρέμενε. o Απαιτείται η χρήση ενός μεταφραστικού προγράμματος ώστε οι

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 82: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

82

συμβολικές εντολές να μετατραπούν στις αντίστοιχες δυαδικές. Το ειδικό αυτό πρόγραμμα ονομάζεται συμβολομεταφραστής (assembler).

o Το γράψιμο του προγράμματος εξακολουθεί να είναι μία ιδιαίτερα επίπονη και χρονοβόρα διαδικασία.

o Απαιτείται βαθιά γνώση της αρχιτεκτονικής του Η/Υ. o Το πρόγραμμα «τρέχει» μόνο στο συγκεκριμένο τύπο του Η/Υ.

Γλώσσες υψηλού επιπέδου

Λέγονται έτσι διότι τα προγράμματα διατυπωμένα σε μία τέτοια γλώσσα είναι άμεσα κατανοητά από τον άνθρωπο (αλλά όχι από τον Η/Υ) αφού χρησιμοποιείται μία γλώσσα που είναι αρκετά περιγραφική όπως μία φυσική γλώσσα. Παράδειγμα, INPUT “Δώσε την τελική τιμή’’ ; N SUM = 0 For INDEX = 1 to N SUM = SUM + INDEX Next Πλεονεκτήματα: o Η μορφή του προγράμματος είναι εύκολα κατανοητή από τον άνθρωπο

σε σχέση με τη γλώσσα μηχανής ή τη συμβολική γλώσσα. o Το γράψιμο του προγράμματος δεν είναι πλέον μία ιδιαίτερα επίπονη

και χρονοβόρα διαδικασία όπως συμβαίνει με τη γλώσσα μηχανής ή τη συμβολική γλώσσα.

o Δεν απαιτείται σχεδόν καμία γνώση της αρχιτεκτονικής του Η/Υ. Συνεπώς, είναι ανεξάρτητα από την αρχιτεκτονική του Η/Υ.

o Το πρόγραμμα «τρέχει» σε όλους τους τύπους Η/Υ αρκεί να υπάρχει το κατάλληλο μεταφραστικό πρόγραμμα. Συνεπώς ένα χαρακτηριστικό τους είναι η μεταφερσιμότητα, δηλαδή ένα πρόγραμμα υψηλού επιπέδου να εκτελείται, με ελάχιστες μετατροπές, σε πολλούς τύπους Η/Υ.

o Η εκμάθηση της γλώσσας είναι εύκολη. o Η διόρθωση λαθών και η συντήρηση των προγραμμάτων είναι

ευκολότερη. Μειονεκτήματα: o Απαιτείται η χρήση ενός μεταφραστικού προγράμματος ώστε οι εντολές

να μετατραπούν σε πολλές δυαδικές εντολές (δεν έχουμε εδώ αντιστοιχία 1 προς 1). Έχουμε δύο ειδών μεταφραστικά προγράμματα: τους μεταγλωττιστές (compilers) και τους διερμηνείς (interpreters).

o Το πρόγραμμα «τρέχει» πιο αργά σε σχέση με τα προγράμματα των συμβολικών γλωσσών ή της γλώσσας μηχανής.

Κατηγοριοποίηση γλωσσών υψηλού επιπέδου:

o Διαδικασιακές ή αλγοριθμικές γλώσσες (Procedural): λέγονται έτσι διότι επιτρέπουν την εύκολη υλοποίηση αλγορίθμων π.χ. Pascal, Basic.

o Αντικειμενοστραφείς γλώσσες (object – oriented) π.χ. C++ o Συναρτησιακές γλώσσες (functional) π.χ. LISP o Μη-διαδικασιακές γλώσσες π.χ. PROLOG o Γλώσσες ερωταπαντήσεων (Query languages) ή 4ης γενιάς π.χ. SQL

Μία άλλη κατηγοριοποίηση των γλωσσών υψηλού επιπέδου είναι η εξής:

o Γλώσσες γενικής χρήσης: Σκοπός τους είναι να επιλύουν πάσης φύσεως προβλήματα (αριθμητικά, εμπορικά, επιστημονικά). Τέτοιες είναι η Basic, Pascal. Μερικές γλώσσες, όμως, έχουν δημιουργηθεί αποκλειστικά για να επιλύουν ευκολότερα συγκεκριμένους τύπους προβλημάτων όπως:

� Γλώσσες επιστημονικής κατεύθυνσης: π.χ. FORTRAN � Γλώσσες εμπορικής κατεύθυνσης: π.χ. COBOL.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 83: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

83

o Γλώσσες προγραμματισμού συστημάτων π.χ. C o Γλώσσες τεχνητής νοημοσύνης π.χ. LISP, PROLOG. o Γλώσσες ειδικής χρήσης. Σκοπός τους είναι να επιλύουν ειδικού τύπου προβλήματα όπως

διαχείριση Βάσεων Δεδομένων κ.α. π.χ. SQL.

Διαδικασιακές γλώσσες κατά χρονολογική σειρά εμφάνισης

FORTRAN (1957) Κατάλληλη για επίλυση επιστημονικών προβλημάτων (αριθμητικές εφαρμογές).

COBOL (1960) Κατάλληλη για επίλυση εμπορικών προβλημάτων (εφαρμογές μισθοδοσίας, λογιστικές κλπ).

ALGOL (1960)

Δημιουργήθηκε με σκοπό την ανάπτυξη προγραμμάτων κυρίως για επιστημονικές εφαρμογές ως ανταγωνιστική της Fortran. Δεν χρησιμοποιήθηκε, όμως, ευρέως στην πράξη. Πρωτοπαρουσίασε τις αρχές του δομημένου προγραμματισμού.

PL/1 (μέσα ’60) Προσπάθησε να συνδυάσει τις δυνατότητες των γλωσσών προσανατολισμένων για εμπορικές και επιστημονικές εφαρμογές χωρίς όμως να γνωρίσει επιτυχία.

BASIC (μέσα ’60)

Δημιουργήθηκε με σκοπό την εκπαίδευση των αρχάριων στον προγραμματισμό. Σκοπός της BASIC είναι να γράφονται μικρά προγράμματα που κατόπιν εκτελούνται με τη βοήθεια διερμηνέα (interpreter). Στις μέρες μας αποτελεί μία πανίσχυρη, γενικής χρήσης γλώσσα.

PASCAL (1970) Γλώσσα γενικής χρήσης. Στηρίχθηκε στην ALGOL. Είναι η καταλληλότερη γλώσσα για να μάθει κάποιος δομημένο προγραμματισμό.

C (αρχές ’70)

Περιέχει αρκετά κοινά χαρακτηριστικά με τη Pascal για την ανάπτυξη δομημένων εφαρμογών αλλά παράλληλα ενσωματώνει και χαρακτηριστικά γλώσσας χαμηλού επιπέδου. Θεωρείται κατάλληλη για την ανάπτυξη λειτουργικών συστημάτων (π.χ. Unix)

Ada (1979) Γλώσσα γενικής χρήσης που δίνει έμφαση στο θέμα της αξιοπιστίας των προγραμμάτων. Γι’ αυτό χρησιμοποιήθηκε πρωτίστως για στρατιωτικές εφαρμογές.

Αντικειμενοστραφείς γλώσσες κατά χρονολογική σειρά εμφάνισης

Smalltalk (αρχές ’80) Η πρώτη αντικειμενοστραφής γλώσσα με ολοκληρωμένο μάλιστα περιβάλλον ανάπτυξης προγραμμάτων.

C++ (τέλη ’80)

Αποτελεί μία μετεξέλιξη της C στο χώρο του αντικειμενοστραφούς προγραμματισμού και χρησιμοποιείται αρκετά στην ανάπτυξη λειτουργικών συστημάτων (π.χ. Windows) αλλά και άλλου τύπου εφαρμογών. Θεωρείται σήμερα μία κορυφαία γλώσσα.

JAVA (μέσα ’90)

Γλώσσα ειδικά σχεδιασμένη για την ανάπτυξη εφαρμογών στο Internet. Σκοπός της είναι να γράφονται προγράμματα που θα εκτελούνται, χωρίς μετατροπές, σε Η/Υ με διαφορετικά λειτουργικά συστήματα. Περιέχει αρκετά στοιχεία από τη C++.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 84: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

84

C# (2002)

Δημιουργήθηκε ως ανταγωνιστική της JAVA. Σκοπός της είναι να συνδυάσει την ευχρηστία της Basic και τη δυναμική της C++ για την ανάπτυξη εφαρμογών που θα εκτελούνται σε Η/Υ με διαφορετικά λειτουργικά συστήματα.

Συναρτησιακές γλώσσες κατά χρονολογική σειρά εμφάνισης

LISP (μέσα ’60) Δημιουργήθηκε για την ανάπτυξη προγραμμάτων στο χώρο της τεχνητής νοημοσύνης.

Μη - διαδικασιακές γλώσσες κατά χρονολογική σειρά εμφάνισης

PROLOG (αρχές ’70) Δημιουργήθηκε για την ανάπτυξη προγραμμάτων στο χώρο της τεχνητής νοημοσύνης.

Γλώσσες 4ης γενιάς ή ερωταπαντήσεων

SQL

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

Παράδειγμα,

SELECT Επώνυμο, Όνομα

FROM Μαθητές

WHERE Τάξη = ‘’Γ2’’

Η παραπάνω πρόταση της γλώσσας SQL θα κάνει μία αναζήτηση στη βάση δεδομένων των μαθητών και θα εμφανίσει τα ονοματεπώνυμα των μαθητών του Γ2 μόνο.

Από τι εξαρτάται η επιλογή μίας γλώσσας προγραμματισμού;

o Από το είδος του προβλήματος (εμπορικό, αριθμητικό κ.α.) o Από τον Η/Υ στον οποίο θα εκτελεστεί το πρόγραμμα. o Από τη διαθέσιμη γλώσσα ή προγραμματιστικό περιβάλλον στο οποίο θα αναπτυχθεί το

πρόγραμμα. o Από τις γνώσεις και την εμπειρία του προγραμματιστή.

Με την ευρεία διάδοση των γραφικών περιβαλλόντων επικοινωνίας (π.χ. Windows, Mac OS κλπ) δημιουργήθηκαν παραλλαγές κάποιων γλωσσών που απευθύνονται σε αυτά. Τέτοιες είναι η Visual Basic, Visual C++, Delphi (Visual Pascal), C# κ.α. Αυτές οι γλώσσες ακολουθούν τη φιλοσοφία του οπτικού και του καθοδηγούμενου-από-γεγονότα προγραμματισμού χωρίς να απορρίπτουν τις αρχές του δομημένου προγραμματισμού.

6.3 Φυσικές και τεχνητές γλώσσες Οι γλώσσες προγραμματισμού είναι τεχνητές γλώσσες που απευθύνονται σε ανθρώπους που επιθυμούν να επικοινωνήσουν με τον Η/Υ. Κάθε γλώσσα προγραμματισμού προσδιορίζεται από:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 85: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

85

o Το αλφάβητό της o Το λεξιλόγιό της o Τη γραμματική της o Τη σημασιολογία της (Semantics)

Αλφάβητο γλώσσας

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

Λεξιλόγιο γλώσσας

Το λεξιλόγιο μίας γλώσσας περιλαμβάνει όλες τις έγκυρες και αποδεκτές λέξεις. Στην ουσία, είναι ένα υποσύνολο από όλες τις δυνατές ακολουθίες που μπορούμε να σχηματίσουμε από τα στοιχεία του αλφαβήτου. Σε μία φυσική γλώσσα, όπως τα Ελληνικά, η λέξη ΔΙΑΒΑΖΩ είναι αποδεκτή ενώ η λέξη ΖΩΒΑΓΩ όχι.

Η Γραμματική της γλώσσας

Η γραμματική περιλαμβάνει το τυπολογικό και το συντακτικό. Το τυπολογικό ορίζει τους κανόνες σύμφωνα με του οποίους μία λέξη θα είναι αποδεκτή. Για παράδειγμα, στην ελληνική γλώσσα για τη λέξη ‘’δίνω’’, αποδεκτές μορφές είναι και το ‘’δίνεις’’, ‘’δίνουν’’ αλλά όχι το ‘’δίνουτ’’. Το συντακτικό είναι ένα σύνολο κανόνων που ορίζει το πώς πρέπει να σχηματίζονται οι προτάσεις από τις λέξεις της γλώσσας ώστε οι προτάσεις αυτές να είναι έγκυρες και αποδεκτές. Σε μία γλώσσα προγραμματισμού αυτό που ενδιαφέρει είναι η σωστή σύνταξη των εντολών.

Σημασιολογία της γλώσσας

Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων και προτάσεων της γλώσσας. Σε μία γλώσσα προγραμματισμού αυτό καθορίζεται από το δημιουργό της ενώ σε μία φυσική γλώσσα από αυτόν που εκφέρει την πρόταση.

Διαφορές μεταξύ φυσικών και τεχνητών γλωσσών

Φυσικές Τεχνητές

Χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων.

Χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπου και Η/Υ.

Έχουν μεγάλες δυνατότητες εξέλιξης. Νέες λέξεις μπορεί να εισαχθούν, κανόνες γραμματικής και σύνταξης να αλλάξουν κλπ.

Οι δυνατότητες εξέλιξης είναι περιορισμένες. Τις περισσότερες φορές η εξέλιξη αυτή αφορά την επέκταση του ρεπερτορίου των εντολών της γλώσσας (π.χ. Basic και Visual Basic).

6.4 Τεχνικές σχεδίασης προγραμμάτων

Δεν αρκεί κάποιος να γνωρίζει απλά μία γλώσσα προγραμματισμού. Θα πρέπει να ακολουθήσει και μία τεχνική σχεδίασης του προγράμματός του. Για την σύνταξη σωστών, κατανοητών και εύκολα συντηρήσιμων προγραμμάτων ακολουθήθηκαν διάφορες μεθοδολογίες ανάπτυξης που παρουσιάζονται παρακάτω:

6.4.1 Ιεραρχική σχεδίαση ή Top down σχεδίαση

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 86: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

86

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

απλούστερα υπο-προβλήματα τα οποία είναι ευκολότερο να επιλυθούν.

Για την Top-down σχεδίαση χρησιμοποιούμε το ιεραρχικό διάγραμμα. Παράδειγμα: Πρόγραμμα Υπολογισμός Καθαρού Μισθού

6.4.2 Τμηματικός προγραμματισμός

Η ιεραρχική σχεδίαση υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε μικρότερα και απλούστερα υπο-προβλήματα , κάθε υπο-πρόβλημα αποτελεί μία ξεχωριστή και ανεξάρτητη ενότητα (module). Τώρα, για κάθε ενότητα θα γραφτεί το κατάλληλο πρόγραμμα ή τμήμα προγράμματος.

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

Είναι η μεθοδολογία που έχει επικρατήσει σήμερα. Εμπεριέχει τις αρχές τις ιεραρχικής σχεδίασης και του τμηματικού προγραμματισμού. Επιπλέον, αναφέρει ότι για τη δημιουργία σωστών προγραμμάτων να χρησιμοποιούμε μόνο τις 3 στοιχειώδες δομές : Ακολουθίας, Επιλογής και Επανάληψης. Όλα τα προγράμματα, οσοδήποτε μεγέθους, μπορούν να γραφτούν στηριζόμενα στη χρήση μόνο αυτών των δομών, αποφεύγοντας πλήρως τη χρήση τη δομής GOTO. Επίσης, κάθε ενότητα προγράμματος έχει μόνο μία είσοδο και μόνο μία έξοδο. Πλεονεκτήματα του δομημένου προγραμματισμού

Άμεση υλοποίηση των αλγορίθμων σε πρόγραμμα. Διευκόλυνση της ανάλυσης του προγράμματος σε τμήματα (ενότητες) . Το κάθε τμήμα

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

6.5 Αντικειμενοστρεφής προγραμματισμός H φιλοσοφία του αντικειμενοστραφούς προγραμματισμού είναι η εξής: Να θεωρήσουμε τα δεδομένα και τις αποδεκτές ενέργειες που γίνονται πάνω σε αυτά ως ένα ενιαίο αντικείμενο (object). Αυτό το αντικείμενο θα μπορεί να χρησιμοποιηθεί πολύ εύκολα οπουδήποτε αλλού, δηλαδή θα είναι επαναχρησιμοποιήσιμο.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 87: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

87

Για παράδειγμα, θα μπορούσαμε να θεωρήσουμε μία στοίβα ως ένα αντικείμενο : Ένας πίνακας Π[1:20] που θα δέχεται ακεραίους. Οι μόνες ενέργειες που θα ήταν επιτρεπτές θα ήταν η ώθηση (push) ενός στοιχείου στη στοίβα και η αφαίρεση (pop) ενός στοιχείου από τη στοίβα. Αυτό το αντικείμενο θα μπορούσαμε να το δώσουμε και σε όποιον άλλο το είχε ανάγκη. Ο αντικειμενοστραφής προγραμματισμός ακολουθεί τις αρχές του δομημένου προγραμματισμού. Οπτικός προγραμματισμός Είναι η δυνατότητα να δημιουργούμε, με γραφικό τρόπο, ολόκληρο το περιβάλλον της εφαρμογής όπως για παράδειγμα τα μενού και τα πλαίσια διαλόγου και άλλα παράθυρα της εφαρμογής. Ο οπτικός προγραμματισμός εκμεταλλεύεται τις δυνατότητες των γραφικών περιβαλλόντων επικοινωνίας (π.χ Windows, Mac Os κλπ). Καθοδηγούμενος από γεγονότα προγραμματισμός Είναι η δυνατότητα να εκτελούνται οι διάφορες λειτουργίες του προγράμματος με την ενεργοποίηση ενός γεγονότος. Για παράδειγμα, αν κάνουμε κλικ σε κάποια εντολή ενός μενού ή σε κάποιο κουμπί σε ένα παράθυρο της εφαρμογής τότε θα εκτελεστεί μία λειτουργία.. Τα σύγχρονα προγραμματιστικά περιβάλλοντα είναι κτισμένα πάνω στις αρχές του οπτικού και καθοδηγούμενου από γεγονότα προγραμματισμού.

6.6 Παράλληλος προγραμματισμός Σήμερα υπάρχουν μεγάλοι Η/Υ που διαθέτουν στο εσωτερικό τους πολλούς επεξεργαστές. Οι επεξεργαστές αυτοί μοιράζονται την ίδια μνήμη και λειτουργούν παράλληλα. Έτσι, την ίδια χρονική στιγμή, μπορούν να εκτελούνται διαφορετικές εντολές του προγράμματος. Για να εκμεταλλευτούμε αυτήν την ιδιαίτερη ισχύ των Η/Υ θα πρέπει τα προγράμματα να είναι φτιαγμένα με τέτοιον τρόπο ώστε διαφορετικά τμήματά του να εκτελούνται παράλληλα. Για τον σκοπό αυτό έχουν αναπτυχθεί ιδιαίτερες γλώσσες προγραμματισμού όπως η OCCAM

6.7 Προγραμματιστικά περιβάλλοντα Ένα πρόγραμμα που φτιάχνεται σε μία γλώσσα υψηλού επιπέδου δεν είναι άμεσα κατανοητό από τον Η/Υ. Θα πρέπει να μεταφραστεί σε ισοδύναμο πρόγραμμα σε γλώσσα μηχανής (δυαδική μορφή). Την διαδικασία μετάφρασης την πραγματοποιούν τα μεταφραστικά προγράμματα. Είναι δύο ειδών:

Μεταγλωττιστές (Compilers) Διερμηνευτές (Interpreters)

Πηγαίο πρόγραμμα (Source program): Το πρόγραμμα που είναι φτιαγμένο σε γλώσσα υψηλού επιπέδου. Αντικείμενο πρόγραμμα (Object program): Το πρόγραμμα που είναι μεταφρασμένο σε γλώσσα μηχανής αλλά όχι άμεσα εκτελέσιμο. Εκτελέσιμο πρόγραμμα (Executable program): Το πρόγραμμα σε γλώσσα μηχανής που είναι έτοιμο πλέον να εκτελεστεί. Μεταγλωττιστής: Παίρνει, ως είσοδο, το πηγαίο πρόγραμμα και αναλαμβάνει να το μεταφράσει εξ’ ολοκλήρου παράγοντας το αντικείμενο πρόγραμμα. Διερμηνευτής: Παίρνει, ως είσοδο, μία-μία εντολή του πηγαίου, την μεταφράζει και την εκτελεί αμέσως. Η λειτουργία του μοιάζει με τον άνθρωπο-διερμηνέα που μεταφράζει επί τόπου κάθε πρόταση. Η διαδικασία μεταγλώττισης και σύνδεσης προγράμματος φαίνεται παρακάτω:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 88: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

88

Βιβλιοθήκες (Libraries): Έτοιμες ενότητες (modules) αντικείμενου προγράμματος της γλώσσας, απαραίτητες για την παραγωγή του εκτελέσιμου προγράμματος. Συνδέτης – Φορτωτής (Linker-Loader): Ειδικό πρόγραμμα που αναλαμβάνει να συνδέσει το αντικείμενο πρόγραμμα με τις βιβλιοθήκες και να παράγει το εκτελέσιμο. Κατά τη δημιουργία ενός προγράμματος σχεδόν πάντα ενυπάρχουν λάθη. Τα λάθη τα χωρίζουμε σε δύο κατηγορίες :

Συντακτικά λάθη Λογικά λάθη

Τα συντακτικά λάθη ανιχνεύονται κατά την διαδικασία της μεταγλώττισης ή διερμήνευσης. Αφορούν παραβιάσεις του τυπολογικού και συντακτικού της γλώσσας. (π.χ. μία εντολή έχει γραφτεί συντακτικά λάθος). Στην περίπτωση αυτή ο προγραμματιστής πρέπει να επιστρέψει στο πηγαίο πρόγραμμα, να διορθώσει τα λάθη και να το ξανά υποβάλλει για μεταγλώττιση. Τα λογικά λάθη είναι και τα πλέον δύσκολα στην ανίχνευσή τους. Έχουν να κάνουν με σφάλματα στη λογική επίλυσης του προβλήματος ή λανθασμένης διατύπωσης του αλγορίθμου (π.χ. το πρόγραμμα παράγει άλλα αποτελέσματα κι όχι τα ζητούμενα!). Για την σύνταξη των προγραμμάτων χρησιμοποιούμε ένα ειδικό πρόγραμμα που ονομάζεται συντάκτης (editor). Μοιάζει με επεξεργαστή κειμένου με επιπλέον δυνατότητες που διευκολύνουν την γρήγορη σύνταξη των πηγαίων προγραμμάτων. Τα σύγχρονα προγραμματιστικά περιβάλλοντα περιέχουν οπωσδήποτε 3 ειδών προγράμματα : Τον συντάκτη, το μεταγλωττιστή και το συνδέτη - φορτωτή. Πέραν αυτών, περιέχουν όλα εκείνα τα εργαλεία που διευκολύνουν την εύκολη, ταχύτατη σύνταξη, διόρθωση και συντήρηση των προγραμμάτων γι’ αυτό και πολλές φορές ονομάζονται ως RAD περιβάλλοντα (Rapid Application Development). Όλα αυτά παρέχονται με έναν ενιαίο και λειτουργικό τρόπο στον προγραμματιστή.

Πηγαίο (Source)

Μετάφραση

Μεταγλωττιστής

Αντικείμενο (Object)

Συνδέτης -φορτωτής

Βιβλιοθήκες

Σύνδεση – φόρτωση και παραγωγή

του Εκτελέσιμου

Εκτελέσιμο (Executable)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 89: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

89

Ερωτήσεις θεωρίας

1. Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με τον υπολογιστή;

2. Ποια είναι η εξέλιξη των γλωσσών προγραμματισμού;

3. Τι είναι ένα πρόγραμμα σε γλώσσα μηχανής;

4. Τι είναι οι συμβολικές γλώσσες και τι ο συμβολομεταφραστής;

5. Ποια τα μειονεκτήματα των συμβολικών γλωσσών;

6. Αναφέρατε τρεις γλώσσες υψηλού επιπέδου

7. Για τι είναι κατάλληλη η FORTRAN;

8. Σε τι προσανατολίζεται η COBOL;

9. Η ALGOL είναι γλώσσα γενικής φύσης ή συνδέεται με συγκεκριμένες εφαρμογές;

10. Η PL/1 είναι γλώσσα γενικής φύσης ή επιτρέπει παράλληλο προγραμματισμό;

11. Η LISP είναι αντικειμενοστραφής γλώσσα ή προσανατολίζεται σε χειρισμό λιστών από σύμβολα;

12. Η PROLOG προσανατολίζεται σε εμπορικές εφαρμογές ή σε προβλήματα τεχνητής νοημοσύνης;

13. Για τι είναι κατάλληλη η BASIC; Tα προγράμματά της μεταγλωττίζονται ή εκτελούνται με τη

βοήθεια διερμηνευτή;

14. Για τι είναι κατάλληλη η PASCAL;

15. Ποιο είναι το σημαντικότερο πλεονέκτημα της JAVA; Χρησιμοποιείται για αντικειμενοστραφή ή

δομημένο προγραμματισμό;

16. Η C είναι γλώσσα προγραμματισμού συστημάτων ή χειρισμού βάσεων δεδομένων;

17. Τι σημαίνουν οι όροι προγραμματισμός οδηγούμενος από τα γεγονότα και οπτικός

προγραμματισμός;

18. Η dBASE είναι γλώσσα μαθηματικών υπολογισμών ή χειρισμού βάσεων δεδομένων;

19. Ποια είναι τα πλεονεκτήματα της χρήσης γλωσσών υψηλού επιπέδου;

20. Η SQL επιτρέπει οπτικό προγραμματισμό ή είναι γλώσσα χειρισμού βάσεων δεδομένων μέσω

ερωταπαντήσεων;

21. Τι είναι οπτικός προγραμματισμός και τι αντικειμενοστραφής;

22. Ποια είναι τα στοιχεία που προσδιορίζουν μία γλώσσα;

23. Τι είναι το αλφάβητο μιας γλώσσας; Τι είναι το λεξιλόγιο μιας γλώσσας;

24. Τι είναι το τυπικό και τι το συντακτικό της γραμματικής μιας γλώσσας; Τι σημαίνει

σημασιολογία μίας γλώσσας;

25. Ποιες είναι οι διαφορές φυσικών και τεχνητών γλωσσών;

26. Είναι δυνατόν να εξελιχθεί μία γλώσσα προγραμματισμού;

27. Ποιος είναι ο σκοπός της "από πάνω προς τα κάτω σχεδίασης προγραμμάτων";

28. Ποια τα πλεονεκτήματα του τμηματικού προγραμματισμού;

29. Η εντολή GOTO που αλλάζει τη ροή εκτέλεσης ενός προγράμματος χρειάζεται στο δομημένο

προγραμματισμό ή είναι περιττή;

30. Δώστε τον ορισμό του δομημένου προγραμματισμού. Ποια είναι τα πλεονεκτήματά του;

31. Ο αντικειμενοστραφής προγραμματισμός στηρίζει τη φιλοσοφία του στα δεδομένα ή στις

ενέργειες που γίνονται πάνω σε αυτά;

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 90: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

90

32. Μπορεί οποιοδήποτε πρόγραμμα να εκτελεστεί σε πολλούς επεξεργαστές ή πρέπει να έχει

προγραμματιστεί με αυτό το σκοπό;

33. Τι είναι ένας μεταγλωττιστής;

34. Περιγράψτε τα στάδια μεταγλώττισης και σύνδεσης ενός προγράμματος από το αρχικό

πρόγραμμα ως το εκτελέσιμο

35. Τι είναι ένας διερμηνευτής;

36. Περιγράψτε τη διαδικασία μετάφρασης και εκτέλεσης ενός προγράμματος σε έναν διερμηνευτή

37. Τι είναι ο συντάκτης και τι ο συνδέτης;

Ερωτήσεις Πολλαπλής Επιλογής

1. Ο προγραμματισμός αφορά την διατύπωση ενός αλγορίθμου σε κατανοητή από τον υπολογιστή μορφή

2. Βασικό στοιχείο του προγράμματος είναι τα δεδομένα οι δομές δεδομένων πέραν της κωδικοποίησης

3. Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία ανθρώπου - μηχανής

4. Ένα πρόγραμμα γραμμένο σε γλώσσα μηχανής είναι εντολές προς τον επεξεργαστή για στοιχειώδεις λειτουργίες

5. Ένα πρόγραμμα σε γλώσσα μηχανής χρειάζεται μετατροπή σε ακολουθία δυαδικών ψηφίων ώστε να εκτελεστεί από τον υπολογιστή

6. Μια ακολουθία εντολών 0, 1 είναι κατανοητή από τον επεξεργαστή και μπορεί να εκτελεστεί χωρίς μετατροπή

7. Ο προγραμματισμός σε γλώσσα μηχανής ήταν μια εξαιρετικά δύσκολη δουλειά που ελάχιστοι μπορούσαν να πραγματοποιήσουν

8. Ένα πρόγραμμα σε συμβολική γλώσσα ή γλώσσα χαμηλού επιπέδου τελικά μετατρέπεται σε γλώσσα μηχανής

9. Η συμβολική γλώσσα είναι μια ακολουθία 0 και 1

10. Μια εντολή ενός προγράμματος γλώσσας χαμηλού επιπέδου μεταφράζεται σε γλώσσα μηχανής

11. Με τις γλώσσες χαμηλού επιπέδου το κέντρο βάρους μετακινήθηκε από τον υπολογιστή προς τον άνθρωπο

12. Οι εντολές σε συμβολική γλώσσα αποτελούνται από συμβολικά ονόματα που αντιστοιχούν σε εντολές της γλώσσας μηχανής

13. Οι συμβολικές γλώσσες έφεραν την ανεξαρτησία από την αρχιτεκτονική κάθε υπολογιστή

14. Τα προγράμματα σε γλώσσες χαμηλού επιπέδου είναι εύκολο να γραφτούν και να συντηρηθούν

15. Τα προγράμματα σε γλώσσες υψηλού επιπέδου είναι ανεξάρτητα του υπολογιστή που αναπτύχθηκαν

16. Οι γλώσσες υψηλού επιπέδου ήρθαν να επιλύσουν τις αδυναμίες των συμβολικών γλωσσών για καλύτερη επικοινωνία ανθρώπου - μηχανής

17. Η Fortran είναι γλώσσα χαμηλού επιπέδου

18. Η γλώσσα προγραμματισμού Fortran είναι κατάλληλη για την επίλυση όλων των ειδικών προβλημάτων

19. Η Fortran είναι κατάλληλη για την επίλυση μαθηματικών και επιστημονικών προβλημάτων

20. Ένα πρόγραμμα γλώσσας υψηλού επιπέδου μπορεί να εκτελεστεί σε οποιονδήποτε υπολογιστή ανεξάρτητα της αρχιτεκτονικής

21. Δεν έχει αναπτυχθεί γλώσσα υψηλού επιπέδου που να επιλύει όλα τα είδη προβλημάτων

22. H COBOL είναι γλώσσα προσανατολισμένη στην ανάπτυξη εμπορικών εφαρμογών

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 91: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

91

23. H COBOL δεν μπορεί να επιλύσει μαθηματικά προβλήματα

24. Η Algol είναι μια γλώσσα γενικού σκοπού αλλά με ελάχιστη πρακτική εφαρμογή

25. Η Algol αναπτύχθηκε για την επίλυση μαθηματικών προβλημάτων

26. Η PL/1 είναι γλώσσα υψηλού επιπέδου γενικής χρήσης με ελάχιστη επιτυχία

27. Η PL/1 προσπάθησε να συνθέσει Fortran και COBOL

28. Η Lisp και η Prolog είναι γλώσσες προγραμματισμού που χρησιμοποιούνται στον τομέα της Τεχνητής Νοημοσύνης

29. Η Basic είναι γλώσσα γενικού σκοπού με έμφαση στην εκπαίδευση αρχαρίων στον προγραμματισμό

30. Η Basic κατόρθωσε με συνεχείς ανανεώσεις να καταστεί από τις πλέον δημοφιλείς γλώσσες προγραμματισμού

31. Η γλώσσα Pascal είναι γλώσσα γενικού σκοπού και κατάλληλη τόσο για την εκπαίδευση όσο και για τη δημιουργία ισχυρών προγραμμάτων

32. Η Pascal αποτέλεσε τη βάση για την παρουσίαση γλωσσών όπως η ADA και η Modula-2

33. Η C χρησιμοποιήθηκε για την ανάπτυξη συστημάτων και έχει πολλές δυνατότητες χαμηλού επιπέδου

34. Η C++ είναι γλώσσα τέταρτης γενιάς

35. Η C++ και οι Java είναι αντικειμενοστραφείς γλώσσες

36. Η Java είναι κατάλληλη για την ανάπτυξη εφαρμογών που εκτελούνται δικτυακά

37. Ο οδηγούμενος από τα γεγονότα προγραμματισμός και οι γλώσσες οπτικού προγραμματισμού αξιοποιούν τα γραφικά χαρακτηριστικά του υπολογιστή (ποντίκι, μενού κ.λ.π.)

38. Στον οπτικό προγραμματισμό ο προγραμματιστής δεν γράφει κώδικα αλλά σχεδιάζει τα οπτικά αντικείμενα της εφαρμογής του

39. Οι πιο διαδεδομένες οπτικές γλώσσες είναι η Visual Basic, η Visual C++ και η Java

40. Ο δομημένος προγραμματισμός επιτρέπει την άμεση μεταφορά των αλγορίθμων σε πρόγραμμα

41. Χάρη στο δομημένο προγραμματισμό δημιουργούνται προγράμματα απλούστερα, κατανοήσιμα και εύκολα στη διόρθωση

42. Στο δομημένο προγραμματισμό ακολουθούνται οι αρχές του ιεραρχικού και του τμηματικού προγραμματισμού

43. Στην ιεραρχική σχεδίαση, η ανάλυση του αλγορίθμου πραγματοποιείται με την τεχνική «από πάνω προς τα κάτω»

44. Ένα πλεονέκτημα των γλωσσών προγραμματισμού χαμηλού επιπέδου είναι η μεταφερσιμότητα των προγραμμάτων

45. Παρά τη μεταφερσιμότητά τους, τα προγράμματα υψηλού επιπέδου είναι δυσκολότερο να διορθωθούν και να συντηρηθούν

46. Στα πλεονεκτήματα των γλωσσών προγραμματισμού υψηλού επιπέδου σε σχέση με τις συμβολικές γλώσσες είναι η ανεξαρτησία από τον τύπο του υπολογιστή

47. Οι γλώσσες υψηλού επιπέδου προτιμούνται για τον κοντύτερα στον άνθρωπο τρόπο έκφρασης

48. Είναι ευκολότερη η εκμάθηση μιας γλώσσας χαμηλού επιπέδου

49. Ο παράλληλος προγραμματισμός προϋποθέτει την ύπαρξη περισσοτέρων από έναν επεξεργαστών

50. Οι γλώσσες 4ης γενιάς χρησιμοποιούνται σε εφαρμογές που χρησιμοποιούν βάσεις δεδομένων

51. Η καλύτερη γλώσσα προγραμματισμού είναι η Pascal

52. Η επιλογή της καλύτερης γλώσσας προγραμματισμού εξαρτάται από το είδος της εφαρμογής

53. Μια γλώσσα προγραμματισμού προσδιορίζεται από: το αλφάβητό της, το λεξιλόγιό της, τη γραμματική της και τη σημασιολογία της

54. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 92: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

92

55. Η γραμματική είναι το συντακτικό μιας γλώσσας

56. Δεν υπάρχουν διαφορές μεταξύ φυσικών και τεχνητών γλωσσών

57. Η ιεραρχική σχεδίαση διασπά ένα πρόβλημα σε υποπροβλήματα και τα επιλύει, λύνοντας το αρχικό πρόβλημα

58. Ο τμηματικός προγραμματισμός υλοποιεί την φιλοσοφία της ιεραρχικής σχεδίασης

59. Κάθε υποπρόβλημα της ιεραρχικής σχεδίασης αποτελεί μια ανεξάρτητη ενότητα στον τμηματικό προγραμματισμό

60. Ο δομημένος προγραμματισμός περιέχει την ιεραρχική σχεδίαση και τον τμηματικό προγραμματισμό

61. Ο δομημένος προγραμματισμός προϋποθέτει τη χρήση εξειδικευμένων αλγοριθμικών δομών

62. Η αντικειμενοστραφής προσέγγιση εκλαμβάνει ως πρωτεύοντα δομικά στοιχεία ενός προγράμματος τις τρεις αλγοριθμικές δομές: δομή ακολουθίας, δομή επιλογής και δομή επανάληψης

63. Για την ανάπτυξη προγραμμάτων με τη φιλοσοφία του παράλληλου προγραμματισμού απαιτείται η χρήση εξειδικευμένων γλωσσών προγραμματισμού

64. Ο διερμηνευτής (interpreter) μετατρέπει το εκτελέσιμο πρόγραμμα (executable) σε πρόγραμμα αντικείμενο (object)

65. Ο μεταγλωττιστής μας επιτρέπει να συντάσσουμε ένα πρόγραμμα

66. Ο μεταγλωττιστής αναλαμβάνει το ρόλο της μετάφρασης από το πηγαίο πρόγραμμα στο εκτελέσιμο πρόγραμμα

67. Ο διερμηνευτής ελέγχει και μετατρέπει μια-μια τις εντολές του πηγαίου προγράμματος σε γλώσσα μηχανής

68. Ο συνδέτης μετατρέπει το πηγαίο πρόγραμμα σε βιβλιοθήκη

69. Το αντικείμενο πρόγραμμα είναι ουσιαστικά γλώσσα μηχανής

70. Ο συνδέτης είναι ένα πρόγραμμα ελέγχου των συντακτικών λαθών του πηγαίου προγράμματος

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

72. Τα συντακτικά λάθη επιδιορθώνονται γρήγορα και εύκολα αλλά για τα λογικά λάθη η επιδιόρθωση είναι μια επίπονη διαδικασία

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

74. Ο διερμηνευτής έχει το πλεονέκτημα ότι το πρόγραμμα εκτελείται γρηγορότερα

75. Τα σύγχρονα προγραμματιστικά περιβάλλοντα χρησιμοποιούν μικτές υλοποιήσεις διερμηνευτή και μεταγλωττιστή

76. Σ' ένα σύγχρονο προγραμματιστικό περιβάλλον απαιτείται η παρουσία συντάκτη για την συγγραφή του κειμένου των εντολών

77. Για την επιδιόρθωση των λογικών λαθών πολλές φορές ο προγραμματιστής καλείται να εκτελέσει το πρόγραμμά του επανειλημμένα

78. Ο μεταγλωττιστής σ' ένα σύγχρονο προγραμματιστικό περιβάλλον καθιστά την ύπαρξη του συνδέτη προαιρετική

79. Ο μεταγλωττιστής διορθώνει όλα τα συντακτικά λάθη με τη χρήση βιβλιοθηκών

80. Η παράλειψη μιας εντολής Τέλος_αν είναι λογικό λάθος

81. Η χρήση της εντολής ΜΟ ← α + β + γ / 3 αντί της ΜΟ ← (α + β + γ) / 3 είναι λογικό λάθος

82. Τα λογικά λάθη ενός προγράμματος εμφανίζονται κατά τη μεταγλώττιση

83. Ο εντοπισμός των συντακτικών λαθών σε ένα πρόγραμμα γίνεται από τον μεταγλωττιστή (compiler)

84. Το έργο της μετάφρασης εντολών γλώσσας χαμηλού επιπέδου σε ακολουθία 0, 1 αναλαμβάνει ο ____________

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 93: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

93

85. Η δυσκολία προγραμματισμού σε γλώσσα μηχανής οδήγησε στην δημιουργία ________________ γλωσσών ή γλωσσών ___________ επιπέδου

86. Βασική τεχνική σχεδίασης προγραμμάτων είναι η τεχνική του _______________ προγραμματισμού

87. Κάθε πρόγραμμα γλώσσας υψηλού επιπέδου μεταφράζεται σε γλώσσα μηχανής από ένα ειδικό πρόγραμμα που ονομάζεται ___________

88. Η ανεξαρτησία των γλωσσών προγραμματισμού από την αρχιτεκτονική των υπολογιστών ονομάζεται _______________

89. Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών στοιχειωδών δομών: της __________, της __________ και της __________

90. ____________ είναι το σύνολο των κανόνων που ορίζει τις μορφές που μια λέξη είναι αποδεκτή

91. ____________ είναι το σύνολο των κανόνων που καθορίζει τη διάταξη και τη σύνδεση των λέξεων

92. Η λανθασμένη γραφή των δεσμευμένων λέξεων της γλώσσας προγραμματισμού είναι ______________ λάθος

93. ____________ είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων και κατ' επέκταση των εκφράσεων και προτάσεων που χρησιμοποιούνται σε μια γλώσσα

94. Κάθε προγραμματιστικό περιβάλλον διαθέτει τον μεταγλωττιστή του

95. Ο μεταγλωττιστής δέχεται στην είσοδό του έναν πρόγραμμα σε γλώσσα ___________ ____________ δημιουργώντας ισοδύναμο σε γλώσσα _______________

96. Η μεταγλώττιση ενός προγράμματος γίνεται από τους __________ ή τους __________

97. Οι εντολές ενός προγράμματος μετατρέπονται σε ακολουθίες που αποτελούνται από 0 και 1, δηλαδή σε ____________ _________________

98. Τα ____________ λάθη δεν είναι δυνατόν να εντοπίζονται από το προγραμματιστικό περιβάλλον

99. Στον δομημένο προγραμματισμό χρησιμοποιούμε:

α) την εντολή goto

β) μόνο τις βασικές αλγοριθμικές δομές

γ) τις δομές δεδομένων

δ) τις βασικές αλγοριθμικές δομές και σπανίως την εντολή goto

100. Κατά την ανάλυση, ο κατακερματισμός ενός αλγορίθμου σε απλούστερους αποτελεί χαρακτηριστικό:

α) του τμηματικού προγραμματισμού

β) του ιεραρχικού προγραμματισμού

γ) της κλασσικής ανάπτυξης

δ) της υλοποίησης με την μέθοδο «από κάτω προς τα πάνω»

101. Χαρακτηριστικό του οπτικού προγραμματισμού είναι:

Α Επιτρέπει τη γραφική δημιουργία του περιβάλλοντος

Β. Επιτρέπει την ανάπτυξη του προγράμματος σε τμήματα

Γ. Είναι ταχύτερος στην εκτέλεση των προγραμμάτων

Δ. Επιτρέπει την διαγραμματική παράσταση της σχεδίασης

102. Η Basic είναι

Α. Κατάλληλη για εφαρμογές τεχνητής νοημοσύνης

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 94: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

94

Β. Υποστηρίζει την ανάπτυξη παράλληλου προγραμματισμού

Γ. Μία γλώσσα γενικής χρήσης

Δ. Κατάλληλη μόνο για εκπαίδευση

103. Από τον συντάκτη παράγεται:

α) Τα αντικείμενα

β) ο εκτελέσιμος κώδικας

γ) ο πηγαίος κώδικας

δ) τίποτα από τα παραπάνω

104. Να συνδέσετε τα στοιχεία της στήλης Α με τα στοιχεία των στηλών Β και Γ

ΟΝΟΜΑ ΓΛΩΣΣΑΣ ΤΟΜΕΑΣ ΕΦΑΡΜΟΓΩΝ ΕΙΔΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

1. Fortran 2. Cobol 3. Algol 4. Prolog 5. Lisp 6. Pascal 7. Basic 8. C 9. C++ 10. Java 11. PL/1

Ι. Επιστημονικός II. Εμπορικός III. Επιστημονικός και Εμπορικός IV. Προγραμματισμός συστημάτων V. Προγραμματισμός στο διαδίκτυο VI. Γενικής χρήσης VII. Τεχνητής νοημοσύνης

A. Συναρτησιακός

B. Αντικειμενοστραφής

C. Μη διαδικασιακός

D. Διαδικασιακός

105. Να αντιστοιχίσετε τα στοιχεία της στήλης Α µε τα στοιχεία της στήλης Β:

Στήλη Α Στήλη Β

Σκοπιές που μελετά η πληροφορική

1. τους αλγορίθµους

2. τα δεδοµένα

I. Υλικού II. Γλωσσών προγραµµατισµού III. Δοµών δεδοµένων IV. Θεωρητική V. Ανάλυσης δεδοµένων VI. Αναλυτική

106. Να αντιστοιχίσετε τα στοιχεία της στήλης Α µε τα στοιχεία της στήλης Β

Στήλη Α Στήλη Β

1. Δοµηµένος προγραµµατισµός 2. Τµηµατικός προγραµµατισµός 3. Αντικειµενοστραφής προγραµµατισµός 4 . Παράλληλος προγραμματισμός

Α. Διαίρεση του προβλήµατος σε τµήµατα που εκτελούνται παράλληλα Β. Ένα πρόβληµα περιγράφει "ενέργειες" που εφαρµόζονται στα δεδοµένα Γ. Κάθε υποπρόβλημα αποτελεί ξεχωριστή ενότητα Δ. Χρήση βασικών αλγοριθμικών δομών

107. Να αντιστοιχίσετε τα στοιχεία της στήλης Α και της στήλης Β

Α Β

1. Δομή επιλογής Α) Επαναληπτική εκτέλεση εντολών

2. Δομή επανάληψης B) Χρήση εντολή GoTo

3. Μη δομημένος προγραμματισμός Γ) Σειριακή εκτέλεση εντολών

4. Δομή ακολουθίας Δ) Επιλεκτική εκτέλεση εντολών

5. Δομημένος προγραμματισμός E) Αποφυγή χρήσης Εντολής GoTo

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 95: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

95

108. Να αντιστοιχίσετε τα στοιχεία της στήλης Α µε τα στοιχεία της στήλης Β

Στήλη Α Στήλη Β

Α. Γλώσσα μηχανής Β. Μεταγλωττιστής Γ. Συμβολικές γλώσσες Δ. Συνδέτης - Φορτωτής Ε. Γλώσσες υψηλού επιπέδου

1. Basic, Pascal, C 2. Συμβολομεταφραστής 3. Αντικείμενο πρόγραμμα 4. Βιβλιοθήκες 5. Ακολουθίες από 0 και 1

109. Το εκτελέσιμο είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή

110. Στις γλώσσες υψηλού επιπέδου δεν υπάρχει η ικανότητα της μεταφερσιμότητας

111. Υπάρχουν δυο μεγάλες κατηγορίες μεταφραστικών προγραμμάτων: οι μεταφραστές και οι μεταγλωττιστές

112. Ο μεταγλωττιστής εξάγει το πηγαίο πρόγραμμα

113. Να αντιστοιχίσετε τα στοιχεία της στήλης Α µε τα στοιχεία της στήλης Β

Στήλη Α Στήλη Β

Α. Διερμηνευτής

Β. Μεταγλωττιστής

Γ. Δομημένος προγραμματισμός

Δ. Συντάκτης

1. Πρόγραμμα που δέχεται ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής

2. Μεθοδολογία σύνταξης προγραμμάτων που βοηθάει στην ανάπτυξη σύνθετων προγραμμάτων και στη διαχείρισή τους

3. Πρόγραμμα που χρησιμοποιείται για τη σύνταξη και τη διόρθωση προγραμμάτων

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

114. Τα βήματα για τη δημιουργία ενός προγράμματος είναι:

α) συντάκτης

β) συνδέτης

γ) πηγαίο πρόγραμμα

δ) μεταγλωττιστής

ε) εκτελέσιμο πρόγραμμα

στ) αντικείμενο πρόγραμμα

Κεφαλαίο 6ο 1: Σωστό 2: Σωστό 3: Σωστό 4: Σωστό

5: Λάθος 6: Λάθος 7: Σωστό 8: Σωστό

9: Λάθος 10: Σωστό 11: Σωστό 12: Σωστό

13: Λάθος 14: Λάθος 15: Σωστό 16: Σωστό

17: Λάθος 18: Λάθος 19: Σωστό 20: Σωστό

21: Σωστό 22: Σωστό 23: Λάθος 24: Σωστό

25: Λάθος 26: Σωστό 27: Σωστό 28: Σωστό

29: Σωστό 30: Σωστό 31: Σωστό 32: Σωστό

33: Σωστό 34: Λάθος 35: Σωστό 36: Σωστό

37: Σωστό 38: Σωστό 39: Σωστό 40: Σωστό

41: Σωστό 42: Σωστό 43: Σωστό 44: Λάθος

45: Λάθος 46: Σωστό 47: Σωστό 48: Σωστό

49: Σωστό 50: Σωστό 51: Σωστό 52: Σωστό

53: Σωστό 54: Λάθος 55: Λάθος 56: Λάθος

57: Σωστό 58: Σωστό 59: Σωστό 60: Σωστό

61: Λάθος 62: Λάθος 63: Σωστό 64: Λάθος

65: Λάθος 66: Λάθος 67: Σωστό 68: Λάθος

69: Σωστό 70: Λάθος 71: Λάθος 72: Λάθος

73: Λάθος 74: Λάθος 75: Σωστό 76: Σωστό

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 96: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

96

77: Σωστό 78: Λάθος 79: Λάθος 80: Λάθος

81: Σωστό 82: Λάθος 83: Σωστό 84: συμβολομεταφραστής

85: συμβολικών, χαμηλού 86: δομημένου 87: μεταγλωττιστής 88: μεταφερσιμότητα

89: ακολουθίας, επιλογής και επανάληψης

90: τυπικό 91: συντακτικό 92: συντακτικό

93: σημασιολογία 94: Λάθος 95: υψηλού επιπέδου, μηχανής

96: μεταγλωττιστές, διερμηνευτές

97: γλώσσα μηχανής 98: λογικά 99: δ 100: β

101: α 102: γ 103: γ

104: 1.I.Δ 2.II.Δ 3.VI.Δ 4.VII.Γ 5.VII.Α 6.VI.Δ 7.VI.Δ 8.IV.Δ 9.IV.Β 10.V.Β 11.III.Δ

105: 1. I, II, IV, VI 2. I, II, III, V

106: 1Α, 2Γ, 3Β, 4Δ 107: 1Δ, 2Α, 3Β, 4Γ, 5Ε 108: Α5, Β3, Γ2, Δ4, Ε1

109: Σωστό 110: Λάθος 111: Λάθος 112: Λάθος

113: Α4, Β1, Γ2, Δ3 114: α, γ, δ, στ, β, ε

Ασκήσεις

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

1. Να μετατρέψετε τον αδόμητο αλγόριθμο σε αλγόριθμο που ακολουθεί τις αρχές του δομημένου προγραμματισμού και να σχεδιάσετε το διάγραμμα ροής Ασκ1.

Αλγόριθμος Μη_δομημένο_1 ΣημείοΑ: Διάβασε x Αν (x mod 2 = 1) τότε counter1 ← counter1 + 1

Αλλιώς counter2 ← counter2 + 1

Τέλος_αν Αν (x = 99) τότε από πήγαινε στο ΣημείοΒ Αλλιώς από πήγαινε στην ΣημείοΑ Τέλος_αν ΣημείοΒ: Τέλος Μη_δομημένο_1

Λύση

Αλγόριθμος Δομημένο_1 Αρχή_Επανάληψης Διάβασε x Αν (x mod 2 = 1) τότε counter1 ← counter1 + 1

αλλιώς counter2 ← counter2 + 1 Τέλος_αν Μέχρις_Ότου (x = 99) Τέλος Δομημένο_1

Ασκ2.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 97: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

97

Αλγόριθμος Μη_δομημένο_2 Όσο συνθήκη1 επανάλαβε Εντολή1 Αν συνθήκη2 τότε Εντολή3 Αλλιώς Εντολή2 Πήγαινε στο ΣημείοΑ Τέλος_Αν Τέλος_Επανάληψης ΣημείοΑ: Τέλος Μη_δομημένο_2

Λύση

Αλγόριθμος Δομημένο_2 Διακοπή_επανάληψης ← ψευδής

Όσο συνθήκη1 και Διακοπή_επανάληψης=ψευδής επανάλαβε Εντολή1 Αν συνθήκη2 τότε Εντολή3 Αλλιώς Εντολή2 Διακοπή_επανάληψης ← αληθής

Τέλος_Αν Τέλος_Επανάληψης Τέλος δομημένο_2

Ασκ3.

Αλγόριθμος Μη_δομημένο_3 ΣημείοΑ: Διάβασε αριθμός Αν (αριθμός mod 2 = 0) τότε Εμφάνισε αριθμός πήγαινε στο ΣημείοΑ Τέλος_Αν Τέλος Μη_δομημένο_3

Λύση

Αλγόριθμος Δομημένο_3 Διάβασε αριθμός Όσο (αριθμός mod 2 = 0) επανάλαβε Εμφάνισε αριθμός Διάβασε αριθμός Τέλος_Επανάληψης Τέλος Δομημένο_3

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 98: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

98

Διαγώνισμα-ΑΕΠΠ – (Κεφάλαια 4ο – 6ο )

Θέμα 1ο

Α. 1. Να αναφέρετε τρεις τυποποιημένες κατηγορίες τεχνικών επίλυσης προβλημάτων.

(ΜΟΝΑΔΕΣ 3)

2. Εξηγήστε ποια είναι τα είδη λαθών που μπορεί να εμφανιστούν σ’ ένα πρόγραμμα

Ποια από αυτά και πότε αναγνωρίζονται από τους μεταγλωττιστές και τους

διερμηνευτές; (ΜΟΝΑΔΕΣ 6)

3. 3. Τι είδους μεταφραστικά προγράμματα χρησιμοποιούν τα σύγχρονα

προγραμματιστικά περιβάλλοντα. Ποια τα πλεονεκτήματα αυτών;

(ΜΟΝΑΔΕΣ 6)

Β. Να γράψετε στο τετράδιο σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις και

δίπλα τη λέξη: Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι λανθασμένη.

1. Ο προγραμματισμός αφορά τη διατύπωση ενός αλγορίθμου σε μορφή κατανοητή

από τον υπολογιστή.

2. Μια νέα τεχνική επίλυσης προβλημάτων πρέπει να έχει τη δική της ακολουθία

εντολών.

3. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα

στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις.

4. Ο τμηματικός προγραμματισμός υλοποιεί την φιλοσοφία της ιεραρχικής σχεδίασης.

5. Η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον

περιλαμβάνει την εισαγωγή και την εξαγωγή δεδομένων.

6. Οι τυποποιημένες μέθοδοι σχεδίασης αλγορίθμων ονομάζονται ευριστικές τεχνικές

7. Ο συνδέτης συνδέει το αντικείμενο πρόγραμμα με τις βιβλιοθήκες.

8. Η εντολή GOTO είναι απαραίτητη στο δομημένο προγραμματισμό.

9. Η SQL είναι γλώσσα παράλληλου προγραμματισμού.

10. Τα λογικά λάθη ενός προγράμματος εμφανίζονται κατά τη μεταγλώττιση.

(ΜΟΝΑΔΕΣ 10)

Γ. Να συμπληρώσετε τα κενά με την κατάλληλη λέξη.

1. Τη μετάφραση εντολών γλώσσας χαμηλού επιπέδου σε ακολουθία δυαδικών

ψηφίων αναλαμβάνει ο ______________________________.

2.______________________ είναι το σύνολο των κανόνων που καθορίζει το νόημα

των λέξεων και κατ' επέκταση των εκφράσεων και προτάσεων που

χρησιμοποιούνται σε μια γλώσσα.

3. Ο μεταγλωττιστής μετατρέπει το _________ πρόγραμμα σε αντικείμενο πρόγραμμα.

4. ______________ είναι το σύνολο των κανόνων που ορίζει τις μορφές που μια λέξη

είναι αποδεκτή.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 99: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

99

5. Μια βιβλιοθήκη περιέχει _____________________ προγράμματος απαραίτητα για την

εκτέλεσή του.

(ΜΟΝΑΔΕΣ 5)

Δ. Ερωτήσεις Πολλαπλής επιλογής

1. Κατά την ανάλυση ενός προβλήματος θα πρέπει να δοθεί απάντηση σε κάθε μια

από τις επόμενες ερωτήσεις:

α. Ποια είναι τα περιφερειακά του συστήματος στο οποίο θα επιλυθεί ο

αλγόριθμος;

β. Ποια είναι η χρησιμότητα του αλγορίθμου;

γ. Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος;

δ. Πώς θα καταγραφεί ο αλγόριθμος του προβλήματος;

2. Ο οπτικός προγραμματισμός:

α. Δεν επιτρέπει λάθη κατά την εκτέλεση

β. Εμφανίζει σε διάγραμμα το περιβάλλον σχεδίασης

γ. Επιτρέπει την ιεραρχική σχεδίαση

δ. Επιτρέπει τη δημιουργία γραφικού περιβάλλοντος

3. Η εντολή GOTO έχει ως αποτέλεσμα:

α. την αλλαγή της ροής του προγράμματος

β. τη διατήρηση της ροής ενός προγράμματος

γ. την ευκολία στην κατανόηση της ροής του προγράμματος

δ. τη μετάβαση στην επόμενη εντολή του προγράμματος.

4. Στα πλεονεκτήματα των γλωσσών προγραμματισμού υψηλού επιπέδου, σε σχέση

με τις συμβολικές γλώσσες, είναι η ανεξαρτησία από τον τύπο του ηλεκτρονικού

υπολογιστή. Η δυνατότητα αυτή ονομάζεται:

Α. μεταφορά

Β. μεταφερσιμότητα

Γ. μετακίνηση

Δ. μετάταξη

5. Το πρόγραμμα στο οποίο γράφονται οι εντολές ενός προγράμματος ονομάζεται:

Α. Συνδέτης

Β. Συντάκτης

Γ. Κειμενογράφος

Δ. Φορτωτής

(ΜΟΝΑΔΕΣ 10)

Θέμα 2ο

Ι. Αν είχατε να λύσετε τα παρακάτω προβλήματα, τι είδους γλώσσα θα επιλέγατε;

1. Πρόβλημα άντλησης πληροφοριών από έτοιμη βάση δεδομένων.

2. Δημιουργία σελίδας στο Διαδίκτυο.

3. Εκπαίδευση παιδιών μικρής ηλικίας στον προγραμματισμό.

4. Προγραμματισμό συστημάτων

5. Ανάπτυξη εμπορικής εφαρμογής

(ΜΟΝΑΔΕΣ 10)

ΙΙ. Βάλτε στη σωστή σειρά τις παρακάτω έννοιες:

A. Μεταγλώττιση Προγράμματος

1. Συνδέτης 2. Εκτελέσιμο πρόγραμμα 3. Μεταγλωττιστής

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 100: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

100

4. Αρχικό Πρόγραμμα 5. Τελικό Πρόγραμμα

B. Επίπεδο Γλωσσών σε σχέση με τον υπολογιστή

α. Γλώσσες Υψηλού επιπέδου β. Γλώσσες 4ης Γενιάς

γ. Συμβολικές γλώσσες δ. Γλώσσες Μηχανής

(ΜΟΝΑΔΕΣ 10)

Θέμα 3ο

1. Να συνδέσετε τα στοιχεία της στήλης Α με τα στοιχεία της στήλης Β για να

προκύψουν τα πλεονεκτήματα του Δομημένου Προγραμματισμού.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 101: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

101

Στήλη Α Στήλη Β

Ι. Δημιουργία α. Συντήρηση

II. Άμεση μεταφορά β. Απλούστερων προγραμμάτων

III. Ανάλυση γ· Από τρίτους

IV. Περιορισμός δ. Σε τμήματα

V. Ανάγνωση - Κατανόηση ε. Λαθών

VI. Διόρθωση στ. Αλγορίθμων

(ΜΟΝΑΔΕΣ 6)

2. Να αντιστοιχίσετε τα στοιχεία της στήλης Α με τα στοιχεία της στήλης Β.

Στήλη Α Στήλη Β

1. Γλώσσα ερωταποκρίσεων α. Prolog

2. Συμβολική γλώσσα β· C++

3. Αντικειμενοστραφής γλώσσα γ· Assembly

4. Γλώσσα τεχνητής νοημοσύνης δ. SQL

(ΜΟΝΑΔΕΣ 4)

3. Να αντιστοιχίσετε τα στοιχεία της στήλης Α με τα στοιχεία της στήλης Β.

Στήλη Α Στήλη Β

1. Δομημένος

προγραμματισμός

α. Ένα πρόγραμμα αποτελείται από αντικείμενα τα

οποία συνδέονται και αλληλεπιδρούν μεταξύ τους

κατά κάποιο συγκεκριμένο τρόπο

2. Παράλληλος

προγραμματισμός

β· Ένα πρόγραμμα ενεργοποιεί τις διάφορες

λειτουργίες του με κλικ του ποντικιού.

3. Αντικειμενοστραφής

προγραμματισμός

γ· Ένα πρόγραμμα διαιρείται σε τμήματα, τα οποία

εκτελούνται παράλληλα.

4. Οπτικός

προγραμματισμός

δ. Ένα πρόγραμμα υλοποιεί τα βήματα ενός

αλγορίθμου

5. Προγραμματισμός

οδηγούμενος από το

γεγονός

ε. Ένα πρόγραμμα υλοποιείται γραφικά με την

βοήθεια εργαλείων

(ΜΟΝΑΔΕΣ 10)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 102: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

102

Θέμα 4ο

Α) Να μετατρέψετε τον παρακάτω αδόμητο αλγόριθμο, σε αλγόριθμο που

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

Αρχή

Αν συνθήκη1 τότε

Αν συνθήκη2 τότε

Εντολή1

Πήγαινε στην εντολή3

Τέλος_αν

Εντολή2

Εντολή3

Πήγαινε στην αρχή

Τέλος_αν

Εντολή4

Εντολή5

Τέλος

(ΜΟΝΑΔΕΣ 10)

Β) Δίνεται το παρακάτω τμήμα αλγορίθμου σε φυσική γλώσσα κατά

βήματα. Χρησιμοποιώντας κωδικοποίηση, να μετατραπεί σε αλγόριθμο που

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

Βήμα 1 Θέσε Σ=0

Βήμα 2 Θέσε Ι=1

Βήμα 3 Αν το Ι < = 10 τότε πήγαινε στο Βήμα 4, αλλιώς πήγαινε

στο Βήμα 8

Βήμα 4 Διάβασε Χ

Βήμα 5 Θέσε Σ=Σ+Χ

Βήμα 6 Θέσε Ι=Ι+1

Βήμα 7 Πήγαινε στο Βήμα 3

Βήμα 8 Τύπωσε το Σ

(ΜΟΝΑΔΕΣ 10)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 103: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

103

ΚΚΕΕΦΦΑΑΛΛΑΑΙΙΟΟ 88οο

ΕΕππιιλλοογγήή κκααιι εεππααννάάλληηψψηη

8.1 Εντολές Επιλογής 8.1.1 Εντολή ΑΝ 8.1.2 Εντολή ΕΠΙΛΕΞΕ 8.2 Εντολές Επανάληψης 8.2.1 Εντολή ΟΣΟ...ΕΠΑΝΑΛΑΒΕ 8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ 8.2.3 Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Μηχανικός Πληροφορικής Τεχνολογικής Εκπαίδευσης

ΠΠΛΛΙΙΑΑΤΤΣΣΙΙΟΟΣΣ ΑΑΝΝΤΤΩΩΝΝΙΙΟΟΣΣ ΚΚααθθηηγγηηττήήςς ΠΠλληηρροοφφοορριικκήήςς

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 104: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

104

8.1 Εντολές Επιλογής

A. Λογική Έκφραση Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές, μεταβλητές, αριθμητικές παραστάσεις, συγκριτικοί και λογικοί τελεστές, καθώς και παρενθέσεις. Στις λογικές εκφράσεις γίνεται σύγκριση της τιμής μίας έκφρασης, που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης που βρίσκεται δεξιά. Το αποτέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ.

B. Σύνθετες Εκφράσεις Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες αναφέρθηκαν, αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις. Αυτό επιτυγχάνεται με τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ, ΚΑΙ, ‘Η. Παραδείγματα

0<Χ<5 Χ>0 ΚΑΙ Χ<5 Χ=1 ή 2 ή 3 Χ=1 ‘Η Χ=2 ‘Η Χ=3

8.1.1 Εντολή ΑΝ Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ. Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές μορφές. Την απλή εντολή ΑΝ...ΤΟΤΕ, την εντολή ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ και τέλος την εντολή ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ ΑΝ. Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ. Α) i. Λειτουργία Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ, σε αντίθετη περίπτωση οι εντολές αυτές αγνοούνται. Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ

ii. Σύνταξη

ΑΝ συνθήκη ΤΟΤΕ εντολή-1 εντολή-2

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 105: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

105

… εντολή-ν

ΤΕΛΟΣ_ΑΝ Β) i. Λειτουργία Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται μεταξύ των λέξεων ΤΟΤΕ και ΑΛΛΙΩΣ, διαφορετικά εκτελούνται οι εντολές μεταξύ ΑΛΛΙΩΣ και ΤΕΛΟΣ_ΑΝ. Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ

ii. Σύνταξη

ΑΝ συνθήκη ΤΟΤΕ εντολή-1 εντολή-2 … εντολή-ν

ΑΛΛΙΩΣ εντολή-1 εντολή-2 … εντολή-ν

ΤΕΛΟΣ_ΑΝ Γ) i. Λειτουργία Εκτελούνται οι εντολές που βρίσκονται στο αντίστοιχο τμήμα, όταν η συνθήκη είναι αληθής. Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ

ii. Σύνταξη

ΑΝ συνθήκη-1 ΤΟΤΕ εντολή-1 εντολή-2 … εντολή-ν

ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ εντολή-1 εντολή-2 … εντολή-ν

… ΑΛΛΙΩΣ

εντολή-1 εντολή-2 … εντολή-ν

ΤΕΛΟΣ_ΑΝ

8.1.2 Εντολή ΕΠΙΛΕΞΕ

i. Λειτουργία

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

ii. Σύνταξη

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 106: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

106

ΕΠΙΛΕΞΕ έκφραση ΠΕΡΙΠΤΩΣΗ λίστα_

εντολές_1 ΠΕΡΙΠΤΩΣΗ λίστα_

εντολές_2 ...... ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ

εντολές_αλλιώς ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

8.2 Εντολές επανάληψης Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης, την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς όσο η συνθήκη είναι Αληθής, την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος την εντολή ΓΙΑ, με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο αριθμό φορών.

8.2.1 Εντολή ΟΣΟ...ΕΠΑΝΑΛΑΒΕ

i. Λειτουργία

Ελέγχεται η συνθήκη και αν είναι Αληθής, εκτελούνται οι εντολές που βρίσκονται ανάμεσα στις ΟΣΟ_ΕΠΑΝΑΛΑΒΕ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Στη συνέχεια ελέγχεται πάλι η συνθήκη και αν ισχύει, εκτελούνται πάλι οι ίδιες εντολές. Όταν η λογική έκφραση γίνει Ψευδής, τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.

ii. Σύνταξη

ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ εντολή-1 εντολή-2 … εντολή-ν

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

i. Λειτουργία

Εκτελούνται οι εντολές μεταξύ των ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ. Στη συνέχεια ελέγχεται η λογική έκφραση και αν δεν ισχύει (είναι ψευδής), τότε οι εντολές που βρίσκονται ανάμεσα στις ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ, εκτελούνται πάλι. Ελέγχεται ξανά η λογική έκφραση και αν δεν ισχύει, επαναλαμβάνεται η εκτέλεση των ίδιων εντολών.

Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την ΜΕΧΡΙΣ_ΟΤΟΥ.

ii. Σύνταξη

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ εντολή-1 εντολή-2 … εντολή-ν

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 107: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

107

ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση

8.2.3 Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

i. Λειτουργία

Οι εντολές του βρόχου εκτελούνται για όλες τις τιμές της μεταβλητής από την αρχική τιμή μέχρι την τελική τιμή, αυξανόμενες με την τιμή του βήματος. Αν το βήμα είναι ίσο με 1, τότε παραλείπεται.

ii. Σύνταξη

ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ τιμή3 εντολή-1 εντολή-2 … εντολή-ν

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων. Σε αυτή την περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο. Στη χρήση των εμφωλευμένων βρόχων ισχύουν συγκεκριμένοι κανόνες που πρέπει να ακολουθούνται αυστηρά για την σωστή λειτουργία των προγραμμάτων. Συγκεκριμένα:

Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος.

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

που ο ένας βρίσκεται στο εσωτερικό του άλλου.

9.1 Μονοδιάστατοι πίνακες Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους, ονομάζονται μονοδιάστατοι πίνακες. Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια έκφραση, σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ]. Παραδείγματα 1. Να γίνει ο αλγόριθμος ο οποίος να διαβάζει από το πληκτρολόγιο και να εισάγει σε μονοδιάστατο πίνακα 5 βαθμούς ενός μαθητή.

Αλγόριθμος Μαθητής Διάβασε Βαθμός[1] Διάβασε Βαθμός[2] Διάβασε Βαθμός[3] Διάβασε Βαθμός[4] Διάβασε Βαθμός[5]

Τέλος Μαθητής

Ή

Αλγόριθμος Μαθητή Για i από 1 μέχρι 5

Διάβασε Βαθμός[i] Τέλος _ επανάληψης

Τέλος Μαθητή

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 108: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

108

2. Να γίνει ο αλγόριθμος ο οποίος να διαβάζει από το πληκτρολόγιο και να εισάγει σε μονοδιάστατο πίνακα 5 βαθμούς ενός μαθητή. Να γίνεται έλεγχος ώστε οι βαθμοί να μην είναι μεγαλύτερη από 20 ή μικρότερη από 0

Αλγόριθμος Μαθητή Για i από 1 μέχρι 5 Αρχή επανάληψης Διάβασε Βαθμός[i] Μέχρις _ ότου Βαθμός [i]>=0 και Βαθμός[i] <= 20 Τέλος _ επανάληψης

Τέλος Μαθητή

9.2 Πότε πρέπει να χρησιμοποιούνται πίνακες Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου, αλλά συχνά η χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος. Πέρα από τα πλεονεκτήματα που αναφέρθηκαν, υπάρχουν και δύο μειονεκτήματα από τη χρήση πινάκων. 1. Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης. Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και σε αδυναμία εκτέλεσης του προγράμματος. 2. Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Στο προηγούμενο πρόγραμμα του υπολογισμού των στατιστικών μεγεθών, υπάρχει ανώτατο όριο στο πλήθος των αριθμών ίσο με 100. Αυτό γιατί οι πίνακες είναι στατικές δομές και το μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος, ενώ παραμένει υποχρεωτικά σταθερό κατά την εκτέλεση του προγράμματος

9.3 Πολυδιάστατοι πίνακες Οι μονοδιάστατοι πίνακες, ως γνωστό, έχουν μια γραμμή και πολλές στήλες. Όταν, έχουμε περισσότερες από μια γραμμές σε έναν πίνακα, τότε ο πίνακας αυτός ονομάζεται δυσδιάστατος. Για τους πίνακες 2-διαστάσεων απαιτούνται 2 δείκτες (στους μονοδιάστατους πίνακες έχουμε ένα δείκτη). Ο πρώτος δείκτης αναφέρεται στις γραμμές και ο δεύτερος στις στήλες. Παράδειγμα Έστω πίνακας, με όνομα myArray, δυο διαστάσεων με πέντε γραμμές και τέσσερις στήλες (4x5)

4 16 5 21

28 9 51 38

21 31 44 22

1 3 9 10

200 122 129 100

Εκτύπωσε myArray[1] ! Λάθος Εκτύπωσε myArray[3,5] ! Λάθος Εκτύπωσε myArray[1,2] ! εμφανίζει στην οθόνη τον αριθμό που είναι καταχωρημένος

! στο κελί της πρώτης γραμμής και της δεύτερης στήλης, ! δηλαδή το 16

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 109: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

109

myArray[4,3] <- 8 ! στο κελί (4,3) εκχωρείται ο αριθμός 8. Διάβασε myArray[2,2] ! διαβάζει μια τιμή από το πληκτρολόγιο και την

! εκχωρεί στο κελί (2,2)

Βασικές Λειτουργίες στους πίνακες 2 διαστάσεων 1. Γέμισμα του πίνακα myArray από το πληκτρολόγιο

Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 Διάβασε myArray[i,j] Τέλος _ Επανάληψης Τέλος επανάληψης

2. Εμφάνιση του πίνακα myArray στην οθόνη

Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 Εκτύπωσε myArray[i,j] Τέλος _ Επανάληψης Τέλος επανάληψης

3. Εύρεση του αθροίσματος των στοιχείων του πίνακα myArray

Sum 0 Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 sum sum + myArray[i,j] Τέλος _ Επανάληψης Τέλος επανάληψης εκτύπωσε sum

4. Εύρεση του ελάχιστου στοιχείου του πίνακα myarray (θέμα πανελληνίων 2001)

min myarray[1,1] Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 Αν myArray(i,j) < min τότε Min myArray[i,j] Τέλος_αν Τέλος_Επανάληψης Τέλος επανάληψης εκτύπωσε min

Ερώτηση: για ποιο λόγω η πρώτη για αρχίζει από το 1 και όχι από το 2 (όπως γινόταν στους μονοδιάστατους πίνακες). 5. Εύρεση του αθροίσματος κάθε γραμμής του πίνακα myarray. Εκχώρηση των αθροισμάτων στον πίνακα sum_row

Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 Sum _ row[i] sum _ row[i] + myarray[i,j] Τέλος_Επανάληψης Τέλος επανάληψης

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 110: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

110

6. Εύρεση του αθροίσματος κάθε στήλης του πίνακα myarray. Εκχώρηση των αθροισμάτων στον πίνακα sum_col

Για i από 1 μέχρι 5 Για j από 1 μέχρι 4 Sum _ col[j] sum _ col[j] + myarray[i,j] Τέλος_Επανάληψης Τέλος επανάληψης

9.4 Τυπικές επεξεργασίες πινάκων Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία του πίνακα. Οι τυπικές αυτές επεξεργασίες είναι:

Υπολογισμός αθροισμάτων στοιχείων του πίνακα

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

Εύρεση του μέγιστου ή του ελάχιστου στοιχείου

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

Ταξινόμηση των στοιχείων του πίνακα

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

Αναζήτηση ενός στοιχείου του πίνακα

Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης: o Η σειριακή αναζήτηση o Η δυαδική αναζήτηση

Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος. Χρησιμοποιείται όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι. Αντίθετα η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο.

Συγχώνευση δύο πινάκων

Σκοπός της είναι η δημιουργία από τα στοιχεία δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου, που είναι και αυτός ταξινομημένος.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 111: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

111

Κεφαλαία 7ο - 8ο – 9ο Ερωτήσεις Πολλαπλής Επιλογής

1. Οι τύποι μεταβλητών που δέχεται η ΓΛΩΣΣΑ είναι μόνο ΠΡΑΓΜΑΤΙΚΕΣ και ΑΚΕΡΑΙΕΣ

2. Οι δηλώσεις των σταθερών προηγούνται πάντοτε των δηλώσεων των μεταβλητών

3. Τα σχόλια τοποθετούνται πάντα στην αρχή του προγράμματος

4. Κάθε εντολή ΑΝ περιλαμβάνει υποχρεωτικά το τμήμα ΑΛΛΙΩΣ

5. Κάθε τμήμα προγράμματος που χρησιμοποιεί την εντολή ΕΠΙΛΕΞΕ μπορεί να γραφεί και με εντολές ΑΝ

6. Η χρήση εμφωλευμένων ΑΝ είναι καλή προγραμματιστική τακτική

7. Αν το Α έχει την τιμή 10 και το Β την τιμή 20 τότε η έκφραση (Α > 8 ΚΑΙ Β < 20) Ή (Α > 10 Ή Β = 10) είναι αληθής

8. Οι εντολές που βρίσκονται σε μία επανάληψη ΓΙΑ εκτελούνται τουλάχιστο μία φορά

9. Κάθε επανάληψη μπορεί να γραφεί με την εντολή ΟΣΟ - ΕΠΑΝΑΛΑΒΕ

10. Σε περίπτωση εμφωλευμένων βρόχων, ο εσωτερικός πρέπει να περικλείεται ολόκληρος στον εξωτερικό

11. Η τιμή του βήματος αναφέρεται υποχρεωτικά σε κάθε εντολή ΓΙΑ

12. Τα ονόματα και το πλήθος των εισιτηρίων 10 θεάτρων μπορούν να αποθηκευτούν σε ένα δισδιάστατο πίνακα

13. Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες θέσεις μνήμης του Η/Υ

14. Η ταξινόμηση των στοιχείων ενός πίνακα πρέπει να γίνεται πάντα πριν από την αναζήτηση

15. Δεσμευμένες λέξεις καλούνται οι λέξεις που έχουν δεσμεύσει για τα ονόματα των μεταβλητών

16. Όλοι οι πίνακες δηλώνονται στο τμήμα δήλωσης μεταβλητών του προγράμματος

17. Τα στοιχεία ενός πίνακα πρέπει να είναι του ιδίου τύπου

18. Η χρήση πινάκων αυξάνει την απαιτούμενη μνήμη για την εκτέλεση του προγράμματος

19. Ο δείκτης ενός μονοδιάστατου πίνακα πρέπει να είναι πάντα I

20. Το αλφάβητο της γλώσσας αποτελείται μόνο από γράμματα ελληνικά - λατινικά και αριθμούς

21. Σε μια εντολή εκχώρησης η μεταβλητή αριστερά και η έκφραση δεξιά του βέλους πρέπει να είναι του ιδίου τύπου

22. Στη δομή ενός προγράμματος σε ΓΛΩΣΣΑ είναι αυστηρά καθορισμένη

23. Το τμήμα δηλώσεων ενός προγράμματος σε ΓΛΩΣΣΑ πρέπει απαραιτήτως να προηγείται του τμήματος εντολών

24. Μια έκφραση μπορεί να περιέχει μεταβλητές, σταθερές, τελεστές και παρενθέσεις

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 112: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

112

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

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

27. Ένα πρόγραμμα σε ΓΛΩΣΣΑ δεσμεύει τόσες συνεχόμενες θέσεις μνήμης για έναν πίνακα όσες και οι θέσεις που εμφανίζονται στο τμήμα δηλώσεων

28. Σε οποιοδήποτε σημείο ενός προγράμματος σε ΓΛΩΣΣΑ μπορούν να τοποθετηθούν σχόλια

29. Μπορούμε να αρχικοποιούμε μεταβλητές στο τμήμα δηλώσεων ενός προγράμματος σε ΓΛΩΣΣΑ

30. Σε ένα πρόγραμμα σε ΓΛΩΣΣΑ δεν μπορούμε να χρησιμοποιήσουμε λογική σταθερά

31. Στο τμήμα δηλώσεων ενός προγράμματος σε ΓΛΩΣΣΑ δηλώνουμε τα ονόματα των πινάκων αλλά όχι και το μέγεθός τους

32. Ένα πρόγραμμα σε ΓΛΩΣΣΑ έχει τη δυνατότητα να τροποποιεί το μέγεθος ενός πίνακα στο τμήμα εντολών

33. Για την εκτύπωση όλων των περιεχομένων ενός πίνακα απαιτείται η χρήση δομών επανάληψης

34. Για την αναζήτηση σε ταξινομημένους πίνακες προτιμάται η δυαδική αναζήτηση

35. Η συγχώνευση δυο πινάκων έχει ως στόχο να συνενώσει δυο πίνακες

36. Ποια από τις παρακάτω εντολές αυξάνει τη μεταβλητή Πλήθος κατά μία μονάδα

Α) Πλήθος ← Πλήθος+1 Γ) Πλήθος ← 1

Β) Πλήθος ← +1 Δ) Πλήθος+1 ← Πλήθος

37. Ποια η τιμή της μεταβλητής Α μετά την εκτέλεση της παρακάτω εντολής:

Τιμή ← (5 + 4 / 2 * 2) * 2 - (3 * 2 + 5 - 3)^2 + 9 / 3 – 2

Α) –53 Γ) –125

Β) –37 Δ) –45

38. Να συμπληρωθούν τα κενά

ΠΡΟΓΡΑΜΜΑ Τεστ

__________ Π = 3.14 ΜΕΤΑΒΛΗΤΕΣ __________: Ε, Ακτίνα ΑΡΧΗ ΔΙΑΒΑΣΕ Ακτίνα Ε <- Π * Ακτίνα ^ 2 ΓΡΑΨΕ 'Εμβαδόν :', ___ ___________________

39. Τι θα εκτυπώσουν οι παρακάτω εντολές:

Α <- 0

Β <- 5

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 113: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

113

Γ <- 10

ΑΝ Α> 10 ΤΟΤΕ

ΑΝ Β > 20 ΤΟΤΕ

ΑΝ Γ > 10 ΤΟΤΕ

ΓΡΑΨΕ Γ

ΑΛΛΙΩΣ

ΓΡΑΨΕ 2 * Γ

ΤΕΛΟΣ_ΑΝ

ΑΛΛΙΩΣ

ΓΡΑΨΕ Β

ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ

ΑΝ Β < 10 ΤΟΤΕ

ΓΡΑΨΕ Α

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΑΝ

Α. 0 Γ. 5

Β. 10 Δ. 20

40. Να συμπληρωθούν τα κενά ώστε οι επόμενες εντολές να τυπώνουν πάντα τον μεγαλύτερο αριθμό από τους δύο που διαβάστηκαν

ΔΙΑΒΑΣΕ Α,Β ΑΝ Α < Β _____ __________ ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ Α

41. Να συμπληρωθούν τα κενά ώστε οι επόμενες εντολές να τυπώνουν την τετραγωνική ρίζα

ΔΙΑΒΑΣΕ Α ΑΝ Α __ 0 ΤΟΤΕ Ρίζα <- Τ_Ρ(Α) ΓΡΑΨΕ Ρίζα __________ ΓΡΑΨΕ 'Δεν υπάρχει ρίζα' ΤΕΛΟΣ_ΑΝ

42. Πόσες φορές θα εκτελεστεί η εντολή ΓΡΑΨΕ Α

Α <- 10 ΟΣΟ Α <> 0 ΕΠΑΝΑΛΑΒΕ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5 Α <- Α-1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Α ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Α. 10 Γ. 2

Β. 0 Δ. Άπειρες

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 114: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

114

43. Να συμπληρωθούν τα κενά ώστε οι επόμενες εντολές να τυπώνουν το άθροισμα των τετραγώνων των περιττών αριθμών που είναι μικρότεροι από 10

Άθροισμα <- __________ ΓΙΑ ___ ΑΠΟ 1 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ ____ Άθροισμα <- ________ + Ι ^ 2 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Άθροισμα

44. Να συμπληρωθούν τα κενά ώστε οι επόμενες εντολές να τυπώνουν το άθροισμα των αριθμών από 100 έως 200

Κ <- _____ Σ <- _____ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Σ <- Σ+Κ Κ <- Κ+1 ΜΕΧΡΙΣ_ΟΤΟΥ __________ ΓΡΑΨΕ Σ

45. Η δήλωση ενός ακεραίου πίνακα 5 στοιχείων γίνεται με την εντολή

Α) ΑΚΕΡΑΙΕΣ : Α[5]

Β) ΑΚΕΡΑΙΕΣ : Α

Γ) ΑΚΕΡΑΙΕΣ : Α[1], Α[2], Α[3], Α[4], Α[5]

Δ) Α[5] : ΠΙΝΑΚΑΣ ΑΚΕΡΑΙΩΝ

46. Ποιες από τις παρακάτω εντολές υπολογίζουν το άθροισμα των στοιχείων ενός πίνακα Α με 10 στοιχεία

Α) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 Σ <- Σ + Α ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Γ) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 Σ <- Σ + Α[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Β) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 Σ <- Σ + Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δ) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 Σ <- Α[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

47. Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους, ονομάζονται _______ πίνακες. μονοδιάστατοι

48. Ποιες εντολές τυπώνουν τα στοιχεία ενός δισδιάστατου πίνακα 5Χ5 Α) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5

ΓΡΑΨΕ Α[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Γ) ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ Α[J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Β) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ Α[Ι, Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δ) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 5

ΓΡΑΨΕ Α[Ι, J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

49. Υπολογισμός και εκτύπωση του αθροίσματος κάθε γραμμής ενός δισδιάστατου πίνακα Α5Χ5 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5 Σ <- _______

ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ ____ Σ <- ______ + Α[_, _] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 115: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

115

ΓΡΑΨΕ Σ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Κεφαλαία 7ο - 8ο – 9ο 1. Λάθος 2. Σωστό 3. Λάθος 4. Λάθος

5. Σωστό 6. Σωστό 7. Λάθος 8. Λάθος

9. Σωστό 10. Σωστό 11. Λάθος 12. Λάθος

13. Σωστό 14. Σωστό 15. Λάθος 16. Λάθος

17. Σωστό 18. Λάθος 19. Λάθος 20. Λάθος

21. Σωστό 22. Σωστό 23. Σωστό 24. Σωστό

25. Σωστό 26. Λάθος 27. Σωστό 28. Σωστό

29. Λάθος 30. Λάθος 31. Λάθος 32. Λάθος

33. Σωστό 34. Σωστό 35. Σωστό 36. Α

37. Δ

38. ΣΤΑΘΕΡΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, Ε, ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

39. Α 40. ΤΟΤΕ, Α <- Β

41. >=, ΑΛΛΙΩΣ 42. Γ 43. 0, Ι, 2, Άθροισμα 44. 100, 0, Κ>200

45. Α 46. Γ 47. Μονοδιάστατοι 48. Δ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 116: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

116

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 117: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

117

ΚΚΕΕΦΦΑΑΛΛΑΑΙΙΟΟ 1100οο

ΥΥπποοππρροογγρράάμμμμαατταα

10.1 Τμηματικός προγραμματισμός 10.2 Χαρακτηριστικά των υποπρογραμμάτων 10.3 Πλεονεκτήματα του τμηματικού προγραμματισμού 10.4 Παράμετροι 10.5 Διαδικασίες και συναρτήσεις

10.5.1 Ορισμός και κλήση συναρτήσεων 10.5.2 Ορισμός και κλήση διαδικασιών 10.5.3 Πραγματικές και τυπικές παράμετροι

Θεωρία (Σελίδες 2-5) Ερωτήσεις (Σελίδα 6) Ερωτήσεις Πολλαπλής Επιλογής (Σελίδες 7-8) Λυμένες Ασκήσεις (Σελίδες 9-17) Άλυτες Ασκήσεις (Σελίδα 18)

ΠΠΛΛΙΙΑΑΤΤΣΣΙΙΟΟΣΣ ΑΑΝΝΤΤΩΩΝΝΙΙΟΟΣΣ ΚΚααθθηηγγηηττήήςς ΠΠλληηρροοφφοορριικκήήςς

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 118: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

118

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

10.2 Χαρακτηριστικά των υποπρογραμμάτων 1. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Δηλαδή, ενεργοποιείται με την

είσοδο σε αυτό που γίνεται πάντα από την αρχή του, εκτελεί κάποιες ενέργειες και απενεργοποιείται με την έξοδο που γίνεται πάντα από το τέλος του.

2. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. Αυτό σημαίνει ότι μπορεί να

σχεδιαστεί, αναπτυχθεί και ελεγχθεί αυτόνομα σε σχέση με τα άλλα υποπρογράμματα. Έτσι, διευκολύνεται η ταχεία ανάπτυξη ενός μεγάλου προγράμματος το οποίο χρησιμοποιεί τα υποπρογράμματα. Πάντως στην πράξη, η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί.

3. Κάθε υποπρόγραμμα πρέπει να εκτελεί μία μόνο λειτουργία και να μην είναι πολύ μεγάλο.

Έτσι, διευκολύνεται η κατανόηση και ο έλεγχός του. Αν εκτελεί περισσότερες λειτουργίες τότε μάλλον πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα.

10.3 Πλεονεκτήματα του τμηματικού προγραμματισμού

Διευκολύνει την ανάπτυξη του αλγορίθμου και το αντίστοιχου προγράμματος. Αντί να προσπαθούμε να επιλύσουμε μεμιάς το συνολικό πρόβλημα είναι προτιμότερο να το σπάσουμε σε απλούστερα υπο-προβλήματα για τα οποία θα γράψουμε αντίστοιχους αλγόριθμους και συνεπώς τμήματα προγραμμάτων και κατόπιν να προβούμε στη σύνθεσή τους η οποία λύνει και το συνολικό πρόβλημα.

Διευκολύνει την κατανόηση και διόρθωση του προγράμματος. Είναι πολύ ευκολότερο από κάποιον να κατανοήσει, ελέγξει και τροποποιήσει το μικρότερο υποπρόγραμμα

Απαιτεί λιγότερο χρόνο και κόπο στη συγγραφή του προγράμματος. Αν η ίδια λειτουργία χρειάζεται σε διαφορετικά σημεία του συνολικού προγράμματος τότε είναι προτιμότερο να γραφτεί ένα υποπρόγραμμα που την υλοποιεί. Κατόπιν, θα μπορούμε να καλούμε το υποπρόγραμμα στο αντίστοιχο σημείο. Έτσι, διευκολύνεται η ταχεία ανάπτυξη του συνολικού προγράμματος μειώνοντας το μέγεθός του και τις πιθανότητες λαθών.

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

Συγγράφοντας πολλά υποπρογράμματα μπορούμε να δημιουργήσουμε ολόκληρες βιβλιοθήκες (Libraries) και ουσιαστικά να επεκτείνουμε την ίδια τη γλώσσα προγραμματισμού για λειτουργίες που δεν τις υποστηρίζει απευθείας.

10.4 Παράμετροι Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα (π.χ. το κύριο πρόγραμμα) ή υποπρόγραμμα για να εκτελέσουν τη λειτουργία τους. Η επικοινωνία μεταξύ του υποπρογράμματος και αυτού που το καλεί γίνεται διαμέσου κάποιων ειδικών μεταβλητών που ονομάζονται παράμετροι. Το καλούν πρόγραμμα «περνάει» (μεταβιβάζει)

10.1 Τμηματικός προγραμματισμός

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 119: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

119

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

10.5 Διαδικασίες και συναρτήσεις Είδη υποπρογραμμάτων

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

10.5.1 Ορισμός και κλήση συναρτήσεων ΣΥΝΑΡΤΗΣΗ όνομα (λίστα παραμέτρων): τύπος συνάρτησης Τμήμα δηλώσεων μεταβλητών Αρχή …. όνομα έκφραση … Τέλος_συνάρτησης

10.5.2 Ορισμός και κλήση διαδικασιών ΔΙΑΔΙΚΑΣΙΑ όνομα (λίστα παραμέτρων) Τμήμα δηλώσεων μεταβλητών Αρχή …. εντολές …. Τέλος_διαδικασίας

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

Παράδειγμα ορισμού συνάρτησης και πώς καλείται

Να γραφτεί μία συνάρτηση που υπολογίζει το εμβαδόν ενός τριγώνου δοθέντος της βάσης και του ύψους. Επειδή η λειτουργία που θα εκτελεί είναι ένας υπολογισμός και συνεπώς θα επιστρέφει μία τιμή είναι καταλληλότερο να χρησιμοποιηθεί συνάρτηση. Η τιμή που επιστρέφει είναι ένας πραγματικός αριθμός.

ΣΥΝΑΡΤΗΣΗ Εμβαδόν_τριγώνου (βάση, ύψος) : Πραγματική Μεταβλητές Ακέραιες: βάση, ύψος ! οι ειδικές μεταβλητές για τις παραμέτρους

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 120: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

120

Αρχή Εμβαδόν_τριγώνου (βάση * ύψος) / 2 Τέλος_συνάρτησης Πώς θα κληθεί από ένα κύριο πρόγραμμα για να υπολογίζει διάφορα εμβαδά τριγώνων: Πρόγραμμα Υπολογισμός_εμβαδών_διαφόρων_τριγώνων Μεταβλητές Ακέραιες: Β,Υ

Πραγματικές: Ε Αρχή ! Τα δεδομένα για το 1ο τρίγωνο Β 12 Υ 4 Ε Εμβαδόν_τριγώνου (Β,Υ) Τύπωσε “Το εμβαδόν είναι “, Ε ! Τα δεδομένα για το 2ο τρίγωνο B 18 Y 6 Ε Εμβαδόν_τριγώνου (Β,Υ) Τύπωσε “Το εμβαδόν είναι “, Ε Τέλος_προγράμματος

Σημείωση: Η συνάρτηση καλείται μέσω του ονόματός της

Παράδειγμα ορισμού διαδικασίας και πώς καλείται

Θα χρησιμοποιήσουμε το ίδιο παράδειγμα για να δείξουμε τη διαφορά στην υλοποίηση με μία διαδικασία. Θα φτιάξουμε μία διαδικασία που υπολογίζει το εμβαδόν ενός τριγώνου δοθέντος της βάσης και του ύψους. Εδώ, θα έχουμε δύο παραμέτρους για το πέρασμα τιμών (βάση, ύψος) και μία παράμετρο για την επιστροφή του αποτελέσματος (Εμβαδόν) : ΔΙΑΔΙΚΑΣΙΑ Εμβαδόν_τριγώνου (βάση, ύψος, Εμβαδόν) Μεταβλητές Ακέραιες: βάση, ύψος ! οι ειδικές μεταβλητές για τις παραμέτρους–πέρασμα τιμών Πραγματικές: Εμβαδόν ! παράμετρος για την επιστροφή του αποτελέσματος Αρχή ! Η επιστροφή αποτελέσματος σε μία διαδικασία γίνεται

! μέσω παραμέτρου κι όχι του ονόματος όπως συμβαίνει ! σε συνάρτηση

Εμβαδόν (βάση * ύψος) / 2 Τέλος_διαδικασίας Πώς θα κληθεί από ένα κύριο πρόγραμμα για να υπολογίζει διάφορα εμβαδά τριγώνων: Πρόγραμμα Υπολογισμός_εμβαδών_διαφόρων_τριγώνων Μεταβλητές Ακέραιες: Β,Υ

Πραγματικές: Ε Αρχή ! Τα δεδομένα για το 1ο τρίγωνο Β 12 Υ 4 Κάλεσε Εμβαδόν_τριγώνου (Β,Υ,Ε) Τύπωσε “Το εμβαδόν είναι “, Ε

! Τα δεδομένα για το 2ο τρίγωνο B 18

Εδώ καλείται! Περνά τις τιμές των Β,Υ του κύριου προγράμματος στις αντίστοιχες παραμέτρους βάση, ύψος του υποπρογράμματος. Κατόπιν, η συνάρτηση υπολογίζει το εμβαδόν και επιστρέφει την τιμή μέσω του ονόματός της. Αυτή, εκχωρείται στην Ε

Κι εδώ καλείται όπου περνά άλλες τιμές.

Εδώ καλείται ! Περνά τις τιμές των Β,Υ του κύριου προγράμματος στις αντίστοιχες παραμέτρους βάση, ύψος του υποπρογράμματος. Κατόπιν, η διαδικασία υπολογίζει το εμβαδόν και επιστρέφει την τιμή μέσω της παραμέτρου Ε.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 121: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

121

Y 6 Κάλεσε Εμβαδόν_τριγώνου (Β,Υ,Ε) Τύπωσε “Το εμβαδόν είναι “, Ε Τέλος_προγράμματος

Σημείωση: Η διαδικασία καλείται με την εντολή Κάλεσε

2ο Παράδειγμα διαδικασίας Να γραφτεί μία διαδικασία που εκτυπώνει ένα πλήθος άστρων (δηλαδή τον χαρακτήρα *) στην οθόνη. Το πλήθος των άστρων που θα τυπώνει θα περνά ως παράμετρο. Για παράδειγμα, αν περάσουμε τον αριθμό 5 να τυπώνει *****, ενώ αν περάσουμε τον αριθμό 3 να τυπώνει ***.

ΔΙΑΔΙΚΑΣΙΑ Εκτύπωση_άστρων (Ν) Μεταβλητές Ακέραιες: Ν ! παράμετρος. Υποδηλώνει το πόσα άστρα θα τυπώσει Ακέραιες: i ! τοπική μεταβλητή Αρχή Για i από 1 μέχρι Ν Τύπωσε “*” Τέλος_επανάληψης Τέλος_διαδικασίας Θα γράψουμε, τώρα, ένα πρόγραμμα που θα διαβάζει έναν αριθμό, που αφορά το πόσα άστρα θα τυπώσει, και κατόπιν θα καλεί τη διαδικασία που θα εκτελέσει τη λειτουργία εκτύπωσης. Πρόγραμμα Άστρα Μεταβλητές Ακέραιες: Ν Αρχή Διάβασε Ν Κάλεσε Εκτύπωση_άστρων (Ν) Τέλος_προγράμματος

Ερωτήσεις θεωρίας

1. Τι είναι τμηματικός προγραμματισμός;

2. Τι είναι υποπρόγραμμα; Δώστε παραδείγματα

3. Ποια είναι χαρακτηριστικά – ιδιότητες των υποπρογραμμάτων;

4. Ποια είναι τα πλεονεκτήματα του τμηματικού προγραμματισμού;

5. Τι είναι παράμετροι ενός υποπρογράμματος;

6. Τι είναι διαδικασία (υποπρόγραμμα). Δώστε παράδειγμα κλήσης διαδικασίας με χρήση παραμέτρων

7. Τι είναι συνάρτηση (υποπρόγραμμα). Δώστε παράδειγμα κλήσης συνάρτησης με χρήση παραμέτρων

Κι εδώ καλείται όπου περνά άλλες τιμές.

Εδώ καλείται ! Περνά την τιμή του Ν στη διαδικασία η οποία και τυπώνει το ανάλογο πλήθος άστρων. Εδώ, δεν υπάρχει επιστρεφόμενο αποτέλεσμα μέσω παραμέτρου.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 122: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

122

Ερωτήσεις Πολλαπλής Επιλογής

1. Τα δύο είδη υποπρογραμμάτων είναι οι ______________ και οι ______________

2. Μια διαδικασία και μια συνάρτηση μπορούν να εκτελούν ακριβώς τις ίδιες λειτουργίες

3. Η ενεργοποίηση μιας συνάρτησης πραγματοποιείται με την εντολή ΚΑΛΕΣΕ

4. Η κλήση των διαδικασιών γίνεται με απλή αναφορά του ονόματός τους

5. Μερικά από τα πλεονεκτήματα του τμηματικού προγραμματισμού είναι:

Α. Λιγότερος χρόνος για την ανάπτυξη του προγράμματος

Β. Ευκολότερη διόρθωση

Γ. Ταχύτητα κατά την εκτέλεση

Δ. Χρήση αναδρομικών διαδικασιών

6. Κάθε υποπρόγραμμα πρέπει να έχει μόνο μία είσοδο και μία έξοδο

7. Μια διαδικασία μπορεί να καλέσει το κύριο πρόγραμμα

8. Οι συναρτήσεις μπορούν να υπολογίζουν μόνο μια τιμή και να την επιστρέφουν

9. Ποια είναι η επικεφαλίδα της συνάρτησης Εμβαδόν που υπολογίζει το εμβαδόν ενός τριγώνου

(Ε=1/2*β*υ)

Α. ΣΥΝΑΡΤΗΣΗ Εμβαδό(β, υ)

Β. ΣΥΝΑΡΤΗΣΗ Εμβαδ

Γ. ΣΥΝΑΡΤΗΣΗ Εμβαδό(β, υ): ΠΡΑΓΜΑΤΙΚΗ

Δ. ΠΡΑΓΜΑΤΙΚΗ ΣΥΝΑΡΤΗΣΗ Εμβαδό

10. Μια διαδικασία μπορεί να καλέσει μια συνάρτηση

11. Ο τμηματικός προγραμματισμός έχει ως αποτέλεσμα την ταχύτερη εκτέλεση του προγράμματος

12. Το κυρίως πρόγραμμα πρέπει να είναι πολύ μεγαλύτερο από τα υποπρογράμματα

13. Η διαδικασίες έχουν περιορισμένες λειτουργίες σε σχέση με τις συναρτήσεις

14. Τι είδους υποπρόγραμμα, διαδικασία ή συνάρτηση, πρέπει να χρησιμοποιήσεις για τα παρακάτω:

Α. Εισαγωγή τριών δεδομένων

Β. Εισαγωγή ενός δεδομένου

Γ. Υπολογισμός του μικρότερου από πέντε ακεραίους

Δ. Υπολογισμός των δύο μικρότερων από πέντε ακεραίους

Ε. Έλεγχος αν δυο αριθμοί είναι ίσοι.

ΣΤ. Να ταξινομεί και να επιστρέφει ταξινομημένους πέντε αριθμούς

Ζ. Έλεγχος αν ένας χαρακτήρας είναι φωνήεν ή σύμφωνο.

15. Τι θα τυπώσουν οι παρακάτω εντολές:

Α <- 5 Β <- 10

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 123: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

123

Γ <- 0 ΚΑΛΕΣΕ Διαδ1(Α, Β) ΓΡΑΨΕ Α, Β, Γ … ΔΙΑΔΙΚΑΣΙΑ Διαδ1(Γ, Δ) … ΑΡΧΗ

Γ <- Γ - Δ ΤΕΛΟΣ_ΔΙΑΔΙΑΔΙΚΑΣΙΑΣ Διαδ1

Α. 5, 10, 0

Β. 5, 10, -5

Γ. –5, 10, 0

Δ. –5, 10, -5

16. Τι θα τυπώσουν οι παρακάτω εντολές:

Α <- 5 Β <- 10 ΚΑΛΕΣΕ Διαδ1(Β, Α) ΓΡΑΨΕ Α,Β … ΔΙΑΔΙΚΑΣΙΑ Διαδ1(Γ, Δ) … ΑΡΧΗ

ΓΡΑΨΕ Γ, Δ Γ <- Γ – Δ

ΤΕΛΟΣ_ΔΙΑΔΙΑΔΙΚΑΣΙΑΣ Διαδ1

Α. 5, 10 5, 10

Β. 10, 5 5, 5

Γ. 5, 10 -5, 10

Δ. 10, 5 5, 10

17. Τι θα τυπώσουν οι παρακάτω εντολές:

Α <- 10 Β <- 5 ΚΑΛΕΣΕ διαδ(Α, Β)

ΓΡΑΨΕ Α, Β … ΔΙΑΔΙΚΑΣΙΑ διαδ(Γ, Δ) … Α <- 0 Β <- 0 ΓΡΑΨΕ Α, Β

Α. 10, 5 0, 0

Β. 10, 5 10, 5

Γ. 0, 0 0, 0

Δ. 0, 0 10, 5

Κεφαλαίο 10ο 1. διαδικασίες, συναρτήσεις

2. λάθος 3. λάθος 4. λάθος

5. Α, Β 6. σωστό 7. λάθος 8. λάθος

9. Γ 10. σωστό 11. λάθος 12. λάθος

13. λάθος 14. Α Διαδικασία 14. Β Διαδικασία 14. Γ Συνάρτηση

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 124: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

124

14. Δ Διαδικασία 14. Ε Συνάρτηση 14. ΣΤ Διαδικασία 14. Ζ Συνάρτηση

15. Γ 16.Β 17. Δ

Λυμένες Ασκήσεις

1. Να σχηματίσετε τον πίνακα τιμών του παρακάτω αλγορίθμου. Τι θα εκτυπωθεί;

ΠΡΟΓΡΑΜΜΑ Πίνακας_Τιμών2 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ Α <– 3 Β <– 13 Γ <– 2 ΓΡΑΨΕ Α, Β, Γ ΚΑΛΕΣΕ Επεξεργασία_Τιμών2 (Β, Γ) ΓΡΑΨΕ Α, Β, Γ ΚΑΛΕΣΕ Επεξεργασία_Τιμών2 (Γ, Α) ΓΡΑΨΕ Α, Β, Γ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! ========================================= ΔΙΑΔΙΚΑΣΙΑ Επεξεργασία_Τιμών2 (αριθμός1, αριθμός2) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: αριθμός1, αριθμός2 ΑΡΧΗ αριθμός1 <– αριθμός1 DIV 2 αριθμός2 <– αριθμός2 ^ 3 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Λύση

Κυρίως Πρόγραμμα

Υποπρόγραμμα

Α Β Γ

αριθμός1

αριθμός2

Κυρίως πρόγραμμα : 3 13 2

1η κλήση διαδικασίας : 13 2

Εκτέλεση διαδικασίας : 6 8

Επιστροφή στο κυρίως πρόγραμμα : 3 6 8

2η κλήση διαδικασίας : 8 3

Εκτέλεση διαδικασίας : 4 27

Επιστροφή στο κυρίως πρόγραμμα : 27 6 4

Στην πρώτη εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές: 3, 13, 2 Στην δεύτερη εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές: 3, 6, 8 Στην τρίτη εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές: 27, 6, 4 2. Να σχηματίσετε τον πίνακα τιμών του παρακάτω αλγορίθμου. Τι θα εκτυπωθεί;

ΠΡΟΓΡΑΜΜΑ Πίνακας_Τιμών5

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 125: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

125

ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β ΑΡΧΗ Α <–2 Β <– 19 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΚΑΛΕΣΕ Επεξεργασία_Τιμών5 (Β, Α) ΓΡΑΨΕ Α, Β ΜΕΧΡΙΣ_ΟΤΟΥ (Α > Β) ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! ========================================= ΔΙΑΔΙΚΑΣΙΑ Επεξεργασία_Τιμών5 (αριθμός1, αριθμός2) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: αριθμός1, αριθμός2 ΑΡΧΗ αριθμός1 <– αριθμός1 - 2 αριθμός2 <– αριθμός2 + 5 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Λύση

Στην πρώτη επανάληψη θα εκτυπωθούν οι τιμές: 7, 17 Στην δεύτερη επανάληψη θα εκτυπωθούν οι τιμές: 12, 15 Στην τρίτη επανάληψη θα εκτυπωθούν οι τιμές: 17, 13 3. Να γράψετε υποπρόγραμμα που να δέχεται δυο αριθμούς και να επιστρέφει τον μικρότερο Λύση ΣΥΝΑΡΤΗΣΗ Εύρεση_Μικρ (Α, Β): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Α, Β, εκτίμηση ΑΡΧΗ

Κυρίως Πρόγραμμα Υποπρόγραμμα Α Β αριθμός1 αριθμός2

Κυρίως πρόγραμμα : 2 19

1η επανάληψη

1η κλήση διαδικασίας : 19 2

Εκτέλεση διαδικασίας : 17 7

Επιστροφή στο κυρίως πρόγραμμα : 7 17

7 > 17 δεν ισχύει - 2η επανάληψη

2η κλήση διαδικασίας : 17 7

Εκτέλεση διαδικασίας : 15 12

Επιστροφή στο κυρίως πρόγραμμα : 12 15

12 > 15 δεν ισχύει - 3η επανάληψη

3η κλήση διαδικασίας : 12

Εκτέλεση διαδικασίας : 13 17

Επιστροφή στο κυρίως πρόγραμμα : 17 13

17 > 13 Ισχύει τέλος προγράμματος

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 126: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

126

ΑΝ Α < Β ΤΟΤΕ εκτίμηση Α ΑΛΛΙΩΣ εκτίμηση Β ΤΕΛΟΣ_ΑΝ Εύρεση_Μικρ εκτίμηση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 4α. Να γράψετε υποπρόγραμμα που να δέχεται έναν αριθμό και να επιστρέφει το τετράγωνό του Λύση ΣΥΝΑΡΤΗΣΗ Εις_το_Τετράγωνο (Χ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Χ ΑΡΧΗ Εις_το_Τετράγωνο Χ ^ 2 ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 4β. Να γράψετε υποπρόγραμμα που να διαβάζει έναν αριθμό και να επιστρέφει το τετράγωνό του Λύση ΔΙΑΔΙΚΑΣΙΑ Τετράγωνο (Χ2) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Χ, Χ2 ΑΡΧΗ ΔΙΑΒΑΣΕ Χ Χ2 Χ ^ 2 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 5. Να γράψετε υποπρόγραμμα που να δέχεται την τιμή ενός προϊόντος και το συντελεστή ΦΠΑ και να υπολογίζει και να τυπώνει την αξία του ΦΠΑ και την τελική τιμή του προϊόντος Λύση ΔΙΑΔΙΚΑΣΙΑ Υπολογισμός_ΦΠΑ (Τιμή, συντ_ΦΠΑ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Τιμή, συντ_ΦΠΑ, ποσό_ΦΠΑ, τελ_τιμή ΑΡΧΗ Ποσό_ΦΠΑ Τιμή * συντ_ΦΠΑ τελ_τιμή Τιμή + Ποσό_ΦΠΑ ΓΡΑΨΕ 'Το ποσό ΦΠΑ είναι, Ποσό_ΦΠΑ ΓΡΑΨΕ 'Η τελική τιμή του προϊόντος είναι', τελ_τιμή ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 6. Να γράψετε υποπρόγραμμα που να ελέγχει αν ένας ακέραιος αριθμός είναι άρτιος Λύση ΣΥΝΑΡΤΗΣΗ Άρτιος (Α) : ΛΟΓΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : Α

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 127: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

127

ΛΟΓΙΚΕΣ: εκτίμηση ΑΡΧΗ ΑΝ Α MOD 2 = 0 ΤΟΤΕ εκτίμηση ΑΛΗΘΗΣ ΑΛΛΙΩΣ εκτίμηση ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ Άρτιος εκτίμηση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 7. Να γράψετε υποπρόγραμμα που να μετατρέπει οποιοδήποτε ποσό από Δραχµές σε Ευρώ (το ποσό πρέπει να είναι θετικό) Λύση ΣΥΝΑΡΤΗΣΗ Μετατροπέας (Ποσό_σε_Δραχμές): ΠΡΑΓΜΑΤΙΚΗ ΣΤΑΘΕΡΕΣ ΙΣΟΤΙΜΙΑ = 340.75 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Ποσό_σε_Δραχμές, εκτίμηση ΑΡΧΗ ΑΝ (Ποσό_σε_Δραχμές >= 0) ΤΟΤΕ εκτίμηση Ποσό_σε_Δραχμές / ΙΣΟΤΙΜΙΑ ΑΛΛΙΩΣ ! Αν το ποσό είναι αρνητικός αριθμός θα επιστραφεί το 0 εκτίμηση 0 ΤΕΛΟΣ_ΑΝ Μετατροπέας εκτίμηση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 8. Να γράψετε υποπρόγραμμα που να δέχεται ως όρισμα δυο αριθμούς: την ακτίνα της βάσης και το ύψος του κυλίνδρου και να υπολογίζει το εμβαδόν της επιφάνειάς του Λύση ΣΥΝΑΡΤΗΣΗ Εμβαδό_κυλίνδρου (ακτίνα, ύψος) : ΠΡΑΓΜΑΤΙΚΗ ΣΤΑΘΕΡΕΣ Π = 3.14159 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : ακτίνα, ύψος ΑΡΧΗ Εμβαδό_κυλίνδρου 2 * Π * ακτίνα * (ακτίνα + ύψος) ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 9. Να γράψετε υποπρόγραμμα που να διαβάζει το πλήθος αλλά και τα στοιχεία ενός μονοδιάστατου πίνακα (μέγιστο πλήθος στοιχείων 1000) με περιεχόμενα ακέραιους αριθμούς Λύση ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Μον_Πίνακα (Πλήθος_γραμμών, Πίνακας) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : Πλήθος_γραμμών, Πίνακας[1000], i ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Πλήθος_γραμμών ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δώσε το ', i, ' στοιχείο'

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 128: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

128

ΔΙΑΒΑΣΕ Πίνακας[i] ΜΕΧΡΙΣ_ΟΤΟΥ (Πίνακας[i] > 0) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 10. Να γράψετε υποπρόγραμμα που να διαβάζει το πλήθος αλλά και τα στοιχεία ενός δισδιάστατου πίνακα (μέγιστο πλήθος γραμμών 1000 και στηλών 10) με περιεχόμενα ακέραιους αριθμούς Λύση ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Δισ_Πίνακα (Πλήθος_γραμμών, Πλήθος_Στηλών, Πίνακας) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : Πλήθος_γραμμών, Πλήθος_Στηλών, Πίνακας[1000, 10], i, j ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Πλήθος_γραμμών ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Πλήθος_στηλών ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δώσε το στοιχείο της ', i, ' γραμμής και της ', j, ' στήλης' ΔΙΑΒΑΣΕ Πίνακας[i, j] ΜΕΧΡΙΣ_ΟΤΟΥ (Πίνακας[i, j] > 0) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 11. Να γράψετε υποπρόγραμμα που να υπολογίζει και να επιστρέφει το μέσο όρων των στοιχείων ενός πίνακα με μέγιστο πλήθος θέσεων 1000 Λύση ΣΥΝΑΡΤΗΣΗ Υπολογισμός_ΜΟ (Πλήθος, Πίνακας): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Πίνακας[1000], άθροισμα ΑΚΕΡΑΙΕΣ : Πλήθος, i ΑΡΧΗ άθροισμα &lt- 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Πλήθος άθροισμα άθροισμα + Πίνακας[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Υπολογισμός_ΜΟ άθροισμα / Πλήθος ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 12. Να γράψετε υποπρόγραμμα που να δέχεται έναν ακέραιο τριψήφιο αριθμό και να επιστρέφει τον αντίστοιχο δυαδικό αριθμό Λύση Το αποτέλεσμα θα είναι πίνακας (το πολύ 10 θέσεων αφού 210 = 1024), άρα θα επιλέξουμε διαδικασία ΔΙΑΔΙΚΑΣΙΑ Δεκαδικός_σε_Δυαδικό (αριθμός, ΠΙΝΑΚΑΣ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : αριθμός, temp_αριθμός, i, ΠΙΝΑΚΑΣ[10], temp_ΠΙΝΑΚΑΣ[10], ψηφία ΑΡΧΗ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 129: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

129

ΑΝ (Πλήθος_Ψηφίων (αριθμός) > 3) ΤΟΤΕ ! Άσκηση 11 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ! Όλα μηδέν ΠΙΝΑΚΑΣ[i] 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ temp_αριθμός αριθμός ψηφία 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ψηφία ψηφία + 1 temp_ΠΙΝΑΚΑΣ[ψηφία] temp_αριθμός MOD 2 temp_αριθμός temp_αριθμός DIV 2 ΜΕΧΡΙΣ_ΟΤΟΥ (temp_αριθμός = 0) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ψηφία ! αντιστροφή πίνακα ΠΙΝΑΚΑΣ[i] temp_ΠΙΝΑΚΑΣ[ψηφία + 1 - i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 13. Να γράψετε υποπρόγραμμα που να δέχεται ως όρισμα έναν αριθμό και έναν μονοδιάστατο πίνακα Ν (μέγιστο πλήθος 1000) θέσεων πραγματικών αριθμών και να ελέγχει πόσες φορές εντοπίζεται ο αριθμός αυτός στον πίνακα και να επιστρέφει το πλήθος αυτό Λύση ΣΥΝΑΡΤΗΣΗ Πλήθος_σε_Πίνακα (Στοιχείο_Αναζήτησης, Πλήθος, Πίνακας): ΑΚΕΡΑΙΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Στοιχείο_Αναζήτησης, Πίνακας[1000] ΑΚΕΡΑΙΕΣ : Πλήθος, i, εκτίμηση ΑΡΧΗ εκτίμηση &lt- 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Πλήθος ΑΝ (Πίνακας[i] = Στοιχείο_Αναζήτησης) ΤΟΤΕ εκτίμηση εκτίμηση + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Πλήθος_σε_Πίνακα εκτίμηση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 14. Να γράψετε υποπρόγραμμα που να δέχεται δυο πραγματικούς αριθμούς να αντιμεταθέτει τις τιμές τους (δείτε και άσκηση 2.1.2.Ασκ3) Λύση ΔΙΑΔΙΚΑΣΙΑ Αντιμετάθεσε (αριθμός_1, αριθμός_2) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : αριθμός_1, αριθμός_2, βοηθητική ΑΡΧΗ βοηθητική αριθμός_1 αριθμός_1 αριθμός_2 αριθμός_2 βοηθητική ! πρώην τιμή της μεταβλητής αριθμός_1 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 130: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

130

15. Να γράψετε υποπρόγραμμα που να ταξινομεί έναν πίνακα με μέγιστο πλήθος θέσεων 1000 Λύση ΔΙΑΔΙΚΑΣΙΑ Ταξινόμηση (Πλήθος, Πίνακας) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Πίνακας[1000], βοηθητική ΑΚΕΡΑΙΕΣ : Πλήθος, i, j ΑΡΧΗ ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Πλήθος ΓΙΑ j ΑΠΟ Πλήθος ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1 ΑΝ (Πίνακας[j-1] > Πίνακας[j]) ΤΟΤΕ ! αύξουσα ταξινόμηση ΚΑΛΕΣΕ Αντιμετάθεσε (Πίνακας[j-1], Πίνακας[j]) ! άσκηση 10 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 16. Να υλοποιήσετε τον αλγόριθμο του πολλαπλασιασμού αλα ρωσικά σε πρόγραμμα γραμμένο σε ΓΛΩΣΣΑ Λύση ΠΡΟΓΡΑΜΜΑ Πολλαπλ_αλά_ρωσικά_Πρόγραμμα ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Αριθμός1, Αριθμός2, Αποτέλεσμα ΑΡΧΗ ΓΡΑΨΕ 'Εισάγετε 2 ακέραιους θετικούς αριθμούς' ΔΙΑΒΑΣΕ Αριθμός1, Αριθμός2 Αποτέλεσμα <– 0 ΟΣΟ (Αριθμός2 > 0) ΕΠΑΝΑΛΑΒΕ ΑΝ (Αριθμός2 MOD 2 = 1) ΤΟΤΕ Αποτέλεσμα <– Αποτέλεσμα + Αριθμός1 ΤΕΛΟΣ_ΑΝ ΚΑΛΕΣΕ Τροποποίηση_Μεταβλητών (Αριθμός1, Αριθμός2) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Το αποτέλεσμα είναι: ', Αποτέλεσμα ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! ======================================================== ΔΙΑΔΙΚΑΣΙΑ Τροποποίηση_Μεταβλητών (Μ1, Μ2) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Μ1, Μ2 ΠΡΑΓΜΑΤΙΚΕΣ: βοηθητική ΑΡΧΗ M1 <– M1 * 2 βοηθητική <– M2 / 2 M2 <– Α_Μ (βοηθητική) ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 17. Να αναπτύξετε πρόγραμμα που θα διαβάζει έναν ακέραιο αριθμό >100 και θα υπολογίζει και θα εκτυπώνει την τιμή της παράστασης:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 131: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

131

Λύση ΠΡΟΓΡΑΜΜΑ Παράσταση ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: μετρητής, κάτω_όριο, άνω_όριο, πλήθος, αριθμητής, παρονομαστής ΠΡΑΓΜΑΤΙΚΕΣ: άθροισμα ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ πλήθος ΜΕΧΡΙΣ_ΟΤΟΥ πλήθος > 0 ΚΑΙ πλήθος <= 100 άθροισμα <– 0 ΓΙΑ μετρητής ΑΠΟ 1 ΜΕΧΡΙ πλήθος παρονομαστής <– Παραγοντικό (μετρητής)

! συνάρτηση που υπολογίζει το παραγοντικό άθροισμα <– άθροισμα + μετρητής * (μετρητής ^ 2 / παρονομαστής) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Η παράσταση είναι ', άθροισμα ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! ======================================================== ΣΥΝΑΡΤΗΣΗ Παραγοντικό (αριθμός): ΑΚΕΡΑΙΗ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : αριθμός, εκτίμηση, i ΑΡΧΗ ΑΝ (αριθμός < 0) ΤΟΤΕ εκτίμηση <- -1 ! Η τιμή -1 θα ερμηνευτεί ως λάθος δεδομένο εισόδου ΑΛΛΙΩΣ εκτίμηση <- 1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ αριθμός εκτίμηση <- εκτίμηση * i ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ Παραγοντικό <- εκτίμηση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 18. Τη στιγμή που η ταμίας του σούπερ μάρκετ ΦΑΔΙΣΟΠΟΥΛΟΣ "περνά" κάποιο προϊόν από τον σαρωτή γραμμωτού κώδικα, η ταμειακή μηχανή αναζητά στη βάση δεδομένων του καταστήματος τις πληροφορίες που αφορούν το προϊόν αυτό. Η βάση αυτή αποτελείται από τον μονοδιάστατο πίνακα ΚΩΔΙΚΟΣ με πλήθος γραμμών όσα και τα προϊόντα, τον μονοδιάστατο πίνακα ΤΙΜΗ που περιέχει αντίστοιχα την τιμή του προϊόντος και τον μονοδιάστατο πίνακα ΠΕΡΙΓΡΑΦΗ που περιέχει λίγα λόγια για το προϊόν (αυτά που αναγράφονται στην οθόνη). Να αναπτυχθεί πρόγραμμα που θα διαβάζει κωδικό προϊόντος και θα εκτυπώνει την περιγραφή του στην οθόνη της ταμειακής ενώ στο τέλος θα υπολογίζει το κόστος της αγοράς. Η διαδικασία ολοκληρώνεται όταν εισαχθεί κωδικός προϊόντος 0. Στο σημείο αυτό ερωτάται ο χρήστης αν έχει κερδοκάρτα και σε αυτήν την περίπτωση εισάγεται ο κωδικός της, ανασύρονται τα στοιχεία του πελάτη και προστίθεται το ποσό αγορών στο αντίστοιχο πεδίο - πραγματοποιείται δε έκπτωση 1% επί του ποσού αυτού. Ο πίνακας ΚΩΔΙΚΟΣ_ΠΕΛ έχει δυο στήλες: η πρώτη περιέχει τον

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 132: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

132

κωδικό του πελάτη και η δεύτερη το συνολικό ποσό αγορών του τον τελευταίο μήνα ενώ αντίστοιχα ο πίνακας ΟΝΟΜΑ_ΠΕΛ περιέχει το όνομα του κατόχου της κερδοκάρτας Λύση ΠΡΟΓΡΑΜΜΑ ΦΑΔΙΣΟΠΟΥΛΟΣ_Μαρκετ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : i, j, κωδικός_προϊόντος, κωδικός_πελάτη, θέση, θέση_πελ ΑΚΕΡΑΙΕΣ : Πλήθος_προϊόντων, ΚΩΔΙΚΟΣ[1000], ΤΙΜΗ[1000], ΠΕΡΙΓΡΑΦΗ[1000] ΑΚΕΡΑΙΕΣ : Πλήθος_πελατών, ΟΝΟΜΑ_ΠΕΛ[1000], ΚΩΔΙΚΟΣ_ΠΕΛ[1000,2] ΠΡΑΓΜΑΤΙΚΕΣ : κόστος, έκπτωση ΧΑΡΑΚΤΗΡΕΣ : μήνυμα_κερδοκάρτας, απάντηση ΑΡΧΗ ΚΑΛΕΣΕ Εισαγωγή_Δεδομένων (Πλήθος_προϊόντων, ΚΩΔΙΚΟΣ, ΤΙΜΗ, ΠΕΡΙΓΡΑΦΗ,

Πλήθος_πελατών, ΟΝΟΜΑ_ΠΕΛ, ΚΩΔΙΚΟΣ_ΠΕΛ)

κόστος <– 0 ΔΙΑΒΑΣΕ κωδικός_προϊόντος ΟΣΟ (κωδικός_προϊόντος <> 0) ΕΠΑΝΑΛΑΒΕ θέση<–Σειρ_Αναζήτηση (κωδικός_προϊόντος, Πλήθος_προϊόντων,ΚΩΔΙΚΟΣ)

! Συνάρτηση άσκησης 7 ΑΝ (θέση = 0) ΤΟΤΕ ! Δεν βρέθηκε στον πίνακα ο συνδρομητής αυτός ΓΡΑΨΕ 'Κάποιο λάθος έγινε κατά την εισαγωγή του κωδικού προϊόντος,

δοκιμάστε πάλι'

ΑΛΛΙΩΣ ΓΡΑΨΕ ΠΕΡΙΓΡΑΦΗ[θέση] ! περιγραφή του προϊόντος κόστος <– κόστος + ΤΙΜΗ[θέση] ΤΕΛΟΣ_ΑΝ ΔΙΑΒΑΣΕ κωδικός_προϊόντος

! Διαβάζουμε τον κωδικό για την επόμενη επανάληψη ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ μήνυμα_κερδοκάρτας <– 'Έχετε κερδοκάρτα (Ναι/Όχι);' απάντηση <– Ναι_Οχι (μήνυμα_κερδοκάρτας) ! Συνάρτηση άσκησης 8 ΑΝ (απάντηση = 'Όχι') ΤΟΤΕ ! Δεν υπάρχει κερδοκάρτα ΓΡΑΨΕ 'Ποσό πληρωμής', κόστος, ' €.

Για έκπτωση στις αγορές σας αποκτήστε την κερδοκάρτα...'

ΑΛΛΙΩΣ ΔΙΑΒΑΣΕ κωδικός_πελάτη θέση_πελ <– Σειρ_Αναζήτηση (κωδικός_πελάτη, πλήθος_πελατών, ΚΩΔΙΚΟΣ_ΠΕΛ)

! Συνάρτηση άσκησης 10.3.7

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 133: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

133

ΑΝ (θέση_πελ = 0) ΤΟΤΕ ! Δεν βρέθηκε στον πίνακα αυτός ο κωδικός πελάτη

ΓΡΑΨΕ 'Κάποιο λάθος έγινε κατά την εισαγωγή του κωδικού πελάτη.

Δοκιμάστε πάλι...'

ΑΛΛΙΩΣ ΚΩΔΙΚΟΣ_ΠΕΛ[θέση_πελ, 2] <– ΚΩΔΙΚΟΣ_ΠΕΛ[θέση_πελ, 2] + κόστος έκπτωση <– 0.01 * ΚΩΔΙΚΟΣ_ΠΕΛ[θέση_πελ, 2] κόστος <– κόστος - έκπτωση ΓΡΑΨΕ 'Ποσό πληρωμής ', κόστος, ' € και έκπτωση ', έκπτωση ΓΡΑΨΕ 'Σας ευχαριστούμε ', ΟΝΟΜΑ_ΠΕΛ[θέση_πελ] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! ======================================================== ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Δεδομένων (Πλήθος_προϊόντων, ΚΩΔΙΚΟΣ, ΤΙΜΗ, ΠΕΡΙΓΡΑΦΗ, Πλήθος_πελατών, ΟΝΟΜΑ_ΠΕΛ, ΚΩΔΙΚΟΣ_ΠΕΛ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : i, j, στήλες ΑΚΕΡΑΙΕΣ : Πλήθος_προϊόντων, ΚΩΔΙΚΟΣ[1000], ΤΙΜΗ[1000], ΠΕΡΙΓΡΑΦΗ[1000] ΑΚΕΡΑΙΕΣ : Πλήθος_πελατών, ΟΝΟΜΑ_ΠΕΛ[1000], ΚΩΔΙΚΟΣ_ΠΕΛ[1000,2] ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δώσε το πλήθος των προιόντων (μέγιστο 1000)' ΔΙΑΒΑΣΕ Πλήθος_προϊόντων ΜΕΧΡΙΣ_ΟΤΟΥ (Πλήθος_προϊόντων > 0) ΚΑΙ (Πλήθος_προϊόντων < 1000)

ΚΑΛΕΣΕ Εισαγωγή_Μον_Πίνακα (Πλήθος_προϊόντων, ΚΩΔΙΚΟΣ) ΚΑΛΕΣΕ Εισαγωγή_Μον_Πίνακα (Πλήθος_προϊόντων, ΤΙΜΗ) ΚΑΛΕΣΕ Εισαγωγή_Μον_Πίνακα (Πλήθος_προϊόντων, ΠΕΡΙΓΡΑΦΗ) ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δώσε το πλήθος των πελατών (μέγιστο 1000)' ΔΙΑΒΑΣΕ Πλήθος_πελατών ΜΕΧΡΙΣ_ΟΤΟΥ (Πλήθος_πελατών> 0) ΚΑΙ (Πλήθος_πελατών< 1000)

ΚΑΛΕΣΕ Εισαγωγή_Μον_Πίνακα (Πλήθος_πελατών, ΟΝΟΜΑ_ΠΕΛ) στήλες <– 2 ΚΑΛΕΣΕ Εισαγωγή_Δισ_Πίνακα (Πλήθος_πελατών, στήλες, ΚΩΔΙΚΟΣ_ΠΕΛ) ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ! ======================================================== ! Πρέπει να ακολουθήσουν τα υποπρογράμματα που χρησιμοποιούνται στο πρόγραμμα ! και έχουν παρουσιαστεί στις ασκήσεις 8 και 7

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 134: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

134

19. Σε μια εταιρεία υπάρχουν 3 κατηγορίες υπαλλήλων με κωδικούς Κ1, Κ2, Κ3 αντίστοιχα. Να γραφεί πρόγραμμα σε γλώσσα προγραμματισμού ΓΛΩΣΣΑ που θα διαβάζει για κάθε υπάλληλο τον κωδικό του και το μηνιαίο μισθό του σε Ευρώ. α) υπολογίζει και εμφανίζει πόσοι υπάλληλοι υπάρχουν σε κάθε κατηγορία. β) Γνωρίζοντας ότι οι υπάλληλοι της πρώτης κατηγορίας θα πάρουν δώρο ίσο με το 1/10 του μισθού τους, της δεύτερης κατηγορίας ίσο με το 1/15 και της τρίτης κατηγορίας 30 Ευρώ, να υπολογιστεί και να εμφανιστεί σε Ευρώ το δώρο κάθε υπαλλήλου. γ) Εμφανίζει σε δραχμές το δώρο κάθε υπαλλήλου. Η μετατροπή από Ευρώ σε δραχμές θα γίνεται με χρήση συνάρτησης που θα δέχεται τα χρήματα σε Ευρώ ως πραγματικό αριθμό και θα επιστρέφει τα χρήματα σε δραχμές ως πραγματικό αριθμό επίσης. Το πρόγραμμα θα τερματίζει όταν δοθεί ως είσοδος μη αποδεκτός κωδικός.

Απάντηση

ΠΡΟΓΡΑΜΜΑ Ασκ ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: πλ1, πλ2, πλ3 ΧΑΡΑΚΤΗΡΕΣ: Κ ΠΡΑΓΜΑΤΙΚΕΣ: Μ, Δ

ΑΡΧΗ ΔΙΑΒΑΣΕ Κ, Μ πλ1 <− 0 πλ2 <− 0 πλ3 <− 0 ΌΣΟ Κ = 'Κ1' Ή Κ = 'Κ2' Ή Κ = 'Κ3' ΕΠΑΝΑΛΑΒΕ

ΑΝ Κ = "Κ1" ΤΟΤΕ πλ1 <− πλ1 + 1 Δ <− Μ*1/10

ΑΛΛΙΩΣ_ΑΝ Κ = 'Κ2' ΤΟΤΕ πλ2 <− πλ2 + 1 Δ <− Μ*1/15

ΑΛΛΙΩΣ_ΑΝ Κ = 'Κ3' ΤΟΤΕ πλ3 <− πλ3 + 1 Δ <− 30

ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ Δ ΓΡΑΨΕ ΔΡΧ(Δ) ! το δώρο Δ είναι σε ευρώ ΔΙΑΒΑΣΕ Κ, Μ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ πλ1, πλ2, πλ3

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΔΡΧ(Δ): ΠΡΑΓΜΑΤΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Δ

ΑΡΧΗ ΔΡΧ <− Δ*340.75

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

20. Ένα κατάστημα ηλεκτρονικών ειδών καταχωρεί σε πίνακες τις ονομασίες 10 μοντέλων τηλεοράσεων και τον αριθμό τεμαχίων που πούλησε καθένας από τους 10 πωλητές του. Αφού διαβαστούν τα δεδομένα με τη βοήθεια προγράμματος:

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 135: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

135

α) να εμφανιστεί το όνομα του δεύτερου μοντέλου και ο αριθμός τεμαχίων που πούλησε συνολικά το κατάστημα από το συγκεκριμένο μοντέλο, β) να γίνει συνάρτηση που θα δέχεται τον πίνακα με τον αριθμό τηλεοράσεων που πουλήθηκαν και τον αριθμό πωλητή (ένας αριθμός από 1 μέχρι 10) και θα επιστρέφει "ΝΑΙ" αν ο πωλητής πούλησε τουλάχιστον 50 συνολικά τεμάχια ή "ΟΧΙ" στην αντίθετη περίπτωση. Η συνάρτηση να καλείται στο πρόγραμμα για κάθε πωλητή και θα εμφανίζεται ο αριθμός πωλητή και το αποτέλεσμα της συνάρτησης.

Απάντηση

ΠΡΟΓΡΑΜΜΑ Ασκ

ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Μ[10], x ΑΚΕΡΑΙΕΣ: i, j, Π[10, 10], α

ΑΡXΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10

ΔΙΑΒΑΣΕ M[i] ! ονομασίες μοντέλων

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10

ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10 ΔΙΑΒΑΣΕ Π[i, j] ! πωλήσεις τεμαχίων ανά μοντέλο

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ α <− 0 ! α ερώτημα ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10

α <− α + Π[2, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μ[2], α ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10 ! β ερώτημα – το j δείχνει τον πωλητή

x <− F( Π, j ) ΓΡΑΨΕ j, x

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ F(Π, j): ΧΑΡΑΚΤΗΡΑΣ ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, j, Π[10, 10], αθρ

ΑΡΧΗ αθρ <− 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10

αθρ <− αθρ + Π[i, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ αθρ >= 50 ΤΟΤΕ

F <− 'ΝΑΙ'

ΑΛΛΙΩΣ F <− 'ΟΧΙ'

ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 136: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

136

21. Να μετατραπεί το ακόλουθο τμήμα προγράμματος, ώστε στη θέση της διαδικασίας να χρησιμοποιηθεί συνάρτηση.

ΔΙΑΒΑΣΕ x, y

ΚΑΛΕΣΕ PROC(x, y)

e <- x DIV 1

ΚΑΛΕΣΕ PROC(e, d)

ΓΡΑΨΕ x, y, d, e

ΔΙΑΔΙΚΑΣΙΑ PROC(d, e)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: d, e

ΑΡΧΗ

e <- d - 2

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Απάντηση

Όπως αναφέρθηκε στην προηγούμενη άσκηση, οι διαδικασίες έχουν εισόδους και εξόδους, ενώ στη συνάρτηση υπάρχουν είσοδοι μόνο. Άρα εφόσον στη διαδικασία υπάρχουν 2 παράμετροι, στη συνάρτηση πρέπει να υπάρχει μόνο μία παράμετρος. Στην πρώτη κλήση της διαδικασίας η x είναι η είσοδος, ενώ η y είναι η έξοδος. Στη δεύτερη κλήση της διαδικασίας η e είναι η είσοδος, ενώ η d είναι η έξοδος.

ΠΡΟΓΡΑΜΜΑ Ασκ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: x, y, d, e

ΑΡΧΗ

ΔΙΑΒΑΣΕ x, y

y <- F(x)

e <- x DIV 1

d <- F(e)

ΓΡΑΨΕ x, y, d, e

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ F(d): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: d

ΑΡΧΗ

F <- d - 2

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

22. α) Να γραφεί πρόγραμμα στη ΓΛΩΣΣΑ που θα διαβάζει πίνακες 100 θέσεων με τα επίθετα και την χρονιά γέννησης μαθητών. Για κάθε μαθητή εισάγονται στο πρόγραμμα και οι 4 βαθμοί του στα προφορικά, έκθεση, ακουστικό και γραμματική για το δίπλωμα Αγγλικών Proficiency. Να εμφανιστεί για τους νεότερους μαθητές ο τελικός βαθμός τους, αν ξέρουμε ότι οι δύο πρώτες ενότητες συμβάλλουν κατά 30%, ενώ οι τελευταίες κατά 20%. Ο τελικός βαθμός για κάθε υποψήφιο να υπολογίζεται με τη βοήθεια συνάρτησης και θα εκχωρείται σε νέο πίνακα. Η συνάρτηση θα δέχεται ως είσοδο μια τετράδα βαθμών για έναν μαθητή και θα υπολογίζει τον τελικό βαθμό του σύμφωνα με την παραπάνω τεχνική. Η συνάρτηση χρειάζεται έπειτα να κληθεί πολλές φορές. β) Να δημιουργηθεί διαδικασία στο τέλος του προγράμματος η οποία θα δέχεται ως είσοδο τον πίνακα των τελικών βαθμών, τον πίνακα των επιθέτων και έναν αριθμό μαθητή (από 1 ως 100) και θα εμφανίζει τη συνολική του βαθμολογία και το επίθετό του. Στη συνέχεια η διαδικασία να καλείται στο πρόγραμμα για την εμφάνιση μόνο των

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 137: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

137

βαθμών των μαθητών που έχουν έτος γέννησης ίσο με κάποιο έτος που θα δίνεται ως είσοδος στο πρόγραμμα. Το έτος να δίνεται ως είσοδος μόνο μία φορά.

Απάντηση

Στο α ερώτημα ζητείται η δημιουργία συνάρτησης που θα δέχεται 4 απλές μεταβλητές για τον υπολογισμό του τελικού βαθμού. Για να γίνει υπολογισμός των 100 τελικών βαθμών δίνονται κάθε φορά στη συνάρτηση οι τιμές ενός στοιχείου κάθε πίνακα, π.χ. οι τιμές ΠΡ[1], ΕΚ[1], ΑΚ[1], ΓΡ[1], έπειτα οι τιμές ΠΡ[2], ΕΚ[2], ΑΚ[2], ΓΡ[2] και γενικά οι τιμές των ΠΡ[i], ΕΚ[i], ΑΚ[i], ΓΡ[i].

Στο β ερώτημα πρέπει να διαβαστεί ένα έτος και έπειτα να χρησιμοποιείται η διαδικασία για τους υποψηφίους που έχουν έτος γέννησης ίσο με το έτος εισόδου.

ΠΡΟΓΡΑΜΜΑ Ασκ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, ΕΤΟΣ[100], max

ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[100]

ΠΡΑΓΜΑΤΙΚΕΣ: ΠΡ[100], ΕΚ[100], ΑΚ[100], ΓΡ[100], ΤΕΛ[100]

ΑΡΧΗ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ! ερώτημα α

ΔΙΑΒΑΣΕ ΟΝ[i], ΕΤΟΣ[i], ΠΡ[i], ΕΚ[i], ΑΚ[i], ΓΡ[i]

ΤΕΛ[i] <- ΣΥΝΑΡΤ(ΠΡ[i], ΕΚ[i], ΑΚ[i], ΓΡ[i]) ! στη θέση των β1, β2, β3, β4

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

max <- 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100

ΑΝ ΕΤΟΣ[i] > max ΤΟΤΕ

max <- ΕΤΟΣ[i]

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100

ΑΝ ΕΤΟΣ[i] = max ΤΟΤΕ

ΓΡΑΨΕ ΤΕΛ[i]

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΔΙΑΒΑΣΕ ΧΡΟΝΙΑ ! ερώτημα β

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100

ΑΝ ΕΤΟΣ[i] = ΧΡΟΝΙΑ ΤΟΤΕ

ΚΑΛΕΣΕ ΔΙΑΔ(ΤΕΛ, ΟΝ, i)

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΣΥΝΑΡΤ ( β1, β2, β3, β4 ): ΠΡΑΓΜΑΤΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: β1, β2, β3, β4

ΑΡΧΗ

ΣΥΝΑΡΤ <- (β1 + β2)*0.30 + (β3 + β4)*0.20

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 138: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

138

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(ΤΕΛ, ΟΝ, i)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i

ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[100]

ΠΡΑΓΜΑΤΙΚΕΣ: ΤΕΛ[100]

ΑΡΧΗ

ΓΡΑΨΕ ΟΝ[i], ΤΕΛ[i]

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

23.Να γραφεί πρόγραμμα στη "ΓΛΩΣΣΑ" που για 50 οικογένειες θα διαβάζει σε πίνακα τον αριθμό παιδιών της, δεχόμενοι ότι τα παιδιά μπορεί να είναι από 1 μέχρι και 10 ανά οικογένεια. α) Για κάθε οικογένεια θα διαβάζεται το επίθετό της και για κάθε παιδί της οικογένειας θα διαβάζεται σε πίνακα δύο διαστάσεων το έτος γέννησης. β) Με τη βοήθεια υποπρογράμματος να υπολογιστεί και εμφανιστεί ο αριθμός οικογενειών που έχουν παιδί με έτος γέννησης 2000. Σε κάποιες οικογένειες μπορεί να υπάρχουν 2 ή περισσότερα παιδιά με το ίδιο έτος γέννησης (π.χ. στην περίπτωση διδύμων). Για να είναι γενικό το υποπρόγραμμα το έτος θα το δέχεται ως παράμετρο και τη στιγμή της κλήσης στο πρόγραμμα θα καθορίζεται η τιμή 2000. γ) Να εμφανιστούν στο πρόγραμμα τα επίθετα των οικογενειών και ο αριθμός παιδιών σε φθίνουσα σειρά ταξινόμησης με βάση τον αριθμό παιδιών. Σε περίπτωση ισότητας στον αριθμό των παιδιών μεταξύ διαδοχικών οικογενειών, να εμφανίζονται τα ονόματα των οικογενειών αλφαβητικά.

Απάντηση

ΠΡΟΓΡΑΜΜΑ Ασκ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, j, Π[50], ΕΤ[50, 10], ΑΡ_ΟΙΚ, Τ

ΧΑΡΑΚΤΗΡΕΣ: ΕΠ[50], Τ1

ΑΡΧΗ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50

ΔΙΑΒΑΣΕ Π[i], ΕΠ[i] ! αρ. παιδιών, επίθετο οικογένειας

ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Π[i]

ΔΙΑΒΑΣΕ ΕΤ[i, j] ! έτος γέννησης παιδιών

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΡ_ΟΙΚ <- ΣΥΝΑΡΤ(Π, ΕΤ, 2000)

ΓΡΑΨΕ ΑΡ_ΟΙΚ

ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 50 ! ερώτημα γ

ΓΙΑ j ΑΠΟ 50 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1

ΑΝ Π[j-1] < Π[j] ΤΟΤΕ

Τ <- Π[j-1]

Π[j-1] <- Π[j]

Π[j] <- Τ

Τ1 <- ΕΠ[j-1]

ΕΠ[j-1] <- ΕΠ[j]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 139: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

139

ΕΠ[j] <- Τ1

ΑΛΛΙΩΣ_ΑΝ Π[j-1] = Π[j] ΤΟΤΕ

ΑΝ ΕΠ[j-1] > ΕΠ[j] ΤΟΤΕ

Τ1 <- ΕΠ[j-1]

ΕΠ[j-1] <- ΕΠ[j]

ΕΠ[j] <- Τ1

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50

ΕΜΦΑΝΙΣΕ Π[i], ΕΠ[i]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΣΥΝΑΡΤ(Π, ΕΤ, ΧΡ): ΑΚΕΡΑΙΑ

ΑΚΕΡΑΙΕΣ: i, j, Π[50], ΕΤ[50, 10], πλ[50], πληθ, ΧΡ

ΑΡΧΗ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50

πλ[i] <- 0 ! αρ. παιδιών ανά οικογένεια με έτος ίσο με ΧΡ

ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Π[i]

AN ΕΤ[i, j] = ΧΡ ΤΟΤΕ πλ[i] <-πλ[i]+1

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

πληθ <- 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50

ΑΝ πλ[i] > 0 ΤΟΤΕ πληθ <- πληθ + 1

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΣΥΝΑΡΤ <- πληθ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 140: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

140

Άλυτες Ασκήσεις

1. Να γράψετε υποπρόγραμμα που να δέχεται έναν αριθμό (Χ) και και έναν ακόμη αριθμό (Ν) να επιστρέφει τη δύναμη ΧΝ

2. Να γράψετε υποπρόγραμμα που θα επιτελεί την λειτουργία της συνάρτησης Α_Τ της ΓΛΩΣΣΑΣ

3. Να γράψετε υποπρόγραμμα που θα δέχεται δυο τιμές (βάση και Χ) και θα υπολογίζει την τιμή του logβάσηX. Υπενθυμίζεται ο ακόλουθος μαθηματικός τύπος

4. Να γράψετε υποπρόγραμμα που να δέχεται έναν ακέραιο αριθμό το πολύ 10 ψηφίων και να επιστρέφει αριθμό που προκύπτει με αντιστροφή των στοιχείων του πρώτου

5. Να γράψετε υποπρόγραμμα που να δέχεται τα στοιχεία ενός πίνακα Χ[100] με περιεχόμενα θετικούς άρτιους αριθμούς

6. Να γράψετε υποπρόγραμμα που να δέχεται τα στοιχεία ενός πίνακα ακεραίων αριθμών Χ[8, 8] που να επιστρέφει το άθροισμα των στοιχείων της κυρίας διαγωνίου

7. Να γράψετε υποπρόγραμμα που να εντοπίζει και να επιστρέφει το μικρότερο στοιχείο ενός πίνακα με μέγιστο πλήθος θέσεων 100

8. Να αναπτύξετε πρόγραμμα (με χρήση υποπρογραμμάτων) που θα διαβάζει ακέραιους αριθμούς α και β και έναν θετικό ακέραιο Ν και θα υπολογίζει και θα εκτυπώνει την τιμή της παράστασης:

9. Να αναπτύξετε πρόγραμμα που να εκτυπώνει το ακόλουθο μενού επιλογών:

1. Εμβαδόν τριγώνου

2. Εμβαδόν τετραγώνου

3. Εμβαδόν ορθογωνίου

4. Εμβαδόν κυλίνδρου

5. Τερματισμός προγράμματος

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

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 141: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

141

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Διαγώνισμα κεφάλαιο 10: Υποπρογράμματα

ΘΕΜΑ 1

Α. Απαντήστε στις παρακάτω ερωτήσεις επιλέγοντας για την καθεμία Σ ή Λ (Σωστό ή Λάθος).

1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες από δυο φορές από το

κυρίως πρόγραμμα.

2. Οι διαδικασίες επιτρέπεται να μεταβάλλουν τις τιμές των παραμέτρων που δέχονται από το κυρίως πρόγραμμα.

3. Μια διαδικασία μπορεί να μην έχει καμία παράμετρο.

4. Ένα υποπρόγραμμα μπορεί κατά την εκτέλεσή του να καλέσει το κυρίως πρόγραμμα.

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

6. Υπάρχει η περίπτωση τυπικές και πραγματικές παράμετροι να έχουν το ίδιο όνομα και διαφορετικό τύπο.

7. Απαγορεύεται σε ένα υποπρόγραμμα να γίνεται κλήση ενός άλλου υποπρογράμματος.

8. Υπάρχουν ειδικές περιπτώσεις κατά τις οποίες μια συνάρτηση μπορεί να επιστρέψει ταυτόχρονα και με τις ίδιες παραμέτρους στο κυρίως πρόγραμμα δυο διακριτές τιμές.

9. Ο τμηματικός προγραμματισμός χρησιμοποιείται για να κάνει τα προγράμματα να εκτελούνται ταχύτερα.

10. Στον κώδικα υλοποίησης μιας Συνάρτησης, το όνομά της πρέπει οπωσδήποτε να βρίσκεται τουλάχιστον μια φορά στο αριστερό τμήμα εντολής εκχώρησης.

(2 Μονάδες)

Β. Περιγράψτε αναλυτικά τι συναντάμε στην πρώτη γραμμή του κώδικα υλοποίησης μιας συνάρτησης και μιας διαδικασίας.

(1 Μονάδες) Γ. Να γράψετε στο τετράδιό σας τους αριθμούς της στήλης Α και δίπλα τα γράμματα της στήλης Β ώστε να προκύπτει η σωστή αντιστοίχιση. (Να σημειωθεί ότι στα στοιχεία της στήλης Α αντιστοιχούν περισσότερα από ένα στοιχεία της στήλης Β)

Τύπος υποπρογράμματος (Στήλη Α) Χαρακτηριστικό (Στήλη Β) α. Διαδικασία 1. μπορεί να επιστρέφει πολλές τιμές

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 142: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

142

β. Συνάρτηση 2. ΚΑΛΕΣΕ 3. μπορεί να επιστρέφει μία και μόνο τιμή 4. Α_Μ 5. εισαγωγή πολλών δεδομένων 6. μπαίνει στο δεξιό μέρος εντολής

εκχώρησης

(1 Μονάδα)

ΘΕΜΑ 2 Τι θα εμφανίσει το παρακάτω πρόγραμμα αν δοθούν διαδοχικά οι τιμές: 1, 1, 3, 5, 8,

0, 2, 12, 3, 7;

ΠΡΟΓΡΑΜΜΑ Θέμα ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α[5], Β[5], Γ[10], k ΑΡΧΗ ΚΑΛΕΣΕ Δώσε (Α) ΚΑΛΕΣΕ Δώσε (Β) ΚΑΛΕΣΕ Κάνε (Α, Β, Γ) ΚΑΛΕΣΕ Πάρε (Γ) ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Δώσε (Χ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Χ[5], i ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΔΙΑΒΑΣΕ Χ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Κάνε (X, Y, Z) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: X[5], Y[5], Z[10], i ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 Ζ[ i ] Χ[ i ] + Y[ i ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 10 ΜΕΧΡΙ 6 ΜΕ ΒΗΜΑ - 1 Ζ[ i ] Χ[ i – 5 ] – Y[ i – 5 ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ Πάρε (Χ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Χ[10], i ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ Χ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

(5 Μονάδες)

Θέμα 3

Δίνεται το παρακάτω πρόγραμμα, το οποίο υπολογίζει την τιμή της παράστασης

3

Δεν ορίζεται , αλλιώς

(127 ), 2

2

7127, 2

10x

x xx

x x

xY e x

x

ΠΡΟΓΡΑΜΜΑ Θέμα_3

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 143: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

143

Y ‹― (7127 – x) / (x – 10) + E(x)

ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: x, Y ΑΡΧΗ ΔΙΑΒΑΣΕ x ΑΝ x > 2 TOTE ! ΤΜΗΜΑ Α

ΑΛΛΙΩΣ_AN x < –2 TOTE ! ΤΜΗΜΑ Β

ΑΛΛΙΩΣ ! ΤΜΗΜΑ Γ

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ α) Να αναπτύξετε υποπρογράμματα που θα υλοποιούν τα τμήματα Α, Β και Γ του προγράμματος Θέμα_3. Θα τα ορίσετε ως συναρτήσεις ή ως διαδικασίες; Εξηγήστε για κάθε περίπτωση.

(2 Μονάδες) β) Να ξαναγράψετε το κύριο πρόγραμμα Θέμα_3 έτσι, ώστε να χρησιμοποιεί τα τρία υποπρογράμματα που ορίσατε στο ερώτημα α).

(2 Μονάδες)

Θέμα 4

Για την παρακολούθηση των θερμοκρασιών της επικράτειας κατά το μήνα Μάιο καταγράφεται κάθε μέρα η θερμοκρασία στις 12:00 το μεσημέρι για 20 πόλεις. Να αναπτύξετε πρόγραμμα το οποίο:

i) θα διαβάζει τα ονόματα των 20 πόλεων και τις αντίστοιχες θερμοκρασίες για κάθε μία από τις ημέρες του μήνα και θα καταχωρεί τα στοιχεία σε πίνακες.

(1 Μονάδα)

ii) θα εμφανίζει για κάθε πόλη το όνομά της και τη μέγιστη θερμοκρασία που καταγράφηκε σε αυτήν στη διάρκεια του μήνα. Ο υπολογισμός της μέγιστης θερμοκρασίας να γίνεται με τη χρήση υποπρογράμματος που θα κατασκευάσετε για το σκοπό αυτό.

(2 Μονάδες)

iii) θα διαβάζει το όνομα μιας πόλης και θα εμφανίζει τη μέγιστη θερμοκρασία που καταγράφηκε στην πόλη αυτή στη διάρκεια του μήνα. Ο υπολογισμός της

Y ‹― (127 – x)^3 / x Υ ‹― Υ + x / (x – 2)

ΑΝ x < 0 TOTE ΓΡΑΨΕ 'Δεν ορίζεται για –2 ≤ x < 0' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Δεν ορίζεται για 0 ≤ x ≤ 2' ΤΕΛΟΣ_ΑΝ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 144: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

144

μέγιστης θερμοκρασίας πρέπει να γίνεται με τη βοήθεια του υποπρογράμματος που αναπτύχθηκε στο προηγούμενο ερώτημα (ii). Αν η πόλη αυτή δεν υπάρχει να εμφανίζεται κατάλληλο μήνυμα.

(2 Μονάδες)

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

(2 Μονάδες)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 145: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

145

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επαναληπτικές Ασκήσεις

1. Δίνονται δύο αριθμοί. Να υπολογισθεί το άθροισμα και το γινόμενό τους. 2. Δίνονται τρεις αριθμοί. Να υπολογισθεί ο μέσος όρος τους. 3. Δίνονται οι κάθετες πλευρές ορθογωνίου τριγώνου. Να υπολογισθεί η υποτείνουσά του. 4. Δίνονται οι βάσεις και το ύψος ενός τραπεζίου. Να υπολογισθεί το εμβαδό του. 5. Να γραφεί πρόγραμμα το οποίο θα ανταλλάσσει τις τιμές δύο μεταβλητών Α και Β. Δηλ.

π.χ. αν Α=5 και Β=7, να γίνουν Α=7 και Β=5 6. Να γραφεί πρόγραμμα μετατροπής των βαθμών fahreneit σε βαθμούς Κελσίου.

Βαθμοί Κελσίου=5*(Βαθμοί fahreneit-32)/9 *7. Δίνεται ένα ποσό σε Ευρώ. Να μετατραπεί σε λίρες Αγγλίας και γερμανικά μάρκα. Οι

αντιστοιχίες των νομισμάτων να δηλωθούν ως σταθερές. 8. Δίνεται διψήφιος ακέραιος αριθμός. Να βρεθεί ο ακέραιος που προκύπτει από την

αντιστροφή των ψηφίων του. 9. Δίνεται η περιγραφή, η τιμή χωρίς Φ.Π.Α. και ο συντελεστής Φ.Π.Α. ενός προϊόντος. Να

υπολογισθεί η τελική τιμή του προϊόντος. 10. Δίνονται οι ημέρες που δουλεύει ένας εργάτης το μήνα και το ημερομίσθιό του (αμοιβή

την ημέρα). Αν οι κρατήσεις του είναι το 20% των μηνιαίων αποδοχών του, να υπολογισθούν ο μικτός μηνιαίος μισθός του (πριν γίνουν οι κρατήσεις), οι κρατήσεις και ο καθαρός μηνιαίος μισθός του.

*11. Μια εταιρία φορολογείται με συντελεστή 30% επί των κερδών της. Αν δίνονται τα κέρδη της, να υπολογισθεί ο φόρος που θα πληρώσει και το ποσό που τελικά θα της μείνει.

*12. Ενας πωλητής παίρνει ποσοστό 30% επί των πωλήσεων. Να δοθεί το ονοματεπώνυμό του και το ποσό 3 πωλήσεών του και και υπολογισθούν το ποσοστό του και το ποσό που θα πάρει η εταιρία.

13. Δίνονται το κεφάλαιο που καταθέτει κάποιος στην τράπεζα για δύο χρόνια και το επιτόκιο. Να υπολογισθεί ο τόκος στο τέλος του 1ου χρόνου, ο τόκος στο τέλος του 2ου χρόνου και πόσο τελικά γίνεται το κεφάλαιο.

14. Με δεδομένο ότι οι υπερωρίες πληρώνονται 50% επιπλέον, να υπολογισθεί το ημερομίσθιο ενός υπαλλήλου, αν δίνονται οι ώρες εργασίας, η αμοιβή ανά ώρα και οι υπερωρίες.

*15. Το ημερομίσθιο ενός εργάτη αυξάνεται κατά 5% για κάθε παιδί που έχει. Πληρώνει 20% ΙΚΑ και 10% φόρο. Αν δίνονται το ημερομίσθιο και οι μέρες εργασίας ανά μήνα, να υπολογισθούν οι μικτές μηνιαίες αποδοχές του, το ΙΚΑ, ο φόρος και οι καθαρές μηνιαίες αποδοχές του. (Ο φόρος υπολογίζεται αφού αφαιρεθεί το ΙΚΑ).

*16. Δίνονται 3 θετικοί αριθμοί. Να υπολογισθούν τα τετράγωνα και οι τετραγωνικές τους ρίζες.

*17. Να γραφεί πρόγραμμα το οποίο θα εμφανίζει τα ημίτονα, τα συνημίτονα και τις

εφαπτομένες των γνωστών γωνιών 0ο,30ο,45ο,60ο,90ο. 18. Να γραφεί πρόγραμμα που θα υπολογίζει το μέγιστο 2 ακέραιων αριθμών και θα τον

τοποθετεί στη μεταβλητή max. 19. Να γραφεί πρόγραμμα που θα υπολογίζει το μέγιστο 3 ακέραιων αριθμών και θα τον

τοποθετεί στη μεταβλητή max. *20. Να γραφεί πρόγραμμα το οποίο θα βρίσκει πόσοι από τους 5 αριθμούς που δίνονται είναι

θετικοί.

ΕΠΙΛΟΓΗ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 146: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

146

*21. Να γραφεί πρόγραμμα που θα δέχεται έναν ακέραιο θετικό μονοψήφιο αριθμό και θα τον τυπώνει. Αν δε δοθεί θετικός μονοψήφιος το πρόγραμμα θα τυπώνει "Λάθος αριθμός"

22. Να γραφεί πρόγραμμα που θα δέχεται έναν ακέραιο αριθμό.. Αν είναι μεγαλύτερος ή ίσος του 0 θα τυπώνεται η ένδειξη "ΘΕΤΙΚΟΣ ή ΜΗΔΕΝ" και θα υπολογίζεται η τετραγωνική του ρίζα ενώ αν είναι αρνητικός θα τυπώνεται η ένδειξη "ΑΡΝΗΤΙΚΟΣ" και θα υπολογίζεται το τετράγωνό του.

23. Ενα προϊόν πωλείται ως εξής: α) για λιγότερα από 100 τεμάχια προς 2 ευρώ το ένα β) για 100 και περισσότερα τεμάχια προς 1,5 ευρώ το ένα. Να δοθεί ο αριθμός των τεμαχίων και να υπολογισθούν τα χρήματα που εισπράχθηκαν.

*24. Δίνεται ακέραιος αριθμός. Να τυπωθεί ολογράφως το υπόλοιπο της διαίρεσής του με το 3.

25. χ+1 αν χ<0

Δίνεται η συνάρτηση y={ x2-1 αν 0<=x<=1 χ+1 αν χ>1 Να δοθεί μια τιμή του x και να υπολογισθεί το αντίστοιχο y.

26. Δίνονται 2 θετικοί αριθμοί. Να υπολογισθεί η διαφορά τους έτσι ώστε να είναι κι αυτή θετική.

27. Μια εταιρία δίνει επίδομα στους υπαλλήλους της με βάση τον αριθμό παιδιών που έχουν. Για 1 παιδί 5%, για 2 παιδιά 10%, για 3 παιδιά 15% και για περισσότερα από 3 20%. Να δοθεί ο μισθός ενός υπαλλήλου και ο αριθμός παιδιών του και να υπολογισθεί το επίδομά του.

*28. Μια εταιρία δίνει επίδομα στους υπαλλήλους της με βάση τις γραμματικές τους γνώσεις ως εξής: 1. 2% για απόφοιτους Γυμνασίου 2. 5% για απόφοιτους Λυκείου 3. 10% για πτυχιούχους ΤΕΙ 4. 15% για πτυχιούχους ΑΕΙ Να δοθεί ο μισθός ενός υπαλλήλου και ο κωδικός γνώσεων (1,2,3,4) και να υπολογισθεί το επίδομα γνώσεων.

*29. Να υπολογισθεί ο φόρος εισοδήματος ενός φορολογούμενου με βάση τα παρακάτω: Για εισόδημα μέχρι 6000 ευρώ φόρος 10%, από 6001 μέχρι 12000 ευρώ φόρος 20% και από 12001 και πάνω φόρος 25%.

30. Ενας πωλητής παίρνει ποσοστό 10% επί των πωλήσεων και δικαιούται bonus 50 ευρώ αν οι πωλήσεις του υπερβαίνουν τα 500 ευρώ. Να δοθεί το ποσό των πωλήσεων και να υπολογισθούν τα χρήματα που θα πάρει ο πωλητής.

*31. Κάποιος αγοράζει μια τηλεόραση με ισόποσες δόσεις. Να δοθεί η αρχική αξία της τηλεόρασης και ο αριθμός των δόσεων και να βρεθεί το ποσό που θα πληρώνει στην κάθε δόση με βάση τα παρακάτω: 1 δόση συνολική επιβάρυνση 0% 2 δόσεις συνολική επιβάρυνση 10% 3 ή 4 δόσεις συνολική επιβάρυνση 20% 5 ή 6 δόσεις συνολική επιβάρυνση 30%

32. Η κεντρική θέρμανση ενός εργοστασίου ξεκινά αν η θερμοκρασία σε 3 διαφορετικά

σημεία είναι μικρότερη των 15ο Κελσίου. Να δοθούν οι 3 θερμοκρασίες και να τυπωθεί μήνυμα ΟΝ ή OFF ανάλογα αν πρέπει να λειτουργήσει η θέρμανση ή όχι.

33. Δίνεται ακέραιος. Να τυπώνεται η λέξη ΖΥΓΟΣ αν είναι ζυγός ή η λέξη ΜΟΝΟΣ αν είναι μονός.

34. Ενας μαθητής παίρνει τρεις προφορικούς βαθμούς και ένα γραπτό. Αν ο γραπτός έχει διπλάσια βαρύτητα, να υπολογισθεί ο μέσος όρος βαθμολογίας του, στη συνέχεια να στρογγυλευθεί και να τυπωθεί η ένδειξη ΠΕΡΑΣΕ (αν ο μέσος όρος είναι μεγαλύτερος ή ίσος του 10) ή ΑΠΕΤΥΧΕ.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 147: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

147

35. Τα αυτοκίνητα που νοικιάζει ένα γραφείο χρεώνονται με 1,5 ευρώ το ΚΜ για τα πρώτα 100 ΚΜ και με 2 ευρώ το ΚΜ για τα επιπλέον ΚΜ. Στο ποσό αυτό προστίθεται πάγιο 20 ευρώ. Να δοθούν τα ΚΜ που διένυσε κάποιος και να υπολογισθεί η συνολική του χρέωση.

36. Να δοθούν οι συντελεστές μιας δευτεροβάθμιας εξίσωσης και να υπολογισθούν οι ρίζες της (αν υπάρχουν).

ΕΠΙΛΕΞΕ *37. Να γραφεί πρόγραμμα στο οποίο θα δίνεται ένας μήνας αριθμητικά και θα τυπώνεται

ολογράφως π.χ. αν δοθεί το 3 θα τυπώνεται ΜΑΡΤΙΟΣ. 38. Να γραφεί πρόγραμμα στο οποίο θα δίνονται 2 αριθμοί και θα εμφανίζεται το μενού:

1. Πρόσθεση 2. Αφαίρεση 3. Πολλαπλασιασμός 4. Διαίρεση Ποια η επιλογή σου; Ανάλογα με την επιλογή του χρήστη θα γίνεται η ανάλογη πράξη.

39. Στις εξετάσεις αν κάποιος μαθητής συγκέντρωσε: 91..100 βαθμούς θα παίρνει A 80..90 βαθμούς θα παίρνει B 70..79 βαθμούς θα παίρνει C 60..69 βαθμούς θα παίρνει D 0..59 βαθμούς θα παίρνει E Να δοθεί ο βαθμός ενός μαθητή και να τυπωθεί ο ανάλογος χαρακτηρισμός.

*40.

Να γραφεί πρόγραμμα στο οποίο θα εμφανίζεται ένα μενού με τις επιλογές: Τ. Εμβαδό τριγώνου Π. Εμβαδό παραλληλογράμμου Κ. Εμβαδό κύκλου Ανάλογα με την επιλογή του χρήστη να δίνονται τα απαραίτητα στοιχεία και να υπολογίζεται το εμβαδό.

41. Να γραφεί πρόγραμμα στο οποίο θα δίνεται αριθμητικά ένας μήνας και ένα έτος και θα εμφανίζεται ο αριθμός των ημερών που έχει ο μήνας αυτός.

*42. Να γραφεί πρόγραμμα το οποίο θα υπολογίζει το φόρο εισοδήματος ως εξής: Για εισόδημα μέχρι 3000 ευρώ φόρος 0%, από 3001 ευρώ μέχρι 6000 ευρώ φόρος 10%,από 6001 μέχρι 9000 ευρώ φόρος 15%,από 9001 μέχρι 12000 ευρώ φόρος 20% και από 12001 και πάνω φόρος 25%.

ΕΠΑΝΑΛΗΨΗ 43. Δίνονται Ν αριθμοί. Να βρεθεί ο μέσος όρος τους. 44. Να διαβαστούν 2 αριθμοί και να τυπωθεί το άθροισμά τους. Η διαδικασία να

επαναλαμβάνεται μέχρι να δοθεί α) σε έναν απ' τους δύο η τιμή 0 β) και στους δύο η τιμή 0

45. Να διαβαστούν 10 αριθμοί στην ίδια θέση μνήμης Χ και να υπολογισθεί το γινόμενό τους.

*46. Δίνονται για Ν άτομα: Κωδικός φύλου (Γ: γυναίκα Α: άνδρας), βάρος και ηλικία. Να βρεθούν: α) Ο μέσος όρος ηλικίας των γυναικών με βάρος μεγαλύτερο των 60 κιλών β) Πόσοι άνδρες έχουν βάρος μικρότερο των 85 κιλών και ηλικία μικρότερη των 60 χρόνων γ) Πόσο ετών είναι ο βαρύτερος άνδρας.

47. Δίνονται Ν αριθμοί. Να βρεθεί πόσοι είναι θετικοί, πόσοι αρνητικοί και πόσοι μηδέν. 48. Ο πληθυσμός μιας χώρας αυξάνεται κάθε χρόνο με ποσοστό 10%. Αν σήμερα είναι

10000000, σε πόσα χρόνια θα ξεπεράσει τα 20000000. 49. Να βρεθεί ο μεγαλύτερος και ο μικρότερος από Ν αριθμούς.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 148: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

148

50. Για Ν μαθητές δίνονται Μ βαθμοί (για τον καθένα). Να υπολογισθεί ο μέσος όρος βαθμολογίας του καθένα.

51. Για Ν μαθητές δίνονται τα στοιχεία: Ονοματεπώνυμο και αριθμός απουσιών. Να βρεθούν: α) Το ονοματεπώνυμο του μαθητή-των με τις περισσότερες απουσίες β)Το πλήθος των μαθητών που έχουν από 0 έως 10 απουσίες Το πλήθος των μαθητών που έχουν από 11 έως 20 απουσίες Το πλήθος των μαθητών που έχουν από 21 έως 30 απουσίες Το πλήθος των μαθητών που έχουν από 31 έως 40 απουσίες Το πλήθος των μαθητών που έχουν από 41 έως 50 απουσίες γ) Ο μέσος όρος απουσιών

*52. Δίνονται Ν αριθμοί μεταξύ του 1 και του 6. Να βρεθεί το πλήθος των άσσων, των 2ριών, των 3ριών, των 4ριων, των 5ριών και των 6ριών.

53. Δίνεται το ενοίκιο που πληρώνει κάποιος σήμερα, το οποίο αυξάνεται κάθε 2 χρόνια κατά 15%. Να υπολογισθεί σε πόσα χρόνια θα διπλασιασθεί.

54. Να υπολογισθούν: α)1*2+2*3+...+(Ν-1)*Ν β) 1+2+3+...+Ν γ)1*2*3*...*Ν

55. Να εκτυπωθούν όλοι οι ζυγοί από το 2 έως το Ν (αν το Ν δεν είναι ζυγός να ξαναδίνεται)

Οι ασκήσεις από την 56 μέχρι και την 62, είναι επαναληπτικές για το τέλος

56. Για Ν είδη δίνονται τα εξής στοιχεία: Κωδικός προέλευσης (1. Γερμανία 2. Αγγλία), ποσότητα και τιμή μονάδος. Να βρεθεί η συνολική αξία των ειδών με προέλευση την Αγγλία και η συνολική ποσότητα που εισάγεται από τη Γερμανία.

57. Για Ν είδη δίνονται τα εξής στοιχεία: Κωδικός, ποσότητα, τιμή μονάδος και όριο ασφάλειας. Να βρεθεί η συνολική αξία των ειδών και να τυπωθούν οι κωδικοί των ειδών που η ποσότητα τους είναι κάτω από το όριο ασφάλειας.

58. Για Ν αυτοκίνητα δίνονται ο αριθμός κυκλοφορίας και ο αριθμός ατυχημάτων. Να υπολογισθεί ο μέσος όρος ατυχημάτων και να βρεθεί ο αριθμός κυκλοφορίας του αυτοκινήτου-των με τα περισσότερα ατυχήματα

59. Δίνονται το ονοματεπώνυμο και οι επιδόσεις σε 3 προσπάθειες (στο άλμα σε μήκος) Ν αθλητών. Να βρεθεί ο νικητής-τές του αγωνίσματος και η επίδοσή του (η καλύτερη απ’τις 3). Να χρησιμοποιηθούν 2 πίνακες (Ο 1ος θα κρατάει τα ονοματεπώνυμα των αθλητών και ο 2ος θα κρατάει για κάθε αθλητή την καλύτερη επίδοσή του).

60. Για Ν μαθητές δίνονται : Ονοματεπώνυμο, κωδικός φύλου (1 αγόρι 2 κορίτσι) και βαθμός. Να βρεθεί ποιο αγόρι έχει το μικρότερο βαθμό.

*61. Δίνονται οι βαθμοί σε 5 μαθήματα Ν μαθητών. Να βρεθεί ο μέσος όρος του κάθε μαθητή.

62. Να υπολογισθεί το άθροισμα: 1!+2!+3!+...+Ν!

ΣΥΝΑΡΤΗΣΕΙΣ 63. Να γραφεί συνάρτηση που θα αθροίζει 2 αριθμούς. 64. Να γραφεί συνάρτηση που θα υπολογίζει το μέσο όρο 3 αριθμών 65. Να γραφεί συνάρτηση που θα υπολογίζει την υποτείνουσα ορθογωνίου τριγώνου. *66. Να γραφεί πρόγραμμα το οποίο θα έχει 3 επιλογές:

1. Εμβαδό τριγώνου 2. Εμβαδό ορθογωνίου παραλλ/γράμμου 3. Εμβαδό κύκλου.

Να δίνονται τα απαραίτητα στοιχεία και τα εμβαδά να υπολογίζονται με χρήση τριών συναρτήσεων.

67. Να γραφεί συνάρτηση η οποία θα υπολογίζει την σφχ για τις γωνίες από 0 έως 90 μοίρες. *68. Να γραφεί πρόγραμμα στο οποίο θα δίνονται οι αστικές και οι υπεραστικές μονάδες και

θα υπολογίζει το πληρωτέο στον ΟΤΕ ποσό όταν η χρέωση είναι: Αστικές μονάδες: 10 λεπτά η μία. Υπεραστικές μονάδες: 0..100 9 λεπτά, 101..500 8 λεπτά, 501..1000 6 λεπτά και 1001.. 5 λεπτά η μία.

69. Να υπολογισθεί το Ν! με χρήση συνάρτηση. *70. Να γραφεί πρόγραμμα το οποίο θα υπολογίζει το άθροισμα:

1/2 + 1/4 + 1/6 + 1/8 + ... 1/(2*Ν)

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 149: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

149

*71. Να τυπωθεί τριγωνομετρικός πίνακας για τις γωνίες από 0 ώς 359 μοίρες (ημ, συν, εφ). Οι γωνίες με τους τριγωνομετρικούς αριθμούς τους να εμφανίζονται στην οθόνη ανά 20 δηλ. κάθε 20 γωνίες να σταματά μέχρι ο χρήστης να πατήσει το enter.

*72. Κάποιος καταθέτει στην τράπεζα ένα κεφάλαιο. Να υπολογισθεί με χρήση συνάρτησης το τελικό κεφάλαιο που θα πάρει μετά από Χ χρόνια.

ΔΙΑΔΙΚΑΣΙΕΣ 73. Να γραφεί πρόγραμμα το οποίο θα έχει τις επιλογές:

1. Εύρεση μεγίστου 3 αριθμών 2. Εύρεση ελαχίστου 3 αριθμών 3. Εύρεση μέσου όρου 3 αριθμών.

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

74. Να γραφεί πρόγραμμα το οποίο θα περιλαμβάνει μία διαδικασία η οποία θα υπολογίζει την υποτείνουσα ορθογωνίου τριγώνου και μία συνάρτηση η οποία θα υπολογίζει την τιμή μιας μεταβλητής τύπου «λογικές» η οποία θα είναι αληθής αν η υποτείνουσα είναι ακέραιος.

75. Δίνεται η τωρινή ώρα και λεπτά και Χ λεπτά που θέλουμε να περάσουν. Να γραφεί διαδικασία που θα υπολογίζει τη νέα ώρα και λεπτά μετά την πρόσθεση των Χ λεπτών.

76. Να γραφεί διαδικασία που θα ανταλλάσσει τις τιμές 2 μεταβλητών. *77. Να γραφεί διαδικασία που θα υπολογίζει τον ελάχιστο 3 αριθμών. *78. Να γραφεί διαδικασία η οποία θα υπολογίζει τον αριθμό των ημερών ανάμεσα σε 2

ημερομηνίες. (Υποθέστε ότι 1έτος=365μέρες & 1μήνας=30μέρες) 79. Να γραφεί διαδικασία που θα υπολογίζει το άθροισμα των Ν στοιχείων ενός πίνακα. 80. Να γραφεί διαδικασία που θα γεμίζει έναν πίνακα Ν στοιχείων με την τιμή του ίδιου του

δείκτη (δηλ. α[1]=1, α[2]=2 κλπ.) και θα υπολογίζει το γινόμενό τους. ΠΙΝΑΚΕΣ

81. Δίνεται πίνακας Ν στοιχείων. Να βρεθεί το μεγαλύτερο στοιχείο του. 82.

Δύσκολη Δίνεται πίνακας Ν στοιχείων, ταξινομημένος σε αύξουσα σειρά. (Να δοθούν τα στοιχεία

του ταξινομημένα απ' το χρήστη). Κατόπιν δίνεται αριθμός Χ. Να καταχωρηθεί ο Χ μέσα στον πίνακα έτσι ώστε να συνεχίσει να είναι ταξινομημένος.

83.

Δύσκολη Να γραφεί πρόγραμμα το οποίο θα διαγράφει ένα στοιχείο από έναν πίνακα. Προσοχή

στην περίπτωση που το στοιχείο δεν ανήκει στον πίνακα. 84. Δίνονται στοιχεία για Ν άτομα: Κωδικός φύλου (Γ:γυναίκα, Α:άνδρας), βάρος και ηλικία.

Να βρεθούν α) ο μέσος όρος ηλικίας των γυναικών με βάρος >60 κιλών β) πόσο ετών είναι ο βαρύτερος άνδρας.

85. Να ταξινομηθεί ένας πίνακας Ν στοιχείων σε αύξουσα σειρά. (Μέθοδος φυσαλίδας Bubble sort)

*86. Παραλλαγή της bubble sort. (Χρήση λογικής μεταβλητής) 87. Δίνεται πίνακας Ν στοιχείων και ένας αριθμός Χ. Να βρεθεί η θέση ή οι θέσεις του Χ

μέσα στον πίνακα. Να δεν ανήκει στον πίνακα, να τυπωθεί ανάλογο μήνυμα. (Χρήση flag: Αν βρεθεί το στοιχείο τότε flag=1 αλλιώς flag=0).

*88.

Εκτός ύλης Δυαδική αναζήτηση στοιχείου (Binary search)

Εντοπίζει μια θέση του Χ μέσα στον πίνακα. 89.

Δύσκολη Δίνονται 2 ταξινομημένοι πίνακες Α[Ν] & B[M]. Να ενωθούν σε έναν πίνακα C ώστε να

είναι επίσης ταξινομημένος. 90. Να βρεθεί το άθροισμα κάθε γραμμής του Α[Ν,Μ] και να καταχωρηθεί σε πίνακα Β[Ν]. 91. Να βρεθεί το άθροισμα των στοιχείων της κυρίας διαγωνίου ενός τετραγωνικού πίνακα

Α[Ν,Ν].

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 150: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

150

92. Να δημιουργηθεί τετραγωνικός πίνακας Α[Ν,Ν] έτσι ώστε όλα τα στοιχεία πάνω από την κύρια διαγώνιο (I<J) να έχουν την τιμή 1, τα στοιχεία της κυρίας διαγωνίου (I=J) την τιμή 0 και τα στοιχεία κάτω από την κύρια διαγώνιο (I>J) την τιμή 2.

93. Να προστεθούν δύο πίνακες Α[Ν,Μ] και Β[Ν,Μ] 94. Δίνονται οι βαθμοί 5 μαθητών σε 3 μαθήματα. (Ένας πίνακας Α[5,3]). Να υπολογισθούν

οι μέσοι όροι βαθμολογίας και να τοποθετηθούν σε πίνακα Β[5] (Βλ. και άσκηση 50) 95. Δίνονται τα αποτελέσματα των εκλογών σε 4 εκλογικές περιφέρειες 3 υποψηφίων. Να

υπολογισθούν α) το σύνολο των ψήφων της κάθε περιφέρειας β) το σύνολο των ψήφων του κάθε υποψηφίου. (Να γραφεί μόνο μία διαδικασία η οποία ανάλογα θα υπολογίζει ή το άθροισμα των γραμμών του πίνακα ή το άθροισμα των στηλών)

Οι ασκήσεις που σημειώνονται με * δεν συμπεριλαμβάνονται στο φυλλάδιο των λύσεων. Μπορούν να λυθούν προαιρετικά για περισσότερη εξάσκηση.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 151: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

151

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_1 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΑΘΡ,ΓΙΝ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΑΘΡ <-- Α+Β ΓΙΝ <-- Α*Β ΓΡΑΨΕ 'Άθροισμα=',ΑΘΡ ΓΡΑΨΕ 'Γινόμενο=',ΓΙΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_2 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ,ΜΟ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΓΡΑΨΕ '3ος αριθμός:' ΔΙΑΒΑΣΕ Γ ΜΟ <-- (Α+Β+Γ)/3 ΓΡΑΨΕ 'Μέσος όρος=',ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατηρήσεις 1. Προσέξτε ότι το άθροισμα Α+Β+Γ πρέπει να κλειστεί σε παρένθεση για να προηγηθεί η πρόσθεση από τη διαίρεση. 2. Ακόμη κι αν οι αριθμοί δηλώνονταν ακέραιοι, ο μέσος όρος έπρεπε να δηλωθεί Πραγματικός. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_3 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΥΠΟΤ ΑΡΧΗ ΓΡΑΨΕ '1η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Β ΥΠΟΤ <-- Τ_Ρ(Α^2+Β^2) ΓΡΑΨΕ 'Υποτείνουσα=',ΥΠΟΤ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_4 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Β1,Β2,Υ,Ε ΑΡΧΗ ΓΡΑΨΕ 'Μικρή βάση:' ΔΙΑΒΑΣΕ Β1 ΓΡΑΨΕ 'Μεγάλη βάση:' ΔΙΑΒΑΣΕ Β2 ΓΡΑΨΕ 'Ύψος:' ΔΙΑΒΑΣΕ Υ Ε <-- (Β1+Β2)*Υ/2 ΓΡΑΨΕ 'Εμβαδό=',Ε

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 152: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

152

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_5 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΒΟΗΘ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμος:' ΔΙΑΒΑΣΕ Β ΒΟΗΘ <-- Α Α <-- Β Β <-- ΒΟΗΘ ΓΡΑΨΕ 'Αριθμοί μετά την ανταλλαγή=',Α,Β ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_6 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΚΕΛΣ, ΦΑΡΕΝ ΑΡΧΗ ΓΡΑΨΕ 'Βαθμοί Fahreneit:' ΔΙΑΒΑΣΕ ΦΑΡΕΝ ΚΕΛΣ <-- 5*(ΦΑΡΕΝ-32)/9 ΓΡΑΨΕ 'Βαθμοί Κελσίου=', ΚΕΛΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_8 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α,ΔΕΚ, ΜΟΝ, Β ΑΡΧΗ ΓΡΑΨΕ 'Διψήφιος ακέραιος αριθμός:' ΔΙΑΒΑΣΕ Α ΔΕΚ <-- Α DIV 10 MON <-- A MOD 10 B <-- ΜΟΝ*10+ΔΕΚ ΓΡΑΨΕ 'Νέος αριθμός=', Β ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_9 ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: ΠΕΡΙΓΡΑΦΗ ΠΡΑΓΜΑΤΙΚΕΣ: ΤΙΜΗ_ΧΩΡΙΣ_ΦΠΑ, ΣΥΝΤ_ΦΠΑ, ΤΕΛ_ΤΙΜΗ ΑΡΧΗ ΓΡΑΨΕ 'Τιμή χωρίς ΦΠΑ:' ΔΙΑΒΑΣΕ ΤΙΜΗ_ΧΩΡΙΣ_ΦΠΑ ΓΡΑΨΕ 'Συντελεστής ΦΠΑ:' ΔΙΑΒΑΣΕ ΣΥΝΤ_ΦΠΑ ΤΕΛ_ΤΙΜΗ <-- ΤΙΜΗ_ΧΩΡΙΣ_ΦΠΑ*(100+ΣΥΝΤ_ΦΠΑ)/100 ΓΡΑΨΕ 'Τιμή με ΦΠΑ=', ΤΕΛ_ΤΙΜΗ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_10 ΣΤΑΘΕΡΕΣ ΣΥΝΤ_ΚΡΑΤ=20 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΜΕΡΕΣ, ΗΜΕΡΟΜΙΣΘΙΟ, ΜΙΚΤΑ ΠΡΑΓΜΑΤΙΚΕΣ: ΚΡΑΤΗΣΕΙΣ, ΚΑΘΑΡΑ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 153: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

153

ΑΡΧΗ ΓΡΑΨΕ 'Μέρες το μήνα:' ΔΙΑΒΑΣΕ ΜΕΡΕΣ ΓΡΑΨΕ 'Ημερομίσθιο:' ΔΙΑΒΑΣΕ ΗΜΕΡΟΜΙΣΘΙΟ ΜΙΚΤΑ <-- ΜΕΡΕΣ*ΗΜΕΡΟΜΙΣΘΙΟ ΚΡΑΤΗΣΕΙΣ <-- ΜΙΚΤΑ*ΣΥΝΤ_ΚΡΑΤ/100 ΚΑΘΑΡΑ <-- ΜΙΚΤΑ-ΚΡΑΤΗΣΕΙΣ ΓΡΑΨΕ 'Μικτός μηνιαίος μισθός=',ΜΙΚΤΑ ΓΡΑΨΕ 'Κρατήσεις=',ΚΡΑΤΗΣΕΙΣ ΓΡΑΨΕ 'Καθαρός μηνιαίος μισθός=',ΚΑΘΑΡΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_13 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΑΡΧ_ΚΕΦ, ΕΠΙΤΟΚΙΟ, ΤΟΚΟΣ1,ΚΕΦ1,ΤΟΚΟΣ2, ΤΕΛ_ΚΕΦ ΑΡΧΗ ΓΡΑΨΕ 'Αρχικό κεφάλαιο:' ΔΙΑΒΑΣΕ ΑΡΧ_ΚΕΦ ΓΡΑΨΕ 'Επιτόκιο:' ΔΙΑΒΑΣΕ ΕΠΙΤΟΚΙΟ ΤΟΚΟΣ1 <-- ΑΡΧ_ΚΕΦ*ΕΠΙΤΟΚΙΟ/100 ΚΕΦ1 <-- ΑΡΧ_ΚΕΦ+ΤΟΚΟΣ1 ΤΟΚΟΣ2 <-- ΚΕΦ1*ΕΠΙΤΟΚΙΟ/100 ΤΕΛ_ΚΕΦ <-- ΚΕΦ1+ΤΟΚΟΣ2 ΓΡΑΨΕ 'Τόκος 1ου χρόνου=', ΤΟΚΟΣ1 ΓΡΑΨΕ 'Τόκος 2ου χρόνου=',ΤΟΚΟΣ2 ΓΡΑΨΕ 'Τελικό κεφάλαιο=',ΤΕΛ_ΚΕΦ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_14 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΩΡΕΣ, ΑΜΟΙΒΗ, ΥΠΕΡΩΡΙΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΗΜΕΡΟΜΙΣΘΙΟ ΑΡΧΗ ΓΡΑΨΕ 'Ώρες εργασίας:' ΔΙΑΒΑΣΕ ΩΡΕΣ ΓΡΑΨΕ 'Αμοιβή ανά ώρα:' ΔΙΑΒΑΣΕ ΑΜΟΙΒΗ ΓΡΑΨΕ 'Υπερωρίες:' ΔΙΑΒΑΣΕ ΥΠΕΡΩΡΙΕΣ ΗΜΕΡΟΜΙΣΘΙΟ <-- ΩΡΕΣ*ΑΜΟΙΒΗ + ΥΠΕΡΩΡΙΕΣ*(ΑΜΟΙΒΗ+ΑΜΟΙΒΗ/2) ΓΡΑΨΕ 'Ημερομίσθιο=',ΗΜΕΡΟΜΙΣΘΙΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Παρατήρηση: Το ΑΜΟΙΒΗ/2 είναι το 50% του ΑΜΟΙΒΗ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_18 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α,Β,ΜΑΧ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμος:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΑΝ Α>Β ΤΟΤΕ ΜΑΧ <-- Α ΑΛΛΙΩΣ ΜΑΧ <-- Β

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 154: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

154

ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Μεγαλύτερος είναι ο ',ΜΑΧ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Αν οι αριθμοί είναι ίσοι τότε εκτελούνται οι εντολές του ΑΛΛΙΩΣ δηλ. ΜΑΧ <-- Β ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_19 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α,Β,Γ,ΜΑΧ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμος:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΓΡΑΨΕ '3ος αριθμός:' ΔΙΑΒΑΣΕ Γ ΑΝ Α>Β ΤΟΤΕ ΜΑΧ <-- Α ΑΛΛΙΩΣ ΜΑΧ <-- Β ΤΕΛΟΣ_ΑΝ ΑΝ Γ>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- Γ ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Μεγαλύτερος είναι ο ',ΜΑΧ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Αρχικά τοποθετείται στη μεταβλητή ΜΑΧ ο μεγαλύτερος μεταξύ του Α και του Β. Στη συνέχεια αν ο Γ είναι μεγαλύτερος από το ΜΑΧ, μπαίνει αυτός στη θέση του ΜΑΧ. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_22 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α ΠΡΑΓΜΑΤΙΚΕΣ: ΤΡΙΖΑ, ΤΕΤΡΑΓΩΝΟ ΑΡΧΗ ΓΡΑΨΕ 'Αριθμος:' ΔΙΑΒΑΣΕ Α ΑΝ Α>=0 ΤΟΤΕ ΓΡΑΨΕ 'Θετικός ή μηδέν' ΤΡΙΖΑ <-- Τ_Ρ(Α) ΓΡΑΨΕ 'Τετραγωνική ρίζα=',ΤΡΙΖΑ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Αρνητικός' ΤΕΤΡΑΓΩΝΟ <-- Α^2 ΓΡΑΨΕ 'Τετράγωνο=',ΤΕΤΡΑΓΩΝΟ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Προσέξτε ότι η τετραγωνική ρίζα πρέπει οπωσδήποτε να δηλωθεί Πραγματική. Το τετράγωνο(Α^2), ειδικά στη "ΓΛΩΣΣΟΜΑΘΕΙΑ", πρέπει να δηλωθεί Πραγματική. Αν γράφαμε Α*Α αντί για Α^2 τότε θα μπορούσαμε να δηλώσουμε τη μεταβλητή ΤΕΤΡΑΓΩΝΟ ακέραια. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_23 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΤΕΜΑΧΙΑ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 155: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

155

ΠΡΑΓΜΑΤΙΚΕΣ: ΧΡΗΜΑΤΑ ΑΡΧΗ ΓΡΑΨΕ 'Αριθμός τεμαχίων:' ΔΙΑΒΑΣΕ ΤΕΜΑΧΙΑ ΑΝ ΤΕΜΑΧΙΑ<100 ΤΟΤΕ ΧΡΗΜΑΤΑ <-- ΤΕΜΑΧΙΑ*2 ΑΛΛΙΩΣ ΧΡΗΜΑΤΑ <-- ΤΕΜΑΧΙΑ*1.5 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Χρήματα=', ΧΡΗΜΑΤΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Προσέξτε ότι δηλώθηκε μία μεταβλητή ΧΡΗΜΑΤΑ η οποία παίρνει τιμή είτε από τις εντολές του ΤΟΤΕ είτε από τις εντολές του ΑΛΛΙΩΣ. Ανεξάρτητα από πού πήρε τιμή εμφανίζεται με την εντολή ΓΡΑΨΕ η οποία είναι κοινή, έξω από την ΑΝ. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_25 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ ΑΡΧΗ ΓΡΑΨΕ 'Τιμή για το Χ:' ΔΙΑΒΑΣΕ Χ ΑΝ Χ<0 ΤΟΤΕ Υ <-- Χ+1 ΑΛΛΙΩΣ_ΑΝ (Χ>=0) ΚΑΙ (Χ<=1) ΤΟΤΕ Υ <-- Χ^2-1 ΑΛΛΙΩΣ Υ <-- Χ+1 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Τιμή του Υ=',Υ:7:2 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Η περίπτωση Χ>1 δεν χρειάζεται να μπει σε ΑΝ γιατί είναι η μόνη που μένει εφόσον χρησιμοποιήσαμε το ΑΛΛΙΩΣ_ΑΝ και το ΑΛΛΙΩΣ. Θα μπορούσε η άσκηση να γίνει με 3 ανεξάρτητες ΑΝ...ΤΕΛΟΣ_ΑΝ. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_26 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β, ΔΙΑΦΟΡΑ ΑΡΧΗ ΓΡΑΨΕ '1ος θετικός αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος θετικός αριθμός:' ΔΙΑΒΑΣΕ Β ΑΝ Α>Β ΤΟΤΕ ΔΙΑΦΟΡΑ<-- Α-Β ΑΛΛΙΩΣ ΔΙΑΦΟΡΑ <-- Β-Α ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Διαφορά=',ΔΙΑΦΟΡΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_27 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΠΑΙΔΙΑ, ΜΙΣΘΟΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΕΠΙΔΟΜΑ ΑΡΧΗ ΓΡΑΨΕ 'Μισθός υπαλλήλου:' ΔΙΑΒΑΣΕ ΜΙΣΘΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 156: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

156

ΓΡΑΨΕ 'Αριθμός παιδιών:' ΔΙΑΒΑΣΕ ΠΑΙΔΙΑ ΕΠΙΔΟΜΑ<--0 ΑΝ ΠΑΙΔΙΑ=1 ΤΟΤΕ ΕΠΙΔΟΜΑ <-- ΜΙΣΘΟΣ*5/100 ΑΛΛΙΩΣ_ΑΝ ΠΑΙΔΙΑ=2 ΤΟΤΕ ΕΠΙΔΟΜΑ <-- ΜΙΣΘΟΣ*10/100 ΑΛΛΙΩΣ_ΑΝ ΠΑΙΔΙΑ=3 ΤΟΤΕ ΕΠΙΔΟΜΑ <-- ΜΙΣΘΟΣ*15/100 ΑΛΛΙΩΣ_ΑΝ ΠΑΙΔΙΑ>3 ΤΟΤΕ ΕΠΙΔΟΜΑ <-- ΜΙΣΘΟΣ*20/100 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Επίδομα=', ΕΠΙΔΟΜΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατηρήσεις 1. Μηδενίσαμε τη μεταβλητή ΕΠΙΔΟΜΑ πριν τις ΑΝ έτσι ώστε στην περίπτωση που δεν έχει παιδιά (οπότε δεν θα ισχύσει κανένα ΑΝ) να έχει την τιμή 0. Θα μπορούσαμε αντί να τη μηδενίσουμε, να προσθέσουμε μετά την τελευταία ΑΛΛΙΩΣ_ΑΝ την εντολή ΑΛΛΙΩΣ ΕΠΙΔΟΜΑ<--0. 2. Παρατηρείστε ότι μπορούμε σε μία ΑΝ... ΑΛΛΙΩΣ_ΑΝ... να μην υπάρχει στο τέλος περίπτωση ΑΛΛΙΩΣ. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_30 ΣΤΑΘΕΡΕΣ ΠΟΣ=10 BONUS=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΠΩΛΗΣΕΙΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΧΡΗΜΑΤΑ_ΠΩΛΗΤΗ ΑΡΧΗ ΓΡΑΨΕ 'Πωλήσεις πωλητή:' ΔΙΑΒΑΣΕ ΠΩΛΗΣΕΙΣ ΧΡΗΜΑΤΑ_ΠΩΛΗΤΗ <-- ΠΩΛΗΣΕΙΣ*ΠΟΣ/100 ΑΝ ΠΩΛΗΣΕΙΣ>500 ΤΟΤΕ ΧΡΗΜΑΤΑ_ΠΩΛΗΤΗ <-- ΧΡΗΜΑΤΑ_ΠΩΛΗΤΗ+BONUS ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Χρήματα πωλητή=',ΧΡΗΜΑΤΑ_ΠΩΛΗΤΗ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_32 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Θ1,Θ2,Θ3 ΑΡΧΗ ΓΡΑΨΕ '1η θερμοκρασία:' ΔΙΑΒΑΣΕ Θ1 ΓΡΑΨΕ '2η θερμοκρασία:' ΔΙΑΒΑΣΕ Θ2 ΓΡΑΨΕ '3η θερμοκρασία:' ΔΙΑΒΑΣΕ Θ3 ΑΝ (Θ1<15)ΚΑΙ(Θ2<15)ΚΑΙ(Θ3<15) ΤΟΤΕ ΓΡΑΨΕ 'ΟΝ' ΑΛΛΙΩΣ ΓΡΑΨΕ 'OFF' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 157: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

157

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_33 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α ΑΡΧΗ ΓΡΑΨΕ 'Αριθμός:' ΔΙΑΒΑΣΕ Α ΑΝ Α MOD 2=0 ΤΟΤΕ ΓΡΑΨΕ 'Ζυγός' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Μονός' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_34 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Β1,Β2,Β3,ΓΡ, ΤΕΛ_ΜΟ, Ι ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ, ΔΙΑΦ ΑΡΧΗ ΓΡΑΨΕ '1ος προφορικός βαθμός:' ΔΙΑΒΑΣΕ Β1 ΓΡΑΨΕ '2ος προφορικός βαθμός:' ΔΙΑΒΑΣΕ Β2 ΓΡΑΨΕ '3ος προφορικός βαθμός:' ΔΙΑΒΑΣΕ Β3 ΓΡΑΨΕ 'Γραπτός βαθμός:' ΔΙΑΒΑΣΕ ΓΡ ΜΟ <-- (Β1+Β2+Β3+2*ΓΡ)/5 ΓΡΑΨΕ 'Μέσος όρος=',ΜΟ Ι <-- 0 ΔΙΑΦ <-- ΜΟ-Α_Μ(ΜΟ) ΑΝ ΔΙΑΦ>=0.5 ΤΟΤΕ ΤΕΛ_ΜΟ <-- Α_Μ(ΜΟ)+1 ΑΛΛΙΩΣ ΤΕΛ_ΜΟ <-- Α_Μ(ΜΟ) ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Στρογγυλεμένος Μέσος όρος=', ΤΕΛ_ΜΟ ΑΝ ΤΕΛ_ΜΟ >=10 ΤΟΤΕ ΓΡΑΨΕ 'Πέρασε' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Απέτυχε' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Η συνάρτηση Α_Μ(Χ) δίνει το ακέραιο μέρος του Χ ("Κόβει" τα δεκαδικά, δεν κάνει στρογγύλευση). ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_35 ΣΤΑΘΕΡΕΣ ΠΑΓΙΟ=20 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΚΜ ΠΡΑΓΜΑΤΙΚΕΣ: ΧΡΕΩΣΗ ΑΡΧΗ ΓΡΑΨΕ 'Χιλιόμετρα που διανύθηκαν:' ΔΙΑΒΑΣΕ ΚΜ ΑΝ ΚΜ<=100 ΤΟΤΕ ΧΡΕΩΣΗ <-- ΚΜ*1.5 ΑΛΛΙΩΣ ΧΡΕΩΣΗ <-- 100*1.5+(ΚΜ-100)*2

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 158: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

158

ΤΕΛΟΣ_ΑΝ ΧΡΕΩΣΗ <-- ΧΡΕΩΣΗ+ΠΑΓΙΟ ΓΡΑΨΕ'Συνολική χρέωση=',ΧΡΕΩΣΗ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_36 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: α,β,γ ΠΡΑΓΜΑΤΙΚΕΣ: Δ, Χ1,Χ2 ΑΡΧΗ ΓΡΑΨΕ 'ΔΙΕΡΕΥΝΗΣΗ ΤΗΣ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΞΙΣΩΣΗΣ αχ^2+βχ+γ=0' ΓΡΑΨΕ 'Συντελεστής χ^2:' ΔΙΑΒΑΣΕ α ΓΡΑΨΕ 'Συντελεστής χ:' ΔΙΑΒΑΣΕ β ΓΡΑΨΕ 'Σταθερός όρος:' ΔΙΑΒΑΣΕ γ Δ <-- β^2-4*α*γ ΑΝ Δ>0 ΤΟΤΕ Χ1 <-- (-β+Τ_Ρ(Δ))/(2*α) Χ2 <-- (-β-Τ_Ρ(Δ))/(2*α) ΓΡΑΨΕ 'Υπάρχουν δύο ρίζες, οι ',Χ1,' και ',Χ2 ΑΛΛΙΩΣ_ΑΝ Δ=0 ΤΟΤΕ Χ1 <-- -β/(2*α) ΓΡΑΨΕ 'Υπάρχει μία ρίζα,η', Χ1 ΑΛΛΙΩΣ ΓΡΑΨΕ 'Δεν υπάρχουν πραγματικές ρίζες' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_38 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΕΠΙΛΟΓΗ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β, ΑΠΟΤ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ'2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΓΡΑΨΕ '1. Πρόσθεση' ΓΡΑΨΕ '2. Αφαίρεση' ΓΡΑΨΕ '3. Πολλαπλασιασμός' ΓΡΑΨΕ '4. Διαίρεση' ΓΡΑΨΕ 'Ποια η επιλογή σου' ΔΙΑΒΑΣΕ ΕΠΙΛΟΓΗ ΕΠΙΛΕΞΕ ΕΠΙΛΟΓΗ ΠΕΡΙΠΤΩΣΗ 1 ΑΠΟΤ <-- Α+Β ΠΕΡΙΠΤΩΣΗ 2 ΑΠΟΤ <-- Α-Β ΠΕΡΙΠΤΩΣΗ 3 ΑΠΟΤ <-- Α*Β ΠΕΡΙΠΤΩΣΗ 4 ΑΝ Β=0 ΤΟΤΕ ΓΡΑΨΕ 'Διαίρεση με το 0 δεν γίνεται' ΑΛΛΙΩΣ ΑΠΟΤ <-- Α/Β ΤΕΛΟΣ_ΑΝ ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 159: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

159

ΓΡΑΨΕ 'Λάθος επιλογή' ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΑΝ ΝΟΤ((ΕΠΙΛΟΓΗ=4)ΚΑΙ(Β=0)) ΤΟΤΕ ΓΡΑΨΕ 'Αποτέλεσμα=',ΑΠΟΤ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_39 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΒΑΘΜΟΣ ΑΡΧΗ ΓΡΑΨΕ 'Βαθμός μαθητή (από 0 έως 100):' ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ ΕΠΙΛΕΞΕ ΒΑΘΜΟΣ ΠΕΡΙΠΤΩΣΗ 91..100 ΓΡΑΨΕ 'Α' ΠΕΡΙΠΤΩΣΗ 80..90 ΓΡΑΨΕ 'Β' ΠΕΡΙΠΤΩΣΗ 70..79 ΓΡΑΨΕ 'C' ΠΕΡΙΠΤΩΣΗ 60..69 ΓΡΑΨΕ'D' ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Ε' ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: Στο πρόγραμμα δεν ελέγχουμε αν ο χρήστης πατήσει αριθμό μικρότερο του 0 ή μεγαλύτερο του 100, υποθέτοντας ότι θα δώσει σωστό βαθμό. Αν θέλαμε να το ελέγχουμε θα έπρεπε να κλείσουμε τις δύο πρώτες εντολές μέσα σε επανάληψη, δηλ. ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Βαθμός μαθητή (από 0 έως 100):' ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ ΜΕΧΡΙΣ_ΟΤΟΥ (ΒΑΘΜΟΣ>=0)ΚΑΙ(ΒΑΘΜΟΣ<=100) ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_41 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΜΗΝΑΣ, ΕΤΟΣ, ΜΕΡΕΣ ΛΟΓΙΚΕΣ: ΔΙΣΕΚΤΟ ΑΡΧΗ ΓΡΑΨΕ 'Μήνας (1-12):' ΔΙΑΒΑΣΕ ΜΗΝΑΣ ΓΡΑΨΕ 'Έτος (τετραψήφιο):' ΔΙΑΒΑΣΕ ΕΤΟΣ ΕΠΙΛΕΞΕ ΜΗΝΑΣ ΠΕΡΙΠΤΩΣΗ 1,3,5,7,8,10,12 ΜΕΡΕΣ <-- 31 ΠΕΡΙΠΤΩΣΗ 4,6,9,11 ΜΕΡΕΣ <-- 30 ΠΕΡΙΠΤΩΣΗ 2 ΔΙΣΕΚΤΟ <-- ΨΕΥΔΗΣ ΑΝ (ΕΤΟΣ MOD 4 = 0) ΤΟΤΕ ΔΙΣΕΚΤΟ <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΑΝ (ΕΤΟΣ MOD 100 = 0) ΤΟΤΕ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 160: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

160

ΔΙΣΕΚΤΟ <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΑΝ (ΕΤΟΣ MOD 400 = 0) ΤΟΤΕ ΔΙΣΕΚΤΟ <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΑΝ (ΕΤΟΣ MOD 4000 =0) ΤΟΤΕ ΔΙΣΕΚΤΟ <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΑΝ ΔΙΣΕΚΤΟ=ΑΛΗΘΗΣ ΤΟΤΕ ΜΕΡΕΣ <-- 29 ΑΛΛΙΩΣ ΜΕΡΕΣ <-- 28 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΓΡΑΨΕ 'Αριθμός ημερών=',ΜΕΡΕΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Θεωρούμε αρχικά ότι το έτος δεν είναι δίσεκτο. Στη συνέχεια αν είναι πολλαπλάσιο του 4 είναι δίσεκτο, εκτός αν είναι πολλαπλάσιο του 100. Αν παρ'όλα αυτά είναι πολλαπλάσιο του 400 είναι δίσεκτο, εκτός αν είναι πολλαπλάσιο του 4000. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_43 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: I,N ΠΡΑΓΜΑΤΙΚΕΣ: Χ, ΑΘΡ, ΜΟ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών:' ΔΙΑΒΑΣΕ Ν ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΑΘΡ <-- ΑΘΡ+Χ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ <-- ΑΘΡ/Ν ΓΡΑΨΕ 'Μέσος όρος=',ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_44α ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β, ΑΘΡ ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΑΝ (Α<>0) ΚΑΙ (Β<>0) ΤΟΤΕ ΑΘΡ <-- Α+Β ΓΡΑΨΕ 'Άθροισμα=',ΑΘΡ ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ (Α=0) Η (Β=0) ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Η εντολή ΑΝ (Α<>0) ΚΑΙ (Β<>0) χρειάστηκε ώστε να μην υπολογιστεί το άθροισμα όταν ένας από τους δύο θα πάρει την τιμή 0.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 161: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

161

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_44β ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β, ΑΘΡ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΟΣΟ (Α<>0) Η (Β<>0) ΕΠΑΝΑΛΑΒΕ ΑΘΡ <-- Α+Β ΓΡΑΨΕ 'Άθροισμα=',ΑΘΡ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Αρχικά, διαβάστηκαν οι τιμές του Α και του Β πριν από την επανάληψη, έτσι ώστε να ελέγξει η ΟΣΟ αν πρέπει να υπολογιστεί το άθροισμά τους. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_45 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ, ΓΙΝ ΑΚΕΡΑΙΕΣ:Ι ΑΡΧΗ ΓΙΝ <-- 1 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΓΙΝ <-- ΓΙΝ*Χ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Γινόμενο=',ΓΙΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_47 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ ΑΚΕΡΑΙΕΣ:Ι,Ν, ΜΘ, ΜΑ Μ0 ΑΡΧΗ ΜΘ<--0 ΜΑ<--0 Μ0<--0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΑΝ Χ>0 ΤΟΤΕ ΜΘ<--ΜΘ+1 ΑΛΛΙΩΣ_ΑΝ Χ<0 ΤΟΤΕ ΜΑ<--ΜΑ+1 ΑΛΛΙΩΣ Μ0<--Μ0+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Πλήθος θετικών=',ΜΘ ΓΡΑΨΕ 'Πλήθος αρνητικών=',ΜΑ ΓΡΑΨΕ 'Πλήθος ίσων με 0=',Μ0 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 162: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

162

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_48 ΣΤΑΘΕΡΕΣ ΤΕΛ_ΠΛΗΘ=20000000 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ, ΑΡΧ_ΠΛΗΘ ΑΚΕΡΑΙΕΣ:ΧΡΟΝΙΑ ΑΡΧΗ ΧΡΟΝΙΑ <-- 0 ΑΡΧ_ΠΛΗΘ <-- 10000000 ΟΣΟ ΑΡΧ_ΠΛΗΘ<=ΤΕΛ_ΠΛΗΘ ΕΠΑΝΑΛΑΒΕ ΑΡΧ_ΠΛΗΘ <-- ΑΡΧ_ΠΛΗΘ*110/100 ΧΡΟΝΙΑ <-- ΧΡΟΝΙΑ+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ' Ο πληθυσμός θα γίνει 20000000 σε ',ΧΡΟΝΙΑ,' χρόνια' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Η μεταβλητή ΑΡΧ_ΠΛΗΘ δηλώθηκε ως μεταβλητή κι όχι ως σταθερά γιατί μέσα στο πρόγραμμα μεταβάλλεται η τιμή της. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_49 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ, ΜΑΧ, ΜΙΝ ΑΚΕΡΑΙΕΣ:Ν,Ι ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών:' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΜΑΧ <-- Χ ΜΙΝ <-- Χ ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΑΝ Χ>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- Χ ΤΕΛΟΣ_ΑΝ ΑΝ Χ<ΜΙΝ ΤΟΤΕ ΜΙΝ <-- Χ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ'Μεγαλύτερος=',ΜΑΧ ΓΡΑΨΕ'Μικρότερος=',ΜΙΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,J,Ν,Μ, ΒΑΘΜΟΙ[100,30], ΑΘΡ ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος μαθητών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ 'Πλήθος βαθμών (μέχρι 30):' ΔΙΑΒΑΣΕ Μ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ J,'ος βαθμός ',Ι,'ου μαθητή:' ΔΙΑΒΑΣΕ ΒΑΘΜΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 163: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

163

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- ΑΘΡ+ΒΑΘΜΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ <-- ΑΘΡ/Μ ΓΡΑΨΕ 'Μέσος όρος ',Ι, 'ου μαθητή= ',ΜΟ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Στη δήλωση του πίνακα ΒΑΘΜΟΙ υποθέσαμε ότι οι μαθητές είναι το πολύ 100 και οι βαθμοί για τον καθένα, το πολύ 30. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_51 ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ:ΟΝΟΜ[100] ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ ΑΚΕΡΑΙΕΣ:Ν,Ι, ΑΠΟΥΣΙΕΣ[100], ΜΑΧ_ΑΠΟΥΣ, ΑΘΡ ΑΚΕΡΑΙΕΣ: Μ10,Μ20,Μ30,Μ40,Μ50,Μ_ΠΟΛΛΕΣ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών:' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ο ονοματεπώνυμο:' ΔΙΑΒΑΣΕ ΟΝΟΜ[Ι] ΓΡΑΨΕ 'Απουσίες:' ΔΙΑΒΑΣΕ ΑΠΟΥΣΙΕΣ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ (*Ερώτημα α*) ΜΑΧ_ΑΠΟΥΣ <-- ΑΠΟΥΣΙΕΣ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ ΑΠΟΥΣΙΕΣ[Ι]>ΜΑΧ_ΑΠΟΥΣ ΤΟΤΕ ΜΑΧ_ΑΠΟΥΣ <-- ΑΠΟΥΣΙΕΣ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Τις περισσότερες απουσίες έχουν οι παρακάτω μαθητές:' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΑΠΟΥΣΙΕΣ[Ι]=ΜΑΧ_ΑΠΟΥΣ ΤΟΤΕ ΓΡΑΨΕ ΟΝΟΜ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ (*Ερώτημα β*) Μ10 <-- 0 Μ20 <-- 0 Μ30 <-- 0 Μ40 <-- 0 Μ50 <-- 0 Μ_ΠΟΛΛΕΣ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΕΠΙΛΕΞΕ ΑΠΟΥΣΙΕΣ[Ι] ΠΕΡΙΠΤΩΣΗ 0..10 Μ10 <-- Μ10+1 ΠΕΡΙΠΤΩΣΗ 11..20 Μ20 <-- Μ20+1 ΠΕΡΙΠΤΩΣΗ 21..30 Μ30 <-- Μ30+1 ΠΕΡΙΠΤΩΣΗ 31..40

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 164: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

164

Μ40 <-- Μ40+1 ΠΕΡΙΠΤΩΣΗ 41..50 Μ50 <-- Μ50+1 ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ Μ_ΠΟΛΛΕΣ <-- Μ_ΠΟΛΛΕΣ+1 ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Από 0 μέχρι 10 απουσίες έχουν ', Μ10,' μαθητές' ΓΡΑΨΕ 'Από 11 μέχρι 20 απουσίες έχουν ', Μ20,' μαθητές' ΓΡΑΨΕ 'Από 21 μέχρι 30 απουσίες έχουν ', Μ30,' μαθητές' ΓΡΑΨΕ 'Από 31 μέχρι 40 απουσίες έχουν ', Μ40,' μαθητές' ΓΡΑΨΕ 'Από 41 μέχρι 50 απουσίες έχουν ', Μ50,' μαθητές' ΓΡΑΨΕ 'Πάνω από 50 απουσίες έχουν ',Μ_ΠΟΛΛΕΣ,' μαθητές' (*Ερώτημα γ*) ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- ΑΘΡ+ΑΠΟΥΣΙΕΣ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ <-- ΑΘΡ/Ν ΓΡΑΨΕ 'Μέσος όρος απουσιών=', ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_53 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΕΝΟΙΚΙΟ, ΤΕΛ_ΕΝΟΙΚ ΑΚΕΡΑΙΕΣ:ΧΡΟΝΙΑ ΑΡΧΗ ΧΡΟΝΙΑ <-- 0 ΓΡΑΨΕ 'Αρχικό ενοίκιο:' ΔΙΑΒΑΣΕ ΕΝΟΙΚΙΟ ΤΕΛ_ΕΝΟΙΚ <-- 2*ΕΝΟΙΚΙΟ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΕΝΟΙΚΙΟ <-- ΕΝΟΙΚΙΟ*115/100 ΧΡΟΝΙΑ <-- ΧΡΟΝΙΑ+2 ΜΕΧΡΙΣ_ΟΤΟΥ ΕΝΟΙΚΙΟ>=ΤΕΛ_ΕΝΟΙΚ ΓΡΑΨΕ ' Το ενοίκιο θα γίνει διπλάσιο σε ',ΧΡΟΝΙΑ,' χρόνια' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_54 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν, ΑΘΡ_ΓΙΝ, ΓΙΝ, ΑΘΡ ΑΡΧΗ ΓΡΑΨΕ 'Ποια η τιμή του Ν:' ΔΙΑΒΑΣΕ Ν ΑΘΡ_ΓΙΝ <-- 0 ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΘΡ_ΓΙΝ <-- ΑΘΡ_ΓΙΝ + (Ι-1)*Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1*2+2*3+...+(Ν-1)*Ν = ',ΑΘΡ_ΓΙΝ ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- ΑΘΡ+Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1+2+3+...+Ν = ',ΑΘΡ ΓΙΝ <-- 1 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΝ <-- ΓΙΝ*Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1*2*3*...*Ν = ',ΓΙΝ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 165: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

165

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_55 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Ποια η τιμή του Ν:' ΔΙΑΒΑΣΕ Ν ΜΕΧΡΙΣ_ΟΤΟΥ Ν MOD 2 = 0 ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΜΕ ΒΗΜΑ 2 ΓΡΑΨΕ Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_56 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν,ΑΞΙΑ_ΑΓΓΛΙΑ, ΠΟΣ_ΓΕΡΜΑΝΙΑ ΑΚΕΡΑΙΕΣ: ΕΙΔΗ[100,3] ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος ειδών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Κωδικός είδους (1.Γερμανία 2.Αγγλία):' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,1] ΓΡΑΨΕ 'Ποσότητα ',Ι, 'ου είδους:' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,2] ΓΡΑΨΕ 'Τιμή μονάδας ',Ι,'ου είδους:' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,3] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΞΙΑ_ΑΓΓΛΙΑ <-- 0 ΠΟΣ_ΓΕΡΜΑΝΙΑ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΕΙΔΗ[Ι,1]=2 ΤΟΤΕ ΑΞΙΑ_ΑΓΓΛΙΑ <-- ΑΞΙΑ_ΑΓΓΛΙΑ+ΕΙΔΗ[Ι,2]*ΕΙΔΗ[Ι,3] ΑΛΛΙΩΣ ΠΟΣ_ΓΕΡΜΑΝΙΑ <-- ΠΟΣ_ΓΕΡΜΑΝΙΑ+ΕΙΔΗ[Ι,2] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Συνολική αξία Αγγλικών ειδών=',ΑΞΙΑ_ΑΓΓΛΙΑ ΓΡΑΨΕ 'Συνολική ποσότητα Γερμανικών ειδών=', ΠΟΣ_ΓΕΡΜΑΝΙΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Επειδή ο πίνακας έχει μόνο 3 στήλες, δεν χρειαζόμαστε δεύτερη ΓΙΑ. (Άλλωστε η ΓΡΑΨΕ για κάθε ΔΙΑΒΑΣΕ πρέπει να είναι διαφορετική, έτσι είναι πιο εύκολο να κάνουμε τρία διαφορετικά ΓΡΑΨΕ-ΔΙΑΒΑΣΕ) ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_57 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν,ΣΥΝ_ΑΞΙΑ ΑΚΕΡΑΙΕΣ: ΕΙΔΗ[100,4] ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος ειδών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Κωδικός ',Ι,'ου είδους:' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,1] ΓΡΑΨΕ 'Ποσότητα:'

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 166: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

166

ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,2] ΓΡΑΨΕ 'Τιμή μονάδας:' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,3] ΓΡΑΨΕ 'Όριο ασφάλειας:' ΔΙΑΒΑΣΕ ΕΙΔΗ[Ι,4] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΣΥΝ_ΑΞΙΑ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΣΥΝ_ΑΞΙΑ <-- ΣΥΝ_ΑΞΙΑ+ΕΙΔΗ[Ι,2]*ΕΙΔΗ[Ι,3] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Συνολική αξία ειδών = ',ΣΥΝ_ΑΞΙΑ ΓΡΑΨΕ 'Είδη κάτω από το όριο ασφάλειας' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΕΙΔΗ[Ι,2]<ΕΙΔΗ[Ι,4] ΤΟΤΕ ΓΡΑΨΕ ΕΙΔΗ[Ι,1] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_58 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν ΧΑΡΑΚΤΗΡΕΣ: ΑΡΙΘΜ[100] ΑΚΕΡΑΙΕΣ: ΑΤΥΧ[100], ΑΘΡ, ΜΑΧ ΠΡΑΓΜΑΤΙΚΕΣ:ΜΟ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αυτοκινήτων (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Αριθμός κυκλοφορίας ',Ι,'ου αυτοκινήτου:' ΔΙΑΒΑΣΕ ΑΡΙΘΜ[Ι] ΓΡΑΨΕ 'Αριθμός ατυχημάτων:' ΔΙΑΒΑΣΕ ΑΤΥΧ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- ΑΘΡ + ΑΤΥΧ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ <-- ΑΘΡ/Ν ΓΡΑΨΕ 'Μέσος όρος ατυχημάτων=',ΜΟ ΜΑΧ <-- ΑΤΥΧ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ ΑΤΥΧ[Ι]>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- ΑΤΥΧ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Αυτοκίνητα με το μεγαλύτερο αριθμό ατυχημάτων:' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΑΤΥΧ[Ι]=ΜΑΧ ΤΟΤΕ ΓΡΑΨΕ ΑΡΙΘΜ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_59 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜ[100] ΠΡΑΓΜΑΤΙΚΕΣ: ΕΠΙΔ[100], ΜΑΧ, Ε1,Ε2,Ε3, ΚΑΛΥΤΕΡΗ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 167: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

167

ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αθλητών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Ονοματεπώνυμο ',Ι,'ου αθλητή:' ΔΙΑΒΑΣΕ ΟΝΟΜ[Ι] ΓΡΑΨΕ 'Πληκτρολογείστε τις 3 επιδόσεις του:' ΔΙΑΒΑΣΕ Ε1,Ε2,Ε3 ΑΝ Ε1>Ε2 ΤΟΤΕ ΚΑΛΥΤΕΡΗ <-- Ε1 ΑΛΛΙΩΣ ΚΑΛΥΤΕΡΗ <-- Ε2 ΤΕΛΟΣ_ΑΝ ΑΝ Ε3>ΚΑΛΥΤΕΡΗ ΤΟΤΕ ΚΑΛΥΤΕΡΗ <-- Ε3 ΤΕΛΟΣ_ΑΝ ΕΠΙΔ[Ι] <-- ΚΑΛΥΤΕΡΗ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΑΧ <-- ΕΠΙΔ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ ΕΠΙΔ[Ι]>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- ΕΠΙΔ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Νικητής-ές του αγωνίσματος είναι:' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΕΠΙΔ[Ι]=ΜΑΧ ΤΟΤΕ ΓΡΑΨΕ ΟΝΟΜ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_60 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Ν, ΦΥΛ[100], ΒΑΘΜ[100], ΜΙΝ ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜ[100] ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος μαθητών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Ονοματεπώνυμο ',Ι,'ου μαθητή:' ΔΙΑΒΑΣΕ ΟΝΟΜ[Ι] ΓΡΑΨΕ 'Κωδικός φύλου (1.Αγόρι 2.Κορίτσι):' ΔΙΑΒΑΣΕ ΦΥΛ[Ι] ΓΡΑΨΕ 'Βαθμός:' ΔΙΑΒΑΣΕ ΒΑΘΜ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΙΝ <-- 1000 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ (ΦΥΛ[Ι]=1) ΚΑΙ (ΒΑΘΜ[Ι]<ΜΙΝ) ΤΟΤΕ ΜΙΝ <-- ΒΑΘΜ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Αγόρι-ια με το μικρότερο βαθμό:' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ (ΦΥΛ[Ι]=1) ΚΑΙ (ΒΑΘΜ[Ι]=ΜΙΝ) ΤΟΤΕ ΓΡΑΨΕ ΟΝΟΜ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 168: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

168

Δεν μπορούμε στη μεταβλητή ΜΙΝ να δώσουμε τον 1ο βαθμό γιατί δεν είναι σίγουρο ότι ανήκει σε αγόρι. Έτσι δίνουμε στη ΜΙΝ αρχικά μια μεγάλη τιμή έτσι ώστε το πρώτο κιόλας αγόρι να έχει σίγουρα μικρότερο βαθμό και να μπει αυτός στη θέση του ΜΙΝ. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_62 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι,J,Ν, ΑΘΡ, ΓΙΝ ΑΡΧΗ ΓΡΑΨΕ 'Τιμή για το Ν:' ΔΙΑΒΑΣΕ Ν ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΝ <-- 1 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Ι ΓΙΝ <-- ΓΙΝ*J ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΘΡ <-- ΑΘΡ+ΓΙΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1!+2!+3!+...+Ν! = ',ΑΘΡ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_63 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΑΘΡ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΑΘΡ <-- ΑΘΡΟΙΣΜΑ(Α,Β) ΓΡΑΨΕ 'Άθροισμα=',ΑΘΡ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑ(Χ,Υ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ ΑΡΧΗ ΑΘΡΟΙΣΜΑ <-- Χ+Υ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_64 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ,ΜΟ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΓΡΑΨΕ '3ος αριθμός:' ΔΙΑΒΑΣΕ Γ ΜΟ <-- ΜΕΣΟΣ_ΟΡΟΣ(Α,Β,Γ) ΓΡΑΨΕ 'Μέσος όρος=',ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 169: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

169

ΣΥΝΑΡΤΗΣΗ ΜΕΣΟΣ_ΟΡΟΣ(Χ,Υ,Ζ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ,Ζ ΑΡΧΗ ΜΕΣΟΣ_ΟΡΟΣ <-- (Χ+Υ+Ζ)/3 ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_65 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΥΠ ΑΡΧΗ ΓΡΑΨΕ '1η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Β ΥΠ <-- ΥΠΟΤΕΙΝΟΥΣΑ(Α,Β) ΓΡΑΨΕ 'Υποτείνουσα=',ΥΠ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΥΠΟΤΕΙΝΟΥΣΑ(Χ,Υ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ ΑΡΧΗ ΥΠΟΤΕΙΝΟΥΣΑ <-- Τ_Ρ(Χ^2+Υ^2) ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_67 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΣΦ ΑΚΕΡΑΙΕΣ: Ι ΧΑΡΑΚΤΗΡΕΣ: ΠΕΡΙΜΕΝΕ ΑΡΧΗ ΓΡΑΨΕ 'ΣΦ(0)= Δεν ορίζεται' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 90 ΣΦ <-- ΣΥΝΕΦΑΠΤΟΜΕΝΗ(Ι) ΓΡΑΨΕ 'ΣΦ(',Ι,')=',ΣΦ ΑΝ Ι MOD 20 = 0 ΤΟΤΕ ΓΡΑΨΕ 'Πατήστε ENTER για συνέχεια' ΔΙΑΒΑΣΕ ΠΕΡΙΜΕΝΕ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΣΥΝΕΦΑΠΤΟΜΕΝΗ(Χ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ, ΑΚΤΙΝΙΑ ΑΡΧΗ ΑΚΤΙΝΙΑ <-- 3.14159*Χ/180 ΣΥΝΕΦΑΠΤΟΜΕΝΗ <-- ΣΥΝ(ΑΚΤΙΝΙΑ)/ΗΜ(ΑΚΤΙΝΙΑ) ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Η ΓΛΩΣΣΟΜΑΘΕΙΑ στις συναρτήσεις ΗΜ(Χ) ΚΑΙ ΣΥΝ(Χ) δέχεται το Χ σε ακτίνια. Έτσι, θα πρέπει να μετατρέψουμε τις μοίρες σε ακτίνια. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_69 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ν,ΠΑΡΑΓ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 170: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

170

ΑΡΧΗ ΓΡΑΨΕ 'Τιμή για το Ν:' ΔΙΑΒΑΣΕ Ν ΠΑΡΑΓ <-- ΠΑΡΑΓΟΝΤΙΚΟ(Ν) ΓΡΑΨΕ '1!+2!+3!+...+Ν! = ',ΠΑΡΑΓ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΠΑΡΑΓΟΝΤΙΚΟ(Χ): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι, Χ, ΓΙΝ ΑΡΧΗ ΓΙΝ <-- 1 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Χ ΓΙΝ <-- ΓΙΝ*Ι ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΠΑΡΑΓΟΝΤΙΚΟ <-- ΓΙΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_70 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ν ΠΡΑΓΜΑΤΙΚΕΣ: ΑΘΡ ΑΡΧΗ ΓΡΑΨΕ 'Τιμή για το Ν:' ΔΙΑΒΑΣΕ Ν ΑΘΡ <-- ΑΘΡΟΙΣΜΑ(Ν) ΓΡΑΨΕ '1/2+1/4+...1/(2*Ν) = ',ΑΘΡ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑ(Χ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι, Χ ΠΡΑΓΜΑΤΙΚΕΣ: SUM ΑΡΧΗ SUM <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Χ SUM <-- SUM+1/(2*Ι) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΘΡΟΙΣΜΑ <-- SUM ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_73 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΕΠΙΛΟΓΗ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ, ΜΑΧ, ΜΙΝ, ΜΟ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Β ΓΡΑΨΕ '3ος αριθμός:' ΔΙΑΒΑΣΕ Γ ΚΑΛΕΣΕ ΜΕΓΙΣΤΟΣ ΚΑΛΕΣΕ ΕΛΑΧΙΣΤΟΣ ΚΑΛΕΣΕ ΜΕΣΟΣ_ΟΡΟΣ ΓΡΑΨΕ 'Μεγαλύτερος είναι ο ',ΜΑΧ ΓΡΑΨΕ 'Μικρότερος είναι ο ',ΜΙΝ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 171: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

171

ΓΡΑΨΕ 'Ο μέσος όρος είναι ',ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΜΕΓΙΣΤΟΣ ΑΡΧΗ ΑΝ Α>Β ΤΟΤΕ ΜΑΧ <-- Α ΑΛΛΙΩΣ ΜΑΧ <-- Β ΤΕΛΟΣ_ΑΝ ΑΝ Γ>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- Γ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ ΕΛΑΧΙΣΤΟΣ ΑΡΧΗ ΑΝ Α<Β ΤΟΤΕ ΜΙΝ <-- Α ΑΛΛΙΩΣ ΜΙΝ <-- Β ΤΕΛΟΣ_ΑΝ ΑΝ Γ<ΜΙΝ ΤΟΤΕ ΜΙΝ <-- Γ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ ΜΕΣΟΣ_ΟΡΟΣ ΑΡΧΗ ΜΟ <-- (Α+Β+Γ)/3 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_73α_με_παραμέτρους ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΕΠΙΛΟΓΗ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ,Ζ, ΑΠΟΤ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΓΡΑΨΕ '2ος αριθμός:' ΔΙΑΒΑΣΕ Υ ΓΡΑΨΕ '3ος αριθμός:' ΔΙΑΒΑΣΕ Ζ ΚΑΛΕΣΕ ΜΕΓΙΣΤΟΣ(Χ,Υ,Ζ,ΑΠΟΤ) ΓΡΑΨΕ 'Μεγαλύτερος είναι ο ',ΑΠΟΤ ΚΑΛΕΣΕ ΕΛΑΧΙΣΤΟΣ(Χ,Υ,Ζ,ΑΠΟΤ) ΓΡΑΨΕ 'Μικρότερος είναι ο ',ΑΠΟΤ ΚΑΛΕΣΕ ΜΕΣΟΣ_ΟΡΟΣ(Χ,Υ,Ζ,ΑΠΟΤ) ΓΡΑΨΕ 'Ο μέσος όρος είναι ',ΑΠΟΤ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΜΕΓΙΣΤΟΣ(Α,Β,Γ,ΜΑΧ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ,ΜΑΧ ΑΡΧΗ ΑΝ Α>Β ΤΟΤΕ ΜΑΧ <-- Α ΑΛΛΙΩΣ ΜΑΧ <-- Β

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 172: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

172

ΤΕΛΟΣ_ΑΝ ΑΝ Γ>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- Γ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ ΕΛΑΧΙΣΤΟΣ(Α,Β,Γ,ΜΙΝ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ,ΜΙΝ ΑΡΧΗ ΑΝ Α<Β ΤΟΤΕ ΜΙΝ <-- Α ΑΛΛΙΩΣ ΜΙΝ <-- Β ΤΕΛΟΣ_ΑΝ ΑΝ Γ<ΜΙΝ ΤΟΤΕ ΜΙΝ <-- Γ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ ΜΕΣΟΣ_ΟΡΟΣ(Α,Β,Γ,ΜΟ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,Γ,ΜΟ ΑΡΧΗ ΜΟ <-- (Α+Β+Γ)/3 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ Προσοχή! Αν αλλαχθούν οι τιμές των Α,Β,Γ μέσα σε κάποια από τις διαδικασίες, θα αλλαχθούν αντίστοιχα και οι τιμές των Χ,Υ,Ζ μέσα στο κυρίως πρόγραμμα. ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_74 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΥΠ ΛΟΓΙΚΕΣ: ΥΠ_ΑΚ ΑΡΧΗ ΓΡΑΨΕ '1η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Α ΓΡΑΨΕ '2η κάθετη πλευρά:' ΔΙΑΒΑΣΕ Β ΚΑΛΕΣΕ ΥΠΟΤΕΙΝΟΥΣΑ(Α,Β,ΥΠ) ΓΡΑΨΕ 'Υποτείνουσα=',ΥΠ ΥΠ_ΑΚ <-- ΕΙΝΑΙ_ΑΚΕΡΑΙΟΣ(ΥΠ) ΑΝ ΥΠ_ΑΚ=ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ 'Η υποτείνουσα είναι ακέραιος' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Η υποτείνουσα δεν είναι ακέραιος' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΥΠΟΤΕΙΝΟΥΣΑ(Χ,Υ,ΥΠΟΤ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ,ΥΠΟΤ ΑΡΧΗ ΥΠΟΤ <-- Τ_Ρ(Χ^2+Υ^2) ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΣΥΝΑΡΤΗΣΗ ΕΙΝΑΙ_ΑΚΕΡΑΙΟΣ(Χ):ΛΟΓΙΚΗ ΜΕΤΑΒΛΗΤΕΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 173: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

173

ΠΡΑΓΜΑΤΙΚΕΣ:Χ ΑΡΧΗ ΑΝ Χ=Α_Μ(Χ) ΤΟΤΕ ΕΙΝΑΙ_ΑΚΕΡΑΙΟΣ <-- ΑΛΗΘΗΣ ΑΛΛΙΩΣ ΕΙΝΑΙ_ΑΚΕΡΑΙΟΣ <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_75 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ω1,Λ1,Χ,Ω2,Λ2 ΛΟΓΙΚΕΣ: ΥΠ_ΑΚ ΑΡΧΗ ΓΡΑΨΕ 'Τωρινή ώρα (0..23):' ΔΙΑΒΑΣΕ Ω1 ΓΡΑΨΕ 'Τωρινά λεπτά (0..59):' ΔΙΑΒΑΣΕ Λ1 ΓΡΑΨΕ 'Λεπτά που θέλουμε να περάσουν:' ΔΙΑΒΑΣΕ Χ ΚΑΛΕΣΕ ΧΡΟΝ(Ω1,Λ1,Χ,Ω2,Λ2) ΓΡΑΨΕ 'Νέα ώρα=',Ω2,' Νέα λεπτά=',Λ2 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΧΡΟΝ(ΩΡ1,ΛΕΠ1,Λ,ΩΡ2,ΛΕΠ2) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΩΡ1,ΛΕΠ1,Λ,ΩΡ2,ΛΕΠ2, ΣΕ_ΛΕΠΤΑ ΑΡΧΗ ΣΕ_ΛΕΠΤΑ <-- ΩΡ1*60+ΛΕΠ1 ΣΕ_ΛΕΠΤΑ <-- ΣΕ_ΛΕΠΤΆ+Λ ΩΡ2 <-- ΣΕ_ΛΕΠΤΑ DIV 60 ΑΝ ΩΡ2>=24 ΤΟΤΕ ΩΡ2 <-- ΩΡ2-24 ΤΕΛΟΣ_ΑΝ ΛΕΠ2 <-- ΣΕ_ΛΕΠΤΑ MOD 60 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_76 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ,Υ ΑΡΧΗ ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Χ ΓΡΑΨΕ '2ος αριθμος:' ΔΙΑΒΑΣΕ Υ ΚΑΛΕΣΕ ΑΝΤΑΛΛΑΞΕ(Χ,Υ) ΓΡΑΨΕ 'Αριθμοί μετά την ανταλλαγή=',Χ,Υ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΑΛΛΑΞΕ(Α,Β) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β,ΒΟΗΘ ΑΡΧΗ ΒΟΗΘ <-- Α Α <-- Β Β <-- ΒΟΗΘ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 174: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

174

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_79 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ[100], SUM ΑΚΕΡΑΙΕΣ:Ν,Ι ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΚΑΛΕΣΕ ΑΘΡΟΙΣΜΑ(Ν,Χ,SUM) ΓΡΑΨΕ'Άθροισμα στοιχείων=',SUM ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΑΘΡΟΙΣΜΑ(Μ,ΠΙΝ,ΑΘΡ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[100], ΑΘΡ ΑΚΕΡΑΙΕΣ: Μ,J ΑΡΧΗ ΑΘΡ <-- 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- ΑΘΡ+ΠΙΝ[J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_80 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ[100], ΓΙΝΟΜ ΑΚΕΡΑΙΕΣ:Ν,Ι ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών(μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ(Ν,Χ) ΚΑΛΕΣΕ ΓΙΝΟΜΕΝΟ(Ν,Χ,ΓΙΝΟΜ) ΓΡΑΨΕ'Γινόμενο=',ΓΙΝΟΜ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ(Μ,ΠΙΝ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ:ΠΙΝ[100] ΑΚΕΡΑΙΕΣ:Μ,Κ ΑΡΧΗ ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ Μ ΠΙΝ[Κ] <-- Κ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ ΓΙΝΟΜΕΝΟ(Μ,Π,ΓΙΝ) ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[100], ΓΙΝ ΑΚΕΡΑΙΕΣ: Μ,J ΑΡΧΗ ΓΙΝ <-- 1 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΙΝ <-- ΓΙΝ*Π[J]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 175: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

175

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_81 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ[100], ΜΑΧ ΑΚΕΡΑΙΕΣ:Ν,Ι ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Χ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΑΧ <-- Χ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ Χ[Ι]>ΜΑΧ ΤΟΤΕ ΜΑΧ <-- Χ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ'Μεγαλύτερος=',ΜΑΧ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_82 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[101],Χ ΑΚΕΡΑΙΕΣ:Ν,Ι, ΘΕΣΗ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[Ι] ΜΕΧΡΙΣ_ΟΤΟΥ ΠΙΝ[Ι]>ΠΙΝ[Ι-1] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Αριθμός που θα καταχωρηθεί στον πίνακα:' ΔΙΑΒΑΣΕ Χ ΘΕΣΗ <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΘΕΣΗ <-- ΘΕΣΗ+1 ΜΕΧΡΙΣ_ΟΤΟΥ (Χ<ΠΙΝ[ΘΕΣΗ]) Η (ΘΕΣΗ=Ν+1) ΓΙΑ Ι ΑΠΟ Ν ΜΕΧΡΙ ΘΕΣΗ ΜΕ ΒΗΜΑ -1 ΠΙΝ[Ι+1] <-- ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΠΙΝ[ΘΕΣΗ] <-- Χ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν+1 ΓΡΑΨΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ο 1ος αριθμός διαβάζεται έξω από την επανάληψη. Γιατί; Τι θα συνέβαινε αν η ΓΙΑ άρχιζε από την τιμή 1 (στη ΜΕΧΡΙΣ_ΟΤΟΥ); Προσοχή στην περίπτωση που ο Χ είναι μεγαλύτερος απ' όλα τα στοιχεία του πίνακα. Γι' αυτό μπήκε στη ΜΕΧΡΙΣ_ΟΤΟΥ και η συνθήκη Η (ΘΕΣΗ=Ν+1). Σ' αυτή την περίπτωση δεν θα εκτελεσθούν καθόλου οι εντολές της

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 176: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

176

ΓΙΑ Ι ΑΠΟ Ν ΜΕΧΡΙ ΘΕΣΗ ΜΕ ΒΗΜΑ –1 ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_83 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[100],Χ ΑΚΕΡΑΙΕΣ:Ν,Ι, ΘΕΣΗ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Αριθμός που θα διαγραφεί από τον πίνακα:' ΔΙΑΒΑΣΕ Χ ΘΕΣΗ <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΘΕΣΗ <-- ΘΕΣΗ+1 ΜΕΧΡΙΣ_ΟΤΟΥ (ΠΙΝ[ΘΕΣΗ]=Χ)Η (ΘΕΣΗ=Ν+1) ΑΝ ΘΕΣΗ<Ν+1 ΤΟΤΕ ΓΙΑ Ι ΑΠΟ ΘΕΣΗ ΜΕΧΡΙ Ν-1 ΠΙΝ[Ι] <-- ΠΙΝ[Ι+1] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Νέος πίνακας μετά τη διαγραφή:' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν-1 ΓΡΑΨΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Ο αριθμός δεν βρίσκεται μέσα στον πίνακα' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_84 ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: ΦΥΛΟ[100] ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΡΟΣ[100],ΗΛΙΚΙΑ[100], ΜΑΧ, ΑΘΡ, ΜΟ ΑΚΕΡΑΙΕΣ:Ν,Ι,ΘΕΣΗ,ΜΓ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Κωδικός φύλου ',Ι, 'ου ατόμου:' ΔΙΑΒΑΣΕ ΦΥΛΟ[Ι] ΓΡΑΨΕ 'Βάρος:' ΔΙΑΒΑΣΕ ΒΑΡΟΣ[Ι] ΓΡΑΨΕ 'Ηλικία:' ΔΙΑΒΑΣΕ ΗΛΙΚΙΑ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΘΡ <-- 0 ΜΓ <-- 0 ΜΑΧ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ (ΦΥΛΟ[Ι]='Γ') ΚΑΙ (ΒΑΡΟΣ[Ι]>60) ΤΟΤΕ ΑΘΡ <-- ΑΘΡ + ΗΛΙΚΙΑ[Ι] ΜΓ <-- ΜΓ+1 ΤΕΛΟΣ_ΑΝ ΑΝ (ΦΥΛΟ[Ι]='Α') ΚΑΙ (ΒΑΡΟΣ[Ι]>ΜΑΧ) ΤΟΤΕ ΜΑΧ <-- ΒΑΡΟΣ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 177: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

177

ΑΝ ΜΓ<>0 ΤΟΤΕ ΜΟ <-- ΑΘΡ/ΜΓ ΓΡΑΨΕ 'Μέσος όρος γυναικών με βάρος >60 =', ΜΟ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Δεν υπάρχουν γυναίκες με βάρος >60' ΤΕΛΟΣ_ΑΝ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ (ΦΥΛΟ[Ι]='Α') ΚΑΙ (ΒΑΡΟΣ[Ι]=ΜΑΧ) ΤΟΤΕ ΓΡΑΨΕ 'Ηλικία βαρύτερου άνδρα=', ΗΛΙΚΙΑ[Ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_85 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[100], ΒΟΗΘ ΑΚΕΡΑΙΕΣ:Ν,Ι,J ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ Ν ΜΕΧΡΙ Ι ΜΕ ΒΗΜΑ -1 ΑΝ ΠΙΝ[J-1] > ΠΙΝ[J] ΤΟΤΕ ΒΟΗΘ <-- ΠΙΝ[J-1] ΠΙΝ[J-1] <-- ΠΙΝ[J] ΠΙΝ[J] <-- ΒΟΗΘ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Ταξινομημένος πίνακας' ΓΡΑΨΕ '---------------------' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_86_Παραλ_φυσσαλίδας ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[100], ΒΟΗΘ ΑΚΕΡΑΙΕΣ:Ν,Ι ΛΟΓΙΚΕΣ: ΑΛΛΑΓΕΣ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΑΓΕΣ <-- ΨΕΥΔΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν-1 ΑΝ ΠΙΝ[Ι] > ΠΙΝ[Ι+1] ΤΟΤΕ ΒΟΗΘ <-- ΠΙΝ[Ι] ΠΙΝ[Ι] <-- ΠΙΝ[Ι+1] ΠΙΝ[Ι+1] <-- ΒΟΗΘ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 178: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

178

ΑΛΛΑΓΕΣ <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ ΑΛΛΑΓΕΣ = ΨΕΥΔΗΣ ΓΡΑΨΕ 'Ταξινομημένος πίνακας' ΓΡΑΨΕ '---------------------' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_87 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[100], Χ ΑΚΕΡΑΙΕΣ:Ν,Ι ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ ΠΙΝ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Ζητούμενος αριθμός:' ΔΙΑΒΑΣΕ Χ ΒΡΕΘΗΚΕ <-- ΨΕΥΔΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ ΠΙΝ[Ι]=Χ ΤΟΤΕ ΓΡΑΨΕ 'Βρέθηκε στη θέση ', Ι ΒΡΕΘΗΚΕ <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ ΒΡΕΘΗΚΕ=ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ 'Ο αριθμός δεν ανήκει στον πίνακα' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_89 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[100], Β[100], Γ[200] ΑΚΕΡΑΙΕΣ:Ν,Μ,Ι,ΜΑ,ΜΒ,ΜΓ ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος αριθμών 1ου πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ 'Πλήθος αριθμών 2ου πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Μ ΓΡΑΨΕ 'Εισαγωγή στοιχείων 1ου πίνακα' ΓΡΑΨΕ '-----------------------------' ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Α[1] ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Α[Ι] ΜΕΧΡΙΣ_ΟΤΟΥ Α[Ι]>Α[Ι-1] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Εισαγωγή στοιχείων 2ου πίνακα' ΓΡΑΨΕ '-----------------------------' ΓΡΑΨΕ '1ος αριθμός:' ΔΙΑΒΑΣΕ Β[1]

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 179: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

179

ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Μ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Ι,'ος αριθμός:' ΔΙΑΒΑΣΕ Β[Ι] ΜΕΧΡΙΣ_ΟΤΟΥ Β[Ι]>Β[Ι-1] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΑ <-- 1 ΜΒ <-- 1 ΜΓ <-- 1 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ Α[ΜΑ]> Β[ΜΒ] ΤΟΤΕ Γ[ΜΓ] <-- Β[ΜΒ] ΜΒ <-- ΜΒ+1 ΜΓ <-- ΜΓ+1 ΑΝ ΜΒ>Μ ΤΟΤΕ ΓΙΑ Ι ΑΠΟ ΜΑ ΜΕΧΡΙ Ν Γ[ΜΓ] <-- Α[Ι] ΜΓ <-- ΜΓ+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ Γ[ΜΓ] <-- Α[ΜΑ] ΜΑ <-- ΜΑ+1 ΜΓ <-- ΜΓ+1 ΑΝ ΜΑ>Ν ΤΟΤΕ ΓΙΑ Ι ΑΠΟ ΜΒ ΜΕΧΡΙ Μ Γ[ΜΓ] <-- Β[Ι] ΜΓ <-- ΜΓ+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ (ΜΒ>Μ) Η (ΜΑ>Ν) ΓΡΑΨΕ 'Νέος πίνακας που προέκυψε από την ένωση' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν+Μ ΓΡΑΨΕ Γ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_90 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[100,100], Β[100], ΑΘΡ ΑΚΕΡΑΙΕΣ:Ν,Μ,Ι,J ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος γραμμών πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ 'Πλήθος στηλών πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Μ ΓΡΑΨΕ 'Εισαγωγή στοιχείων πίνακα' ΓΡΑΨΕ '-------------------------' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ Ι,'η γραμμή / ', J, 'η στήλη' ΔΙΑΒΑΣΕ Α[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- ΑΘΡ + Α[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 180: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

180

Β[Ι] <-- ΑΘΡ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Άθροισμα ', Ι, 'ης γραμμής=',Β[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_91 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[100,100], ΑΘΡ ΑΚΕΡΑΙΕΣ:Ν,Ι,J ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος γραμμών και στηλών του πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ 'Εισαγωγή στοιχείων πίνακα' ΓΡΑΨΕ '-------------------------' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι,'η γραμμή / ', J, 'η στήλη' ΔΙΑΒΑΣΕ Α[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ Ι=J ΤΟΤΕ ΑΘΡ <-- ΑΘΡ + Α[Ι,J] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Άθροισμα στοιχείων κυρίας διαγωνίου= ', ΑΘΡ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_92 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[100,100] ΑΚΕΡΑΙΕΣ:Ν,Ι,J ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος γραμμών και στηλών του πίνακα (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ Ι<J ΤΟΤΕ Α[Ι,J] <-- 1 ΑΛΛΙΩΣ_ΑΝ Ι=J ΤΟΤΕ Α[Ι,J] <-- 0 ΑΛΛΙΩΣ Α[Ι,J] <-- 2 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Ι, 'η γραμμή / ',J,'η στήλη: ',Α[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 181: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

181

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_93 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,J,Ν,Μ ΠΡΑΓΜΑΤΙΚΕΣ: Α[100,100],Β[100,100], ΑΘΡ[100,100] ΑΡΧΗ ΓΡΑΨΕ 'Πλήθος γραμμών (μέχρι 100):' ΔΙΑΒΑΣΕ Ν ΓΡΑΨΕ 'Πλήθος στηλών (μέχρι 100):' ΔΙΑΒΑΣΕ Μ ΓΡΑΨΕ 'Εισαγωγή στοιχείων 1ου πίνακα' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ Ι, 'η γραμμή ',J, 'η στήλη: ' ΔΙΑΒΑΣΕ Α[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Εισαγωγή στοιχείων 2ου πίνακα' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ Ι, 'η γραμμή ',J, 'η στήλη: ' ΔΙΑΒΑΣΕ Β[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ[Ι,J] <-- Α[Ι,J]+Β[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Πρόσθεση πινάκων' ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ Ι, 'η γραμμή ',J, 'η στήλη: ', ΑΘΡ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_94 ΣΤΑΘΕΡΕΣ Ν=5 Μ=3 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,J,ΒΑΘΜΟΙ[Ν,Μ], ΑΘΡ ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[Ν] ΑΡΧΗ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ J,'ος βαθμός ',Ι,'ου μαθητή:' ΔΙΑΒΑΣΕ ΒΑΘΜΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- ΑΘΡ+ΒΑΘΜΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ[Ι] <-- ΑΘΡ/Μ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ 'Μέσος όρος ',Ι, 'ου μαθητή= ',ΜΟ[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ

Page 182: ÐËÉÁÔÓÉÏÓ ÁÍÔÙÍÉÏÓgym-panorm.reth.sch.gr/wordpress/wp-content/uploads/2011/09/Plia… · 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

182

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_95 ΣΤΑΘΕΡΕΣ Ν=4 Μ=3 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,J,ΨΗΦΟΙ[Ν,Μ], ΑΘΡ ΑΡΧΗ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΓΡΑΨΕ 'Ψήφοι ',Ι,'ης περιφέρειας για τον ',J,'ο υποψήφιο:' ΔΙΑΒΑΣΕ ΨΗΦΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- ΑΘΡ+ΨΗΦΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Σύνολο ψήφων ', Ι,' περιφέρειας: ', ΑΘΡ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡ <-- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡ <-- ΑΘΡ+ΨΗΦΟΙ[Ι,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Σύνολο ψήφων ', J,' υποψηφίου: ', ΑΘΡ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Το σύνολο των ψήφων της κάθε περιφέρειας είναι το άθροισμα των γραμμών του πίνακα. Το σύνολο των ψήφων του κάθε υποψήφιου είναι το άθροισμα των γραμμών του πίνακα.

ΠΛΙΑ

ΤΣΙΟΣ Α

ΝΤΩ

ΝΙΟ

Σ