1.2 Προβλήματα και λύσεις στις δομές ελέγχου ροής

Ερώτηση 1:

Ποιες είναι οι δύο τιμές του τύπου δεδομένων Boolean; Πως τις ορίζουμε;

Απάντηση:

Οι δύο τιμές του τύπου δεδομένων Boolean είναι η Αληθής (True) και η Ψευδής (False). Για να τις γράψουμε, χρησιμοποιούμε αυτές τις λέξεις χωρίς εισαγωγικά ή οποιοδήποτε άλλο διαχωριστικό.

Παραδείγματα:

# Δημιουργούμε τη μεταβλητή x και την αναθέτουμε με την τιμή True, που αντιπροσωπεύει την αλήθεια.
x = True

# Δημιουργούμε τη μεταβλητή y και την αναθέτουμε με την τιμή False, που αντιπροσωπεύει τη ψευδαίσθηση.
y = False

Στα παραπάνω παραδείγματα, οι μεταβλητές x και y ανατίθενται με τις τιμές True και False αντίστοιχα, παριστάνοντας τις δύο δυνατές τιμές του τύπου Boolean.

Ερώτηση 2:

Ποιοι είναι οι τρεις Boolean τελεστές;

Απάντηση:

Οι τρεις λογικοί τελεστές (Boolean operators) είναι οι εξής:

  1. Τελεστής “ΚΑΙ” (AND): Αναπαρίσταται με το σύμβολο and. Επιστρέφει True μόνο εάν και οι δύο συνθήκες που συγκρίνονται είναι αληθείς.
  2. Τελεστής “Ή” (OR): Αναπαρίσταται με το σύμβολο or. Επιστρέφει True εάν τουλάχιστον μία από τις συνθήκες που συγκρίνονται είναι αληθής.
  3. Τελεστής “Όχι” (NOT): Αναπαρίσταται με το σύμβολο not. Αλλάζει την αληθή σε ψευδή και την ψευδή σε αληθή, αντιστρέφοντας την τιμή μιας συνθήκης.

Οι λογικοί τελεστές χρησιμοποιούνται για να συγκρίνουν, συνδυάζουν και αντιστρέφουν τιμές Boolean, παρέχοντας μας τη δυνατότητα να πραγματοποιούμε πολύπλοκες λογικές εκφράσεις.

Ερώτηση 3:

Γράψτε τους πίνακες αλήθειας κάθε τελεστή Boole (δηλαδή κάθε πιθανό συνδυασμό Boolean τιμών και τελεστή καθως και το αποτέλεσμα τους).

Απάντηση:

Παρακάτω παρουσιάζονται οι πίνακες αληθείας για τους τρεις λογικούς τελεστές: ΚΑΙ (AND), Ή (OR) και Όχι (NOT).

Ας γράψουμε τους πίνακες αληθείας (truth tables) για κάθε λογικό τελεστή:

  1. Τελεστής “ΚΑΙ” (AND):
ΑΒΑ ΚΑΙ Β
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
  1. Τελεστής “Ή” (OR):
ΑΒΑ Ή Β
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
  1. Τελεστής “Όχι” (NOT):
ΑΌΧΙ Α
TrueFalse
FalseTrue

Οι πίνακες αληθείας δείχνουν κάθε δυνατή συνδυασμό τιμών Boolean για κάθε τελεστή και το αποτέλεσμα που προκύπτει από τη λογική πράξη.

[adinserter block=”2″]

Ερώτηση 4:

Ποια είναι τα αποτελέσματα των παρακάτω εκφράσεων;

(5 > 4) and (3 == 5)
not (5 > 4)
(5 > 4) or (3 == 5)
not ((5 > 4) or (3 == 5))
(True and True) and (True == False)
(not False) or (not True)

Απάντηση:

