ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι γνωρίζετε για τη στοίβα και τι για την ουρά; (Μονάδες 7) Στοίβα (Stack) είναι μια δομή στην οποία τα δεδομένα που υπάρχουν στην κορυφή της λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος λαμβάνονται τελευταία (LIFO Last In First Out). Οι κύριες λειτουργίες της στοιβάδας είναι: η ώθηση (push) στοιχείου στην κορυφή της στοίβας η απώθηση (pop) στοιχείου από τη στοίβα Η ώθηση πρέπει πάντοτε να ελέγχει πρώτα αν η στοίβα είναι γεμάτη ώστε να μην έχουμε το φαινόμενο της υπερχείλισης (overflow). Αντίστοιχα, η απώθηση πρέπει να ελέγχει αν η στοίβα έχει ένα τουλάχιστον στοιχείο, ώστε να μην έχουμε το φαινόμενο της υποχείλισης (underflow). Οι στοίβες υλοποιούνται με μονοδιάστατους πίνακες. Μία μεταβλητή top μας δείχνει την κορυφή της στοίβας, ώστε να μπορούν να γίνουν οι κατάλληλοι έλεγχοι και οι βασικές λειτουργίες της στοίβας. Ουρά (Queue) είναι μια δομή η οποία έχει δύο άκρα. Τα δεδομένα εισάγονται από το ένα άκρο και λαμβάνονται από το άλλο άκρο με τη σειρά που εισήχθησαν (FIFO First In First Out). Οι κύριες λειτουργίες σε μια ουρά είναι: η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς η εξαγωγή (dequeue) στοιχείου στο εμπρός άκρο της ουράς Η υλοποίηση της ουράς γίνεται επίσης με μονοδιάστατο πίνακα και δύο μεταβλητές front και rear που δείχνουν τη θέση του στοιχείου που θα εξαχθεί πρώτο και του στοιχείου που μόλις εισήλθε αντίστοιχα. Για τις ενέργειες της εισαγωγής και εξαγωγής πρέπει να γίνονται πάντοτε οι έλεγχοι αν υπάρχει ελεύθερη θέση στην ουρά ή αν υπάρχει έστω και ένα στοιχείο αντίστοιχα. II. Να γράψετε στο τετράδιό σας τον αριθμό κάθε μιας από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη ΣΩΣΤΟ αν είναι σωστή ή τη λέξη ΛΑΘΟΣ αν είναι λανθασμένη. 1. Ο τετραγωνισμός του κύκλου είναι αδόμητο πρόβλημα. (ΛΑΘΟΣ) 2. Οι δυναμικές δομές καταλαμβάνουν υποχρεωτικά συνεχόμενες θέσεις μνήμης. (ΛΑΘΟΣ) 3. Η περατότητα είναι αλγοριθμικό κριτήριο. (ΣΩΣΤΟ) 4. Οι εμφωλευμένες δομές, πολλές φορές μπορούν να γραφούν ως πολλαπλές επιλογές. (ΣΩΣΤΟ)
5. Η πρόσθεση είναι πράξη επί των δομών δεδομένων. (ΛΑΘΟΣ) (Μονάδες 5) III. Ποιες οι κατηγορίες προβλημάτων ανάλογα με το βαθμό δόμησης της λύσης; Να αναφέρετε από ένα παράδειγμα. (Μονάδες 6) Δομημένα (Πρωτοβάθιμα εξίσωση) Ημιδομημένα (Μετάβαση μεταξύ δύο πόλεων) Αδόμητα (Διοργάνωση ενός πάρτυ) IV. Να γράψετε ισοδύναμο κώδικα ο οποίος να μην περιέχει πολλαπλές επιλογές (_αν) και εμφωλευμένες δομές. Τι θα εμφανίσει για x = -2, y = 3; Διάβασε x Διάβασε y Αν x > y τότε x y 5 Γράψε x _αν x < 0 τότε x y Γράψε x Γράψε y - x (Μονάδες 12) Εμφανίζει 3 Διάβασε x Διάβασε y flag Αληθής Αν x > y τότε x y 5 Γράψε χ flag Ψευδής Αν x < 0 και flag = Αληθής τότε x y Γράψε x flag Ψευδής Αν flag = Αληθής τότε Γράψε y - x
V. Χρησιμοποιώντας τον αλγόριθμο αλά Ρώσικα, να βρείτε τα γινόμενα 1. 13 x 22 2. 27 x 39 (Μονάδες 4) 22 13 22 39 27 39 44 6 78 13 78 88 3 88 156 6 176 1 176 312 3 312 0 286 624 1 624 0 1053 VI. Τι είναι η δομή ενός προβλήματος και από ποια διαδικασία προκύπτει; (Μονάδες 6) Με τον όρο Δομή ενός προβλήματος αναφερόμαστε στα συστατικά του μέρη, στα επιμέρους τμήματα που το αποτελούν καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους. Η ανάλυση ενός προβλήματος σε απλούστερα, αναδύει τη δομή του Θέμα 2ο Α) Να γραφεί τμήμα αλγορίθμου, το οποίο θα διαβάζει έναν αριθμό, θα υπολογίζει τον αριθμό των ψηφίων του καθώς και το άθροισμά τους. (Μονάδες 10) Διάβασε x πλ 0 αθ 0 Όσο x div 10 <>0 επανάλαβε πλ πλ + 1 αθ αθ + x mod 10 x x div 10 αθ αθ + x πλ πλ + 1 Β) Να γίνει το διάγραμμα ροής του παρακάτω αλγορίθμου.
Αλγόριθμος Θέμα_2Β Γράψε 'Δώσε δύο αριθμούς' Διάβασε Α, Β Όσο Β <> 0 επανάλαβε Αν Α > Β τότε Α Α Β Β Β Α Γράψε Α Τέλος Θέμα_2Β Τι θα εμφανίσει ο αλγόριθμος για Α=23 και Β=45; (Μονάδες 10)
Α Β 23 45 1 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Εμφανίζει Α = 1 Θέμα 3 ο Μια σιδηροδρομική εταιρία για τη διαδρομή Παρίσι Μόναχο έχει ορίσει την τιμή του εισιτηρίου ως εξής: Για τους επιβάτες από 5 μέχρι και 60 ετών στα 45 ευρώ. Για τα άτομα τρίτης ηλικίας (από 60 ετών και πάνω) καθώς και για τα παιδιά μέχρι και 4 ετών στα 28 ευρώ.
Η εταιρία χρεώνει τους επιβάτες για τις αποσκευές τους κλιμακωτά, ανάλογα με το βάρος της αποσκευής ως εξής: Για τα πρώτα 10 κιλά δεν υπάρχει χρέωση. Τα επόμενα 5 κιλά χρεώνονται με 3 ευρώ το κιλό. Τα υπόλοιπα κιλά χρεώνονται με 5 ευρώ το κιλό. Να γραφεί αλγόριθμος ο οποίος θα διαβάζει για κάθε επιβάτη το όνομα, την ηλικία του και τα κιλά αποσκευών που μεταφέρει. Ο αλγόριθμος θα τερματίζει όταν για όνομα δοθεί η λέξη Τερματισμός και θα εμφανίζει: Πόσοι είναι οι επιβάτες, πόσοι από αυτούς είναι ενήλικες, και πόσα παιδιά (κάτω των 18). Ποιος επιβάτης μετέφερε τη μεγαλύτερη αποσκευή σε κιλά και πόσα κιλά ήταν η αποσκευή. Το συνολικό ποσό που εισέπραξε η εταιρία από το δρομολόγιο. (Θεωρήστε ότι οι ηλικίες και τα βάρη των αποσκευών είναι ακέραιες τιμές.) (Μονάδες 20) Αλγόριθμος Θέμα3 ΠΛΕΝ 0!Πλήθος ενηλίκων ΠΛΠ 0!Πλήθος παιδιών max -1!Αρχικοποίηση μέγιστης αποσκευής ΣΠ 0!Συνολικό ποσό είσπραξης Γράψε 'Δώσε όνομα επιβάτη' Διάβασε ΟΝ Όσο ΟΝ <> 'Τερματισμός' επανάλαβε Γράψε 'Δώσε ηλικία και κιλά αποσκευών' Διάβασε ΗΛ, Κ!Μετράμε τους ενήλικες και τα παιδιά Αν ΗΛ < 18 τότε ΠΛΠ ΠΛΠ + 1 ΠΛΕΝ ΠΛΕΝ + 1!Υπολογίζουμε τη μεγαλύτερη αποσκευή Αν K > max τότε max Κ Ονmax ΟΝ!Υπολογίζουμε κλιμακωτά τη χρέωση των αποσκευών αφού αρχικοποιήσουμε τη χρέωση κάθε επιβάτη με 0 ΧΡ 0 Αν Κ <=10 τότε ΧΡ 0 _αν Κ<=15 τότε
ΧΡ 3 * (Κ 10) ΧΡ 3 * 5 + 5 * (Κ 15)!Υπολογίζουμε το κόστος για κάθε επιβάτη ανάλογα με την ηλικία του Αν ΗΛ >= 5 και ΗΛ <= 60 τότε!προσθέτουμε και το κόστος του εισιτηρίου για ενήλικες ΧΡ ΧΡ + 45!Προσθέτουμε και το κόστος του εισιτηρίου για παιδιά και άτομα 3ης ηλικίας ΧΡ ΧΡ + 28!Προσθέτουμε στο συνολικό ποσό είσπραξης τη χρέωση του επιβάτη ΣΠ ΣΠ + ΧΡ!Διαβάζουμε το όνομα του επόμενου επιβάτη Γράψε 'Δώσε όνομα επιβάτη' Διάβασε ΟΝ!Εμφανίζουμε τα αποτελέσματα Γράψε 'Σύνολο επιβατών', ΠΛΕΝ + ΠΛΠ Γράψε 'Ενήλικες', ΠΛΕΝ Γράψε 'Ανήλικοι', ΠΛΠ Γράψε 'Τη βαρύτερη αποσκευή', max,'τη μετέφερε ο', Ονmax Γράψε 'Συνολική είσπραξη εταιρίας', ΣΠ τέλος Θέμα3 Θέμα 4ο Μια αλυσίδα Super Market έχει 85 υποκαταστήματα. Η εταιρία ενδιαφέρεται για τα έσοδα και τα έξοδα που έχει κάθε υποκατάστημα. Για το σκοπό αυτό σας ζητήθηκε να γράψετε αλγόριθμο ο οποίος: Να διαβάζει τον κωδικό του κάθε υποκαταστήματος, το συνολικό ποσό των εσόδων που έγιναν από αυτό το υποκατάστημα και το συνολικό ποσό των εξόδων του. Να υπολογίζει και να εμφανίζει για κάθε υποκατάστημα, τα κέρδη από τη διαφορά εισόδων εξόδων (τα τυχόν αρνητικά κέρδη αναπαριστούν ζημίες). Να βρίσκει και να εμφανίζει τον κωδικό του υποκαταστήματος με το μεγαλύτερο συνολικό κέρδος και το κέρδος αυτό. Να βρίσκει και να εμφανίζει το μέσο κέρδος όλων των υποκαταστημάτων. Πόσα υποκαταστήματα έχουν λιγότερο κέρδος, από το μισό του μεγαλύτερου κέρδους που παρουσίασε υποκατάστημα; (Μονάδες 20)
Αλγόριθμος Θ4!Διαβάζουμε τα στοιχεία Γράψε Δώσε τον κωδικό του καταστήματος, το σύνολο εξόδων και το &συνολικό ποσό εσόδων του. Διάβασε Κ[i], ΕΞ[i], ΕΣ[i]!Υπολογίζουμε κέρδη και ζημίες ΚΖ[i] ΕΣ[i] - ΕΞ[i]!Εμφανίζουμε κέρδη και ζημίες Γράψε Κ[i], ΚΖ[i]!Υπολογίζουμε και εμφανίζουμε το κατάστημα με το μεγαλύτερο κέρδος(ή μικρότερη ζημία) max ΚΖ[1] θmax 1 Για i από 2 μέχρι 120 Αν ΚΖ[i] > max τότε max ΚΖ[i] θmax i Γράψε Το κατάστημα με το μεγαλύτερο κέρδος, max, είναι το, Κ[θmax]!Υπολογίζουμε και εμφανίζουμε το μέσο κέρδος ΑΘ 0 ΑΘ ΑΘ + ΚΖ[i] ΜΚ ΑΘ / 120 Γράψε 'Το μέσο κέρδος είναι', ΜΚ!Υπολογίζουμε πόσα υποκαταστήματα έχουν λιγότερο κέρδος, από το μισό του!μεγαλύτερου κέρδους που παρουσίασε υποκατάστημα ΠΛ 0 Αν ΚΖ[i] < max/2 τότε ΠΛ ΠΛ + 1 Γράψε 'Λιγότερα από το μισό μέγιστο κέρδος εμφάνισαν', ΠΛ,'καταστήματα.' τέλος Θ4 SCIENCE PRESS