Τα θέματα κρίνονται βατά. Το θέμα Α δε θα δυσκολέψει τους υποψηφίους. Στο θέμα Β εξετάζονται οι κλάσεις, όπως και πέρυσι.
Οι ασκήσεις του είναι μέτριας δυσκολίας.
Το Γ και Δ θέμα είναι αναμενόμενης δυσκολίας.
Ένας καλά προετοιμασμένος υποψήφιος δε θα αντιμετωπίσει πρόβλημα και θα γράψει αρκετά καλά.
Αναλυτικά τα θέματα που μπήκαν:
ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ
HMEΡΗΣΙΩΝ – ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ
ΣΑΒΒΑΤΟ 10 ΙΟΥΝΙΟΥ 2023
ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ
ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5)
ΘΕΜΑ Α
Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση, τη λέξη Σωστό, αν η πρόταση είναι σωστή, ή τη λέξη Λάθος, αν η πρόταση είναι λανθασμένη.
α. Μία συνάρτηση πρέπει να έχει οριστεί πριν χρησιμοποιηθεί.
β. Στην Python δηλώνουμε ποιον τύπο δεδομένων χρησιμοποιούμε.
γ. Η συνάρτηση range(1,7,2) παράγει τη λίστα [1,3,5,7]. δ. Όταν απωθούμε ένα στοιχείο από τη στοίβα πρέπει προηγουμένως να έχουμε εξασφαλίσει ότι η στοίβα δεν είναι κενή.
ε. Ένα αντικείμενο δημιουργείται από μία ειδική μέθοδο που στην αντικειμενοστρεφή ορολογία ονομάζεται κατασκευαστής (constructor).
Μονάδες 15
A2. Να γράψετε στο τετράδιό σας τους αριθμούς 1, 2, 3, 4, 5 από τη στήλη Α του παρακάτω πίνακα και δίπλα σε καθέναν από τους αριθμούς, ένα από τα γράμματα α, β, γ, δ, ε, στ της στήλης Β, που δίνει τη σωστή αντιστοίχιση. Σημειώνεται ότι ένα γράμμα από τη στήλη Β θα περισσέψει.
| ΣΤΗΛΗ Α | ΣΤΗΛΗ Β |
| 1. 5/2 | α. 2.5 |
| 2. 5/float(2) | β. 2 |
| 3. float(5/2) | γ. 5.0 |
| 4. 5/pow(2,0) | δ. 1 |
| 5. 5**2/5.0 | ε. 5 |
| στ. 2.0 |
Μονάδες 10
ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ
ΘΕΜΑ B
Β1. Δίνεται η παρακάτω κλάση:
class Student:
def __init__(self, onoma, vath1, vath2):
self.onoma=onoma
self.vath1=vath1
self.vath2=vath2
όπου onoma είναι το όνομα του σπουδαστή, vath1 η βαθμολογία του στο πρώτο εξάμηνο και vath2 η βαθμολογία του στο δεύτερο εξάμηνο.
α) Να δημιουργήσετε τη μέθοδο με όνομα find_mo(), η οποία θα υπολογίζει και θα επιστρέφει τον μέσο όρο των vath1 και vath2 του σπουδαστή (μον. 4).
β) Να δημιουργήσετε δύο (2) στιγμιότυπα της κλάσης ως εξής: student1, με τιμές των ιδιοτήτων του onoma=”Ιωάννου”, vath1=7, vath2=6 και student2, με τιμές των ιδιοτήτων του onoma=”Αναστασίου”,
vath1=10, vath2=9 (μον.2).
γ) Να βρείτε και να εμφανίσετε το όνομα του στιγμιοτύπου που έχει τον μεγαλύτερο μέσο όρο με χρήση της μεθόδου find_mo() που περιγράφεται στο ερώτημα α. Στην περίπτωση που και τα δύο (2) στιγμιότυπα έχουν τον ίδιο μέσο όρο, να εμφανίσετε και τα δύο (2) ονόματα των στιγμιοτύπων (μον. 6).
Μονάδες 12
B2. Να ξαναγράψετε το παρακάτω τμήμα προγράμματος χρησιμοποιώντας την εντολή επανάληψης for αντί της εντολής επανάληψης while έτσι, ώστε να εμφανίζει το ίδιο αποτέλεσμα.
S=0
i=1
while i<=10:
S=S+i
print S
i=i+2
Μονάδες 5
ΤΕΛΟΣ 2ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 3ΗΣ ΣΕΛΙΔΑΣ
B3. Δίνεται παρακάτω η λίστα Α με πέντε (5) αριθμούς. Αφού μεταφέρετε τον παρακάτω πίνακα στο τετράδιό σας, να εκτελέσετε τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής για την ταξινόμηση των αριθμών σε αύξουσα σειρά,
συμπληρώνοντας παράλληλα τα κενά έτσι, ώστε να φαίνονται τα στοιχεία της λίστας αμέσως μετά από κάθε πέρασμα του αλγορίθμου.
| Α | 7 | 8 | 3 | 4 | ‐2 |
| 1ο πέρασμα | |||||
| 2ο πέρασμα | |||||
| 3ο πέρασμα | |||||
| 4ο πέρασμα |
Μονάδες 8
ΘΕΜΑ Γ
Μία περιβαλλοντική οργάνωση συλλέγει θερμοκρασίες από δέκα (10) πόλεις σε διάστημα τριάντα (30) ημερών. Οι θερμοκρασίες λαμβάνουν τιμές από ‐50°C έως και +50°C.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Γ1. Για κάθε πόλη:
α) Να διαβάζει το όνομά της (μον. 2).
β) Να διαβάζει τη θερμοκρασία της για κάθε μία από τις τριάντα (30) ημέρες. Να γίνεται έλεγχος ορθότητας, ώστε οι θερμοκρασίες που καταχωρίζονται να είναι από ‐50°C έως και +50°C (μον. 8).
Μονάδες 10
Γ2. Να υπολογίζει και να εμφανίζει τον μέσο όρο της θερμοκρασίας κάθε πόλης.
Μονάδες 6
Γ3. Να βρίσκει και να εμφανίζει το πλήθος των πόλεων που έχουν μέσο όρο θερμοκρασίας μικρότερη του μηδενός (0).
Μονάδες 4
Γ4. Να δημιουργεί αρχείο κειμένου με όνομα “thermo.txt”, όπου σε κάθε γραμμή του θα γραφεί το όνομα της πόλης,
ΤΕΛΟΣ 3ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 4ΗΣ ΣΕΛΙΔΑΣ
ακολουθούμενο από έναν κενό χαρακτήρα και τον μέσο όρο της θερμοκρασίας της πόλης.
Μονάδες 5
ΘΕΜΑ Δ
Ένα ηλεκτρονικό κατάστημα καταγράφει τις πωλήσεις των προϊόντων του στο τέλος της ημέρας. Κάθε προϊόν χαρακτηρίζεται από έναν κωδικό. Ο κωδικός αποτελείται από δύο (2) κεφαλαία γράμματα, τα οποία αντιστοιχούν στην χώρα παραγωγής του προϊόντος, και ακολουθείται από οκτώ (8)
ψηφία. Ο κωδικός έχει την παρακάτω δομή (ενδεικτικά): GR12467078
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Δ1. Για κάθε προϊόν:
α) Να διαβάζει τον κωδικό του και να τον καταχωρίζει σε λίστα με όνομα CODE (μον.3).
β) Να διαβάζει την τιμή πώλησης του προϊόντος (μον. 1). γ) Να διαβάζει το πλήθος των τεμαχίων που πωλήθηκαν (μον. 1).
Η εισαγωγή των στοιχείων θα τερματίζεται, όταν δοθεί ως κωδικός προϊόντος η λέξη “ΤΕΛΟΣ“.
Θεωρήστε ότι καταχωρίζονται τουλάχιστον δύο προϊόντα με μη μηδενικές τιμές πώλησης και μη μηδενικό πλήθος τεμαχίων.
Μονάδες 5
Δ2. Να υπολογίζει το ποσό των εσόδων για κάθε προϊόν και να το καταχωρίζει σε λίστα με όνομα ESODA.
Μονάδες 3
Δ3. Να διαβάζει τον κωδικό ενός προϊόντος και να εμφανίζει τα έσοδα από τις πωλήσεις του. Αν ο κωδικός δεν υπάρχει στη λίστα CODE, να εμφανίζει κατάλληλο μήνυμα. Η αναζήτηση του κωδικού να γίνεται με κλήση της συνάρτησης anazitisi,
όπως περιγράφεται στο ερώτημα Δ4.
Μονάδες 5
Δ4. Να υλοποιήσετε τη συνάρτηση με όνομα anazitisi, η οποία να δέχεται τον κωδικό του προϊόντος και τη λίστα CODE, και
ΤΕΛΟΣ 4ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ
ΑΡΧΗ 5ΗΣ ΣΕΛΙΔΑΣ
να επιστρέφει τη θέση στην οποία βρίσκεται ο κωδικός στη λίστα CODE, διαφορετικά να επιστρέφει την τιμή ‐1. Μονάδες 6
Δ5. Να υπολογίζει και να εμφανίζει το ποσοστό των εσόδων των ελληνικών προϊόντων, των οποίων ο κωδικός αρχίζει με GR, στο σύνολο των εσόδων όλων των προϊόντων.
Μονάδες 6
Επισημάνσεις για τα θέματα Γ και Δ
Στην Python η ομάδα εντολών, η οποία εκτελείται μέσα σε μία δομή (επιλογής, επανάληψης, συνάρτησης, κ.λπ.), καθορίζεται ως ένα μπλοκ εντολών με τη χρήση μίας ίδιας εσοχής σε σχέση με την αρχική γραμμή της δομής. Για να είναι εμφανής η ύπαρξη της ίδιας εσοχής, προτείνεται οι μαθητές στο γραπτό τους να σημειώνουν τις εντολές που ανήκουν στο ίδιο μπλοκ με μία κάθετη γραμμή μπροστά από αυτές. Παράδειγμα:
while x<4:
b=b+1
a=a*x
print a, x
if b%2 == 0:
x=x+1
print x
print b