Ας αξιολογήσουμε τις παρακάτω εκφράσεις:

  1. (5 > 4) and (3 == 5)
    Αυτή η έκφραση αξιολογείται ως False. Η πρώτη συνθήκη (5 > 4) είναι αληθής, αλλά η δεύτερη συνθήκη (3 == 5) είναι ψευδής. Όταν χρησιμοποιούμε τον λογικό τελεστή “ΚΑΙ” (and), και οι δύο συνθήκες πρέπει να είναι αληθείς για να επιστραφεί True. Επομένως, αφού η δεύτερη συνθήκη είναι ψευδής, η συνολική έκφραση είναι False.
  2. not (5 > 4)
    Αυτή η έκφραση αξιολογείται ως False. Η συνθήκη (5 > 4) είναι αληθής. Ωστόσο, ο τελεστής “Όχι” (not) αντιστρέφει την αληθή σε ψευδή, οπότε το αποτέλεσμα είναι False.
  3. (5 > 4) or (3 == 5)
    Αυτή η έκφραση αξιολογείται ως True. Η πρώτη συνθήκη (5 > 4) είναι αληθής, και όταν χρησιμοποιούμε τον λογικό τελεστή “Ή” (or), αρκεί να έχουμε τουλάχιστον μία αληθή συνθήκη για να επιστραφεί True. Η δεύτερη συνθήκη (3 == 5) είναι ψευδής, αλλά αυτό δεν επηρεάζει το αποτέλεσμα.
  4. not ((5 > 4) or (3 == 5))
    Αυτή η έκφραση αξιολογείται ως False. Το τμήμα της έκφρασης μέσα στις παρενθέσεις (5 > 4) or (3 == 5) αξιολογείται ως True, καθώς τουλάχιστον μία από τις συνθήκες είναι αληθής. Ωστόσο, ο τελεστής “Όχι” (not) αντιστρέφει το αποτέλεσμα, οπότε το τελικό αποτέλεσμα είναι False.
  5. (True and True) and (True == False)
    Αυτή η έκφραση αξιολογείται ως False. Το τμήμα (True and True) αξιολογείται ως True, καθώς και οι δύο συνθήκες είναι αληθείς. Ωστόσο, το τμήμα (True == False) αξιολογείται ως False, καθώς η συνθήκη δεν είναι αληθής. Όταν χρησιμοποιούμε τον τελεστή “ΚΑΙ” (and), και οι δύο συνθήκες πρέπει να είναι αληθείς για να επιστραφεί True. Επομένως, αφού η δεύτερη συνθήκη είναι ψευδής, η συνολική έκφραση είναι False.
  6. (not False) or (not True)
    Αυτή η έκφραση αξιολογείται ως True. Το τμήμα (not False) αξιολογείται ως True, καθώς η αρχική συνθήκη False αντιστρέφεται σε True χρησιμοποιώντας τον τελεστή “Όχι” (not). Επίσης, το τμήμα (not True) αξιολογείται ως False, καθώς η αρχική συνθήκη True αντιστρέφεται σε False. Όταν χρη

σιμοποιούμε τον λογικό τελεστή “Ή” (or), αρκεί να έχουμε τουλάχιστον μία αληθή συνθήκη για να επιστραφεί True. Επομένως, αφού έχουμε ένα True στην έκφραση, το αποτέλεσμα είναι True.

Ερώτηση 5:

Ποιοι είναι έξι τελεστές σύγκρισης (comparison operators);

Απάντηση:

Οι έξι τελεστές σύγκρισης (comparison operators) είναι οι εξής:

  1. Ίσον (Equal to): ==
    Χρησιμοποιείται για να ελέγξει εάν δύο τιμές είναι ίσες μεταξύ τους.
  2. Διάφορο (Not equal to): !=
    Χρησιμοποιείται για να ελέγξει εάν δύο τιμές είναι διαφορετικές μεταξύ τους.
  3. Μικρότερο από (Less than): <
    Χρησιμοποιείται για να ελέγξει εάν μια τιμή είναι μικρότερη από μια άλλη τιμή.
  4. Μεγαλύτερο από (Greater than): >
    Χρησιμοποιείται για να ελέγξει εάν μια τιμή είναι μεγαλύτερη από μια άλλη τιμή.
  5. Μικρότερο ή ίσο από (Less than or equal to): <=
    Χρησιμοποιείται για να ελέγξει εάν μια τιμή είναι μικρότερη ή ίση με μια άλλη τιμή.
  6. Μεγαλύτερο ή ίσο από (Greater than or equal to): >=
    Χρησιμοποιείται για να ελέγξει εάν μια τιμή είναι μεγαλύτερη ή ίση με μια άλλη τιμή.

