ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 2: Εντολές ελέγχου και επανάληψης

Σχετικά έγγραφα
ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Δομές επανάληψης

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 2: Έλεγχος συνθηκών

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 6: Αποτελεσματικότητα αλγορίθμων

Πληροφορική ΙΙ Θεματική Ενότητα 5

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 9: Αναδρομή

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 1: Εισαγωγή

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 3

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 5: Μαθηματικές εφαρμογές

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

Εισαγωγή στους Αλγορίθμους

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Κβαντική Επεξεργασία Πληροφορίας

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Διοικητική Λογιστική

Εισαγωγή στους Υπολογιστές

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στους Υπολογιστές

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 6: Πίνακες [2/2] (Δισδιάστατοι)

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Υπολογιστική άλγεβρα Ενότητα 10: Βάσεις Groebner ενός ιδεώδους ΙΙΙ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Δομημένος Προγραμματισμός

Γενική Φυσική Ενότητα: Ταλαντώσεις

Κβαντική Επεξεργασία Πληροφορίας

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Εισαγωγή στην Πληροφορική

Βέλτιστος Έλεγχος Συστημάτων

Λογικός Προγραμματισμός Ασκήσεις

Εισαγωγή στους Αλγορίθμους

Πληροφορική ΙΙ Ενότητα 1

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Προγραμματισμός Η/Υ. 3 η ενότητα. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διδακτική των εικαστικών τεχνών Ενότητα 1

Διδακτική των εικαστικών τεχνών Ενότητα 3

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Αριθμητική Ανάλυση. Ενότητα 1: Εισαγωγή Βασικές Έννοιες. Φραγκίσκος Κουτελιέρης Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 2

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Πληροφορική ΙΙ Θεματική Ενότητα 7

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Δομημένος Προγραμματισμός

Διδακτική Πληροφορικής

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Υπολογιστές

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Κβαντική Επεξεργασία Πληροφορίας

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Φιλοσοφία της Ιστορίας και του Πολιτισμού

Γενική Φυσική Ενότητα: Δυναμική Άκαμπτου Σώματος

Γενική Φυσική Ενότητα: Εισαγωγή στην Ειδική Θεωρία της Σχετικότητας

Διδακτική των εικαστικών τεχνών Ενότητα 2

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Ιστορία της μετάφρασης

Φυσική ΙΙΙ. Ενότητα 4: Ηλεκτρικά Κυκλώματα. Γεώργιος Βούλγαρης Σχολή Θετικών Επιστημών Τμήμα Φυσικής

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Διοικητική Λογιστική

Εφαρμοσμένη Βελτιστοποίηση

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 1: Εισαγωγικές έννοιες

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Πληροφορική ΙΙ Θεματική Ενότητα 6

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Υπολογιστική άλγεβρα Ενότητα 7: Βάσεις Groebner I

Διδακτική Μαθηματικών Ι Ενότητα 5: Διερευνητικές δραστηριότητες

Transcript:

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 2: Εντολές ελέγχου και επανάληψης Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών

Εντολές ελέγχου και επανάληψης 13 Μερικά χρήσιµα «εργαλεία»... για οποιεσδήποτε εκφράσεις Α και Β Σύνταξη Τι υπολογίζει AˆB ύψωση σε δύναµη sqrt(a) A abs(a) A floor(a) στρογγυλοποίηση πρός ceil(a) στρογγυλοποίηση πρός + round(a) στρογγυλοποίηση προς πλησιέστερο fix(a) στρογγυλοποίηση προς το 0 rem(a,b) A - B*fix(A/B) exp(a), log(a), log10(a), log2(a) e A, log A, log 10 A, log 2 A sin(a), cos(a), tan(a) sin A, cos A, tan A asin(a), acos(a), atan(a) arcsin A, arccos A, arctan A rand() τυχαίος αριθµός στο (0, 1) max(a,b), min(a,b) max (A, B) min (A, B) Πληροφορική Ι Μ. ρακόπουλος 13 Ακέραια διαίρεση και υπόλοιπα Εστω χρόνος (totalminutes) εκφρασµένος σε λεπτά. Να εκφραστεί σε ώρες (hours) και λεπτά (minutes). Παράδειγµα: 359 λεπτά είναι 5 ώρες και 59 λεπτά. Λύση στο MATLAB: hours = fix(totalminutes/60); minutes = rem(totalminutes, 60); Πληροφορική Ι Μ. ρακόπουλος 14 Λογικά (boolean) δεδοµένα Για δεδοµένα µε 2 µόνο καταστάσεις (αληθές/ψευδές). Τιµές στο σύνολο {true, false} Στο MATLAB, κωδικοποιούνται εσωτερικά σαν ακέραοι. false είναι 0 (και 0 είναι false) true είναι 1 (αλλά και οποιαδήποτε µη µηδενική τιµή). disp(false); % εκτυπώνει 0 disp(true); % εκτυπώνει 1 Πληροφορική Ι Μ. ρακόπουλος 15 27

