ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής) και τις αλφαριθμητικές σταθερές ( ΑΝΔΡΕΑΣ, 111, δηλαδή ότι είναι σε διπλά εισαγωγικά) μπορούμε να δημιουργήσουμε και δικές μας σταθερές δηλώνοντας αυτές πριν τις μεταβλητές, όπου δεν χρησιμοποιούμε εκχώρηση αλλά το =. Αλγόριθμος Παράδειγμα Σταθερές Π=3,14 Όνομα = Σπύρος Παντρεμένος = αληθής Μεταβλητές Ακέραιες : Χ, Υ Πραγματικές : Α, Β Αρχή. Τέλος Παράδειγμα ΜΕΤΑΒΛΗΤΕΣ είναι τα μεγέθη που μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Σαν ονόματα μεταβλητών πρέπει να χρησιμοποιούμε μη δεσμευμένες λέξεις (λέξεις που έχει δεσμεύσει η γλώσσα προγραμματισμού για δική της χρήση πχ ακέραιες, εμφάνισε, αληθής κλπ) και να ξεκινάνε από γράμμα και οι υπόλοιποι χαρακτήρες να είναι γράμματα ή αριθμοί ή κάτω γραμμή _ Α23 Σωστό Λογικές Λάθος, αφού είναι δεσμευμένη λέξη Αληθές Σωστό, είναι διαφορετικό από το αληθής που είναι δεσμευμένη λέξη (λογική τιμή) Χ+Υ Λάθος, αφού είναι έκφραση και δεν μπορεί να είναι μεταβλητή ΕΚΦΡΑΣΗ είναι ένα σύνολο από τελεστέους (σταθερές ή μεταβλητές) και από τελεστές αριθμητικούς (+, -, *, /, DIV MOD), λογικούς (ΚΑΙ, Ή, ΟΧΙ) ή συγκριτικούς(>, <, =, < >, >=,,=). H προτεραιότητα στους τελεστές είναι: αριθμητικοί, συγκριτικοί και τέλος οι λογικοί. Για παράδειγμα: 2*Χ + 3 είναι μία αριθμητική έκφραση Χ+Υ > 7 είναι μία λογική έκφραση (πρώτα η πρόσθεση και μετά η σύγκριση) Χ > 7 και Υ < 10 είναι μία λογική έκφραση (πρώτα οι συγκρίσεις και τελευταία η λογική πράξη) Χ 7 και Υ = 9 λάθος αφού υπάρχει μέσα και εντολή εκχώρησης Αριθμητική έκφραση, όταν έχει τελεστέους και μόνο αριθμητικούς τελεστές. Λογική έκφραση, όταν έχει τελεστέους και τουλάχιστον έναν λογικό ή συγκριτικό τελεστή. ΕΚΧΩΡΗΣΗ (ΜΕΤΑΒΛΗΤΗ ΕΚΦΡΑΣΗ) είναι η εντολή με την οποία εκχωρούμε σε μία μεταβλητή το αποτέλεσμα μίας έκφρασης με την χρήση του συμβόλου Χ Α + Β Σωστή (αριθμητική τιμή το αποτέλεσμα) Χ Α * 2 > 8 Σωστή (λογική τιμή το αποτέλεσμα) Α/2 Χ + Υ Λάθος (στο αριστερό μέρος της εκχώρησης πρέπει να υπάρχει μία μεταβλητή) ΕΝΤΟΛΗ ΕΙΣΟΔΟΥ (ΔΙΑΒΑΣΕ λίστα μεταβλητών) είναι η εντολή με την οποία διαβάζουμε τιμές από το πληκτρολόγιο και τις φυλάμε στις αντίστοιχες μεταβλητές, η 1 η τιμή στην 1 η μεταβλητή κοκ. Διάβασε Χ, Υ Σωστή Διάβασε Χ Υ Λάθος χωρίς κόμμα ή κενό ανάμεσα Διάβασε Χ και Υ Λάθος μόνο μεταβλητές μετά το Διάβασε Διάβασε Χ + Υ Λάθος έκφραση μέσα στο Διάβασε Διάβασε 7 Λάθος αφού δεν μπορούμε να φυλάξουμε τιμή μέσα σε σταθερά 1 / 10
ΕΝΤΟΛΗ ΕΞΟΔΟΥ (ΕΜΦΑΝΙΣΕ λίστα παραμέτρων) είναι η εντολή με την οποία εμφανίζουμε στην οθόνη τιμές σταθερές, τιμές μεταβλητών ή αποτελέσματα εκφράσεων. Εμφάνισε Χ, Υ Σωστό εμφανίζει την τιμή του Χ και το γράμμα Υ στην οθόνη Εμφάνισε Χ και Υ Λάθος αν Χ, Υ αριθμητικές τιμές αφού δεν γίνεται η λογική πράξη KAI Εμφάνισε Χ + Υ Σωστό και μας εμφανίζει στην οθόνη το αποτέλεσμα της έκφρασης Χ+Υ ΣΕΙΡΑ ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ 1) ^ 2) *, /, DIV, MOD 3) +, - Αν υπάρχουν ισοδύναμες πράξεις ξεκινάμε από τα αριστερά προς τα δεξιά Αν θέλουμε να αλλάξουμε τη σειρά εκτέλεσης των πράξεων χρησιμοποιούμε παρενθέσεις ( ) ΣΕΙΡΑ ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ 1) ΟΧΙ 2) ΚΑΙ 3) Ή Αν υπάρχουν ισοδύναμες πράξεις ξεκινάμε από τα αριστερά προς τα δεξιά. Αν θέλουμε να αλλάξουμε τη σειρά εκτέλεσης των πράξεων χρησιμοποιούμε παρενθέσεις ( ). ΥΠΟΛΟΓΙΣΜΟΣ ΜΕΣΑ ΣΕ ΑΝ Όταν υπολογίζουμε κάτι μέσα σε μία ΑΝ πρέπει να το εμφανίζουμε μέσα σε αυτήν την ΑΝ και όχι απ έξω, γιατί όταν δεν ισχύει η ΑΝ δεν έχουμε υπολογίσει τίποτα και όταν το εμφανίσουμε μετά (αφού εμφανίζεται ανεξάρτητα από το αν ισχύει η ΑΝ) θα μας εμφανίσει μία τυχαία τιμή. ΛΑΘΟΣ ΑΝ ΠΛ < > 0 ΤΟΤΕ ΜΟ ΑΘΡ / ΠΛ ΕΜΦΑΝΙΣΕ ΜΟ! ΜΠΟΡΕΙ ΤΥΧΑΙΑ ΤΙΜΗ ΣΩΣΤΟ ΑΝ ΠΛ < > 0 ΤΟΤΕ ΜΟ ΑΘΡ / ΠΛ ΕΜΦΑΝΙΣΕ ΜΟ ΜΕΤΑΤΡΟΠΗ ΑΠΟ ΕΜΦΩΛΕΥΜΕΝΕΣ ΣΕ ΑΠΛΕΣ ΑΝ Η πρώτη απλή ΑΝ έχει την ίδια συνθήκη με την πρώτη συνθήκη της εμφωλευμένης Η δεύτερη απλή ΑΝ θα έχει μέσα ΟΧΙ την πρώτη συνθήκη της εμφωλευμένης ΚΑΙ την δεύτερη συνθήκη της εμφωλευμένης Η τρίτη απλή ΑΝ θα έχει μέσα ΟΧΙ την πρώτη συνθήκη της εμφωλευμένης ΚΑΙ ΟΧΙ την δεύτερη συνθήκη της εμφωλευμένης ΚΑΙ την τρίτη συνθήκη της εμφωλευμένης. Δηλαδή σε κάθε περίπτωση γράφουμε ΟΧΙ σε όλες τις προηγούμενες συνθήκες της εμφωλευμένης και την συνθήκη που είχε η εμφωλευμένη σε αυτή την περίπτωση όπως είναι. Πχ ΑΝ ΟΧΙ (συνθ1) ΚΑΙ ΟΧΙ (συνθ2) ΚΑΙ συνθ3 ΤΟΤΕ, ώστε να εκτελέσουμε τις εντολές που είχε η τρίτη συνθήκη στις εμφωλευμένες. ΕΜΦΩΛΕΥΜΕΝΗ ΑΝ ΑΝ Χ < 0 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 1 _ΑΝ Υ<10 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 2 _ΑΝ Ζ < 20 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 3 ΕΜΦΑΝΙΣΕ 4 ΑΠΛΕΣ ΑΝ ΑΝ Χ < 0 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 1 ΑΝ ΟΧΙ (Χ <0) ΚΑΙ Υ<10 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 2 ΑΝ ΟΧΙ (Χ<0) ΚΑΙ ΟΧΙ (Υ< 10) ΚΑΙ Ζ < 20 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 3 ΑΝ ΟΧΙ (Χ<0) ΚΑΙ ΟΧΙ (Υ< 10) ΚΑΙ ΟΧΙ (Ζ < 20) ΤΟΤΕ ΕΜΦΑΝΙΣΕ 4 2 / 10
Σε μερικές περιπτώσεις είναι πλεονασμός να βάλουμε ΟΧΙ όλες τις προηγούμενες συνθήκες, γιατί δεν μπορεί να ισχύουν ταυτόχρονα με τη συνθήκη αυτής της περίπτωσης. ΕΜΦΩΛΕΥΜΕΝΗ ΑΝ ΑΝ Χ = 0 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 1 _ΑΝ Χ = 1 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 2 _ΑΝ Χ = 2 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 3 ΕΜΦΑΝΙΣΕ 4 ΑΠΛΕΣ ΑΝ ΠΛΕΟΝΑΣΜΟΙ ΑΝ Χ = 0 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 1 ΑΝ ΟΧΙ (Χ = 0) ΚΑΙ Χ =1 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 2 ΑΝ ΟΧΙ (Χ = 0) ΚΑΙ ΟΧΙ (Χ =1) ΚΑΙ Χ = 2 ΤΟΤΕ ΕΜΦΑΝΙΣΕ 3 ΑΝ ΟΧΙ (Χ= 0) ΚΑΙ ΟΧΙ (Χ = 1) ΚΑΙ ΟΧΙ (Χ = 2) ΤΟΤΕ ΕΜΦΑΝΙΣΕ 4 Μετατροπή άσκησης (με περιοχές) από διπλές συνθήκες σε μονές συνθήκες Θέλει μεγάλη προσοχή η μετατροπή για δύο λόγους α) μπορεί να γίνει μόνο για έλεγχο τιμών μίας μεταβλητής ή μίας έκφρασης και β) στις περιπτώσεις που απαγορεύεται η χρήση των λογικών ΚΑΙ και Ή. Αν σε μία περίπτωση έχουμε Χ >= 10 και Χ < 20 γίνεται με απλές ΑΝ, ξεκινώντας τις περιοχές από τα άκρα ώστε να έχουμε έναν έλεγχο σε κάθε περιοχή, ενώ αν έχουμε Χ >= 0 και Χ MOD 2 = 0 δεν γίνεται με απλές ΑΝ, αφού ελέγχουμε 2 διαφορετικά πράγματα το Χ και το Χ MOD 2. Όταν έχουμε περιοχές ξεκινάμε πάντα από το ένα άκρο και πηγαίνουμε προς το άλλο, ώστε σε κάθε περίπτωση να ελέγχουμε μόνο ένα όριο, αφού απαγορεύονται οι λογικές πράξεις. Αν ξεκινήσουμε από το κάτω άκρο, παίρνουμε το πάνω όριο της κάθε περιοχής με τη σειρά από τα αριστερά προς τα δεξιά ΠΑΡΑΔΕΙΓΜΑ 1. Αν ξεκινήσουμε από το πάνω άκρο, παίρνουμε το κάνω όριο της κάθε περιοχής με τη σειρά από τα δεξιά προς τα αριστερά ΠΑΡΑΔΕΙΓΜΑ 2. Πχ για τις περιοχές α) [...-0) β) [0-10) γ) [10-20) και δ) [20-...] ΠΕΡ1 0 ΠΕΡ2 10 ΠΕΡ3 20 ΠΕΡ4 Αρχική μορφή με διπλές συνθήκες ΑΝ Χ>=0 ΚΑΙ Χ < 10 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ2' _ΑΝ Χ >=10 ΚΑΙ Χ < 20 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ3' _ΑΝ Χ >=20 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ4' ΓΡΑΨΕ 'ΠΕΡ1' Μετατροπή με μία συνθήκη σε κάθε περίπτωση ξεκινώντας από κάτω ΑΝ Χ<0 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ1' _ΑΝ Χ < 10 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ2' _ΑΝ Χ < 20 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ3' ΓΡΑΨΕ 'ΠΕΡ4' Μετατροπή με μία συνθήκη σε κάθε περίπτωση ξεκινώντας από πάνω ΑΝ Χ>=20 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ4' _ΑΝ Χ >= 10 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ3' _ΑΝ Χ >= 0 ΤΟΤΕ ΓΡΑΨΕ 'ΠΕΡ2' ΓΡΑΨΕ 'ΠΕΡ1' 3 / 10
4 η ΟΧΙ 4 η ΝΑΙ 3 η ΟΧΙ 3 η ΝΑΙ 2 η ΟΧΙ 2 η ΝΑΙ 1 η ΝΑΙ 1 η ΟΧΙ 2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ Να μετατρέψετε το παρακάτω τμήμα αλγορίθμου σε αντίστοιχο ψευδικώδικα με αποκλειστική χρήση απλών δομών επιλογής ΑΝ.... ΑΝ Χ >0 ΤΟΤΕ! 1 η συνθήκη ΑΝ Χ < 100 ΤΟΤΕ!2 η συνθήκη ΕΜΦΑΝΙΣΕ ΘΕΤΙΚΟΣ ΤΟ ΠΟΛΥ 2 ΨΗΦΙΑ ΕΜΦΑΝΙΣΕ ΘΕΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ ΑΝ Χ=0 ΤΟΤΕ! 3 η συνθήκη ΕΜΦΑΝΙΣΕ ΜΗΔΕΝ ΑΝ Χ > - 100 ΤΟΤΕ!4 η συνθήκη ΕΜΦΑΝΙΣΕ ΑΡΝΗΤΙΚΟΣ ΤΟ ΠΟΛΥ 2 ΨΗΦΙΑ ΕΜΦΑΝΙΣΕ ΑΡΝΗΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ Για την μετατροπή του σε απλές ΑΝ εφόσον έχουμε 5 διαφορετικές περιπτώσεις, θα χρειαστούμε 5 απλές ΑΝ. Για κάθε περίπτωση κοιτάμε μέσα σε ποιες ΑΝ είναι και αν είναι στο ΝΑΙ ή στο ΟΧΙ, και γράφουμε μόνο αυτές τις συνθήκες χωρίς τίποτα μπροστά από τη συνθήκη στο ΝΑΙ και με ΟΧΙ μπροστά όταν είναι στο της συνθήκης. Για την εμφάνιση του ΑΡΝΗΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ βλέπουμε ότι βρίσκεται στο ΟΧΙ 1 η συνθήκη και ΟΧΙ 3 η συνθήκη και ΟΧΙ 4 η συνθήκη και γράφουμε: ΑΝ ΟΧΙ(Χ>0) ΚΑΙ ΟΧΙ (Χ=0) ΚΑΙ ΟΧΙ (Χ>-100) ΤΟΤΕ ΕΜΦΑΝΙΣΕ ΑΡΝΗΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ Όμοια για το ΘΕΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ ΑΝ Χ>0 ΚΑΙ ΟΧΙ (Χ<100) ΤΟΤΕ ΕΜΦΑΝΙΣΕ ΘΕΤΙΚΟΣ ΠΑΝΩ ΑΠΟ 2 ΨΗΦΙΑ 4 / 10
ΠΡΑΞΕΙΣ ΜΕ DIV - MOD X MOD 10 X MOD 10 = 0 ΠΕΡΙΓΡΑΦΗ ΠΡΑΞΗΣ Βρίσκει το τελευταίο ψηφίο οποιουδήποτε αριθμού δηλαδή τις μονάδες. Ελέγχει το τελευταίο ψηφίου του αριθμού αν είναι μηδέν, και αν είναι πολλαπλάσιο του 10 ΑΠΟΤΕΛΕΣΜΑ AN TO X = 1735 5 Ψευδής (5 = 0) Χ MOD 5 <> 0 Ελέγχει αν το Χ είναι πολλαπλάσιο του 5 Αληθής (0 = 0) X DIV 10 Βρίσκει πόσες ακέραιες φορές χωράει το 10 στο Χ, δηλαδή μας δίνει τον αριθμό χωρίς το τελευταίο του ψηφίο X DIV 10 = 0 Ελέγχει αν το Χ είναι μικρότερο του 10, αφού όταν το 10 δεν χωράει στο Χ σημαίνει ότι το Χ είναι μικρότερο του 10, δηλαδή το Χ έχει μόνο ένα ψηφίο X DIV 100 Βρίσκει πόσες ακέραιες φορές χωράει το 100 στο Χ, δηλαδή μας δίνει τον αριθμό χωρίς τα 2 τελευταία του ψηφία Χ DIV 100 <> 0 X DIV 100 =0 KAI X DIV 10 <>0 X DIV 10 MOD 10 Ελέγχει αν το Χ είναι μεγαλύτερο του 100, αφού όταν το 100 χωράει στο Χ σημαίνει ότι το Χ είναι μεγαλύτερο του 100, δηλαδή έχει τουλάχιστον 3 ψηφία. Ελέγχει αν το Χ είναι διψήφιος, αφού το X DIV 100 =0 ισχύει όταν το Χ έχει 1 ή 2 ψηφία ( μικρότερο του 100) και το X DIV 10 <> 0 ισχύει όταν το Χ έχει τουλάχιστον 2 ψηφία (μεγαλύτερο ή ίσο του 10) βρίσκει την τιμή που έχει το ψηφίο των δεκάδων ενός ακέραιου αριθμού, αφού το X DIV 10 μας δίνει όλα τα ψηφία του αριθμού από τις δεκάδες και πάνω, ενώ με το MOD 10 παίρνουμε μόνο το τελευταίο ψηφίο από τον αριθμό που προέκυψε από το DIV 10 X DIV 100 MOD 10 βρίσκει την τιμή που έχει το ψηφίο των εκατοντάδων ενός ακέραιου αριθμού, αφού το X DIV 100 μας δίνει όλα τα ψηφία του αριθμού από τις εκατοντάδες και πάνω, ενώ με το MOD 10 παίρνουμε μόνο το τελευταίο ψηφίο από τον αριθμό που προέκυψε από το DIV 100 Χ <-- Χ DIV 10 Αλλάζει την τιμή του Χ και αφαιρεί από το Χ το τελευταίο ψηφίο, αφού το Χ DIV 10 μας δίνει σαν αποτέλεσμα το Χ χωρίς το τελευταίο του ψηφίο X <-- X DIV 100 Αλλάζει την τιμή του Χ και αφαιρεί από το Χ τα 2 τελευταία ψηφία, αφού το Χ DIV 100 μας δίνει σαν αποτέλεσμα το Χ χωρίς τα 2 τελευταία του ψηφία 173 Ψευδής (173 = 0) 17 Αληθής (17<>0) Ψευδής 3 7 Χ = 173 Χ = 17 5 / 10
ΕΝΤΟΛΗ ΓΙΑ Αν το βήμα είναι θετικό ή μηδέν σε κάθε έλεγχο πριν την εκτέλεση των εντολών του βρόγχου, ελέγχουμε αν ο μετρητής <= τελικής τιμής. Αν το βήμα είναι αρνητικό σε κάθε έλεγχο πριν την εκτέλεση των εντολών του βρόγχου, ελέγχουμε αν ο μετρητής >= τελικής τιμής. Δεν εκτελείται καμία φορά, αν το βήμα είναι θετικό και η αρχική τιμή > της τελικής τιμής. Πχ ΓΙΑ Ι ΑΠΟ 10 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ 2 Δεν εκτελείται καμία φορά, αν το βήμα είναι αρνητικό και η αρχική τιμή < της τελικής τιμής. Πχ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 2 ΜΕ_ΒΗΜΑ -1 Η ΓΙΑ εκτελείται άπειρες φορές, μόνο όταν το βήμα είναι μηδέν και η αρχική τιμή <= τελική τιμής Πχ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 2 ΜΕ_ΒΗΜΑ 0, θα κάνει άπειρες επαναλήψεις. Πχ ΓΙΑ Ι ΑΠΟ 10 ΜΕΧΡΙ 2 ΜΕ_ΒΗΜΑ 0, δεν θα κάνει καμία επανάληψη. ΜΕΤΑΤΡΟΠΗ ΓΙΑ ΣΕ ΟΣΟ (πάντοτε) Γίνεται πάντοτε και Α) βάζουμε έξω από την επανάληψη (πριν την συνθήκη της ΟΣΟ) στον μετρητή την αρχική τιμή Β) το μόνο που προσέχουμε είναι η συνθήκη της ΟΣΟ, που είναι <= αν το βήμα είναι θετικό, ή >= όταν το βήμα είναι αρνητικό Γ) βάζουμε τελευταία εντολή μέσα στο βρόγχο της ΟΣΟ τη μεταβολή του μετρητή σύμφωνα με το βήμα ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10 Σ Σ + Ι ΕΜΦΑΝΙΣΕ Σ 6 / 10 Ι 1 ΟΣΟ Ι <=10 ΕΠΑΝΑΛΑΒΕ Σ Σ + Ι Ι Ι + 1 ΕΜΦΑΝΙΣΕ Σ ΜΕΤΑΤΡΟΠΗ ΟΣΟ ΣΕ ΜΕΧΡΙΣ_ΟΤΟΥ (πάντοτε) Οι εντολές που υπάρχουν πριν, μέσα και μετά το βρόγχο επανάληψης παραμένουν στην θέση τους και η συνθήκη που είναι στην αρχή στην ΟΣΟ αντιστρέφεται και γράφεται στο τέλος στην ΜΕΧΡΙΣ_ΟΤΟΥ, όταν η ΟΣΟ εκτελείται τουλάχιστον μία φορά. ΟΣΟ Ι < 25 ΕΠΑΝΑΛΑΒΕ ΔΙΑΒΑΣΕ Χ Ι Ι + 3 ΔΙΑΒΑΣΕ Χ Ι Ι + 3 ΜΕΧΡΙΣ_ΟΤΟΥ Ι >= 25 Αν η ΟΣΟ δεν εκτελείται καμία φορά ή υπάρχει και η περίπτωση να μην εκτελεστεί, τότε την ΜΕΧΡΙΣ_ΟΤΟΥ την βάζουμε μέσα σε μία ΑΝ που έχει την ίδια συνθήκη με την ΟΣΟ και τα υπόλοιπα παραμένουν στη θέση τους όπως και πριν, ώστε να μην εκτελεστεί και η ΜΕΣΡΙΣ_ΟΤΟΥ. ΟΣΟ Ι < Β ΕΠΑΝΑΛΑΒΕ ΔΙΑΒΑΣΕ Χ Ι Ι + 3 ΑΝ Ι < Β ΤΟΤΕ ΔΙΑΒΑΣΕ Χ Ι Ι + 3 ΜΕΧΡΙΣ_ΟΤΟΥ Ι >= Β
ΜΕΤΑΤΡΟΠΗ ΜΕΧΡΙΣ_ΟΤΟΥ ΣΕ ΟΣΟ (πάντοτε) Οι εντολές που υπάρχουν πριν, μέσα και μετά το βρόγχο επανάληψης παραμένουν στην θέση τους και η συνθήκη που είναι στο τέλος στην ΜΕΧΡΙΣ_ΟΤΟΥ αντιστρέφεται και γράφεται στην αρχή στην ΟΣΟ, όταν η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται πάνω από μία φορά. Σ Σ + I I I - 3 ΜΕΧΡΙΣ_ΟΤΟΥ Ι <= 0 ΟΣΟ Ι > 0 ΕΠΑΝΑΛΑΒΕ Σ Σ + Ι Ι Ι - 3 Αν η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται μία φορά ή υπάρχει και η περίπτωση να εκτελεστεί μόνο μία φορά, τότε πριν την ΟΣΟ γράφουμε άλλη μία φορά τις εντολές που είναι μέσα στο βρόγχο επανάληψης και τα υπόλοιπα παραμένουν στη θέση τους όπως και πριν, ώστε να εκτελεστεί και το αντίστοιχο τμήμα με την ΟΣΟ μία φορά (μία απ έξω και καμία μέσα). Σ Σ + I I I - 3 ΜΕΧΡΙΣ_ΟΤΟΥ Ι <= 20 Σ Σ + Ι Ι Ι - 3 ΟΣΟ Ι > 20 ΕΠΑΝΑΛΑΒΕ Σ Σ + Ι Ι Ι - 3 ΜΕΤΑΤΡΟΠΗ ΟΣΟ ΣΕ ΓΙΑ (όχι πάντοτε) Μία ΟΣΟ μετατρέπεται σε ΓΙΑ όταν ισχύουν τα παρακάτω: Α) μπορούμε να βρούμε στην ΟΣΟ έναν μετρητή με αρχική τιμή έξω από την επανάληψη, τελική τιμή στην συνθήκη και βήμα μέσα στην επανάληψη. Β) αν το βήμα είναι θετικό η συνθήκη πρέπει να μετατραπεί αν δεν είναι σε <=, ενώ αν είναι αρνητικό να μετατραπεί σε >=. Αν δεν μπορούμε να τα μετατρέψουμε τότε δεν γίνονται σε ΓΙΑ. ΟΣΟ Χ < 20 ΕΠΑΝΑΛΑΒΕ! Χ <= 19 Χ Χ + 2 ΓΙΑ Χ ΑΠΟ 10 ΜΕΧΡΙ 19 ΜΕ_ΒΗΜΑ 2 ΟΣΟ Χ > 20 ΕΠΑΝΑΛΑΒΕ Χ Χ + 2 Δεν μετατρέπεται, αφού έχουμε βήμα θετικό και συνθήκη ΟΣΟ >, που δεν μπορεί να γίνει <= Προσοχή όταν είναι συνθήκη είναι < >, τότε πρέπει να ελέγξουμε αν σταματάει ο βρόγχος της επανάληψης και να την μετατρέψουμε βάζοντας σαν τελική τιμή στη ΓΙΑ την τελευταία τιμή που μπήκε ο μετρητής στο βρόγχο. ΟΣΟ Χ < > 20 ΕΠΑΝΑΛΑΒΕ Χ Χ + 2 ΓΙΑ Χ ΑΠΟ 10 ΜΕΧΡΙ 18 ΜΕ_ΒΗΜΑ 2 7 / 10
ΟΣΟ Χ < > 19 ΕΠΑΝΑΛΑΒΕ Δεν γίνεται σε ΓΙΑ, αφού η ΟΣΟ κάνει άπειρες επαναλήψεις και δεν έχει τελική τιμή. Χ Χ + 2 Προσοχή όταν το βήμα μέσα στο βρόγχο δεν είναι τελευταία εντολή, τότε στην ΓΙΑ θα πρέπει σε όσες εντολές της ΟΣΟ υπάρχει ο μετρητής μετά το βήμα, να αντικατασταθεί με τον μετρητή + βήμα. ΟΣΟ Χ < = 20 ΕΠΑΝΑΛΑΒΕ Χ Χ + 2 ΓΙΑ Χ ΑΠΟ 10 ΜΕΧΡΙ 20 ΜΕ_ΒΗΜΑ 2 Σ Σ + (Χ + 2) Επίσης αν η ΟΣΟ κάνει άπειρες επαναλήψεις δεν μετατρέπεται σε ΓΙΑ, αφού δεν έχουμε τελική τιμή. Πχ ΟΣΟ Χ < > 20 ΕΠΑΝΑΛΑΒΕ Χ Χ 2 ΜΕΤΑΤΡΟΠΗ ΓΙΑ ΣΕ ΟΣΟ (πάντοτε) Οι εντολές που υπάρχουν πριν, μέσα και μετά το βρόγχο επανάληψης παραμένουν στην θέση τους και πριν την συνθήκη της ΟΣΟ εκχωρούμε στον μετρητή την αρχική τιμή, στην συνθήκη βάζουμε μετρητής <= τελικής τιμής αν το βήμα είναι >=0, ή μετρητής >= τελικής τιμής αν το βήμα είναι <0 και τελευταία εντολή μέσα στο βρόγχο επανάληψης προσθέτουμε το βήμα στον μετρητή. ΜΕΤΑΤΡΟΠΗ ΓΙΑ ΣΕ ΜΕΧΡΙΣ_ΟΤΟΥ Μετατρέπουμε την ΓΙΑ πρώτα σε ΟΣΟ και μετά σε ΜΕΧΡΙΣ_ΟΤΟΥ ακολουθώντας τις παραπάνω οδηγίες σε κάθε μετατροπή. ΜΕΤΑΤΡΟΠΗ ΜΕΧΡΙΣ_ΟΤΟΥ ΣΕ ΓΙΑ Μετατρέπουμε την ΜΕΧΡΙΣ_ΟΤΟΥ πρώτα σε ΟΣΟ και μετά σε ΓΙΑ ακολουθώντας τις παραπάνω οδηγίες σε κάθε μετατροπή. ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΟΥ, ΜΕΓΙΣΤΟΥ, ΑΘΡΟΙΣΜΑΤΟΣ, ΓΙΝΟΜΕΝΟΥ, ΠΛΗΘΟΥΣ ΣΕ ΕΠΑΝΑΛΗΨΗ Όταν υπολογίζουμε κάποιο από τα παραπάνω μέσα σε επανάληψη πρέπει να αρχικοποιούμε τις μεταβλητές πριν την επανάληψη, μέσα να υπολογίζουμε ή βρίσκουμε τις τιμές αυτές, και να τις εμφανίζουμε μετά το τέλος της επανάληψης. 8 / 10
ΧΡΗΣΗ ΕΝΤΟΛΗΣ ΑΠΛΗΣ ΑΝ (μία περίπτωση) Όταν έχουμε συνθήκη και κάνουμε κάτι μόνο στο ΝΑΙ (χωρίς να υπάρχει μέσα άλλη ΑΝ γιατί θα ήταν εμφωλευμένη τότε), ενώ στο ΟΧΙ δεν κάνουμε τίποτα. ΧΡΗΣΗ ΕΝΤΟΛΗΣ ΣΥΝΘΕΤΗΣ ΑΝ (δύο μόνο περιπτώσεις αντίθετες μεταξύ τους) Όταν έχουμε συνθήκη και κάνουμε κάτι στο ΝΑΙ και κάτι άλλο στο ΟΧΙ (χωρίς να υπάρχει μέσα στο ΝΑΙ ή στο ΟΧΙ άλλη ΑΝ γιατί θα ήταν εμφωλευμένη τότε). ΧΡΗΣΗ ΕΝΤΟΛΗΣ ΕΜΦΩΛΕΥΜΕΝΗΣ ΑΝ (πάνω από δύο περιπτώσεις) Μέσα σε μια ΑΝ είτε στο ΝΑΙ είτε στο ΟΧΙ υπάρχει και άλλη ΑΝ. ΧΡΗΣΗ ΕΝΤΟΛΗΣ ΓΙΑ Χρησιμοποιείται όταν είναι όταν είναι γνωστό το πλήθος των επαναλήψεων και έχει δύο (2) τύπους ασκήσεων. Α) Με τη ΓΙΑ φτιάχνουμε συγκεκριμένες τιμές που έχει ο μετρητής (συνήθως το Ι), και μέσα επεξεργαζόμαστε το Ι. πχ να βρούμε το άθροισμα όλων των αριθμών από το 100 μέχρι και το 200 ΑΘΡ 0 ΓΙΑ Ι ΑΠΟ 100 ΜΕΧΡΙ 200 ΑΘΡ ΑΘΡ + Ι ΓΡΑΨΕ ΑΘΡ Β) Να διαβάζουμε συγκεκριμένο πλήθος στοιχειών (συνήθως το Χ) μέσα στην επανάληψη τα οποία και επεξεργάζεται μέσα στην επανάληψη. Πχ να διαβάζουμε 100 αριθμούς και να βρίσκει το μεγαλύτερο. ΜΑΧ -10^20 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Χ ΑΝ Χ > ΜΑΧ ΤΟΤΕ ΜΑΧ Χ ΤΕΛΣΟ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΜΑΧ ΧΡΗΣΗ ΕΝΤΟΛΗΣ ΟΣΟ ΜΕΧΡΙΣ_ΟΤΟΥ Χρησιμοποιείται όταν δεν είναι γνωστό το πλήθος των επαναλήψεων, αλλά και όταν είναι γνωστό (σε αυτή την περίπτωση προτιμάται η ΓΙΑ που έχει πιο απλή σύνταξη) ΧΡΗΣΗ ΠΙΝΑΚΩΝ Πίνακες χρησιμοποιούνται όταν: Α) έχουμε μεγάλο πλήθος δεδομένων του ιδίου τύπου Β) θέλουμε να τα επεξεργαστούμε παραπάνω από μία φορά (υποχρεωτικά με πίνακα ώστε να διαβαστούν μία φορά, και όχι διάβασμα των τιμών δύο ή παραπάνω φορές αν δεν χρησιμοποιήσουμε πίνακα) Γ) είναι γνωστό το μέγεθός τους πριν την εκτέλεση ή γνωρίζουμε το μέγιστο μέγεθος, άρα μπορούμε και το χρησιμοποιήσουμε στη δήλωση του πίνακα. Αν μπορούμε μέσα στην επανάληψη που διαβάζουμε τα στοιχεία να βρούμε ότι μας ζητάει η άσκηση και είναι γνωστό το πλήθος των επαναλήψεων πριν ξεκινήσει η εκτέλεση του, η χρήση πινάκων είναι προαιρετική. 9 / 10
ΜΕΤΑΤΡΟΠΗ ΓΕΝΙΚΗΣ ΜΟΡΦΗΣ ΓΙΑ ΣΤΙΣ ΑΛΛΕΣ ΔΥΟ ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΓΕΝΙΚΗ ΜΟΡΦΗ ΓΙΑ ΓΙΑ ΜΤ ΑΠΟ ΑΤ ΜΕΧΡΙ ΤΤ ΜΕ_ΒΗΜΑ ΒΜ ΕΝΤΟΛΕΣ Όπου ΜΤ ο μετρητής, ΑΤ η αρχική τιμή, ΤΤ η τελική τιμή και ΒΜ το βήμα ΓΙΑ ΣΕ ΟΣΟ ΜΤ ΑΤ ΑΝ ΒΜ >= 0 ΤΟΤΕ ΟΣΟ ΜΤ <= ΤΤ ΕΠΑΝΑΛΑΒΕ ΕΝΤΟΛΕΣ ΜΤ ΜΤ + ΒΜ ΟΣΟ ΜΤ >= ΤΤ ΕΠΑΝΑΛΑΒΕ ΕΝΤΟΛΕΣ ΜΤ ΜΤ + ΒΜ ΓΙΑ ΣΕ ΜΕΧΡΙΣ_ΟΤΟΥ (με μετατροπή σε ΟΣΟ πρώτα) ΜΤ ΑΤ ΑΝ ΒΜ >= 0 ΤΟΤΕ ΑΝ ΜΤ <= ΤΤ ΤΟΤΕ ΕΝΤΟΛΕΣ ΜΤ ΜΤ + ΒΜ ΜΕΧΡΙΣ_ΟΤΟΥ ΜΤ > ΤΤ ΑΝ ΜΤ >= ΤΤ ΤΟΤΕ ΕΝΤΟΛΕΣ ΜΤ ΜΤ + ΒΜ ΜΕΧΡΙΣ_ΟΤΟΥ ΜΤ < ΤΤ 10 / 10