ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ 216-217 ΜΑΘΗΜΑ / ΤΑΞΗ : Προγραμματισμός Υπολογιστών / Γ ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 22-1-217 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: ΓΙΑΝΝΗΣ ΜΙΧΑΛΕΑΚΟΣ- ΑΝΝΑ ΚΑΤΡΑΚΗ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. α- Λάθος β- Σωστό γ- Σωστό δ- Σωστό ε- Λάθος Α2. Μεταβλητές Λογικοί τελεστές Αριθμητικοί τελεστές Λογικές εκφράσεις Τελεστές σύγκρισης x, y and * x >=1 and x <=99 >=, <= A3. 1 γ 2 α 3 δ Α4. 1- while (class!= Α ) and (class!= B ) : 2- while (vathmos < 1 ) or (vathmos > 2 ) : Παρατήρηση: 1) Η λογική έκφραση στην περίπτωση 1 θα μπορούσε να γραφεί ισοδύναμα και: while not ((class = = Α ) or (class = = B )) : 2) Η λογική έκφραση στην περίπτωση 2 θα μπορούσε να γραφεί ισοδύναμα και: while not ((vathmos>= 1) and (vathmos<= 2)) : A5. (με πορτοκαλί χρώμα τα στοιχεία που συμπληρώνουν τα κενά) g=1 for i in range (1, 6) : g = g * (i ** 2) print g Παρατήρηση: Ισοδύναμα η έκφραση i ** 2 θα μπορούσε να γραφεί : pow(i, 2) Σελίδα 1 από 5
ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ 216-217 ΘΕΜΑ Β Β1. Παραθέτω ενδεικτικό πίνακα τιμών ανά περίπτωση α. x!= Επαναλήψεις print sum x sum false καμία β. x!= Επαναλήψεις print sum x sum 7 1 η +7=7 6 2 η 7+6=13 9 3 η 13+9=22-2 4 η 22= (-2)=2 false 2 Σύμφωνα με τους παραπάνω ενδεικτικούς πίνακες τιμών οι τιμές που εμφανίζονται ανά περίπτωση είναι: α. β. 2 Σελίδα 2 από 5
ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ 216-217 Β2. 1- Λάθος 2- Σωστό 3- Λάθος Β3. Τμήμα Α (με while) y= x= while x < = 9 : y=y + x x=x +1 print y Τμήμα Β ( με while) y= x=8 while x > = : y=y + x x=x -2 print y ΘΕΜΑ Γ # πρόγραμμα Μαραθώνιος gr_ath= # μετράει τις Ελληνίδες αθλήτριες termatisan= # μετράει τους αθλητές που τερμάτισαν best_time= 5.5 # αρχικοποίηση του καλύτερου χρόνου με μια «πλαστή» μεγάλη τιμή for i in range (1, 151) : # βρόχος επανάληψης # εισαγωγή δεδομένων κάθε αθλητή name=raw_input( Δώστε το ονοματεπώνυμο του δρομέα: ) country= raw_input( Δώστε τη χώρα προέλευσης του: ) sex=raw_input( Δώστε το φύλο του. Α για άνδρες ή Γ για γυναίκες: ) # βρόχος που ελέγχει την εγκυρότητα της τιμής που δόθηκε για το φύλο while (sex! = A ) and (sex! = Γ ) : sex=raw_input( Λάθος τιμή για το φύλο. Δώστε ξανά το φύλο του: ) time=float(input( Δώστε το χρόνο που έφερε. Τιμές δεκτές.<= χρόνος<=5. : )) # βρόχος που ελέγχει την εγκυρότητα της τιμής που δόθηκε για τον χρόνο while (time <.) or (time > 5.) : time=float(input( Λάθος τιμή χρόνου. Δώστε ξανά το χρόνο που έφερε : )) # ελέγχω αν είναι Ελληνίδα αθλήτρια if (country = ΕΛΛΑΣ ) and (sex = Γ ) : gr_ath=gr_ath +1 # αυξάνω κατά ένα τον κατάλληλο μετρητή if time! =. : # ελέγχω αν ο αθλητής έχει τερματίσει termatisan= termatisan +1 # αυξάνω κατά ένα τον κατάλληλο μετρητή if (time < best_time) and (sex = Α ) : # βρίσκω τον μικρότερος χρόνος του άνδρα αθλητή name_best_time=name # όνομα αθλητή με τον καλύτερο χρόνο country_best_time=county # χώρα προέλευσης αθλητή με τον καλύτερο χρόνο # για να βρω το ποσοστό αυτών που τερμάτισαν θα διαιρέσω το πόσοι τερμάτισαν # προς αυτούς που πήραν μέρος στον αγώνα (μερικό / ολικό) επί 1 pososto= float((termatisan / 15) * 1) # εμφάνιση αποτελεσμάτων print Στον Μαραθώνιο πήραν μέρος:, gr_ath, Ελληνίδες δρομείς print Το, pososto, % των δρομέων τερμάτισαν Σελίδα 3 από 5
ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ 216-217 print Ο:, name_best_time, από τη χώρα:, country_best_time, έφερε το καλύτερο χρόνο Παρατηρήσεις: Τα ονόματα των μεταβλητών είναι ενδεικτικά. Τα σχόλια είναι προαιρετικά και τοποθετήθηκαν προς διευκόλυνση του αναγνώστη. Ο υπολογισμός του ονόματος και της χώρας του αθλητή με τον καλύτερο χρόνο θα μπορούσε να γίνει ισοδύναμα και με τις εντολές if i= = 1 : if (time! =.) and (sex = Α ) : name_best_time=name country_best_time=county else : if (time! =.) and (time < best_time) and (sex = Α ) : name_best_time=name country_best_time=county ΘΕΜΑ Δ # πρόγραμμα επεξεργασίας αριθμών sum= # ερώτημα Δ1: άθροισμα τιμών που δίνονται counter_number= # μετρητής αριθμών που δίνονται meg_toy_2= # ερώτημα Δ2.β: πόσοι αριθμοί ήταν μεγαλύτεροι του 2 # εισαγωγή 1 ου αριθμού number=int(input( Δώστε ακέραιο αριθμό: )) while (number + sum) < 2 : # ερώτημα Δ1 counter_number=counter_number + 1 # αυξάνω τον κατάλληλο μετρητή if number > 2 : # ερώτημα Δ2.α meg_toy_2=meg_toy_2 +1 # αυξάνω τον κατάλληλο μετρητή # ερώτημα Δ2.γ if counter_number = = 1 : # ελέγχω αν είναι ο 1 ος αριθμός που δόθηκε if (number % 2) = = : # αν είναι άρτιος max=number # τότε αυτός είναι ο μέχρις στιγμή μεγαλύτερος άρτιος else : # από τον 2 ο αριθμό και μετά # αν είναι άρτιος και μεγαλύτερος από τον μέχρις στιγμή μεγαλύτερο άρτιο if ((number % 2) = = ) and (number > max) : max=number # τότε αυτός είναι ο μέχρις στιγμή μεγαλύτερος άρτιος sum=sum + number # αθροίζω τον αριθμό που έδωσε στο συνολικό άθροισμα number=int(input( Δώστε ακέραιο αριθμό: )) # εισάγω νέο αριθμό mo=float(sum / counter_number) # ερώτημα Δ2.β # εμφάνιση αποτελεσμάτων print Δόθηκαν, meg_toy_2, αριθμοί μεγαλύτεροι του 2 # ερώτημα Δ2.α print Μέσος όρος των αριθμών που εισήχθησαν, mo # ερώτημα Δ2.β print Ο μεγαλύτερος άρτιος ακέριος που δόθηκε είναι ο:, max # ερώτημα Δ2.γ Σελίδα 4 από 5
ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ 216-217 Παρατηρήσεις: Τα ονόματα των μεταβλητών είναι ενδεικτικά. Τα σχόλια είναι προαιρετικά και τοποθετήθηκαν προς διευκόλυνση του αναγνώστη. ΤΕΛΟΣ ΑΠΑΝΤΗΣΕΩΝ Σελίδα 5 από 5