Λογικές (boolean) εκφράσεις Στην απλούστερη µορφή τους συγκρίσεις, που σχηµατίζονται από: αριθµητικές εκφράσεις, και τελεστές συσχέτισης: Στα µαθηµατικά: < > = Στο MATLAB: < <= > >= == = λογικούς (boolean) τελεστές. Παραδείγµατα: airtemperature > 30.0 f <= 212 divisor = 0 Πληροφορική Ι Μ. ρακόπουλος 16 Λογικές (boolean) πράξεις και τελεστές Σύζευξη (και) µε τελεστή && (διµελής) Αν η ϑερµοκρασία είναι κάτω απο 0 o C και ϐρέχει, τότε χιονίζει. ιάζευξη (ή) µε τελεστή (διµελής) Αν η οµάδα µου τερµατισει στις πρώτες ϑέσεις του πρωταθλήµατος ή κατακτήσει το κύπελλο, τότε ϑ αγωνιστεί του χρόνου στην Ευρώπη. Αρνηση (δεν) µε τελεστή (µονοµελής) Αν δεν είναι Σάββατο ή Κυριακή, τότε είναι εργάσιµη µέρα. Πίνακας αλήθειας: p q p p &&q p q true true false true true true false false true false true true false true false false false false Πληροφορική Ι Μ. ρακόπουλος 17 Σύνθετες λογικές εκφράσεις Παραδείγµατα: f>=flo && f<=fhi (2>3) 2>3 8*2-1 >= 15 8/2*2 == 8 Προτεραιότητα τελεστών: πρώτα οι αριθµητικοί τελεστές, µετά οι τελεστές συσχέτισης και η άρνηση και τέλος οι διµελείς λογικοί τελεστές. Πληροφορική Ι Μ. ρακόπουλος 17 α 28

Λανθασµένη χρήση των λογικών τελεστών x δεν ισούται µε 2 ή 3 Λάθος: x =2 x =3 Είναι πάντα true. Σωστό: (x==2 x==3) ή απλούστερα: x =2 && x =3 Προκύπτει από το νόµο του de Morgan: (p q) isod. p && q (p && q) isod. p q 0 x < 1 στο MATLAB γράφεται: 0 <= x && x < 1 Εκφράσεις της µορφής α x β, όπου κάποιος από τους τελεστές συσχέτισης γράφονται πάντα σαν: α x && x β Πληροφορική Ι Μ. ρακόπουλος 18 Κανόνας υπολογισµού λογικών εκφράσεων Ο υπολογισµός λογικών εκφράσεων σταµατάει τη στιγµή που προσδιορίζεται η τιµή τους (lazy evaluation). έκφραση1 && έκφραση2 Αν η έκφραση1 είναι false τότε δέν υπολογίζεται η έκφραση2. έκφραση1 έκφραση2 Αν η έκφραση1 είναι true τότε δέν υπολογίζεται η έκφραση2. Πρώτα συντάσσεται η απλούστερη από τις 2 εκφράσεις (y > 1) && (2*x*x-3*x+1 >= k*x*(x-1)+4*y) ή η έκφραση που δεν δηµιουργεί προβλήµατα (x = 0) && (y/x == 0) Πληροφορική Ι Μ. ρακόπουλος 19 Παράδειγµα: εύρεση δίσεκτων ετών Ενα έτος είναι δίσεκτο, άν: το έτος διαιρείται µε το 4 αλλά δεν διαιρείται µε το 100, ή το έτος διαιρείται µε το 400. π.χ. 1900 δεν είναι δίσεκτο, 2000 είναι. Η αντίστοιχη boolean έκφραση του MATLAB για τη µεταβλητή year: (rem(year,4)==0&&rem(year,100) =0) (rem(year,400)==0) ή (rem(year,400)==0) (rem(year,4)==0&&rem(year,100) =0) Πληροφορική Ι Μ. ρακόπουλος 20 29