Οι τελεστές σύγκρισης χρησιμοποιούνται για να παράγουν αληθή ή ψευδή αποτελέσματα ανάλογα με τη σχέση μεταξύ των τιμών που συγκρίνονται.

Ερώτηση 6:

Ποια είναι η διαφορά μεταξύ του τελεστή ανάθεσης και του τελεστή ισότητας;

Απάντηση:

Ο τελεστής ισότητας (==) χρησιμοποιείται για να ελέγξει εάν δύο τιμές είναι ίσες μεταξύ τους. Αποτελεί έναν τελεστή σύγκρισης και επιστρέφει την τιμή True εάν οι δύο τιμές είναι ίσες και False εάν διαφέρουν.

Αντίθετα, ο τελεστής ανάθεσης (=) χρησιμοποιείται για να αντιστοιχίσει μια τιμή σε μια μεταβλητή. Ο τελεστής αυτός δεν πραγματοποιεί σύγκριση αλλά αναθέτει την τιμή του δεξιού μέρους στη μεταβλητή που βρίσκεται στο αριστερό μέρος του τελεστή ανάθεσης.

Για παράδειγμα:
x = 5
Σε αυτήν την περίπτωση, ο τελεστής ανάθεσης αντιστοιχίζει την τιμή 5 στη μεταβλητή x.

Συνοψίζοντας, ο τελεστής ισότητας (==) χρησιμοποιείται για σύγκριση τιμών, ενώ ο τελεστής ανάθεσης (=) χρησιμοποιείται για αντιστοίχιση μιας τιμής σε μια μεταβλητή.

Ερώτηση 7:

Να εξηγήσετε τι είναι μια συνθήκη και ένα παράδειγμα χρήσης.

Απάντηση:

Μια συνθήκη (condition) είναι μια έκφραση ή ένας συνδυασμός εκφράσεων που εκτιμάται ως αληθής ή ψευδής. Οι συνθήκες χρησιμοποιούνται για τον έλεγχο της ροής ενός προγράμματος ή της εκτέλεσης κώδικα, καθορίζοντας ποιο κομμάτι κώδικα θα εκτελεστεί βάσει της αποτίμησής τους.

Οι συνθήκες χρησιμοποιούνται συνήθως σε δομές ελέγχου, όπως η δομή if-else, για να πάρουν αποφάσεις βάσει της τιμής αληθής ή ψευδής που επιστρέφει μια συνθήκη. Ανάλογα με το αποτέλεσμα της συνθήκης, ο κώδικας μπορεί να εκτελεστεί ή να παραλειφθεί.

Παράδειγμα χρήσης συνθήκης σε δομή if-else στη γλώσσα προγραμματισμού Python:

x = 5  # Αρχικοποίηση της μεταβλητής x με την τιμή 5

if x > 0:  # Έλεγχος εάν ο αριθμός x είναι μεγαλύτερος από το μηδέν
    print("Ο αριθμός είναι θετικός")  # Εκτύπωση μηνύματος αν η συνθήκη είναι αληθής
else:
    print("Ο αριθμός είναι μη θετικός")  # Εκτύπωση μηνύματος αν η συνθήκη είναι ψευδής

Στο παραπάνω παράδειγμα, ελέγχετε η συνθήκη x > 0 και αν αποδειχθεί ότι είναι αληθής, τότε ο κώδικας μέσα στην πρώτη διακλάδωση της δομής if θα εκτελεστεί και θα εμφανιστεί το μήνυμα “Ο αριθμός είναι θετικός”. Διαφορετίκα θα εμαφανιστεί το μήνυμα “Ο αριθμός είναι μη θετικός”.

[adinserter block=”3″]

Ερώτηση 8:

Προσδιορίστε τα τρία μπλοκ σε αυτόν τον κώδικα:

spam = 0
if spam == 10:
    print('eggs')
    if spam > 5:
        print('bacon')
    else:
        print('ham')
    print('spam')
