Κανάρη 36, Δάφνη Τηλ. 210 9713934 & 210 9769376
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ο.Π. ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
Θέμα Α A1. Να γράψετε τον αριθμό καθεμιάς από τις παρακάτω προτάσεις και δίπλα το γράμμα Σ, αν είναι σωστή, ή το γράμμα Λ, αν είναι λανθασμένη. 1.
Η εντολή Α < Β εκτελείται κανονικά στην περίπτωση όπου η μεταβλητή Α είναι δηλωμένη στις πραγματικές μεταβλητές ενώ η μεταβλητή Β είναι δηλωμένη στις ακέραιες μεταβλητές.
2.
Σε ένα τμήμα κώδικα με τέσσερις απλές επιλογές, η μία κάτω από την άλλη, είναι δυνατόν να εκτελεστούν δύο από αυτές.
3.
Οι πίνακες είναι δομές δεδομένων δευτερεύουσας μνήμης.
4.
Στην εντολή Χ < ΜΙΝ(Α) το όνομα ΜΙΝ είναι μόνο όνομα μεταβλητής και όχι όνομα υποπρογράμματος.
5.
Ένα αντικείμενο πρόγραμμα μπορεί να έχει προέλθει από ένα πηγαίο πρόγραμμα με λογικά λάθη. Μονάδες 10
A2. 1.
Να αναφέρετε σύντομα τις τυπικές επεξεργασίες των στοιχείων ενός πίνακα. Μονάδες 5
2.
Να αναφέρετε σύντομα τα χαρακτηριστικά των υποπρογραμμάτων. Μονάδες 6
Α3. Δίνεται το παρακάτω τμήμα αλγορίθμου σε ψευδογλώσσα: Διάβασε A, B Αν A < B τότε Αντιμετάθεσε A, B Β Β div 2
ΓΑ/Β ΔΓ<Β Ζ0 Για Ι από 1 μέχρι Α με_βήμα 1.5 ΖΖ+Ι Τέλος_επανάληψης Εμφάνισε Α, Β, Γ, Δ, Ζ Να κωδικοποιήσετε το παραπάνω τμήμα αλγορίθμου σε τμήμα προγράμματος σε ΓΛΩΣΣΑ, συμπληρώνοντάς το με κατάλληλο τμήμα δήλωσης μεταβλητών. Μονάδες 6 Α4. Δίνονται τα παρακάτω τμήματα αλγορίθμου: Τμήμα αλγορίθμου Α
Τμήμα αλγορίθμου Β
Διάβασε Χ Υ0 Αν Χ <= 0 τότε ΥΥ+1 αλλιώς ΥΥ+2 Τέλος_αν Αν Χ <= 100 τότε ΥΥ+3 αλλιώς ΥΥ+4 Τέλος_αν Εμφάνισε Υ
Διάβασε Χ Αν Χ > …… τότε Υ… αλλιώς_αν Χ > …… τότε Υ… αλλιώς Υ… Τέλος_αν Εμφάνισε Υ
Να γράψετε το τμήμα αλγορίθμου Β με κάθε κενό συμπληρωμένο με μία σταθερά έτσι ώστε να είναι ισοδύναμο με το τμήμα αλγορίθμου Α. Μονάδες 5 Α5. Δίνεται το παρακάτω τμήμα προγράμματος: ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ N ΜΕΧΡΙΣ_ΟΤΟΥ 1 <= Ν ΚΑΙ Ν <= 20 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ N ΓΡΑΨΕ Ι ΔΙΑΒΑΣΕ X[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ S < 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ N S < S + X[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ < S / N ΓΡΑΨΕ ΜΟ MAX < X[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ N ΑN MAX < X[I] TOTE MAX < X[I] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΜΑΧ Το παραπάνω τμήμα προγράμματος διαβάζει το πολύ 20 ακέραιες τιμές και αφού τις αποθηκεύσει στον πίνακα Χ, υπολογίζει και εμφανίζει τον μέσο όρο τους και τη μέγιστη τιμή τους. α.
Να γράψετε κατάλληλο τμήμα δήλωσης μεταβλητών για το παραπάνω τμήμα προγράμματος. Μονάδες 3
β.
Να ξαναγράψετε το παραπάνω τμήμα προγράμματος χρησιμοποιώντας αποκλειστικά και μόνο μία φορά αντί για τρεις την εντολή ΓΙΑ. Μονάδες 5
Θέμα Β Δίνεται το παρακάτω τμήμα προγράμματος, στο οποίο έχουν αριθμηθεί οι γραμμές: 01: 02: 03: 04: 05: 06: 07: 08: 09: 10:
Α < –2 Χ < 10 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Υ < Χ + Α Χ < Χ – Α A < Α + 3 ΑΝ A MOD 2 = 0 ΤΟΤΕ Β < A + Α_Τ(Χ) ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ Α > Χ
Δίνεται επίσης υπόδειγμα πίνακα τιμών μερικώς συμπληρωμένου με τις τιμές των μεταβλητών, όπως θα προκύψουν από την εκτέλεση των τεσσάρων πρώτων εντολών: Α/Α Α 01: 02:
Χ
…
B
Συνθήκη
–2 10
04: 05:
Υ
8 12 … … … …
…
Στη στήλη με τίτλο «A /A» καταγράφεται ο αριθμός γραμμής της εντολής που εκτελείται. Στη στήλη με τίτλο «Συνθήκη» καταγράφεται η λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥ∆ΗΣ, εφόσον η εντολή που εκτελείται περιλαμβάνει συνθήκη. Στις υπόλοιπες στήλες καταγράφεται η νέα τιμή της μεταβλητής που επηρεάζεται αν η εντολή που εκτελείται είναι εντολή εκχώρησης.
Να συμπληρώσετε τον πίνακα εκτελώντας τις εντολές του τμήματος προγράμματος ως εξής: Για κάθε εντολή που εκτελείται να γράψετε σε νέα γραμμή του πίνακα τον αριθμό της γραμμής της και το αποτέλεσμά της στην αντίστοιχη στήλη. Σημείωση Οι εντολές των γραμμών 3 και 9 δεν χρειάζεται να αποτυπωθούν στον πίνακα. Μονάδες 20 Θέμα Γ Στο Πανελλήνιο πρωτάθλημα στίβου νέων ανδρών (Κ23), το όριο πρόκρισης στον τελικό του αγωνίσματος «άλμα επί κοντώ» είναι τα 4,40 μέτρα. Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο για τον ημιτελικό του αγωνίσματος: Γ1. Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων. Μονάδες 2 Γ2. Να διαβάζει το πλήθος των αθλητών που συμμετέχουν ελέγχοντας ότι είναι θετικός ακέραιος. Μονάδες 2 Γ3. Για κάθε αθλητή που συμμετέχει: 1.
Να διαβάζει το ονοματεπώνυμό του και το όνομα του συλλόγου στον οποίον ανήκει. Μονάδες 2
2.
Να διαβάζει την καλύτερη έγκυρη επίδοσή του σε μέτρα. Να γίνεται έλεγχος ώστε η επίδοση αυτή να είναι θετικός πραγματικός αριθμός με το πολύ δύο δεκαδικά ψηφία. Να θεωρήσετε ότι κάθε αθλητής που συμμετέχει έχει μία τουλάχιστον έγκυρη επίδοση. Μονάδες 2
3.
Να εμφανίζει το μήνυμα «Προκρίθηκε: » και ονοματεπώνυμό του εφόσον που έφτασε ή ξεπέρασε το όριο πρόκρισης. Μονάδες 2
Γ4. Να εμφανίζει το πλήθος των αθλητών που προκρίθηκαν στον τελικό. Μονάδες 3 Γ5. Να εμφανίζει το ποσοστό των αθλητών που έχασαν το όριο πρόκρισης για το πολύ δέκα εκατοστά επί του συνόλου των αθλητών που συμμετέχουν στον ημιτελικό. Αν δεν υπάρχουν τέτοιοι να εμφανίζει αντίστοιχο μήνυμα. Μονάδες 3 Γ6. Να εμφανίζει το ονοματεπώνυμο του αθλητή με την καλύτερη έγκυρη επίδοση στον ημιτελικό του αγωνίσματος καθώς και το όνομα του συλλόγου στον οποίον ανήκει. Να θεωρήσετε ότι είναι μοναδικός. Μονάδες 4 Θέμα Δ Η ΝΑΥΜΑΧΙΑ είναι ένα επιτραπέζιο παιχνίδι που παίζεται με δύο ομάδες. Ο σκοπός του παιχνιδιού είναι η κάθε ομάδα να βυθίσει ένα – ένα όλα τα πλοία της άλλης, ώστε να καταστραφεί ο στόλος της.
Η κάθε ομάδα έχει στη διάθεσή της δύο ταμπλό με 100 τετράγωνα (10 10) , ένα κύριο και ένα βοηθητικό, πέντε (5) πλοία και εικοσιπέντε (25) βόμβες. Αρχικά, η κάθε ομάδα τοποθετεί στο κύριο ταμπλό της τα πλοία της. Τα πλοία αυτά είναι: 1 ναρκαλιευτικό που καταλαμβάνει 2 τετράγωνα 1 υποβρύχιο που καταλαμβάνει 3 τετράγωνα 1 κανονιοφόρος που καταλαμβάνει 3 τετράγωνα 1 φρεγάτα που καταλαμβάνει 4 τετράγωνα 1 αεροπλανοφόρο που καταλαμβάνει 5 τετράγωνα Κάθε πλοίο καταλαμβάνει συνεχόμενα τετράγωνα και μπορεί να τοποθετηθεί οριζόντια ή κάθετα (όχι διαγώνια). Δίνεται παρακάτω ένα παράδειγμα τοποθέτησης πλοίων: 1 2 3 4 5 6 7 8 9 10 1 2
Π
Π
Π
3
Π
Π
4
Π
Π
5
Π
6
Π
7
Π
Π
Π
Π
Π
8 9 10
Π
Π
Π
Μετά την τοποθέτηση των πλοίων, το κύριο ταμπλό τής κάθε ομάδας παριστάνει τα πλοία της αγκυροβολημένα μέσα στη θάλασσα. Φυσικά, η κάθε ομάδα δεν γνωρίζει πού έχει αγκυροβολήσει (τοποθετήσει) τα πλοία της η άλλη ομάδα. Αφού αποφασίσουν ποια ομάδα θα παίξει πρώτη, οι δύο ομάδες παίζουν εναλλάξ. Η κάθε ομάδα δηλώνει το τετράγωνο στο οποίο ρίχνει τη βόμβα της και σημειώνει τη βολή στο βοηθητικό ταμπλό της, ώστε να θυμάται τη βολή της, ενώ η αντίπαλη ομάδα σημειώνει τη βολή στο κύριο ταμπλό της. Η ομάδα που δέχεται βολή είναι υποχρεωμένη να ανακοινώσει στην αντίπαλη ομάδα την επιτυχία ή την αποτυχία της βολής. Το παιχνίδι τελειώνει είτε όταν μία ομάδα βυθίσει τον στόλο της άλλης είτε όταν τελειώσουν οι βόμβες και των δύο ομάδων. Στη δεύτερη περίπτωση καταμετρούνται οι βολές που δέχθηκε κάθε ομάδα στα πλοία της και είτε νικήτρια ανακηρύσσεται η ομάδα που δέχθηκε τα λιγότερα κτυπήματα είτε το παιχνίδι λήγει ισόπαλο. Για την υλοποίηση του παιχνιδιού στο προγραμματιστικό περιβάλλον της ΓΛΩΣΣΑΣ να αναπτύξετε: Δ1. Το κύριο πρόγραμμα ΝΑΥΜΑΧΙΑ το οποίο: 1. Να περιλαμβάνει κατάλληλο τμήμα δήλωσης μεταβλητών. Μονάδα 1
2.
Να αρχικοποιεί τους πίνακες Ο1Κ[10,10], Ο1Β[10,10], Ο2Κ[10,10] και Ο2Β[10,10] με το χαρακτήρα κενό, δηλαδή την τιμή « » (space), σε κάθε κελί τους. Οι πίνακες Ο1Κ και Ο1Β αποτελούν αντίστοιχα τον κύριο και τον βοηθητικό πίνακα της Ομάδας 1. Οι πίνακες Ο2Κ και Ο2Β αποτελούν αντίστοιχα τον κύριο και τον βοηθητικό πίνακα της Ομάδας 2. Μονάδες 2
3.
Να καλεί τη διαδικασία ΔΕΔΟΜΕΝΑ_ΟΜΑΔΑΣ μία φορά για κάθε ομάδα. Η διαδικασία να δέχεται ως παράμετρο τον κύριο πίνακα της ομάδας όπως έχει αρχικοποιηθεί στο προηγούμενο ερώτημα. Η διαδικασία πρέπει να επιστρέφει τον κύριο πίνακα της ομάδας με τα πλοία τοποθετημένα στις θέσεις τους. Όποιο κελί του κύριου πίνακα της ομάδας είναι κατειλημμένο από πλοίο η διαδικασία θα έχει τοποθετήσει τον χαρακτήρα «Π». Την διαδικασία αυτή θα υλοποιήσετε σε επόμενο ερώτημα. Μονάδες 2
4.
Να υλοποιεί την διαδικασία των εναλλάξ βολών της κάθε ομάδας. Πρώτη ξεκινάει η ομάδα 1. Για κάθε βολή, αφού εμφανίσει το όνομα της ομάδας που την πραγματοποιεί, να δέχεται τις συντεταγμένες (Γ, Σ) του κελιού που βάλλεται. Θα πρέπει να γίνεται έλεγχος ώστε οι συντεταγμένες που δίνονται να είναι ακέραιες από 1 έως και 10 και το κελί που βάλλεται να μην έχει βληθεί προηγουμένως. Εφόσον οι συντεταγμένες που δίνονται είναι σωστές, να σημειώνεται η βολή στον βοηθητικό πίνακα της ομάδας που την πραγματοποιεί καθώς και στον κύριο πίνακα της ομάδας που τη δέχεται. Στους δύο αυτούς πίνακες και στο κελί με αυτές τις συντεταγμένες να εισάγει τον χαρακτήρα «Χ» στην περίπτωση όπου η βολή είναι επιτυχημένη ή τον χαρακτήρα «Ο» στην αντίθετη περίπτωση. Επίσης, να εμφανίζει αντίστοιχο μήνυμα για την επιτυχία ή την αποτυχία της βολής. Μονάδες 5
5.
Στο τέλος του παιχνιδιού, να εμφανίζει ένα από τα μηνύματα «Νίκησε η Ομάδα 1», «Νίκησε η Ομάδα 2» ή «Ισοπαλία», ανάλογα με το αποτέλεσμα του παιχνιδιού. Μονάδες 2
Δ2. Τη διαδικασία ΔΕΔΟΜΕΝΑ_ΟΜΑΔΑΣ η οποία να δέχεται ως παράμετρο τον κύριο πίνακα μιας ομάδας και να καλεί τη διαδικασία ΣΤΟΙΧΕΙΑ_ΠΛΟΙΟΥ πέντε (5) φορές, μία για κάθε πλοίο. Η διαδικασία ΣΤΟΙΧΕΙΑ_ΠΛΟΙΟΥ περιγράφεται στο επόμενο ερώτημα. Μονάδες 2 Δ3. Τη διαδικασία ΣΤΟΙΧΕΙΑ_ΠΛΟΙΟΥ η οποία να δέχεται ως παραμέτρους τον αριθμό των θέσεων που καταλαμβάνει ένα πλοίο (2, 3, 4 ή 5) και τον κύριο πίνακα μιας ομάδας. Να διαβάζει τις συντεταγμένες (Γ, Σ) του πρώτου (πλώρη) από τα κελιά στα οποία η ομάδα επιλέγει να τοποθετήσει το πλοίο καθώς και έναν από τους χαρακτήρες «Ο» (για οριζόντια τοποθέτηση) ή «Κ» (για κατακόρυφη τοποθέτηση) στη μεταβλητή ΟΚ. Να γίνεται έλεγχος ώστε οι συντεταγμένες που δίνονται να είναι ακέραιες από 1 έως και 10 και η τιμή της μεταβλητής ΟΚ να είναι μόνο «Ο» ή «Κ». Να καλεί τη διαδικασία ΕΙΣΑΓΩΓΗ_ΠΛΟΙΟΥ η οποία μεταξύ άλλων θα επιστρέφει στη μεταβλητή flag την τιμή ΑΛΗΘΗΣ αν η εισαγωγή του πλοίου πραγματοποιήθηκε, ή την τιμή ΨΕΥΔΗΣ αν η εισαγωγή
του πλοίου δεν είναι δυνατή στη θέση που επιλέχθηκε από την ομάδα. Ανάλογα με την τιμή της μεταβλητής flag, η διαδικασία να εμφανίζει αντίστοιχο μήνυμα. Μονάδες 2 Δ4. Τη διαδικασία ΕΙΣΑΓΩΓΗ_ΠΛΟΙΟΥ η οποία να δέχεται ως παραμέτρους τον αριθμό των θέσεων που καταλαμβάνει ένα πλοίο, τις συντεταγμένες (Γ, Σ) της πλώρης, τη μεταβλητή ΟΚ και τον κύριο πίνακα μιας ομάδας. Η διαδικασία να εξετάζει αν η εισαγωγή του πλοίου είναι δυνατή στη θέση που επιλέχθηκε από την ομάδα. Στην περίπτωση όπου η εισαγωγή του πλοίου είναι δυνατή, να τοποθετεί στα κελιά τα οποία καταλαμβάνει το πλοίο τον χαρακτήρα «Π» και να δίνει στη μεταβλητή flag την τιμή ΑΛΗΘΗΣ. Στην αντίθετη περίπτωση να δίνει στη μεταβλητή flag την τιμή ΨΕΥΔΗΣ. Κατόπιν, να επιστρέφει τον κύριο πίνακα της ομάδας και την τιμή της μεταβλητής flag. Μονάδες 4
ΕΠΙΜΕΛΕΙΑ: ΚΑΡΑΪΣΚΟΣ ΠΑΝΑΓΙΩΤΗΣ