Εντολές ελέγχου και επανάληψης Αλλάζουν τη ϱοή εκτέλεσης των εντολών προγράµµατος. Χωρίς τη χρήση εντολών ελέγχου, η εκτέλεση είναι σειριακή. ΣΕΙΡΙΑΚΗ ΕΚΤΕΛΕΣΗ ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΚΤΕΛΕΣΗ ΕΚΤΕΛΕΣΗ ΥΠΟ ΣΥΝΘΗΚΗ for, while if Πληροφορική Ι Μ. ρακόπουλος 21 Εκτέλεση υπό συνθήκη: η εντολή if else true ΣΥΝΘΗΚΗ false T F if <λογική συνθήκη> <εντολές T> else <εντολές F> Οι <εντολές T> εκτελούνται όταν αληθεύει η <λογική συνθήκη>. ιαφορετικά εκτελούνται οι <εντολές F>. Πληροφορική Ι Μ. ρακόπουλος 22 30

Εκτέλεση υπό συνθήκη: η εντολή if Οταν δεν υπάρχει κλάδος <F>, παίρνει τη µορφή: ΣΥΝΘΗΚΗ false true if <λογική συνθήκη> <εντολές T> T Πληροφορική Ι Μ. ρακόπουλος 23 Παραδείγµατα Υπολόγισε την απόλυτη τιµή x του x και αποθήκευσε το αποτέλεσµα στη µεταβλητή abs % 1ος τρόπος ******************* if x >= 0, abs = x; if x < 0, abs = -x; % 2ος τρόπος ******************* if x >= 0 abs = x; else abs = -x; % 3ος τρόπος ******************* abs = x; if x < 0, abs = -x; Πληροφορική Ι Μ. ρακόπουλος 24 31

Παραδείγµατα (συνεχ.) % µέγιστο των x, y if x > y, max = x; else max = y; % έλεγχος διαίρεσης num/den if den == 0 disp( Division by 0 ); else disp(num/den) % αύξουσα διάταξη των x, y if x > y temp = x; x = y; y = temp; Πληροφορική Ι Μ. ρακόπουλος 25 ιάταξη 3 αριθµών Πρόβληµα ιάβασε 3 αριθµούς a, b και c και διάταξέ τους έτσι ώστε a b c. Ανάλυση Ενας µη προφανής (αλλά κοµψός) αλγόριθµος: 1. Εναλλαγή των a και b, αν χρειάζεται, έτσι ώστε a b. 2. Εναλλαγή των b και c, αν χρειάζεται, έτσι ώστε b c. (Τώρα η µεταβλητή c έχει την µεγαλύτερη τιµή, αλλά τα a, b δεν είναι κατ ανάγκη διατεταγµένα). 3. Εναλλαγή των a και b, αν χρειάζεται, έτσι ώστε a b. Παράδειγµα: Τι συµβαίνει για a = 3, b = 2, c = 1? Πληροφορική Ι Μ. ρακόπουλος 26 32

Προγραµµατιστικά ιδιώµατα µε λογικές εκφράσεις Για τις λογικές µεταβλητές isleapyear, iseven και τον ακέραιο n αντί της if isleapyear == true... προτιµάται η if isleapyear... αντί της προτιµάται η if rem(n,2) == 0 iseven = true; else iseven = false; iseven = (rem(n,2) == 0); Πληροφορική Ι Μ. ρακόπουλος 27 Σύνθετα if if <συνθήκη_1> <εντολές_1> elseif <συνθήκη_2> <εντολές_2> elseif <συνθήκη_3> <εντολές_3>... else <εντολές_e> <συνθήκη_i>: boolean έκφραση. <εντολές_i>: εκτελούνται όταν η <συνθήκη_i> είναι true. <εντολές_e>: εκτελούνται όταν δεν αληθεύει καµµία <συνθήκη_i>. Πληροφορική Ι Μ. ρακόπουλος 28 Σύνθετα if (συνεχ.) n = input( Dwse akeraio ); if n > 0 disp( + ); elseif n == 0 disp(0); else disp( - ); Πληροφορική Ι Μ. ρακόπουλος 29 33

