Λύσεις — Κεφάλαιο 4: Αλγοριθμικές δομές (σελ. 50-54) – ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Γ΄ ΕΠΑΛ

Λύσεις — Κεφάλαιο 4: Αλγοριθμικές δομές (σελ. 50-54)

Λύσεις των τριών άλυτων ενσωματωμένων δραστηριοτήτων του κεφαλαίου 4: ανάλυση και τροποποίηση του προγράμματος δείκτη UV, συμπλήρωση συνθήκης while, περιγραφή του παιχνιδιού μαντέματος.


Δραστηριότητα — Εμφωλευμένες δομές επιλογής (πρόγραμμα δείκτη UV)

Ερώτηση: Α) Μελετήστε το παρακάτω πρόγραμμα. Τι θα τυπώσει το παρακάτω πρόγραμμα για τιμές 1, 7, 9, 16; Τι πιστεύετε ότι κάνει το πρόγραμμα; Β) Να τροποποιηθεί κατάλληλα το παρακάτω πρόγραμμα, ώστε να περιέχει και την περίπτωση που ο χρήστης δώσει, κατά λάθος, ως βαθμό έναν αρνητικό αριθμό. (Πρόγραμμα ελέγχου υπεριώδους ακτινοβολίας, σελ. 50-51)

Απάντηση:

  • Α) Έξοδος για κάθε τιμή — ακολουθούμε τα εμφωλευμένα if: πρώτα uv <= 15, μετά uv >= 11, μετά uv >= 6, μετά uv >= 0:
  • uv = 1: 1 ≤ 15 → όχι ≥ 11 → όχι ≥ 6 → 1 ≥ 0 → τυπώνει «Ελάχιστος ή μικρός κίνδυνος».
  • uv = 7: 7 ≤ 15 → όχι ≥ 11 → 7 ≥ 6 → τυπώνει «Μεγάλος ή Πολύ μεγάλος κίνδυνος».
  • uv = 9: ίδια διαδρομή με το 7 → «Μεγάλος ή Πολύ μεγάλος κίνδυνος».
  • uv = 16: 16 > 15 → η εξωτερική συνθήκη είναι ψευδής → «Ο αριθμός που έδωσες υπερβαίνει το 15. Μη αποδεκτή τιμή!».
  • Τι κάνει το πρόγραμμα: διαβάζει τον δείκτη UV (μέτρο επικινδυνότητας της ηλιακής υπεριώδους ακτινοβολίας) και τον κατατάσσει σε επίπεδο κινδύνου με εμφωλευμένες δομές επιλογής: 0-5.9 ελάχιστος/μικρός, 6-10.9 μεγάλος/πολύ μεγάλος, 11-15 ακραία κατάσταση, ενώ τιμές > 15 απορρίπτονται ως μη αποδεκτές. Αδυναμία: για αρνητική τιμή (π.χ. −3) όλες οι εσωτερικές συνθήκες αποτυγχάνουν (−3 ≥ 0 ψευδής) και το πρόγραμμα δεν τυπώνει τίποτα — δεν υπάρχει else για την περίπτωση αυτή.
  • Β) Τροποποίηση — προσθέτουμε else στο εσωτερικότερο if uv >= 0 (ή ισοδύναμα ελέγχουμε πρώτα την εγκυρότητα 0 ≤ uv ≤ 15):
  • # Πρόγραμμα ελέγχου υπεριώδους ακτινοβολίας (με έλεγχο αρνητικής τιμής)
    uv = input(' Παρακαλώ δώσε έναν αριθμό έκθεσης δείκτη UV: ')
    if uv <= 15:
        if uv >= 11:
            print ' Ακραία κατάσταση κινδύνου '
        else:
            if uv >= 6:
                print ' Μεγάλος ή Πολύ μεγάλος κίνδυνος '     # 6 <= uv < 11
            else:
                if uv >= 0:
                    print 'Ελάχιστος ή μικρός κίνδυνος'       # 0 <= uv < 6
                else:                                          # uv < 0  (ΝΕΟ)
                    print 'Έδωσες αρνητικό αριθμό. Μη αποδεκτή τιμή!'
    else:                                                      # uv > 15
        print 'Ο αριθμός που έδωσες υπερβαίνει το 15. Μη αποδεκτή τιμή!'
  • Εναλλακτικά, πιο καθαρά, με πολλαπλή επιλογή if uv < 0 or uv > 15: … elif uv >= 11: … elif uv >= 6: … else: … — ίδιο αποτέλεσμα. (Python 3: input()float(input(...)), print(...).)

Σύνοψη: Α) 1 → «Ελάχιστος ή μικρός κίνδυνος», 7 και 9 → «Μεγάλος ή Πολύ μεγάλος κίνδυνος», 16 → «υπερβαίνει το 15. Μη αποδεκτή τιμή!»· κατατάσσει τον δείκτη UV σε επίπεδα κινδύνου. Β) προσθήκη else στο if uv >= 0 (ή έλεγχος uv < 0 or uv > 15) με μήνυμα μη αποδεκτής αρνητικής τιμής.

Κριτήρια αξιολόγησης:

  • Οι τέσσερις έξοδοι ακριβώς, η περιγραφή, και ο κώδικας με το νέο else — να μην αλλάζει τη συμπεριφορά για τις έγκυρες τιμές.

Δραστηριότητα — Συμπλήρωση συνθήκης while (έλεγχος εγκυρότητας βαθμού 0-20)

Ερώτηση: Συμπλήρωσε κατάλληλα την παρακάτω συνθήκη, έτσι ώστε να εξασφαλίζεται ότι ο χρήστης θα εισάγει τελικά την τιμή 0-20 για το βαθμό στο μάθημα Εφαρμογές Πληροφορικής. #Έλεγχος εισαγωγής δεδομένων / choice = input(' Δώστε το βαθμό που πήρατε στο μάθημα Εφαρμογές Πληροφορικής') / while …….. ……… ……...: / choice = input ('Παρακαλώ δώστε έγκυρη τιμή ')

