Εργασία Π48.3 Δομή επιλογής
Σημείωση: Τα μπλοκ των εντολών που θα εκτελεστούν σε όλες τις περιπτώσεις της if, ορίζονται ως ένα μπλοκ με εσοχή βάζοντας τη μια εντολή κάτω από την άλλη. Αν το μπλοκ εντολών αποτελείται από μια εντολή, τότε μπορεί να γραφτεί στην ίδια γραμμή με την if ή την else. Π.χ.
a=input('give a number ')
if a>0: print a,'>0'
else: print a,'<0'
Για την σύνταξη της συνθήκης που χρησιμοποιεί η εντολή της δομής επιλογής if, χρειάζεται να συνταχθεί μια λογική έκφραση, η οποία θα δίνει σαν αποτέλεσμα την τιμή Αληθής ή Ψευδής. Για την σύνταξη μιας λογικής έκφρασης χρησιμοποιούνται οι συγκριτικοί τελεστές:
> Μεγαλύτερο
>= Μεγαλύτερο ή ίσο
< Μικρότερο
<= Μικρότερο ή ίσο
!= Διάφορο
== Ισότητα
Τελεστές λογικών πράξεων: not, or, and, με τις ακόλουθες λογικές λειτουργίες
P |
Q |
P and Q |
P or Q |
Not P |
ΑΛΗΘΗΣ |
ΑΛΗΘΗΣ |
ΑΛΗΘΗΣ |
ΑΛΗΘΗΣ |
ΨΕΥΔΗΣ |
ΑΛΗΘΗΣ |
ΨΕΥΔΗΣ |
ΨΕΥΔΗΣ |
ΑΛΗΘΗΣ |
ΨΕΥΔΗΣ |
ΨΕΥΔΗΣ |
ΑΛΗΘΗΣ |
ΨΕΥΔΗΣ |
ΑΛΗΘΗΣ |
ΑΛΗΘΗΣ |
ΨΕΥΔΗΣ |
ΨΕΥΔΗΣ |
ΨΕΥΔΗΣ |
ΨΕΥΔΗΣ |
ΑΛΗΘΗΣ |
Π.χ.
a>=10 2. b!=0 3. (a<10) and (b<0)
Εργασία 48_3a_epilogh
Να υπολογιστεί ο μεγαλύτερος δύο ακέραιων αριθμών που δίνονται από το πληκτρολόγιο.
Στη συνέχεια πληκτρολογήστε το παρακάτω πρόγραμμα.
Η ενσωματωμένη συνάρτηση int(...) στις εντολές, x=int(input("Δώσε τον 1ο ακέραιο αριθμό ")) και y=int(input("Δώσε τον 2ο ακέραιο αριθμό ")) μας υποχρεώνει να εισάγουμε ακέραιο αριθμό
Προσοχή στην 4η εντολή (max = y), που έχει εσοχή, γιατί είναι εντολή που ανήκει στο μπλόκ των εντολών της if. Επίσης στην εντολή if max > y: , η άνω και κάτω τελεία είναι μέρος της σύνταξης της εντολής. Επίσης παρατηρήστε ότι το μπλόκ των εντολών της if, τελειώνει εκεί που αρχίζει η εντολή : print "Μεγαλύτερος ο ",max, γιατί η εσοχή της είναι μικρότερη από την εσοχή των εντολών της if (στην προκειμένη περίπτωση της εντολής max=y.
x=int(input("Δώσε τον 1ο ακέραιο αριθμό ")) y=int(input("Δώσε τον 2ο ακέραιο αριθμό ")) max=x if max<y: max=y print "Μεγαλύτερος ο ",max |
Εργασία 48_3b_epilogh
Μελετήστε το παρακάτω πρόγραμμα.
|
4. Τροποποιήστε το πρόγραμμα, ώστε αντί της εμφωλευμένης if ... else...if να χρησιμοποιήσετε την σύνθετη if... elif...elif...else... (χωρίς χρήση λογικών τελεστών π.χ.) and και αποθηκεύστε το με το όνομα “ergasia_ 48_3b_epilogh.py ”. Προσοχή στις εσοχές (απόσταση από τα αριστερά) για κάθε μπλοκ εντολών. Οι εντολές ενός μπλόκ είναι πιο δεξιά και με την ίδια εσοχή, όπως στον κώδικα που σας δίνεται στην εκφώνηση.
* για βοήθεια δείτε το παράδειγμα 3 του πίνακα από τη θεωρία ή το παρακάτω παράδειγμα το οποίο βρίσκει το μεγαλύτερο μεταξύ δύο δοθέντων αριθμών ή αν είναι ίσοι. Οι τρείς περιπτώσεις είναι ισοδύναμες. Στην περίπτωση Α, για τους ελέγχους χρησιμοποιούνται διαδοχικά if, ένα μετά το άλλο. Στη δεύτερη ισοδύναμη περίπτωση χρησιμοποιούνται εμφωλευμένα if...else, το ένα μέσα στο άλλο, μέσα στο πρώτο (μετά το else της πρώτης if), μπαίνει το δεύτερο if...else (με τα κόκκινα γράμματα). Αυτή είναι και η δομή if..., των δεδομένων της εκφώνησης. Στην τρίτη ισοδύναμη περίπτωση, το ίδιο πρόγραμμα (εύρεση του μεγαλύτερου μεταξύ δύο δοθέντων αριθμών), υλοποιείται με την ισοδύναμη της if...else την if...elif...else, που είναι και δομή που πρέπει να έχουν οι if... στο πρόγραμμα που επιλύει την άσκηση.
Περίπτωση Α με διαδοχικά if
a=input("Δώσε τον πρώτο αριθμό:")
b=input("Δώσε το δεύτερο αριθμό:")
if (a>b):
print (a)
if (a<b):
print(b)
if (a == b):
print 'equals'
Περίπτωση Β με εμφωλευμένη if
a=input("Δώσε τον πρώτο αριθμό:")
b=input("Δώσε το δεύτερο αριθμό:")
if (a>b):
print(a)
else:
if (a<b):
print(b)
else:
print 'equals'
Περίπτωση Γ με if...elif...
a=input("Δώσε τον πρώτο αριθμό:")
b=input("Δώσε το δεύτερο αριθμό:")
if (a>b):
print(a)
elif(a<b):
print(b)
else:
print 'equals'
Σας υπενθυμίζω ότι για να εμφανίζονται τα μηνύματα στην ελληνική γλώσσα από τον editor πρέπει: File > Options > Configure IDLE > General (από το παράθυρο Settings που ανοίγει) > Utf-8 > Apply > OK..Αν η επιλογή είναι ενεργοποιημένη και κάποιο αποτέλεσμα-μήνυμα στα ελληνικά, δεν εμφανίζεται στο SHELL, κάνετε τη διαδικασία: File > Options > Configure IDLE > General (από το παράθυρο Settings που ανοίγει) > None > Apply > OK και πάλι από την αρχή File > Options > Configure IDLE > General (από το παράθυρο Settings που ανοίγει) > Utf-8 > Apply > OK. Αν και πάλι έχετε πρόβλημα γράψτε το αποτέλεσμα-μήνυμα(στην αντίστοιχη εντολή στο πρόγραμμα) με λατινικούς χαρακτήρες (greeklish). Π.χ. αντί για print 'ΑΡΙΣΤΑ', γράψτε print 'ARISTA'.
Υπενθυμίζω ότι τα εισαγωγικά μπορεί να είναι είτε μονά είτε διπλά. Πολλές φορές η αντιγραφή επικόλληση δεν πραγματοποιείται ορθά λόγω της διαφορετικής κωδικοποίησης από τον υπολογιστή που αντιγράφεται, αν και το κείμενο φαίνεται ίδιο. Στην περίπτωση αυτή πρέπει να ξαναπληκτρολογηθούν κάποιοι χαρακτήρες. Συνήθως αυτό συμβαίνει στα εισαγωγικά είτε είναι διπλά είτε μονά.
5. Συμπιέστε τα αρχεία “ergasia_ 48_3b_epilogh.py” και “ergasia_ 48_3a_epilogh.py”σε ένα αρχείο zip με όνομα“ergasia_ 48_3_epilogh.zip” και ανεβάστε το στο ΠΣΔ ή στο dropbox και στείλτε μας το σύνδεσμο που οδηγεί σε αυτό το αρχείο.