Η εντολή while false ΣΥΝΘΗΚΗ true while <λογική συνθήκη> <εντολές S> Η S εκτέλεση των εντολών <S> επαναλαµβάνεται όσο αληθεύει η <ΛΣ> (λογική συνθήκη). Η τιµή (αληθής ή ψευδής) της <ΛΣ> πρέπει: να µπορεί να υπολογιστεί πριν την εκτέλεση της while (δηλ. η <ΛΣ> να είναι ορισµένη) να µεταβάλλεται µε κάποια από τις εντολές <S>, διαφορετικά η αληθεια της <ΛΣ> δεν ϑα αλλάξει. Πληροφορική Ι Μ. ρακόπουλος 30 υνάµεις του 2 N = input( N? ); v = 1; i = 0; while i <= N fprintf( %3g %5g\n, i, v); v = 2*v; i = i + 1; Πληροφορική Ι Μ. ρακόπουλος 31 34

Αθροισµα ψηφίων ακεραίου Για τον ακέραιο n: Εύρεση τελευταίου ψηφίου: rem(n,10) π.χ. rem(1985,10) 5. Αποκοπή τελευταίου ψηφίου: fix(n/10) π.χ. fix(1985/10) 198. n = input( Dwse akeraio ); fprintf( To athroisma twn yhfiwn tou %g einai, n); dsum = 0; while n > 0 dsum = dsum + rem(n, 10); n = fix(n/10); disp(dsum); Πληροφορική Ι Μ. ρακόπουλος 32 Ατέρµονες επαναλήψεις Υπάρχει περίπτωση µια επαναληπτική εντολή να µην τερµατίζει. Παράδειγµα: while n >= 0 dsum = dsum + rem(n, 10); n = fix(n/10); Οταν εξαντληθούν όλα τα ψηφία, το n ϑα παίρνει διαρκώς την τιµή 0 και η παραπάνω while δεν τερµατίζει. Πληροφορική Ι Μ. ρακόπουλος 33 Αντιστροφή ψηφίων ακεραίου N = input( N? ); m = 0; while N = 0 m = 10*m + rem(n,10); N = fix(n / 10); disp(m); Πληροφορική Ι Μ. ρακόπουλος 34 35

Μια άλλη εντολή επανάληψης Μετατροπή 7 ϑερµοκρασιών C σε ϐαθµούς F (µε χρήση της εντολής for). % Μετατρέπει 7 ϑερµοκρασίες C σε ϐαθµούς F % f, c - ϑερµοκρασίες F, C % m - µετρητής for m = 1:7, c = input( ϑερµοκρασία Celsius? ); f = (9/5)*c + 32; disp( ισοδύναµη ϑερµοκρασία Fahrenheit ); disp(f); Πληροφορική Ι Μ. ρακόπουλος 35 Η εντολή for false µτβ = ΑΤ µτβ <= ΤΤ true S for <µτβ> = <ΑΤ >:<Β>:<ΤΤ >, <εντολές S> όπου <ΑΤ >: αρχική τιµή, <Β>: ϐήµα, <ΤΤ >: τελική τιµή. εν γίνεται καµµία επανάληψη όταν AT>TT & B>0 AT<TT & B<0 µτβ = µτβ + Β Για µοναδιαίο <Β>, η for γράφεται: for <µτβ> = <ΑΤ >:<ΤΤ >, <εντολές S> Πληροφορική Ι Μ. ρακόπουλος 36 36

Παραδείγµατα for for i = 1:10, disp(i); for j = 1:1:10, disp(j); for m = 2:3:10, disp(m); for odd = 1:2:100, disp(odd); for even = 0:2:100, disp(even); for nothing = 100:10:1, disp(nothing); for nada = 100:-500:100000, disp(nada); for countdown = 10:-1:1, disp(countdown); Πληροφορική Ι Μ. ρακόπουλος 37 Παραδείγµατα for (συνεχ.) % υπολογισµός αθροίσµατος: 1 + 2 + 3 +... + N sum = 0; for i = 1:N sum = sum + i; disp(sum); % υπολογισµός γινοµένου: 1 * 2 * 3 *... * N prod = 1; for i = 1:N prod = prod*i; disp(prod); Πληροφορική Ι Μ. ρακόπουλος 38 37

