Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο Ενότητα 6: Εντολές επανάληψης for και while Διδάσκουσα: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τις δομές επανάληψης for & while. 4
Περιεχόμενα Εντολή επανάληψης for. Σύνταξη εντολής. Πολλαπλά for. Εντολή επανάληψης while. Εντολές break, return, continue. Συνάρτηση menu. 5
Εντολή επανάληψης: for Οι βασικές εντολές επανάληψης είναι η for και η while. Η διαφορά τους είναι ότι η for προκαλεί εκτέλεση μιας ομάδας εντολών για συγκεκριμένο αριθμό επαναλήψεων, ενώ με τη while ο αριθμός των επαναλήψεων δεν είναι συγκεκριμένος, αλλά η ομάδα εντολών εκτελείται επαναληπτικά συνεχώς όσο ικανοποιείται μια συγκεκριμένη συνθήκη. 6
Σύνταξη εντολής επανάληψης for for δείκτης = αρχική_τιμή : τελική_τιμή <εντολές> ή for δείκτης = αρχική_τιμή : βήμα : τελική_τιμή <εντολές> 7
1 ο Παράδειγμα Να γραφούν οι εντολές που να εμφανίζουν στην οθόνη 100 φορές ΚΑΛΗΜΕΡΑ for i=1:100 disp( KAΛΗΜΕΡΑ ) 8
2 ο Παράδειγμα Να γραφτούν οι εντολές που εμφανίζουν στην οθόνη τους ζυγούς αριθμούς από 2 μέχρι 30. for n=2:2:30 disp(n) 9
3 ο Παράδειγμα Να γραφτούν οι εντολές που υπολογίζουν το άθροισμα των αριθμών 1+2+ Ν (το Ν είναι ο τελικός αριθμός και δίδεται από τον χρήστη). x= input( ΠΑΡΑKΑΛΩ ΔΩΣΤΕ ΤΟ Ν ); s=0; %μηδενίζουμε τη μεταβλητή του αθροίσματος for n=1:ν % Ν είναι ο αριθμός που δίνει ο χρήστης s=s+n; disp( ΤΟ ΑΘΡΟΙΣΜΑ ΕΙΝΑΙ ) disp(s) 10
Δημιουργία και εκτύπωση μονοδιάστατου πίνακα for i=1:10 a(i)=input('dose timh'); % a ο πίνακας και i η θέση for i=1:10 fprintf('%d ',a(i) ) 11
Παράδειγμα Υπολογισμού Αθροίσματος Στην περίπτωση αθροίσματος μηδενίζουμε πρώτα τη μεταβλητή που θα αποθηκευτεί το άθροισμα (π.χ. sum1) και προσθέτουμε σ αυτό τους διαδοχικούς όρους μ ένα βρόχο for: sum1=0; for i=1:n sum1=sum1+a(i); 12
Παράδειγμα Υπολογισμού Γινομένου Στην περίπτωση γινομένου θέτουμε τη μεταβλητή που θα αποθηκευτεί το γινόμενο (π.χ. ginomeno) ίσο με 1 και στη συνέχεια πολλαπλασιάζουμε με τους διαδοχικούς όρους σε ένα βρόχο for: ginomeno=1; for i=1:n ginomeno=ginomeno*a(i); 13
Πολλαπλά for Συχνά στις εφαρμογές απαιτείται μέσα σ ένα βρόχο να δημιουργήσουμε ένα άλλο (εσωτερικό) βρόχο και σ αυτόν ένα άλλο βρόχο κ.ο.κ. Έχουμε έτσι τους λεγόμενους πολλαπλούς ή (nested loops). Για παράδειγμα αν πρέπει να επαναλάβουμε μια διαδικασία για κάθε στοιχείο ενός m n πίνακα, μπορούμε να σαρώσουμε τα στοιχεία του πίνακα ως εξής: 14
Παράδειγμα Πολλαπλών for for i=1:m for j=1:n διαδικασία για i και j 15
Δημιουργία και εκτύπωση δισδιάστατου πίνακα for i=1:3 for j=1:2 a(i,j)=input('dose timh'); for i=1:3 for j=1:2 fprintf('%d ',a(i,j)) fprintf('\n') 16
Εντολή επανάληψης: WHILE Η while είναι πολύ βασική εντολή επανάληψης. Με τη while ο αριθμός των επαναλήψεων δεν είναι συγκεκριμένος, όπως με τη for, αλλά ο βρόχος επαναλαμβάνεται συνεχώς όσο ικανοποιείται μια συγκεκριμένη συνθήκη. while συνθήκη εντολές... 17
1 ο Παράδειγμα_1 Να γραφτούν οι εντολές που διαβάζουν ένα σύνολο αριθμών και υπολογίζουν το άθροισμα των τετραγώνων τους. Το τέλος του συνόλου των αριθμών να δηλώνεται με κάποιο συγκεκριμένο αριθμό π.χ.(100). 18
1 ο Παράδειγμα_2 x= input( ΠΑΡΑKΑΛΩ ΔΩΣΤΕ ΕΝΑΝ ΑΡΙΘΜΟ ); s=0; while x~=100 s=s+x^2; x= input( ΠΑΡΑKΑΛΩ ΔΩΣΤΕ ΕΝΑΝ ΑΡΙΘΜΟ ); disp( ΤΟ ΑΘΡΟΙΣΜΑ ΤΕΤΡΑΓΩΝΩΝ ΕΙΝΑΙ ) disp(s) 19
Εντολές break, return, continue Οι βρόχοι for και while μπορούν να διακοπούν με την εντολή break. Η εντολή break σταματά την επανάληψη της εντολής for ή while,δεν εκτελούνται οι εντολές που βρίσκονται μετά από αυτήν και ο έλεγχος μεταφέρεται στην πρώτη εντολή μετά το τελικό του βρόχου στον οποίο χρησιμοποιείται. Η εντολή return σταματά τον κανονικό τερματισμό του προγράμματος. Ο έλεγχος επιστρέφει στο πληκρολόγιο ή εάν έχουμε συνάρτηση μεταφέρει τον έλεγχο στην καλούσα συνάρτηση. 20
Εντολή continue Η εντολή continue μεταβιβάζει τον έλεγχο στην επόμενη επανάληψη ενός βρόχου for ή while χωρίς να εκτελεστούν οι υπόλοιπες εντολές του βρόχου που βρίσκονται μετά από αυτήν. 21
Συνάρτηση menu Με τη συνάρτηση menu δημιουργείται ένα μενού επιλογών. Γεν. τύπος: type=menu(header, item1, item2, item3,..). Header δημιουργεί επικεφαλίδα: Item1, item2, item3, δημιουργούν κουμπιά με τα αντίστοιχα ονόματα. Ο αριθμός επιλογής του χρήστη επιστρέφεται στη μεταβλητή choice. 22
Παράδειγμα χρήσης της συνάρτησης menu 1. Να βρεθούν η ορίζουσα, ο ανάστροφος και ο αντίστροφος του πίνακα: a=[2 3 4;9 6 4;2 9 3] 1. Δημιουργήστε ένα πίνακα 2Χ2 και υπολογίστε το μέσο όρο των στοιχείων του πίνακα. 2. Να γραφτούν οι εντολές που υπολογίζουν το εμβαδόν τριγώνου από τις πλευρές του. 3. Δημιουργήστε παράθυρο επιλογής προγραμμάτων από το οποίο θα καλείτε και θα τρέχετε τα παραπάνω προγράμματα. 23
Δημιουργία 1 ου προγράμματος a=[2 3 4;9 6 4;2 9 3]; disp('h orizoyza toy pinaka=') d=det(a) disp('o anastrofos toy pinaka =') at=a' disp('o antistrofos toy pinaka=') al=inv(a) pause main %epistrofh sto arxiko programma 24
Δημιουργία 2 ου προγράμματος a=[4 5 8 5 9] s=0; for i=1:5 s=s+a(i); mesos1=s/5 disp('mesos oros=') disp(mesos1) pause main 25
Δημιουργία 3 ου προγράμματος a=input('dose a='); b=input('dose b='); c=input('dose c='); s=(a+b+c)/2; e=sqrt(s*(s-a)*(s-b)*(s-c)); disp('embadon=') disp(e) pause main 26
Δημιουργία menu επιλογών_1 clear clc type=menu('choose program','pinakas','mesos oros pinaka','embadon trigonoy','exodos') if type==1 clc matr; pause main 27
Δημιουργία menu επιλογών_2 elseif type==2 clc mesos; pause main elseif type==3 clc embadon; 28
Δημιουργία menu επιλογών_3 pause main else type==4 clc; break; 29
Ασκήσεις_1 3. Να γραφεί πρόγραμμα στο οποίο θα εισάγονται οι βαθμοί 10 σπουδαστών από το πληκτρολόγιο και να βρίσκεται το πλήθος των σπουδαστών που πέρασαν το μάθημα (βαθμός >=5). 4. Δίδεται η συνάρτηση f(x)=x 4-5x 2 +3. Να γραφεί πρόγραμμα που θα εμφανίζει τις τιμές που επιστρέφει η συνάρτηση για τιμές του x από 0 μέχρι 1 με βήμα 0.05. 30
Ασκήσεις_2 5. Να γραφεί πρόγραμμα το οποίο δημιουργεί τον πίνακα Α(3,3) και υπολογίζει και εντυπώνει το άθροισμα και το γινόμενο όλων των στοιχείων του πίνακα καθώς επίσης τον μεγαλύτερο και μικρότερο αριθμό του πίνακα. 6. Δημιουργείστε ένα παράθυρο επιλογής προγραμμάτων με τη χρήση του οποίου θα καλείτε και θα τρέχετε κάθε ένα από τα παραπάνω προγράμματα. 31
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Τσαγκαλίδου Ροδή. «Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: URL. 33
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 34
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 35