Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική μετάφραση): e-book στην τοποθεσία http://dide.flo.sch.gr/plinet/meetings/meeting23/a_byte_of_python-el.pdf ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 1 -
Έλεγχος ροής Στα μέχρι τώρα προγράμματα δημιουργούσαμε μια σειρά εντολών, τις οποίες η Python εκτελούσε με την σειρά παρουσίασης τους τη μια μετά την άλλη. Αν θέλουμε όμως να αλλάξουμε την ροή εκτέλεσης; Για παράδειγμα, μπορεί να θέλουμε απο το πρόγραμμα να πάρει μερικές αποφάσεις και να κάνει διαφορετικά πράγματα υπό διαφορετικές συνθήκες, (παράδειγμα να εκτυπώσει καλημέρα ή καλησπέρα, ανάλογα με την ώρα); Αυτό επιτυγχάνεται χρησιμοποιώντας τις 3 εντολές ελέγχου ροής. - if, for και while. Η εντολή if Η εντολή if χρησιμοποιείται για να ελεγχθεί μια συνθήκη και εάν (if) η συνθήκη αυτή είναι αληθής, τότε εκτελείται ένα σύνολο ή πλοκάδα εντολών (που ονομάζεται ifblock), Σύνταξη if συνθήκη: Εντολή1 Εντολή2 Μπλοκ εντολών με εσοχή Την λέξη κλειδί if ακολουθεί μια συνθήκη η οποία τελειώνει με άνω κάτω τελεία (:). Εάν η συνθήκη ισχύει τότε ακολουθούνται με την σειρά οι εντολές που την ακολουθούν Αν δεν ισχύει οι εντολές παρακάμπτονται σαν να μην υπάρχουν ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 2 -
Προσοχή: οι τελεστές σύγκρισης που μπορούν να χρησιμοποιηθούν στη συνθήκη είναι οι: Παράδειγμα: Δημιουργήστε ένα πρόγραμμα if.py στο οποίο θα αρχικοποιείται μια μεταβλητή number στο 32.1. Στη συνέχεια θα ορίζεται μια μεταβλητή guess την οποία θα αρχικοποιεί ο χρήστης από το πληκτρολόγιο. Εάν ο αριθμός που εισάγεται από το πληκτρολόγιο είναι ίσος με την τιμή της μεταβλητής number τότε θα εμφανίζεται το μήνυμα Συγχαρητήρια μαντέψατε σωστά. Στο τέλος θα εμφανίζεται τον αριθμό που πληκτρολογήσατε με 2 δεκαδικά ψηφία, Π.χ. Ο αριθμός που πληκτρολογήσατε είναι ο 94.55. Τρέξτε το πρόγραμμα εισάγοντας το 54.7 και το 32.1. ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 3 -
Εκτελώντας το πρόγραμμα, δίνοντας στην έσοδο τους αριθμούς 54.7 και στη συνέχεια 32.1 θα δοθούν στην έξοδο τα εξής αποτελέσματα: Άσκηση: Δημιουργήστε ένα πρόγραμμα if2.py στο οποίο θα ζητάτε από το χρήστη να εισάγει από το πληκτρολόγιο τους βαθμούς του στο εργαστήριο και στη θεωρία ενός μαθήματος. Στην συνέχεια θα υπολογίζει το μέσο όρο που αν είναι μεγαλύτερος ή ίσος του 5 τότε θα εμφανίζει το μήνυμα «Πέρασες». Τέλος, το πρόγραμμα θα εμφανίζει το μέσο όρο με ένα δεκαδικό ψηφίο. Παράδειγμα output: ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 4 -
Εντολή if-else H δομή if-else χρησιμοποιείται στην περίπτωση που πρέπει να ακολουθηθεί μια σειρά από εντολές όταν μια συνθήκη δεν ισχύει: Σύνταξη if συνθήκη: Εντολή1_1 Εντολή1_2 Μπλοκ εντολών με εσοχή του if else: Εντολή2_1 Εντολή2_2 Μπλοκ εντολών με εσοχή του else Πως εκτελείται; Αν η συνθήκη ισχύει τότε εκτελούνται όλες οι εντολές του μπλοκ του if και αγνοούνται σαν να μην υπάρχουν αυτές του else Διαφορετικά εκτελούνται οι εντολές του μπλοκ του else και αγνοούνται αυτές του if σαν να μην υπάρχουν Παράδειγμα: Δημιουργήστε ένα πρόγραμμα if_else.py στο οποίο θα αρχικοποιείται μια μεταβλητή number στο 32.1. Στη συνέχεια θα ορίζεται μια μεταβλητή guess την οποία θα αρχικοποιεί ο χρήστης από το πληκτρολόγιο. Εάν ο αριθμός που εισάγεται από το πληκτρολόγιο είναι ίσος με την τιμή της μεταβλητής number τότε θα εμφανίζεται το μήνυμα Συγχαρητήρια μαντέψατε σωστά. Διαφορετικά θα εμφανίζει το μήνυμα Δεν μαντέψατε. Προσπαθήστε ξανά Στο τέλος θα εμφανίζεται τον αριθμό που πληκτρολογήσατε με 2 δεκαδικά ψηφία, Π.χ. Ο αριθμός που πληκτρολογήσατε είναι ο 94.55. Τρέξτε το πρόγραμμα εισάγοντας το 54.7 και το 32.1. ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 5 -
Εκτελόντας 2 φορές το πρόγραμμα την πρώτη εισάγοντας τον αριθμό 32.1 και την δεύτερη τον 54, θα έχουμε τα δύο output Άσκηση: Δημιουργήστε πρόγραμμα, το οποίο θα ονομάσετε if_else2.py στο οποίο θα ζητάτε από το χρήστη να εισάγει από το πληκτρολόγιο το βάρος του σε κιλά. Στη συνέχεια θα κάνει τον εξής έλεγχο. Εάν το βάρος του είναι μεγαλύτερο ή ίσο από 80.0 θα εμφανίζεται το μήνυμα «Δεν είσαι και τόσο αδύνατος», διαφορετικά θα εμφανίζεται το μήνυμα «Δεν είσαι και τόσο παχύς» Τέλος, το πρόγραμμα θα εμφανίζει το βάρος του χρήστη με δύο δεκαδικά ψηφία. Δύο πιθανά output είναι τα εξής (τρέχοντας το πρόγραμμα μια φορά με τον αριθμό 67 και μια με τον 85): ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 6 -
Αλυσιδωτές συνθήκες:εντολή if-elif-else. Σύνταξη if συνθήκη1: Εντολή1_1 Εντολή1_2 Μπλοκ εντολών με εσοχή του if elif συνθήκη2: Εντολή2_1 Εντολή2_2 Μπλοκ εντολών με εσοχή του elif else: Εντολή3_1 Εντολή3_2 Μπλοκ εντολών με εσοχή του else Πως εκτελείται; Αν η συνθήκη1 ισχύει τότε εκτελούνται όλες οι εντολές του μπλοκ του if και αγνοούνται σαν να μην υπάρχουν αυτές του elif και του else Διαφορετικά (αν δεν ισχύει η συνθήκη1) αν ισχύει η συνθήκη2 εκτελούνται οι εντολές του μπλοκ του elif και αγνοούνται αυτές του if και του else σαν να μην υπάρχουν ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 7 -
Διαφορετικά (αν δεν ισχύει η συνθήκη1 και η συνθήκη2) εκτελούνται οι εντολές του μπλοκ του if και αγνοούνται αυτές του if και του elif σαν να μην υπάρχουν Προσοχή: τα μπλοκ elif μπορούν να είναι και περισσότερα από ένα. Παράδειγμα: Δημιουργήστε ένα πρόγραμμα if_elif.py στο οποίο θα αρχικοποιείται μια μεταβλητή number στο 32.1. Στη συνέχεια θα ορίζεται μια μεταβλητή guess την οποία θα αρχικοποιεί ο χρήστης από το πληκτρολόγιο. Εάν ο αριθμός που εισάγεται από το πληκτρολόγιο είναι ίσος με την τιμή της μεταβλητής number τότε θα εμφανίζεται το μήνυμα Συγχαρητήρια μαντέψατε σωστά. Διαφορετικά εάν ο αριθμός που εισάγετε είναι μεγαλύτερος του number θα εμφανίζει το μήνυμα Δεν μαντέψατε. Πολύ μεγάλος αριθμός. Διαφορετικά θα εμφανίζει το μήνυμα Δεν μαντέψατε. Πολύ μικρός αριθμός. Στο τέλος θα εμφανίζεται τον αριθμό που πληκτρολογήσατε με 2 δεκαδικά ψηφία, Π.χ. Ο αριθμός που πληκτρολογήσατε είναι ο 94.55. Τρέξτε το πρόγραμμα εισάγοντας το 54.7, το 32.1 και 22.8. Με 3 output τα: ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 8 -
Άσκηση Δημιουργήστε πρόγραμμα elif2.py στο οποίο θα ζητάτε από το χρήστη να εισάγει το βαθμός του σε κάποιο μάθημα στην κλίμακα 0 έως 100. Εάν ο βαθμός του είναι μεγαλύτερος ή ίσος από 90 θα εμφανίζεται το μήνυμα «Πήρες Α», αν είναι μεγαλύτερος ή ίσος από 80 θα εμφανίζεται το μήνυμα «Πήρες Β», αν είναι μεγαλύτερος ή ίσος από 70 θα εμφανίζεται το μήνυμα «Πήρες Γ», διαφορετικά θα εμφανίζεται το μήνυμα «Κόπηκες». Τέλος, το πρόγραμμα το βαθμό του χρήστη χωρίς δεκαδικά ψηφία. Εκτελέστε το πρόγραμμα 4 φορές, μια για κάθε περίπτωση Ένα πιθανό output είναι Ένθετες δομές απόφασης Δομές που χρησιμοποιούνται σε πιο πολύπλοκα προβλήματα. Εδώ κάθε εντολή if-elif-else μπορεί να περιέχει με την σειρά του μια άλλη εντολή if Σύνταξη if συνθήκη1: if συνθήκη1_1: Εντολή1_1.. Μπλοκ εντολών με εσοχή του εσωτερικού if else: ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 9 -
Εντολή1_2.. Μπλοκ εντολών με εσοχή του εσωτερικού else else: Εντολή2_1 Εντολή2_2 Μπλοκ εντολών με εσοχή του else Άσκηση: Δημιουργήστε πρόγραμμα emfoleymena_if.py στο οποίο θα ζητάτε από το χρήστη να εισάγει το εξάμηνο στο οποίο σπουδάζει και τον αριθμό των μαθημάτων τα οποία έχει περάσει. Εάν το εξάμηνο στο οποίο σπουδάζει είναι μεγαλύτερο ή ίσο του 3 τότε θα εξετάζει πόσα μαθήματα έχει περάσει συνολικά. Εάν έχει περάσει περισσότερα από 10 μαθήματα θα εμφανίζεται το μήνυμα «Θα πάρεις σύντομα πτυχίο». Σε αντίθετη περίπτωση θα εμφανίζεται το μήνυμα «Διάβασε». Εάν το εξάμηνο στο οποίο σπουδάζει είναι μικρότερο του 3 θα εμφανίζει το μήνυμα «Έχεις δρόμο». Τέλος, το πρόγραμμα θα εμφανίζει το ποσοστό το μαθημάτων που έχει περάσει ο χρήστης θεωρώντας ότι το σύνολο των μαθημάτων είναι 25 εμφανίζοντας 2 δεκαδικά ψηφία. Στη συνέχεια εκτελέστε το πρόγραμμα δίνοντας τα παρακάτω δεδομένα: a) 2 Εξάμηνο, 10 μαθήματα b) 4 Εξάμηνο, 15 μαθήματα c) 5 Εξάμηνο, 8 μαθήματα Παράδειγμα output ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 10 -
Λογικοί τελεστές και εκφράσεις Οι λογικοί τελεστές και οι εκφράσεις χρησιμοποιούνται στην δημιουργία πιο σύνθετων συνθηκών της δομής επιλογής. 1. Λογικός τελεστής and Ο τελεστής αυτός συνθέτει δύο λογικές εκφράσεις και επιστρέφει τιμή True όταν και οι δύο εκφράσεις ισχύουν (True) Π.χ. if eksamino > 3 and mathimata > 10: Λογική_έκφραση_1 and λογική_έκφραση_2 2. Λογικός τελετής or Ο τελεστής αυτός συνθέτει δύο λογικές εκφράσεις και επιστρέφει τιμή True όταν τουλάχιστον μια από τις εκφράσεις ισχύουν (True) Π.χ. if eksamino > 3 or mathimata > 10: ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 11 -
Άσκηση ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 12 -