Αρµονικοί αριθµοί Ο n-οστός αρµονικός αριθµός: H n = 1 + 1/2 + 1/3 + 1/4 + + 1/n 1 1 0.8 0.6 1/2 0.4 1/3 0.2 1/4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Χρησιµοποιούνται συχνά στην ανάλυση αλγορίθµων n ιακριτό ανάλογο του λογαρίθµου: προσεγγίζουν το 1/x dx. 1 lim n H n log n = 0.577215... = γ (σταθ. Euler-Mascheroni) Πληροφορική Ι Μ. ρακόπουλος 39 Αρµονικοί αριθµοί % Harmonic numbers N = input( N? ); sum = 0; for i = 1:N sum = sum + 1/i; fprintf( H_%g = %g,, N, sum); fprintf( log(%g) = %g\n, N, log(n)); fprintf( Stathera Euler-M: %g\n, sum-log(n)); Πληροφορική Ι Μ. ρακόπουλος 40 38

Σχέση for και while for <µτβ> = <ΑΤ >:<Β>:<ΤΤ >, <εντολές>; ισοδ. <µτβ> = <ΑΤ >; while <µτβ> <= <ΤΤ >, <εντολές>; <µτβ> = <µτβ> + <Β>; Η for προτιµάται όταν ο αριθµός των επαναλήψεων είναι γνωστός. Πληροφορική Ι Μ. ρακόπουλος 41 while αντί for Χρόνια για διπλασιασµό κεφάλαιου 1000, µε τόκο 5% ετησίως? my_money = 1000; years = 0; while my_money < 2000 my_money = my_money * 1.05; years = years + 1; disp(years); Πληροφορική Ι Μ. ρακόπουλος 42 Επεξεργασία αγνώστου πλήθους δεδοµένων - I Το πλήθος των δεδοµένων δεν είναι σταθερό. Καταµέτρηση τους. Γενικός αλγόριθµος π.χ. αθροισµα αριθµών n = input( n? ); <Αρχική επεξεργασία> for i = 1:n < ιάβασε δεδοµένο> i> <Επεξεργασία δεδοµένου> i> <Τελική επεξεργασία> ΠΡΟΒΛΗΜΑ µε πολύ µεγάλες λίστες αριθµών. n = input( n? ); sum = 0; for i = 1:n value = input(? ); sum = sum + value; disp(sum); Πληροφορική Ι Μ. ρακόπουλος 43 39

Επεξεργασία αγνώστου πλήθους δεδοµένων - II ΑΝΤΙΜΕΤΩΠΙΣΗ: ανάγνωση και επεξεργασία δεδοµένων µεχρι να εισαχθεί κάποια ειδικό δεδοµένο (π.χ. 0 ή -1), που δεν είναι επεξεργάσιµο, απλώς σηµατοδοτεί το τέλος των δεδοµένων. Γενικός αλγόριθµος <Αρχική επεξεργασία> OfData = <Ειδική τιµή τέλους> < ιάβασε το πρώτο δεδοµένο> while value = OfData, <Επεξεργασία δεδοµένου> < ιάβασε το επόµενο δεδοµένο> <Τελική επεξεργασία> π.χ. γινόµενο αριθµών OfData = 0; prod = 1; value = input(? ); while value = OfData, prod = prod*value; value = input(? ); disp(prod); Πληροφορική Ι Μ. ρακόπουλος 44 Επεξεργασία αγνώστου πλήθους δεδοµένων - III Οπως και στη II, αλλά µε χρήση της εντολής break. Γενικός αλγόριθµος OfData = <ειδική τιµή τέλους> while true < ιάβασε τιµή> if <τιµή>==ofdata break; <Επεξεργασία δεδοµένου> <Τελική επεξεργασία> Η break τερµατίζει βίαια τις επαναλήψεις των for, while που την εκτελούν. π.χ. γινόµενο αριθµών OfData = 0; prod = 1; while true value = input(? ); if value==ofdata break; prod = prod*value; disp(prod); Πληροφορική Ι Μ. ρακόπουλος 45 Αθροισµα ϑετικών όρων λίστας Για λίστα αγνώστου πλήθους όρων (δεν περιλαµβάνει το 0). Χρειάζεται ο έλεγχος του προσήµου κάθε αριθµού στη λίστα. _of_data = 0; sum = 0; disp( Αθροισµα ϑετικών όρων λίστας ); disp( ωσε 0 για τερµατισµό ); value = input( Πρώτος όρος? ); while value = _of_data, if value > 0, sum = sum + value; value = input( Επόµενος όρος? ); disp(sum); Πληροφορική Ι Μ. ρακόπουλος 46 40

