Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Θεματική Ενότητα 9 Αναδρομή και αναδρομική κλήση Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Θεματική Ενότητα 9 Αναδρομή και αναδρομική κλήση Τμήμα Διοίκησης Επιχειρήσεων β εξάμηνο Β. Φερεντίνος, Α. Κακαρούντας
Επιπλέον παραδείγματα δομών επανάληψης Ο βρόχος for επαναλαμβάνεται με βάση μία λίστα που δεν περιέχει απαραίτητα αριθμούς. Π.χ. λίστα συμβολοσειρών. for day in ['Monday', 'Tuesday', 'Wednsday', \ 'Thursday', 'Friday', 'Saturday', 'Sunday']: print(day)
"Αντίστροφη" range Η παρακάτω δομή τυπώνει τις αριθμητικές τιμές από 0 έως 29 (σε αύξουσα σειρά): for x in range(30) : # ή for x in range(0,30,1) : print(x) Για καταμέτρηση σε φθίνουσα σειρά: for x in range(29, -1, -1) : print(x)
Υπολογισμός Τρέχοντος Αθροίσματος - Παράδειγμα Γράψτε ένα βρόχο που να ζητάει από το χρήστη να εισάγει 10 αριθμούς και να υπολογίζει το άθροισμά τους. sum=0 for rep in range(10) : num= float( input('δώσε αριθμό: ') ) sum+=num print('το τελικό σύνολο είναι:', sum)
Χρήση της Μεταβλητής Στόχου μέσα στη for - Παράδειγμα Γράψτε ένα βρόχο που να υπολογίζει το άθροισμα της ακόλουθης της σειράς αριθμών: 1 2 3 30... 30 29 28 1 sum=0 for num in range(1,31) : sum+=num/(31-num) print('το τελικό σύνολο είναι:', sum)
for Εύρεση ελάχιστου/μέγιστου (1) Βρόχος εισαγωγής 10 αριθμών και να βρίσκει τον ελάχιστο και τον μέγιστο καθώς και σε ποια "θέση" βρίσκονται 1. Με την 1 η input εκτός for-loop και 1 λιγότερη επανάληψη του loop num = int( input('δώσε ακέραιο αριθμό: ') ) minimum = num; maximum = num # Το ; λειτουργεί σαν διαχωριστής pos_min=1; pos_max=1 # γραμμών κώδικα for rep in range(9) : num= int( input('δώσε ακέραιο αριθμό: ') ) if num>maximum : maximum=num pos_max=rep+1 if num<minimum : minimum=num pos_min=rep+1 print('ο ελάχιστος είναι το', minimum, 'και ο μέγιστος το', maximum) print('ο ελάχιστος βρίσκεται', pos_min, '-ος και ο μέγιστος ', pos_max, '-ος')
for Εύρεση ελάχιστου/μέγιστου (2) Βρόχος εισαγωγής 10 αριθμών και να βρίσκει τον ελάχιστο και τον μέγιστο καθώς και σε ποια "θέση" βρίσκονται 2. Με έλεγχο μέσα στο for-loop για διαφοροποίηση στην πρώτη επανάληψη for rep in range(10) : num= int( input('δώσε ακέραιο αριθμό: ') ) if rep == 0 : minimum=num; maximum=num pos_max=0; pos_min=0 if num>maximum : maximum=num pos_max=rep+1 if num<minimum : minimum=num pos_min=rep+1 print('ο ελάχιστος είναι το', minimum, 'και ο μέγιστος το', maximum) print('ο ελάχιστος βρίσκεται', pos_min, '-ος και ο μέγιστος ', pos_max, '-ος')
for Καταμέτρηση τιμών Βρόχος εισαγωγής 10 αριθμών και να βρίσκει πόσοι είναι άρτιοι και πόσοι περιττοί count_even=0; count_odd=0 for rep in range(10) : num= int( input('δώσε ακέραιο αριθμό: ') ) if rep%2 == 0 : count_even+=1 else : count_odd+=1 print("δόθηκαν", count_even, "άρτιοι και", count_odd, "περιττοί")
while - Παράδειγμα Γράψτε ένα βρόχο while που να ζητάει από το χρήστη έναν αριθμό, να τον πολλαπλασιάζει με το 10 και να επαναλαμβάνει τη διαδικασία όσο το αποτέλεσμα είναι μικρότερο του 100. num=float( input("δώσε έναν αριθμό: ") ) product = num*10 while product < 100 : num=float( input("δώσε έναν αριθμό: ") ) product = num*10 print("τέλος προγράμματος")
while - Τιμή Τερματισμού - Παράδειγμα Γράψτε ένα πρόγραμμα με ένα βρόχο που να ζητάει από το χρήστη μία σειρά από θετικούς αριθμούς και στο τέλος να εμφανίζει το άθροισμά τους. Ο χρήστης σηματοδοτήσει τον τερματισμό της σειράς με την εισαγωγή αρνητικού αριθμού. num = int( input('δώσε θετικό ακέραιο ή αρνητικό για τερματισμό: ') ) sum=0 while num >= 0 : sum+=num num = int( input('δώσε θετικό ακέραιο ή αρνητικό για τερματισμό: ') ) print("το άθροισμα είναι", sum)
while Ερώτηση Τερματισμού από τον χρήστη - Παράδειγμα Γράψτε ένα βρόχο while που να ζητάει από το χρήστη και να προσθέτει δύο αριθμούς. Ο βρόχος θα πρέπει να ρωτάει το χρήστη εάν επιθυμεί να επαναλάβει τη διαδικασία και αν ναι, να επαναλαμβάνεται, διαφορετικά να τερματίζεται. cont = 'Ν' # Δημιουργία μεταβλητής ελέγχου του βρόχου # Υπολογισμός αθροίσματος. while cont == 'Ν' : num1=float( input("δώσε 1 ο αριθμό: ") ) num2=float( input("δώσε 2 ο αριθμό: ") ) print("το άθροισμα των 2 αριθμών είναι:", num1+num2) cont = input('θέλεις να υπολογίσεις κι άλλο άθροισμα; (Δώσε Ν για ναι): ') print("τέλος προγράμματος")
While - Βρόχος Επαλήθευσης Εισόδου - Παράδειγμα Πρόγραμμα υπολογισμού δείκτη μάζας σώματος (βάρος / ύψος 2 ). Να εκτελείται για μία τιμή ύψους αλλά πολλαπλές τιμές βάρους (επαναλαμβανόμενη ερώτηση βάρους και εξαγωγή του αντίστοιχου δείκτη). Να τερματίζει με τιμή βάρους 0 και να ελέγχει για μη αποδεκτές (αρνητικές) τιμές σε ύψος ή βάρος (αν δοθεί μη αποδεκτή τιμή να την ζητάει ξανά μέχρι να δοθεί αποδεκτή τιμή). height = int( input('δώσε το ύψος σου: ') ) while height < 0 : print("μάλλον έδωσες λάθος ύψος, προσπάθησε ξανά!") height = int( input('δώσε το ύψος σου: ') ) weight = int( input('δώσε το βάρος σου (0 για έξοδο): ') ) while weight < 0 : print("μάλλον έδωσες λάθος βάρος, προσπάθησε ξανά!") weight = int( input('δώσε το βάρος σου (0 για έξοδο): ') while weight!= 0 : bmi = weight/height**2 print("ο δείκτης μάζας σώματος σου είναι:", bmi) weight = int( input('δώσε το βάρος σου (0 για έξοδο): ') ) while weight < 0 : print("μάλλον έδωσες λάθος βάρος, προσπάθησε ξανά!") weight = int( input('δώσε το βάρος σου (0 για έξοδο): ')
Πολλαπλά for-loops Γράψτε πρόγραμμα που να εμφανίζει το παρακάτω τρίγωνο μοτίβο: * ** *** **** ***** ****** ******* ******** size = 8 αλφαριθμητικά: Μπορώ να αποφύγω το 2 ο for-loop με χρήση του τελεστή επανάληψης για for r in range(size): size = 8 for c in range(r + 1): print('*', end='') for r in range(size): print() print('*' * r)
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Θεματική Ενότητα 9 Αναδρομή και αναδρομική κλήση Τμήμα Διοίκησης Επιχειρήσεων β εξάμηνο Β. Φερεντίνος, Α. Κακαρούντας
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/από-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.
Επεξήγηση όρων χρήσης έργων τρίτων διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-ND διαθέσιμο με άδεια CC-BY-NC διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.