Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος Παραδείγματα αλγορίθμων: Η παρασκευή ενός κέικ Η εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών Η εκκίνηση ενός αυτοκινήτου Η πρωινή προετοιμασία για το σχολείο / νυχτερινή έξοδο Είναι μια μέθοδος που εφαρμόζεται για να λύσει ένα πρόβλημα. Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!! 1
Βασικές Έννοιες Αλγορίθμων Κριτήρια ενός αλγορίθμου Είσοδος (input): καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο Έξοδος (output): ο αλγόριθμος «παράγει» τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα Καθοριστικότητα (defineteness): να εξασφαλίζεται ο «ορισμός» κάθε εντολής Περατότητα (finiteness): ο αλγόριθμος τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης. (Διαφορετικά, λέγεται υπολογιστική διαδικασία) Αποτελεσματικότητα (effectiveness): ο αλγόριθμος αποτελείται από μεμονωμένες απλές-εκτελέσιμες εντολές 2
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Ελεύθερο κείμενο: περιγραφή σε φυσική γλώσσα Ο πιο αδόμητος τρόπος αναπαράστασης. Ελλοχεύει ο κίνδυνος να παραβιαστεί το κριτήριο της αποτελεσματικότητας!!! 3
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Φυσική γλώσσα κατά βήματα: περιγραφή κατά βήματα Σαφώς καλύτερος τρόπος αναπαράστασης από το ελεύθερο κείμενο. 4
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Διαγραμματικές τεχνικές: συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου (η πιο γνωστή είναι το διάγραμμα ροής (flow chart)) Δεν χρησιμοποιείται πλέον συχνά. 5
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Κωδικοποίηση (coding): πρόγραμμα γραμμένο είτε με μία ψευδογλώσσα είτε σε κάποιο προγραμματιστικό περιβάλλον που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο. Εκτελείται από τον υπολογιστή! 6
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Αναπαράσταση αλγορίθμου με ελεύθερο κείμενο Αρχικά διαβάζουμε τους συντελεστές α, β, γ του τριωνύμου. Στη συνέχεια, υπολογίζουμε τη διακρίνουσα με τον τύπο β 2-4αγ και ανάλογα με την τιμή της, υπολογίζουμε τις ρίζες του τριωνύμου. Δηλαδή, αν η διακρίνουσα είναι αρνητική, το τριώνυμο δεν επιλύεται στο σύνολο των πραγματικών αριθμών. Ενώ, αν η διακρίνουσα ισούται με μηδέν, η λύση είναι β/2α. Τέλος, αν η διακρίνουσα είναι θετική, τότε το τριώνυμο έχει τις εξής δύο λύσεις: 7
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Αναπαράσταση αλγορίθμου σε φυσική γλώσσα κατά βήματα 1. Διαβάζουμε τους συντελεστές α, β, γ 2. Υπολογίζουμε τη διακρίνουσα (Δ=β 2-4αγ) 3. Αν Δ<0 τότε το τριώνυμο δεν επιλύεται 4. Αν Δ=0 τότε χ= β/2α 5. Αν Δ>0 τότε χ1=(-β+τρ(δ))/2α και χ2=(-β-τρ(δ))/2α 8
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων Αναπαράσταση αλγορίθμου με διάγραμμα ροής ΑΡΧΗ Διάβασε α, β, γ Δ β 2-4αγ ΝΑΙ ΟΧΙ Εκτύπωσε Δε λύνεται Δ < 0 Δ > 0 ΝΑΙ ΟΧΙ Εκτύπωσε Εκτύπωσε... ΤΕΛΟΣ 9
Βασικές Έννοιες Αλγορίθμων Περιγραφή & αναπαράσταση αλγορίθμων αναπαράσταση αλγορίθμου με κωδικοποίηση σε πρόγραμμα Πρόγραμμα Τριώνυμο. Διάβασε α, β, γ Δ β 2 4αγ Αν Δ<0 τότε Γράψε Δεν υπάρχει λύση Αλλιώς_αν Δ=0 τότε χ -β/(2α) Γράψε χ Αλλιώς χ 1 -β+τρ(δ)/(2α) χ 2 -β+τρ(δ)/(2α) Γράψε χ 1, χ 2 Τέλος_αν Τέλος_προγράμματος 10
Βασικές Έννοιες Αλγορίθμων Βασικές συνιστώσες/εντολές Οι εντολές είναι τα δομικά στοιχεία ενός αλγορίθμου Δομή ακολουθίας Δομή επιλογής Διαδικασίες πολλαπλών επιλογών Εμφωλευμένες Διαδικασίες Δομή επανάληψης 11
Βασικές Έννοιες Αλγορίθμων Δομή ακολουθίας/σειριακή δομή Η ακολουθιακή δομή εντολών χρησιμοποιείται για την αντιμετώπιση απλών προβλημάτων, όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών. Παράδειγμα : Να διαβασθούν δύο αριθμοί, να υπολογισθεί και να εμφανιστεί το γινόμενο τους. Πρόγραμμα Γινόμενο Μεταβλητές Αρχή Διάβασε a, b c a * b Γράψε c Τέλος_προγράμματος 12
Βασικές Έννοιες Αλγορίθμων Δομή ακολουθίας/σειριακή δομή Δηλωτικές εντολές Πρόγραμμα Γινόμενο Μεταβλητές Αρχή Διάβασε a, b c a * b Γράψε c Τέλος_προγράμματος Εκτελεστέες εντολές Εντολή ανάγνωσης/εισόδου Εντολή εκχώρησης Εντολή εξόδου α,b,c: Μεταβλητές Εντολή είναι μία λέξη που προσδιορίζει μια σαφή ενέργεια 13
Προγραμματισμός PASCAL 14
Εντολές Διακλάδωσης Δομή Επιλογής Εντολή IF/THEN Eντολή IF/THEN/ELSE Ένθετη Διακλάδωση Πολλαπλή Διακλάδωση 15
Εντολή IF-THEN (2) READLN (X,Y); IF X>Y THEN WRITELN( Η MΕΤΑΒΛΗΤΗ Χ ΕΙΝΑΙ ΜΕΓΑΛΥΤΕΡΗ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ Υ ); WRITELN( ΤΕΛΟΣ ); 17
Εντολή IF-THEN (3) READLN(X,Y); IF X>=Y THEN BEGIN X:=X+Y; Y:=Y-5; END; WRITELN(X,Y); 18
Εντολή IF-THEN-ELSE IF <συνθήκη> THEN <διαδικασία 1> ELSE <διαδικασία 2>; ψευδής Διαδικασία2 συνθήκη αληθής Διαδικασία1 Επόμενη εντολή 19
Εντολή IF-THEN-ELSE (2) IF K>15 THEN K:=K+5 ELSE K:=K-5; WRITELN(K); IF Q>=100 THEN BEGIN WRITE( ΕΚΠΤΩΣΗ ); COST:=Q*6.5 END ELSE BEGIN WRITE( ΧΩΡΙΣ ΕΚΠΤΩΣΗ); COST:=Q*7 END; WRITELN( ΤΕΛΟΣ ); 20
Ένθετες Διακλαδώσεις IF <συνθήκη> THEN IF <συνθήκη> THEN.. IF <συνθήκη> THEN <Διαδικασία> 21
Ένθετες Διακλαδώσεις (2) συνθήκη1 όχι ναι συνθήκη2 όχι ναι συνθήκην όχι ναι διαδικασία Έπόμενη εντολή 22
Ένθετες Διακλαδώσεις (3) IF a<0 THEN IF b>0 THEN IF c=0 THEN BEGIN WRITELN( negative ); WRITELN( positive ); WRITELN( zero ); END; WRITELN( ΤΕΛΟΣ ); 23
Πολλαπλή Διακλάδωση CASE <έκφραση επιλογής> OF <τιμή επιλογής >:<διαδικασία>; <τιμή επιλογής >:<διαδικασία>;. <τιμή επιλογής >:<διαδικασία>; ELSE <εναλλακτική διαδικασία> END; 24
Πολλαπλή Διακλάδωση (2) διαδικασία1 διαδικασία3 διαδικασία2 διαδικασίαν Εναλλακτική διαδικασία 25
Πολλαπλή Διακλάδωση (3) READLN(GRAMMA); CASE GRAMMA OF A : WRITELN( ΑΡΙΣΤΟΣ ); B : WRITELN( ΠΟΛΥ ΚΑΛΟΣ ); C : WRITELN( ΚΑΛΟΣ ); D : WRITELN( ΜΕΤΡΙΟΣ ); E : WRITELN( ΚΑΚΟΣ ) ELSE WRITELN( ΛΑΘΟΣ ΧΑΡΑΚΤΗΡΑΣ ) END; WRITELN( ΤEΛΟΣ ); 26
Πολλαπλή Διακλάδωση (3) CASE MONTH OF END; 1,3,5,7, 8,10,12 : DAYS:=31; 4,6,9,11 : DAYS:=30; 2 : IF (YEAR MOD 4=0) THEN DAYS:=29 ELSE DAYS:=28 27
Επαναληπτικές Δομές FOR /DO WHILE/DO REPEAT/UNTIL Ένθετες Επαναληπτικές Δομές 28
Επαναληπτκή Δομή FOR-DO FOR <μεταβλητή ελέγχου>:= <αρχική τιμή> ΤΟ <τελική τιμή> DO <σώμα της Δομής>; 29
Επαναληπτκή Δομή FOR-DO (2) m -μετρητής m:=1 * όχι * m<=5 ναι A:=a*b * FOR M:=1 TO 5 DO m:=m+1 * A:=A*B; 30
Επαναληπτκή Δομή FOR-DO (3) m -μετρητής m:=5 * όχι * M>=0 ναι A:=a*b * FOR M:=5 DOWNTO 0 DO m:=m-1 * A:=A*B; 31
Εντολή WHILE-DO WHILE <συνθήκη> DO <συνθήκη> 32
Εντολή WHILE-DO (2) m -μετρητής M:=1; while m<=5 do begin a:=a*b; m:=m+1 όχι m:=1 m<=5 ναι A:=a*b m:=m+1 end; 33
Εντολή WHILE-DO (3) m -μετρητής M:=1; repeat a:=a*b; όχι m:=1 m<=5 ναι A:=a*b m:=m+1 until m>5; m:=m+1 34
Διαφορές Επαναληπτικών Δομών Στην εντολή WHILE/DO πρώτα ελέγχεται η συνθήκη και μετά ανάλογα, εκτελείται ή όχι το σώμα της δομής. Στην εντολή REPEAT/UNTIL πρώτα εκτελείται μιά φορά το σώμα της δομής και μετά ελέγχεται η συνθήκη. 35
Διαφορές Επαναληπτικών Δομών (2) Στην εντολή WHILE/DO το σώμα δομής μπορεί να μην εκτελεστεί ούτε μιά φορά. Στην εντολή REPEAT/UNTIL εκτελείται πάντοτε τουλάχιστον μιά φορά. Η εντολή WHILE/DO σταματά τη λειτουργία της όταν η συνθήκη γίνει ψευδής. Η εντολή REPEAT/UNTIL σταματά τη λειτουργία της όταν η συνθήκη γίνει αληθής. 36
Διαφορές Επαναληπτικών Δομών (3) Στην εντολή WHILE/DO το σώμα της δομής, όταν αποτελείται από 2 ή περισσότερες εντολήες, πρέπει να τοποθετείται μεταξύ των εντολών BEGIN και END. Στην εντολή REPEAT/UNTIL δε χρειάζονται τα BEGIN και END. Όταν το σώμα της δομής αποτελείται από μία εντολή τότε, στη δομή WHILE/DO πρέπει να συνοδεύεται από το σύμβολο ; Στην εντολή REPETA/UNTIL το σύμβολο ; δεν είναι απαραίτητο. 37
Τύποι Δεδομένων Integer real char string boolean 38
Δεδομένα Βαθμωτού Τύπου TYPE όνομα = σύνολο τιμών; π.χ. TYPE day=(mon,tues,wed); number=integer; color=(blue,red,green); DayNum=1..31; 39
Δεδομένα Βαθμωτού Τύπου (2) TYPE DAYS=(Deytera,Triti,Tetarti,Pempti, Paraskevi,Sabbato,Kiriaki); VAR Argia=Sabbato..Kiriaki; meres:days; weekend:argia; ergasimes:deytera..paraskevi; 40
Δεδομένα Βαθμωτού Τύπου (3) Οι τιμές βαθμωτού τύπου είναι διατεταγμένες, σύμφωνα με τη σειρά που εμφανίζονται στον ορισμό του τύπου. Π.χ. Η τιμή Triti είναι μεγαλύτερη από την τιμή Deytera διότι τοποθετήθηκε μετά. Οι τιμές βαθμωτού τύπου δε μπορούν να χρησιμοποιηθούν σε συνδυασμό με τις εντολές READ/READLN και WRITE/WRITELN. Γι αυτό χρησιμοποιείται η εντολή CASE. 41
FOR ergasimes:=deytera TO Paraskevi DO CASE ergasimes OF END; Deytera Triti Tetarti Pempti :writeln(δευτερα); :writeln(τριτη); :writeln(τεταρτη); :writeln(πεμπτη); Paraskevi :writeln(παρασκευη); 42
Αριθμητικές Συναρτήσεις ABS(num) FRAC(num) INT(num) SQR(num) SQRT(num) abs(-2.54)=2.54 frac(3.78)=0.78 int(3.78)=3.0 sqr(2)=4 sqrt(9)=3 43
Βαθμωτές Συναρτήσεις PRED(num) π.χ. Pred(10)=9 ODD(num) -περιττός π.χ. Odd(7)=true SUCC(num) π.χ. Succ(10)=11 44
ORD(num) π.χ. (A,B,C,D,E,F) Ord(C)=2 ROUND(num) π.χ. Round(3.78)=4 TRUNC(num) π.χ. Trunc(3.78)=3 Συναρτήσεις Μετατροπής 45