for µέσα σε for Εκτύπωση κύκλου ακτίνας R. Παράδειγµα για R = 5: Εκτύπωση του N N πίνακα. Παράδειγµα για N = 11..... *....... * * * * * * *... * * * * * * * * *.. * * * * * * * * *.. * * * * * * * * *. * * * * * * * * * * *. * * * * * * * * *.. * * * * * * * * *.. * * * * * * * * *... * * * * * * *....... *..... * * * * * * * * * * *. * * * * * * * * * *.. * * * * * * * * *... * * * * * * * *.... * * * * * * *..... * * * * * *...... * * * * *....... * * * *........ * * *......... * *.......... * Πληροφορική Ι Μ. ρακόπουλος 47 Circle.m R = input( R? ); for i = -R:R for j = -R:R if i*i + j*j <= R*R fprintf( * ); else fprintf(. ); fprintf( \n ); Πληροφορική Ι Μ. ρακόπουλος 48 Triangle.m N = input( N? ); for i = 1:N for j = 1:N if j < i fprintf(. ); else fprintf( * ); fprintf( \n ); Πληροφορική Ι Μ. ρακόπουλος 49 41

Ασκηση Να γραφεί πρόγραµµα MATLAB που να εµφανίζει τον παρακάτω πίνακα πολλαπλασιασµού: 1 2 3 4 5 6 7 8 9 ------------------------------ 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81 Πληροφορική Ι Μ. ρακόπουλος 50 Αριθµοί Fibonacci Η ακολουθία 1, 2, 3, 5, 8, 13,... f n = f n 1 + f n 2, n > 2 µε f 1 = 1, f 2 = 2. Πρόγραµµα fibo.m που υπολογίζει τον n-οστό αρ. Fibonacci: % fibo.m n = input( n? ); if n == 1 f = 1; else g = 1; f = 2; for i = 3:n f = f + g; g = f - g; disp(f); Πληροφορική Ι Μ. ρακόπουλος 51 Πρώτοι Αριθµοί Βασικό πρόβληµα στη Θεωρία Αριθµών είναι ο έλεγχος αν κάποιος ακέραιος είναι πρώτος. Ενας ακέραιος > 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες: τη µονάδα και τον εαυτό του. Οι πρώτοι αριθµοί σηµαντικοί στην κρυπτογραφία (= µελέτη κωδίκων): στις ηλεκτρονικές επικοινωνίες, οι υπολογιστές χρησιµοποιούνται για κωδικοποίηση και αποκωδικοποίηση πολλές τεχνικές κωδικοποίησης ϐασίζονται στη ϑεωρία πρώτων αριθµών Πληροφορική Ι Μ. ρακόπουλος 52 42

Αλγόριθµος Π1: έλεγχος πρώτων αριθµών Είναι ο n πρώτος? Καταµέτρηση όλων των διαιρετών του n (χρειάζεται να υπολογισθούν). Αν είναι ακριβώς 2 τότε ο n είναι πρώτος. Οι πιθανοί διαιρέτες του n είναι n, άρα αρκεί να ελεγχθεί ποιοί από τους 1, 2,..., n είναι διαιρέτες του n. Πληροφορική Ι Μ. ρακόπουλος 53 Πρόγραµµα για τον αλγόριθµο Π1 % Ελέγχει αν ένας ακέραιος είναι πρώτος αριθµός % n - αριθµός για έλεγχο % num_div - πλήθος διαιρετών n = input( ώσε ακέραιο αριθµό? ); num_div = 0; % πλήθος διαιρετών for i = 1:n, if rem(n,i) == 0 num_div = num_div + 1; if num_div == 2, disp( Ο αριθµός είναι πρώτος ); else, disp( Ο αριθµός είναι σύνθετος ); Πληροφορική Ι Μ. ρακόπουλος 54 Βελτίωση της αποτελεσµατικότητας του Π1: αλγόριθµος Π2 Ο Π1 δεν είναι πρακτικός για µεγάλους αριθµούς: ο 1000000 ϕαίνεται οτι ΕΝ ειναι πρώτος στον έλεγχο µε το 2. Αρα ο αλγόριθµος µπορεί να τερµατίζει µόλις ϐρεθεί διαιρέτης > 1. Περιτεύει η εξέταση πιθανών διαιρετών που είναι άρτιοι και > 2: αν ο n δεν διαιρείται από το 2, τότε δεν διαιρείται από κανένα άρτιο. Αριθµοί > n δεν χρειάζεται να ελεγχθούν σαν πιθανοί διαιρέτες: Αν δ 1 δ 2 είναι δυο διαιρέτες του n τέτοιοι ώστε δ 1 δ 2 = n, τότε ένας από τους δ 1, δ 2 ϑα είναι οπωσδήποτε < n (απόδειξη µε απαγωγή σε άτοπο). Πληροφορική Ι Μ. ρακόπουλος 55 43

