ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ 1ο ΓΕΛ ΠΕΥΚΗΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ B' ΤΕΤΡΑΜΗΝΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ Α Α1. Δίνεται το παρακάτω πρόγραμμα σε ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Α2 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: x ΛΟΓΙΚΕΣ: ΑΡΤΙΟΣ, ΠΡΩΤΟΣ ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΔΩΣΕ ΑΚΕΡΑΙΟ x' ΔΙΑΒΑΣΕ x ΜΕΧΡΙΣ_ΟΤΟΥ...(α)... ΑΡΤΙΟΣ <- ΕΙΝΑΙ_ΑΡΤΙΟΣ(x) ΑΝ ΑΡΤΙΟΣ=ΑΛΗΘΗΣ ΤΟΤΕ ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΕ_ΠΡΩΤΟ_ΨΗΦΙΟ(x) ΑΛΛΙΩΣ ΠΡΩΤΟΣ <- ΕΙΝΑΙ_ΠΡΩΤΟΣ(x) ΑΝ ΠΡΩΤΟΣ =ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ 'ΕΙΝΑΙ ΠΡΩΤΟΣ ΑΡΙΘΜΟΣ' ΑΛΛΙΩΣ ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΕ_ΤΕΛΕΥΤΑΙΟ_ΨΗΦΙΟ(x) ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Το πρόγραμμα δέχεται έναν θετικό τριψήφιο αριθμό και αν είναι άρτιος εμφανίζει το πρώτο ψηφίο του. Σε διαφορετική περίπτωση εμφανίζει το μήνυμα 'ΕΙΝΑΙ ΠΡΩΤΟΣ ΑΡΙΘΜΟΣ' αν ο αριθμός είναι πρώτος ή το τελευταίο του ψηφίο αν ο αριθμός δεν είναι πρώτος. Πρώτος αριθμός λέγεται ένας θετικός φυσικός αριθμός που δεν έχει θετικούς διαιρέτες άλλους εκτός από την μονάδα και τον εαυτό του. α) Να συμπληρώσετε το κενό (α) ώστε το πρόγραμμα να δέχεται στην είσοδο μόνο θετικούς τριψήφιους αριθμούς. β) Να αναπτύξετε το υποπρόγραμμα ΕΙΝΑΙ_ΑΡΤΙΟΣ γ) Να αναπτύξετε το υποπρόγραμμα ΕΜΦΑΝΙΣΕ_ΠΡΩΤΟ_ΨΗΦΙΟ δ) Να αναπτύξετε το υποπρόγραμμα ΕΜΦΑΝΙΣΕ_ΤΕΛΕΥΤΑΙΟ_ΨΗΦΙΟ ε) Να αναπτύξετε το υποπρόγραμμα ΕΙΝΑΙ_ΠΡΩΤΟΣ Μονάδες 6 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Α2. Να γράψετε στο τετράδιό σας τον αριθμό των αλγορίθμων της Στήλης Α του παρακάτω πίνακα και δίπλα το γράμμα της Στήλης Β που περιγράφει την λειτουργία που εκτελείται. Θεωρείστε τα στοιχεία του πίνακα Τ[20] και το n, i, j θετικούς ακεραίους. Σε κάθε αριθμό της Στήλης Α αντιστοιχεί ένα γράμμα. Δυο στοιχεία της Στήλης Β περισσεύουν. Στήλη Α 1) Για i από 2 μέχρι 20 Για j από 20 μέχρι i Aν Τ[j-1]>T[j] τότε Αντιμετάθεσε Τ[j-1],T[j] Τέλος_Επανάληψης Τέλος_Επανάληψης 2) Αν n<=20 τότε n n+1 ΠΙΝ[n] i 3) n 0 Οσο Τ[2] > 0 επανάλαβε Αν Τ[2] mod 2 = 1 τότε n n+t[1] Τ[1] T[1]*2 T[2] Τ[2] div 2 Εμφάνισε n 4) Αν n>0 τότε Εμφάνισε Τ[n] n n-1 5) Τ[2] Τ[2] +Τ[1] Τ[1] Τ[2] -Τ[1] Τ[2] Τ[2] -Τ[1] Στήλη Β α) Φθίνουσα ταξινόμηση β) Ώθηση σε στοίβα με έλεγχο για υπερχείλιση γ) Αύξουσα ταξινόμηση δ) Εμφάνιση γινομένου των δυο πρώτων στοιχείων του πίνακα ε) Αντιμετάθεση των δυο πρώτων στοιχείων του πίνακα στ) Απώθηση από στοίβα με έλεγχο για υποχείλιση ζ) Απώθηση από στοίβα με έλεγχο για υπερχείλιση Μονάδες 10 ΤΕΛΟΣ 2ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 3ΗΣ ΣΕΛΙΔΑΣ Α3. Ο παρακάτω αλγόριθμος αποτελεί τμήμα αλγορίθμου μη δομημένου προγράμματος. Η εντολή GOTO μεταβιβάζει την εκτέλεση στην γραμμή με τον αριθμό που την ακολουθεί. Α 0 Κ 100 10: ΑΝ Κ<0 ΤΟΤΕ GOTO 60 Λ 4 20: ΑΝ Λ>80 ΤΟΤΕ GOTO 70 ΓΡΑΨΕ Κ^2 + Λ^2 Λ Λ +4 GOTO 20 70: K K -1 GOTO 10 60: ΓΡΑΨΕ 'ΤΕΛΟΣ' α) Να σχεδιάσετε το διάγραμμα ροής β) Να γράψετε αλγόριθμο σχεδιασμένο με τις αρχές του δομημένου προγραμματισμού που να εκτελεί τις ίδιες λειτουργίες. Μονάδες 6 ΘΕΜΑ Β O παρακάτω αλγόριθμος ταξινομεί τον πίνακα table[n] με την μέθοδο της ευθείας ανταλλαγής. Αλγόριθμος Φυσσαλίδα Δεδομένα // table, n // Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα 1 Αν table[j-1] > table[j] τότε αντιμετάθεσε table[j-1], table[j] Τέλος_αν Αποτελέσματα // table // Τέλος Φυσσαλίδα Έστω ότι δίνεται σαν είσοδο στον αλγόριθμο ο πίνακας table[4] με στοιχεία [12,11,7,13]. Β1. α) Πόσες φορές γίνεται η σύγκριση table[j-1]> table[j] β)πόσες φορές εκτελείται η εντολή αντιμετάθεσε table[j-1], table[j]; γ) Για ποιές τιμές των μεταβλητών i και j η λογική έκφραση table[j-1]> table[j] γίνεται αληθής; Β2. Να συμπληρώσετε τις απαραίτητες μεταβλητές και εντολές ώστε ο αλγόριθμος να εμφανίζει τις πληροφορίες του ερωτήματος Β1 για κάθε πίνακα table[n]. Μονάδες 6 Β3. Να αναπτύξετε αλγόριθμο ο οποίος θα δέχεται στην είσοδο έναν μονοδιάστατο πίνακα και θα ΤΕΛΟΣ 3ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 4ΗΣ ΣΕΛΙΔΑΣ εμφανίζει το μήνυμα 'ΤΑΞΙΝΟΜΗΜΕΝΟΣ' αν ο πίνακας είναι ταξινομημένος σε φθίνουσα σειρά. Σε διαφορετική περίπτωση να εμφανίζει το μήνυμα 'ΜΗ ΤΑΞΙΝΟΜΗΜΕΝΟΣ'. Μονάδες 8 ΘΕΜΑ Γ Το Sudoku παίζεται μέσα σε έναν πίνακα 9x9 που διαιρείται σε υποπίνακες 3x3 που ονομάζονται "περιοχές": Το παιχνίδι ξεκινάει με μερικά από τα στοιχεία του πίνακα γεμάτα με αριθμούς από το 1 ως το 9. Σκοπός του είναι να εισάγεις έναν αριθμό από το 1 έως το 9 σε κάθε τετράγωνο. Κάθε στήλη πρέπει να έχει και τους 9 αριθμούς. Το ίδιο ισχύει για κάθε γραμμή και για κάθε περιοχή. Με άλλα λόγια τα 9 τετράγωνα κάθε γραμμής, στήλης και περιοχής πρέπει να συμπληρωθούν με τους 9 αριθμούς, χωρίς όμως να επαναλαμβάνεται κάποιος από αυτούς. Να αναπτύξετε τα εξής υποπρογράμματα: Γ1. Συνάρτηση ΓΡΑΜΜΗ_ΣΤΗΛΗ που θα δέχεται στην είσοδο τον πίνακα 9x9, τους αριθμούς γραμμής και στήλης ενός τετραγώνου και ένα αριθμό και θα επιστρέφει την τιμή ΑΛΗΘΗΣ αν ο αριθμός δεν υπάρχει ήδη στην αντίστοιχη γραμμή και στην αντίστοιχη στήλη. Σε διαφορετική περίπτωση θα επιστρέφει την τιμή ΨΕΥΔΗΣ. Γ2. Συνάρτηση ΠΕΡΙΟΧΗ που θα δέχεται σαν είσοδο τον πίνακα 9x9, τον αριθμό της γραμμής και τον αριθμό sτης στήλης του πάνω αριστερά τετραγώνου μιας περιοχής και έναν αριθμό, και θα επιστρέφει την τιμή ΑΛΗΘΗΣ αν ο αριθμός δεν στην περιοχή. Σε διαφορετική περίπτωση θα επιστρέφει την τιμή ΨΕΥΔΗΣ Γ3. Διαδικασία ΣΥΜΠΛΗΡΩΜΕΝΗ_ΠΕΡΙΟΧΗ η οποία δέχεται σαν είσοδο τον πίνακα 9x9, τον αριθμό γραμμής και τον αριθμό της στήλης του πάνω αριστερά τετραγώνου μιας περιοχής και τυπώνει το μήνυμα 'ΕΓΚΥΡΗ ΠΕΡΙΟΧΗ' αν η περιοχή είναι συμπληρωμένη σύμφωνα με τους κανόνες του παιχνιδιού, δηλαδή με όλα τα ψηφία από 1 έως 9. Σε διαφορετική περίπτωση θα πρέπει να τυπώνεται το μήνυμα 'ΕΛΛΙΠΗΣ' αν υπάρχουν τετράγωνα που δεν έχουν πάρει τιμή, και το μήνυμα 'ΕΛΕΓΧΟΣ ΨΗΦΙΩΝ' ακολουθούμενο από το ή τα ψηφία που υπάρχουν στην περιοχή πάνω από μία φορές. Να θεωρήσετε ότι τα τετράγωνα που δεν έχουν πάρει τιμή έχουν την τιμή 0. Μονάδες 10 ΤΕΛΟΣ 4ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 5ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Δ Στα πλαίσια της δημοσιονομικής προσαρμογής οι μισθοί ενός οργανισμού με 100 εργαζόμενους πρέπει να περικοπούν ως εξής: Ο μέγιστος μισθός μετά τις περικοπές δεν πρέπει να υπερβαίνει τα 3000 Ευρώ Οι μισθοί πάνω από 1600 Ευρώ να περικοπούν κατά 25%. Οι μισθοί από τα 1200 ως τα 1599 Ευρώ να περικοπούν κατά 15%. Οι μισθοί κάτω από 1200 ευρώ να περικοπούν κατά 7% Να γράψετε αλγόριθμο που θα: Δ1. Εισάγει σε πίνακες ΟΝ[100] και ΜΙΣΘ[100] τα ονόματα και τις αμοιβές των εργαζομένων πριν τις περικοπές. Δ2. Να υπολογίζει τον νέο μισθό κάθε εργαζόμενου και να τον αποθηκεύει σε πίνακα Ν_ΜΙΣΘ[100]. Δ3. Να υπολογίζει το εκατοστιαίο ποσοστό των περικοπών που έγιναν στο συνολικό μισθολογικό κόστος του οργανισμού. Δ4. Να εμφανίζει τα ονόματα των εργαζομένων που έχουν υποστεί την μέγιστη και την ελάχιστη περικοπή, και το ποσό της περικοπής. Δ5. Να εμφανίζει τον μέσο μισθό του οργανισμού πριν και μετά τις περικοπές. Να μην χρησιμοποιηθούν άλλοι πίνακες εκτός από αυτούς που δίνονται στην εκφώνηση. ΤΕΛΟΣ 5ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