Απάντηση:

  • Ο βρόχος while πρέπει να επαναλαμβάνεται όσο η τιμή είναι ΜΗ έγκυρη, δηλαδή όσο είναι μικρότερη από 0 ή μεγαλύτερη από 20:
  • #Έλεγχος εισαγωγής δεδομένων
    choice = input(' Δώστε το βαθμό που πήρατε στο μάθημα Εφαρμογές Πληροφορικής')
    while choice < 0 or choice > 20:
        choice = input ('Παρακαλώ δώστε έγκυρη τιμή ')
  • Γιατί or και όχι and: η συνθήκη του while είναι η συνθήκη συνέχισης (όσο ισχύει, ξαναζητάμε τιμή). Μια τιμή είναι άκυρη αν παραβιάζει οποιοδήποτε από τα δύο όρια, άρα choice < 0 or choice > 20. Η choice < 0 and choice > 20 δεν ικανοποιείται ποτέ (κανένας αριθμός δεν είναι ταυτόχρονα < 0 και > 20) και ο βρόχος δεν θα εκτελούνταν ποτέ.
  • Ισοδύναμη γραφή με άρνηση της συνθήκης εγκυρότητας: while not (0 <= choice <= 20): ή while not (choice >= 0 and choice <= 20):.
  • Λειτουργία: η πρώτη input δίνει αρχική τιμή στη μεταβλητή (Σημείωση 2 του βιβλίου)· ο βρόχος ελέγχει πριν από κάθε επανάληψη — αν η πρώτη τιμή είναι έγκυρη, το μπλοκ δεν εκτελείται καθόλου· διαφορετικά ζητά νέα τιμή μέχρι να δοθεί βαθμός στο [0, 20] (η νέα ανάθεση μέσα στο μπλοκ είναι αυτή που κάποτε κάνει τη συνθήκη ψευδή — Σημείωση 1).

Σύνοψη: while choice < 0 or choice > 20: (ή while not (0 <= choice <= 20):) — επανάληψη όσο η τιμή είναι εκτός [0, 20].

Κριτήρια αξιολόγησης:

  • Η σωστή συνθήκη με or· εξήγηση γιατί όχι and.

Δραστηριότητα — Δομή επανάληψης: τι κάνει το πρόγραμμα (τίτλος)

Ερώτηση: Βρείτε τι κάνει το παρακάτω πρόγραμμα και δώστε με μία πρόταση ένα χαρακτηριστικό τίτλο. (import random / thenum = random.randint(1,10) / … while guess != thenum: guess = input("Δώσε αριθμό: ") … — σελ. 54-55)

Απάντηση:

  • Ανάλυση γραμμή προς γραμμή: import random εισάγει τη βιβλιοθήκη τυχαίων αριθμών· thenum = random.randint(1,10) επιλέγει τυχαίο ακέραιο από 1 έως και 10 (ο «αύξων αριθμός» του υποψηφίου που ψήφισε το πρόγραμμα)· τυπώνει δύο μηνύματα-πρόκληση· guess = 0 δίνει αρχική τιμή στη μεταβλητή της συνθήκης (ώστε 0 ≠ thenum και ο βρόχος να ξεκινήσει)· while guess != thenum:μη προκαθορισμένη επανάληψη όσο ο χρήστης δεν έχει βρει τον αριθμό· σε κάθε επανάληψη διαβάζει guess και με πολλαπλή επιλογή απαντά: αν guess > thenum «Έδωσες μεγαλύτερο αριθμό», αν guess < thenum «Έδωσες μικρότερο αριθμό», αλλιώς (ίσος) «Τον βρήκες!» — οπότε η συνθήκη guess != thenum γίνεται ψευδής και ο βρόχος τερματίζει.
  • Τι κάνει: είναι ένα παιχνίδι μαντέματος: ο υπολογιστής «σκέφτεται» έναν τυχαίο αριθμό από το 1 ως το 10 και ο χρήστης προσπαθεί να τον μαντέψει, παίρνοντας σε κάθε λάθος προσπάθεια την υπόδειξη «μεγαλύτερο/μικρότερο», μέχρι να τον βρει.
  • Χαρακτηριστικός τίτλος (μία πρόταση): «Μάντεψε τον αριθμό: παιχνίδι εύρεσης τυχαίου αριθμού 1-10 με υποδείξεις μεγαλύτερο/μικρότερο» — ή, με το σενάριο του βιβλίου, «Μάντεψε ποιον από τους 10 υποψηφίους ψήφισα».
  • Παρατήρηση: με τη στρατηγική «διαλέγω πάντα το μέσο του διαστήματος» ο αριθμός βρίσκεται σε το πολύ 4 προσπάθειες — είναι ακριβώς η ιδέα της δυαδικής αναζήτησης του κεφαλαίου 5 (σελ. 63-64), όπου το ίδιο παιχνίδι χρησιμοποιείται ως εισαγωγή.

Σύνοψη: (ενδεικτική) Παιχνίδι «Μάντεψε τον αριθμό»: επιλέγει τυχαίο ακέραιο 1-10 και με βρόχο while ζητά προσπάθειες, απαντώντας «μεγαλύτερο»/«μικρότερο» μέχρι να βρεθεί.

Κριτήρια αξιολόγησης:

  • Περιγραφή ρόλου κάθε τμήματος (randint, αρχική τιμή, συνθήκη while, elif) + τίτλος μίας πρότασης.

 ΣΧΟΛΙΚΟ ΒΙΒΛΙΟ