Πρόγραµµα για τον αλγόριθµο Π2 n = input( ώσε ακέραιο αριθµό? ); if rem(n,2) == 0, disp( σύνθετος ); return; for divisor = 3:2:sqrt(n) if rem(n, divisor) == 0 disp( σύνθετος ); return; disp( πρώτος ); Πληροφορική Ι Μ. ρακόπουλος 56 Η εντολή return Τερµατίζει άµεσα την εκτέλεση ενός MATLAB script και ο έλεγχος επιστρέφει στο περιβάλλον του MATLAB. Πληροφορική Ι Μ. ρακόπουλος 56 α Προβλήµατα µε τον αλγόριθµο Π2 Λάθος για n = 1 (όχι πρώτος) και n = 2 (ο µόνος πρώτος άρτιος) Ο Π2 µπορεί να είναι αργότερος από τον Π1 γιατί υπολογίζει την sqrt(n) σε κάθε επανάληψη: for divisor=3:2:sqrt(n) Αντιµετώπιση: limit = sqrt(n); for divisor=3:2:limit Ο Π2 µπορεί να δώσει λάθος αποτελέσµατα ανάλογα µε τον υπολογιστή. Π.χ: για το 49 µε διαιρέτες τους 1, 7, 49, η sqrt(49) µπορεί να υπολογίζεται σαν 6.9999999 σε κάποιο µηχάνηµα. Το 7 δεν ϑα ελεγχθεί σαν πιθανός διαιρέτης και ο Π2 ϑα δώσει οτι ο 49 είναι πρώτος. Αρα χρειάζεται ελεγχος µέχρι sqrt(n) + 1. Πληροφορική Ι Μ. ρακόπουλος 57 44

Μέθοδος για τον αλγόριθµο Π3 n = input( ώσε ακέραιο αριθµό? ); if (rem(n,2)==0 && n>2) n==1, disp( σύνθετος ); return; limit = sqrt(n)+1; for divisor = 3:2:limitx if rem(n, divisor) == 0 disp( σύνθετος ); return; disp( πρώτος ); Πληροφορική Ι Μ. ρακόπουλος 58 Επιλογή αλγορίθµου Μεταξύ των συντακτικά ορθών Π1 και Π3: Ο Π3 είναι ταχύτερος, ειδικά όταν αποτελεί µέρος µεγαλύτερης εφαρµογής όπου καλείται πολλές ϕορές. Ο Π1 είναι απλούστερος και πιο ευανάγνωστος. Σε εφαρµογές όπου ο χρόνος είναι κρίσιµος προτιµάται ο αποτελεσµατικότερος αλγόριθµος. Για εύκολη συντήρηση προγραµµάτων δυνατή και η χρησιµοποίηση απλούστερων αλγορίθµων σε ϐάρος της αποτελεσµατικότητας. Πληροφορική Ι Μ. ρακόπουλος 59 45

Σημειώματα Σημείωμα Αναφοράς Copyright Εθνικόν και Καποδιστριακόν Πανεπιστήμιον Αθηνών, Μιχάλης Δρακόπουλος, 2014. Μιχάλης Δρακόπουλος. «Πληροφορική Ι. Ενότητα 2: Εντολές ελέγχου και επανάληψης». Έκδοση: 1.0. Αθήνα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://opencourses.uoa.gr/modules/document/?course=math105. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.