print('spam'

Απάντηση:

Το παραπάνω κομμάτι κώδικα έχει τρία μπλοκ (blocks):

  1. Ολόκληρος ο κώδικας που βρίσκεται εκτός οποιασδήποτε δομής ελέγχου:
spam = 0  # Αρχικοποίηση της μεταβλητής spam με την τιμή 0

if spam == 10:  # Έλεγχος εάν η τιμή της μεταβλητής spam είναι ίση με 10
    print('eggs')  # Εκτύπωση του μηνύματος 'eggs' αν η συνθήκη είναι αληθής
    
    if spam > 5:  # Έλεγχος εάν η τιμή της μεταβλητής spam είναι μεγαλύτερη από 5
        print('bacon')  # Εκτύπωση του μηνύματος 'bacon' αν η συνθήκη είναι αληθής
    else:
        print('ham')  # Εκτύπωση του μηνύματος 'ham' αν η συνθήκη είναι ψευδής
    
    print('spam')  # Εκτύπωση του μηνύματος 'spam'
    
print('spam')  # Εκτύπωση του μηνύματος 'spam'

Αυτός ο κώδικας αντιπροσωπεύει τον κύριο κώδικα που θα εκτελεστεί ανεξαρτήτως της συνθήκης.

  1. Το μπλοκ που βρίσκεται μέσα στη δομή if:
if spam == 10:  # Έλεγχος εάν η τιμή της μεταβλητής spam είναι ίση με 10
    print('eggs')  # Εκτύπωση του μηνύματος 'eggs' αν η συνθήκη είναι αληθής
    
    if spam > 5:  # Έλεγχος εάν η τιμή της μεταβλητής spam είναι μεγαλύτερη από 5
        print('bacon')  # Εκτύπωση του μηνύματος 'bacon' αν η συνθήκη είναι αληθής
    else:
        print('ham')  # Εκτύπωση του μηνύματος 'ham' αν η συνθήκη είναι ψευδής
    
    print('spam')  # Εκτύπωση του μηνύματος 'spam'

Αυτό το μπλοκ θα εκτελεστεί μόνο εάν η συνθήκη spam == 10 είναι αληθής. Περιλαμβάνει τις εντολές print(‘eggs’), print(‘bacon’), print(‘ham’) και print(‘spam’).

  1. Το μπλοκ που βρίσκεται μέσα στην δομή else:
else:
    print('ham')  # Εκτύπωση του μηνύματος 'ham' αν η συνθήκη της προηγούμενης δομής if είναι ψευδής

Αυτό το μπλοκ θα εκτελεστεί μόνο εάν η συνθήκη spam == 10 είναι ψευδής, δηλαδή όταν η συνθήκη spam > 5 είναι αληθής. Περιλαμβάνει μόνο την εντολή print(‘ham’).

Σημείωση: Ο κώδικας print(‘spam’) που βρίσκεται εκτός οποιασδήποτε δομής ελέγχου αποτελεί μέρος του πρώτου μπλοκ.

Ερώτηση 9:

Να γραφεί κώδικας που θα εκτυπώνει το Hello αν η μεταβλητή spam έχει την τιμή 1 να εκτυπώνει Howdy! αν έχει την τιμή 2 διαφορετικά Greetings!

Απάντηση:

if spam == 1:
    print('Hello')  # Εκτύπωση του μηνύματος 'Hello' αν η τιμή της μεταβλητής spam είναι 1
elif spam == 2:
    print('Howdy')  # Εκτύπωση του μηνύματος 'Howdy' αν η τιμή της μεταβλητής spam είναι 2
else:
    print('Greetings!')  # Εκτύπωση του μηνύματος 'Greetings!' για οποιαδήποτε άλλη τιμή της μεταβλητής spam

Το παραπάνω κομμάτι κώδικα χρησιμοποιεί τη δομή ελέγχου if-elif-else για να ελέγξει την τιμή της μεταβλητής spam και να εκτελέσει την αντίστοιχη ενέργεια ανάλογα με την τιμή που περιέχει:

  • Αν η τιμή της spam είναι 1, τότε θα εκτυπωθεί το μήνυμα ‘Hello’.
  • Αν η τιμή της spam είναι 2, τότε θα εκτυπωθεί το μήνυμα ‘Howdy’.
  • Σε όλες τις άλλες περιπτώσεις, θα εκτυπωθεί το μήνυμα ‘Greetings!’.

Ερώτηση 10:

Ποιο συνδυασμό πλήκτρων πρέπει να πατήσετε εάν το πρόγραμμά σας έχει παγώσει σε έναν ατέρμονα βρόχο (infinite loop);

Απάντηση:

Εάν το πρόγραμμά σας έχει παγώσει σε έναν ατέρμονα βρόχο (infinite loop), μπορείτε να πατήσετε το συνδυασμό πλήκτρων “Ctrl + C” στο πληκτρολόγιό σας. Αυτό το συνδυασμό πλήκτρων διακόπτει την εκτέλεση του προγράμματος και σταματά τον άπειρο βρόχο που είναι σε εξέλιξη.

Όταν πατήσετε “Ctrl + C”, το πρόγραμμά σας θα διακοπεί και εκτός απροόπτου θα επιστρέψετε στη γραμμή εντολών ή στο περιβάλλον ανάπτυξης όπου εκτελούσατε το πρόγραμμα. Αυτό σας επιτρέπει να διορθώσετε τον κώδικά σας ή να επιβεβαιώσετε τη σωστή λειτουργία του.

[adinserter block=”4″]

Ερώτηση 11:

Ποια είναι η διαφορά μεταξύ break και continue;

Απάντηση:

Οι εντολές break και continue χρησιμοποιούνται στη γλώσσα προγραμματισμού Python για τον έλεγχο της εκτέλεσης ενός βρόχου, όπως του for ή του while. Οι δύο αυτές εντολές έχουν διαφορετική συμπεριφορά:

  1. Η εντολή break χρησιμοποιείται για να διακόψει απότομα την εκτέλεση του βρόχου. Όταν εκτελείται η εντολή break, ο έλεγχος πηγαίνει άμεσα στο επόμενο κομμάτι κώδικα που ακολουθεί αμέσως μετά τον βρόχο. Ο βρόχος τερματίζεται και δεν εκτελούνται περαιτέρω επαναλήψεις. Αυτή η εντολή χρησιμοποιείται συνήθως όταν πληρούται μια συγκεκριμένη συνθήκη και δεν είναι απαραίτητο να συνεχιστεί η εκτέλεση του βρόχου.
  2. Η εντολή continue χρησιμοποιείται για να παραλείψει την υπόλοιπη εκτέλεση του κώδικα στην τρέχουσα επανάληψη του βρόχου και να μεταβεί απευθείας στην επόμενη επανάληψη. Όταν εκτελείται η εντολή continue, ο κώδικας που ακολουθεί μετά την continue στην τρέχουσα επανάληψη παραλείπεται και ο έλεγχος μεταφέρεται στην επόμενη επανάληψη. Οι υπόλοιπες εντολές εντός του βρόχου εκτελούνται κανονικά για τις επαναλήψεις που ακολουθούν. Η εντολή continue χρησιμοποιείται συνήθως όταν απαιτείται η παράλειψη μιας συγκεκριμένης επανάληψης και η συνέχιση με τις επόμενες.

Και οι δύο εντολές (break και continue) επηρεάζουν τη ροή εκτέλεσης του βρόχου, αλλά με διαφορετικό τρόπο.

Ερώτηση 12:

Ποια η διαφορά μεταξύ range(10), range(0, 10), και range(0, 10, 1) σε μια δομή επανάληψής for;

Απάντηση:

Οι τρεις αυτές κλήσεις της συνάρτησης range() χρησιμοποιούνται για να παράξουν μια ακολουθία αριθμών που μπορούν να χρησιμοποιηθούν σε έναν βρόχο for. Η διαφορά μεταξύ των τριών κλήσεων είναι η εξής:

  1. Η κλήση range(10) δημιουργεί μια ακολουθία αριθμών από το 0 μέχρι το 9. Ο πρώτος αριθμός (το κάτω όριο) είναι προκαθορισμένα το 0, ενώ ο αριθμός μετά το τελευταίο αριθμό είναι 1 μικρότερος από το άνω όριο που ορίζεται στην κλήση, δηλαδή 10-1=9. Άρα, η ακολουθία που παράγεται είναι [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
  2. Η κλήση range(0, 10) λειτουργεί με παρόμοιο τρόπο με την range(10). Ωστόσο, εδώ μπορούμε να καθορίσουμε τόσο το κάτω όριο όσο και το άνω όριο της ακολουθίας. Ο κάτω όρος είναι 0, όπως και πριν, και το άνω όριο είναι 10-1=9. Άρα, η ακολουθία που παράγεται είναι η ίδια: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
  3. Η κλήση range(0, 10, 1) παράγει μια ακολουθία αριθμών από το 0 μέχρι το 9, με βήμα 1. Ο κάτω όρος είναι 0, το άνω όριο είναι 10-1=9, και το βήμα είναι 1. Καθώς το βήμα είναι 1, οι αριθμοί παράγονται αυξάνοντας σειριακά κατά 1. Άρα, η ακολουθία που παράγεται είναι η ίδια με τις δύο προηγούμενες: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].

Συνολικά, όλες οι κλήσεις range(10), range(0, 10), και range(0, 10, 1) παράγουν την ίδια ακολουθία αριθμών από το 0 μέχρι το 9, αλλά με διαφορετικό τρόπο εκφράσης.

Ερώτηση 13:

Να γραφεί ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 10 χρησιμοποιώντας έναν βρόχο for και ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 10 χρησιμοποιώντας έναν βρόχο while.

Απάντηση:

Παρακάτω έχετε ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 10 χρησιμοποιώντας έναν βρόχο for και ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 10 χρησιμοποιώντας έναν βρόχο while:

Χρησιμοποιώντας for βρόχο:

for i in range(1, 11):
    print(i)  # Εκτύπωση της τρέχουσας τιμής του i

# Ο βρόχος εκτελείται για τιμές του i από το 1 έως το 10
# Η range(1, 11) δημιουργεί μια ακολουθία αριθμών από το 1 μέχρι το 10 (συμπεριλαμβανομένου του 1 και του 10)
# Κατά τη διάρκεια κάθε επανάληψης, η τρέχουσα τιμή του i εκτυπώνεται στην οθόνη

Χρησιμοποιώντας while βρόχο:

i = 1  # Αρχικοποίηση της μεταβλητής i με την τιμή 1

while i <= 10:  # Επανάληψη μέχρι το i να γίνει μεγαλύτερο από 10
    print(i)  # Εκτύπωση της τρέχουσας τιμής του i
    i += 1  # Αυξηση της τιμής του i κατά 1 σε κάθε επανάληψη

Και οι δύο παραπάνω προσεγγίσεις θα εκτυπώσουν τους αριθμούς από το 1 έως το 10.

Ερώτηση 14:

Αν είχατε μια συνάρτηση spam() μέσα σε ένα module με όνομα spam, πως θα το καλούσατε μετά την προσθήκη του στο κώδικα

Απάντηση:

Αφού εισάγετε το module spam, μπορείτε να καλέσετε τη συνάρτηση bacon() χρησιμοποιώντας τον συνδυασμό του ονόματος του module και του ονόματος της συνάρτησης. Η κλήση της συνάρτησης bacon() θα έχει τη μορφή spam.bacon().

Παράδειγμα:

import spam  # Εισαγωγή του module spam

spam.bacon()  # Κλήση της συνάρτησης bacon() από το module spam

# Αφού εισάγετε το module spam, μπορείτε να καλέσετε τη συνάρτηση bacon() χρησιμοποιώντας τον συνδυασμό του ονόματος
# του module (spam) και του ονόματος της συνάρτησης (bacon()). Η κλήση της συνάρτησης θα έχει τη μορφή spam.bacon().
# Παραπάνω εισάγουμε το module spam και καλούμε τη συνάρτηση bacon() με την εντολή spam.bacon().

Στο παραπάνω παράδειγμα, εισάγουμε το module spam και στη συνέχεια καλούμε τη συνάρτηση bacon() χρησιμοποιώντας τον συνδυασμό spam.bacon().

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων