ΑΛΓΟΡΙΘΜΟΣ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 2 ο ΚΕΦΑΛΑΙΟ Η διαδικασία επίλυσης ενός προβλήματος αποτελείται από μία πεπερασμένη ακολουθία βημάτων, καθένα από τα οποία μας οδηγεί πιο κοντά στη λύση. «ΑΛΓΟΡΙΘΜΟΣ ΕΙΝΑΙ ΜΙΑ ΠΕΠΕΡΑΣΜΕΝΗ ΑΚΟΛΟΥΘΙΑ ΑΥΣΤΗΡΩΣ ΚΑΘΟΡΙΣΜΕΝΩΝ ΕΝΤΟΛΩΝ, ΚΑΘΕΜΙΑ ΑΠΟ ΤΙΣ ΟΠΟΙΕΣ ΕΙΝΑΙ ΕΚΤΕΛΕΣΙΜΗ ΣΕ ΠΕΠΕΡΑΣΜΕΝΟ ΧΡΟΝΟ ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΕΝΟΣ ΣΥΓΚΕΚΡΙΜΕΝΟΥ ΠΡΟΒΛΗΜΑΤΟΣ» Ο αλγόριθμος μπορεί να χρησιμοποιηθεί για την επίλυση προβλημάτων τόσο μαθηματικών, φυσικών και γενικότερα επιστημονικών όσο και προβλημάτων της καθημερινής ζωής. Παράδειγμα : Εύρεση Μέσου Όρου τριών αριθμών. 1. Δώσε τις τιμές των τριών αριθμών Α,Β,Γ 2. Βάλε στο άθροισμα το αποτέλεσμα της πρόσθεσης των Α,Β,Γ 3. Βάλε στο μέσο όρο το αποτέλεσμα της διαίρεσης του αθροίσματος δια 3 4. Εμφάνισε τον μέσο όρο. Καθένα από τα αριθμημένα βήματα του αλγορίθμου ονομάζεται εντολή του αλγορίθμου. Οι εντολές του αλγορίθμου πρέπει να είναι κατανοητές από εκείνον ο οποίος πρόκειται να τις εκτελέσει. Οι εντολές ενός αλγορίθμου μπορούν να εκτελεστούν σειριακά, η μία μετά από την άλλη ή σε κάποιο σημείο η ροή του αλγορίθμου να αλλάζει, σύμφωνα με μία συνθήκη. ΠΛΗΡΟΤΗΤΑ ΑΛΓΟΡΙΘΜΟΥ Τα χαρακτηριστικά ενός αλγορίθμου, σύμφωνα με τον παραπάνω ορισμό, είναι η είσοδος, η έξοδος, η περατότητα, η καθοριστικότητα και η αποτελεσματικότητα
ΕΙΣΟΔΟΣ Κάθε αλγόριθμος δέχεται ένα σύνολο μεταβλητών εισόδου ( το οποίο μπορεί να είναι και το κενό σύνολο ), οι οποίες αποτελούν τα δεδομένα του αλγορίθμου. ΕΞΟΔΟΣ Από κάθε αλγόριθμο περιμένουμε κάποιο αποτέλεσμα η αποτελέσματα, δηλ. με κάθε αλγόριθμο σχετίζονται μία η περισσότερες μεταβλητές εξόδου. ΠΕΡΑΤΟΤΗΤΑ Κάθε αλγόριθμος πρέπει να τελειώνει μετά την εκτέλεση πεπερασμένου αριθμού εντολών σε πεπερασμένο χρόνο. ΚΑΘΟΡΙΣΤΙΚΟΤΗΤΑ Οι εντολές ενός αλγορίθμου θα πρέπει να είναι επακριβώς και αυστηρώς καθορισμένες, έτσι που η εκτέλεσή τους να γίνεται χωρίς καμία αμφιβολία και να μην απαιτούνται πρόσθετες επεξηγήσεις. ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ Κάθε εντολή πρέπει να είναι διατυπωμένη απλά και κατανοητά, ώστε να μπορεί να εκτελεστεί επακριβώς και σε πεπερασμένο χρόνο. ΤΡΟΠΟΙ ΠΑΡΟΥΣΙΑΣΗΣ ΑΛΓΟΡΙΘΜΟΥ Ένας αλγόριθμος μπορεί να παρουσιασθεί με έναν από τέσσερις τρόπους - ελεύθερο κείμενο - φυσική γλώσσα με βήματα - διάγραμμα ροής - ψευδοκώδικα
Η γενική μορφή ενός αλγορίθμου με ψευδοκώδικα είναι η ακόλουθη : αλγόριθμος όνομα αλγορίθμου αρχή εντολή 1; εντολή 2;.. εντολή ν τέλος Σταθερές - μεταβλητές Τα μεγέθη που χρησιμοποιούνται σε έναν αλγόριθμο χωρίζονται σε σταθερά και μεταβλητά Σταθερά ονομάζονται εκείνα τα μεγέθη των οποίων η τιμή δεν αλλάζει κατά την εκτέλεση ενός αλγορίθμου. Κάθε άλλο μέγεθος ονομάζεται μεταβλητό μέγεθος ή απλά μεταβλητή. Όταν γράφουμε έναν αλγόριθμο ο οποίος περιέχει μεταβλητές, χρησιμοποιούμε ένα συμβολισμό για καθεμιά από αυτές.αυτό λέγεται όνομα της μεταβλητής. Οι σταθερές μπορούν να εμφανίζονται είτε με τη τιμή τους είτε με το όνομά τους π.χ. π ή 3,14 Τα ονόματα των μεταβλητών και των σταθερών επιλέγονται με τρόπο τέτοιο ώστε να εξηγούν τη σημασία και το ρόλο των μεγεθών που εκφράζουν. Τα μεγέθη των οποίων οι τιμές είναι λέξεις ή κείμενα ονομάζονται συμβολοσειρές ή λεκτικά μεγέθη.
Κάθε μεταβλητή ή σταθερά ανήκει σε κάποιο τύπο, ο οποίος καθορίζει το σύνολο τιμών στο οποίο ανήκει η σταθερά ή από το οποίο μπορεί ναι πάρει τιμές μια μεταβλητή. Ξεχωρίζουν οι εξής βασικοί τύποι : Ακέραιος (Όλοι οι ακέραιοι αριθμοί π.χ. 1, 34, -7, -100 ) Πραγματικός (Όλοι οι πραγματικοί αριθμοί π.χ. 1.5, 4.0, -11.7, -10.00) Συμβολοσειράς ( Όλοι οι χαρακτήρες π.χ. Καλημέρα,"a") Λογικός (μόνο δυο τιμές:αληθές ( true ) ή ψευδές ( false )). Αριθμητικοί Τελεστές : Τα σύμβολα με τα οποία παραστάνουμε τις αριθμητικές πράξεις Πρόσθεση + Πολλαπλασιασμός * Αφαίρεση - Διαίρεση / Div - ακέραιο πηλίκο, Μοd- υπόλοιπο (για ακέραιους αριθμούς μόνο! ) Τελεστές σύγκρισης : Στις εντολές επανάληψης και επιλογής οι συνθήκες παίζουν βασικό ρόλο. Μερικές έχουν απλή μορφή και για την διατύπωσή τους χρησιμοποιήθηκαν κάποια από τα παρακάτω σύμβολα τα οποία ονομάζουμε τελεστές σύγκρισης. < μικρότερο > μεγαλύτερο = ίσο Σ αυτές τις περιπτώσεις μία συνθήκη συγκρίνει δυο τιμές και επιστρέφει μια από τις δυο τιμές - αληθές ή ψευδές, δηλ. η συνθήκη επιστρέφει μια λογική τιμή που μπορεί να καταχωρηθεί σε λογική (boolean ) μεταβλητή.
μεγαλύτερο ή ίσο μικρότερο ή ίσο Διαφορετικό Λογικοί τελεστές : Σε πολλές περιπτώσεις μπορεί μια συνθήκη να είναι πιο σύνθετη και τότε μπορούμε να χρησιμοποιήσουμε τις λογικές πράξεις της άρνησης,( όχι ), της σύζευξης (και ) ή της διάζευξης (ή ) προκειμένου να συνδυάσουμε περισσότερες απλές συνθήκες και να δημιουργήσουμε μια σύνθετη συνθήκη. Η άρνηση μιας λογικής συνθήκης είναι αληθής, όταν η λογική συνθήκη είναι ψευδής. Π.χ. όχι ( Δ > 0 ) είναι αληθής όταν Δ 0 Η διάζευξη δυο λογικών συνθηκών είναι αληθής,όταν τουλάχιστο μια από αυτές είναι αληθής.π.χ. Χ < 0 ή Χ > 4 είναι αληθής είτε το Χ είναι μικρότερο το 0 είτε το Χ είναι μεγαλύτερο του 4. Η σύζευξη δυο λογικών συνθηκών είναι αληθής, όταν και οι δύο λογικές συνθήκες είναι αληθείς. Π.χ. Χ > 0 και Χ < 4 είναι αληθής όταν το Χ βρίσκεται στο διάστημα μεταξύ του 0 και του 4. Παρακάτω είναι οι πίνακες που συνοψίζουν τις πιο συχνά χρησιμοποιούμενες σύνθετες συνθήκες, οι οποίες υλοποιούνται με την άλγεβρα Boole στην οποία στη λογική τιμή αληθές αντιστοιχεί το 1 και στη τιμή ψευδές αντιστοιχεί το 0. Α Β Σύζευξη Διάζευξη Άρνηση Α ψευδής ψευδής ψευδής ψευδής αληθής ψευδής αληθής ψευδής αληθής αληθής αληθής ψευδής ψευδής αληθής ψευδής αληθής αληθής αληθής αληθής ψευδής Χ Υ Χ.Υ Χ+Υ Χ 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0
Και οι σύνθετες συνθήκες έχουν πάντα μια μοναδική τιμή - αληθής (true ) ή ψευδής (false ). Εντολή απόδοσης τιμής ή καταχώρησης τιμής. Α 3*Χ, Μ 18, Σ Σ + 10 Στο αριστερό μέρος της εντολής βρίσκεται το όνομα της μεταβλητής η οποία θα πάρει τιμή αφού υπολογιστεί η παράσταση από δεξιά. Η παράσταση από δεξιά μπορεί να αποτελείται από μεταβλητές και σταθερές οι τιμές των οποίων είναι γνωστές. Στα αριστερά του συμβόλου δεν είναι δυνατό να υπάρχει παράσταση. Παράδειγμα αλγορίθμου με ψευδοκώδικα για τον υπολογισμό της παράστασης ( 3χ+2 ) 2 Αλγόριθμος Υπολογισμός_παράστασης (πραγματικός Χ,Υ) Δεδομένα Χ Αποτελέσματα Υ αρχή Υ (3*Χ+2)*(3*Χ+2) ΑΣΚΗΣΗ τέλος 1 Βασικές αλγοριθμικές δομές Με τον όρο «αλγοριθμική δομή» εννοούμε τον τρόπο με τον οποίο εκτελείται ένα συγκεκριμένο πλήθος εντολών ενός αλγορίθμου. Οι βασικές αλγοριθμικές δομές είναι τρεις : η ακολουθία, η επιλογή και η επανάληψη.
Δομή ακολουθίας Στην ακολουθιακή δομή οι εντολές εκτελούνται η μία μετά την άλλη, μία φορά η καθεμία. Η διαδοχική εκτέλεση εντολών είναι η πιο απλή μορφή εκτέλεσης. Υπάρχουν προβλήματα των οποίων η λύση δεν μπορεί να διατυπωθεί ως διαδοχή απλών εντολών. Εντολή 1 Εντολή 2 Εντολή ν Δομή επιλογής Στην επιλεκτική δομή ( δομή επιλογής ) οι εντολές χωρίζονται σε δύο ή περισσότερες ομάδες και εκτελούνται οι εντολές μιας μόνο ομάδας, ανάλογα με την τιμή μιας συνθήκης ή μιας μεταβλητής, ενώ οι υπόλοιπες αγνοούνται. Σύνθετη επιλογή Ναι Ομάδα εντολών 1 Συνθήκη Όχι Ομάδα εντολών 2 αν < συνθήκη > τότε ομάδα εντολών 1 αλλιώς ομάδα εντολών 2 τέλος_αν Τρόπος εκτέλεσης εντολής επιλογής : Αρχικά ελέγχεται η συνθήκη.στη συνέχεια υπάρχουν δυο δυνατές περιπτώσεις : Αν η συνθήκη ικανοποιείται ( η απάντηση είναι ΝΑΙ )εκτελείται
μόνο η ομάδα εντολών 1. Η ομάδα εντολών 2 αγνοείται. Στην άλλη περίπτωση, δηλαδή όταν η συνθήκη δεν ικανοποιείται ( η απάντηση είναι ΟΧΙ ) δε λαμβάνεται υπόψη η ομάδα εντολών 1. Εκτελείται μόνο η ομάδα εντολών 2. Μετά από την εκτέλεση είτε της ομάδας 1 είτε της ομάδας2 η εκτέλεση της δομής επιλογής τελειώνει. Περιορισμένη επιλογή Υπάρχει περίπτωση σε μια εντολή επιλογής, όταν ισχύει η συνθήκη και μόνο τότε να εκτελεστεί μια σειρά εντολών. αν < συνθήκη > τότε ομάδα εντολών 1 τέλος_αν Πολλαπλή επιλογή Eπίλεξε < μεταβλητή > περίπτωση <τιμή 1> ομάδα εντολών 1 περίπτωση <τιμή 2> ομάδα εντολών 2... περίπτωση <τιμή n > ομάδα εντολών n περίπτωση αλλιώς ομάδα εντολών _αλλιώς τέλος_επιλογών Τρόπος εκτέλεσης πολλαπλής επιλογής Αρχικά ελέγχεται η τιμή της μεταβλητής.στη συνέχεια ανάλογα με τη τιμή της ( με όποια απο τις τιμές 1, 2 ή n συμπίπτει ) εκτελείται η ομάδα εντολών 1, ή η ομάδα εντολών 2 ή η ομάδα εντολών n.αν η τιμή δεν αντιστοιχεί σε καμία από τις παραπάνω περιπτώσεις τότε εκτελούνται Αξίζει να σημειωθεί ότι αντί για τη δομή πολλαπλής επιλογής μπορεί να χρησιμοποιηθούν ισοδύναμα η εντολές περιορισμένης επιλογής η εμφωλευμένη εντολή επιλογής. Δομή Επανάληψης Στην επαναληπτική δομή ( η δομή επανάληψης ) μια ακολουθία εντολών εκτελείται μια ή περισσότερες φορές, ανάλογα με τη τιμή μιας συνθήκης (ή μιας μεταβλητής ). Οι τρεις μορφές επαναληπτικής δομής είναι :
1. όσο επανέλαβε 2. επανέλαβε μέχρι 3. για μέχρι κάνε «όσο επανέλαβε» Τρόπος εκτέλεσης της <όσο επανέλαβε > όσο < συνθήκη συνέχειας > επανέλαβε ομάδα εντολών ; τέλος_όσο Ναι Ομάδα εντολών συνθήκη Όχι Βρόχος μια ακολουθία εντολών που επαναλαμβάνεται έως ότου ικανοποιηθεί μία συνθήκη. Στην αρχή ελέγχεται η συνθήκη. Αν αυτή ικανοποιείται, τότε εκτελείται η ομάδα εντολών.στη συνέχεια ελέγχεται ξανά η συνθήκη.και αν είναι αληθής πάλι εκτελούνται οι εντολές. Αυτό επαναλαμβάνεται ώσπου η συνθήκη γίνει ψευδής, τότε η ομάδα εντολών δεν εκτελείται και λήγει η εκτέλεση της δομής. «Επανέλαβε - μέχρι» επανέλαβε ομάδα εντολών μέχρι < συνθήκη τέλους > Όχι Ομάδα εντολών Συνθήκη τέλους Ναι Στη δομή αυτή η ομάδα εντολών του βρόχου εκτελείται τουλάχιστον μία φορά, αντίθετα από την εντολή «όσο κάνε», στην οποία μπορεί η ομάδα εντολών να μην εκτελεστεί ούτε μια φορά.
Οι επαναληπτικές δομές «όσο κάνε» και «επανέλαβε - μέχρι» χρησιμοποιούνται συνήθως όταν δεν ξέρουμε από πριν τον αριθμό των επαναλήψεων του βρόχου. «για - μέχρι - κάνε» για <μτ> :=<ατ> μέχρι <ττ> μεταβολή <μβ> κάνε ομάδα εντολών τέλοσ_για < μτ > - μετρητής < ατ > - αρχική τιμή < ττ >- τελική τιμή < μβ >- βήμα μεταβολής Η εντολή αυτή χρησιμοποιείται συνήθως όταν ο αριθμός των επαναλήψεων είναι εκ των προτέρων γνωστός Η τιμή του μετρητή αυξάνεται αυτόματα ξεκινώντας από την αρχική τιμή και φτάνει την τελική τιμή προσθέτοντας κάθε φορά το βήμα μεταβολής.
ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΕ ΑΠΑΝΤΗΣΕΙΣ Α ) 1. Τι είναι ένας αλγόριθμος ; Είναι η σειρά βημάτων την οποία ακολουθούμε, προκειμένου να φτάσουμε στη λύση ενός προβλήματος. 2. Ποιοι είναι οι τρόποι παρουσίασης ενός αλγορίθμου ; Οι τρόποι παρουσίασης ενός αλγορίθμου είναι: - ελεύθερο κείμενο - φυσική γλώσσα με βήματα - διάγραμμα ροής - κωδικοποίηση ( ψευδοκώδικας ) 3. Ποια είναι τα βασικά σχήματα που χρησιμοποιούνται στα διαγράμματα ροής; Αρχή ή τέλος Επεξεργασία δεδομένων (πράξεις ) Σχήμα ελέγχου (συνθήκη ) Εισαγωγή / Εξαγωγή Δεδομένων / αποτελεσμάτων Βέλος ροής Σχήμα για συνέχεια Εκτύπωση 4. Ποιες είναι οι βασικές αλγοριθμικές δομές ; Οι βασικές αλγοριθμικές δομές είναι: - δομή ακολουθίας - δομή επιλογής - δομή επανάληψης 5. Περιγράψτε τη δομή ακολουθίας. Στη δομή ακολουθίας οι εντολές γράφονται και εκτελούνται μια μετά την άλλη, από μια φορά η καθεμία. 6. Περιγράψτε την δομή επιλογής. Στη δομή επιλογής οι εντολές χωρίζονται σε δυο ή περισσότερες ομάδες. Ποια ομάδα εντολών εκτελείται εξαρτάται από τη τιμή μίας συνθήκης.
Διακρίνουμε τρεις μορφές της δομής επιλογής : - την σύνθετη - την περιορισμένη - την πολλαπλή 7. Περιγράψτε την δομή επανάληψης. Στη δομή επανάληψης μια ομάδα εντολών εκτελείται μια ή περισσότερες φορές ανάλογα με τη τιμή μίας συνθήκης. 8. Τι είναι μια μεταβλητή ; Μια μεταβλητή είναι ένας χώρος της μνήμης, στον οποίο δίνουμε εμείς ένα όνομα ( είναι το όνομα της μεταβλητής ) και ένα περιεχόμενο που είναι η τιμή της μεταβλητής.το περιεχόμενο της μεταβλητής μπορεί να μεταβάλλεται κατά την εκτέλεση του αλγορίθμου. 9. Ποιοι είναι οι τύποι των μεταβλητών ; Οι τύποι των μεταβλητών είναι : - Αριθμητικός που μπορεί να είναι ακέραιος (Integer ) ή πραγματικός ( Real) - Λεκτικός που λέγεται ακόμα αλφαριθμητικός ή συμβολοσειράς - Λογικός που μπορεί ναι πάρει μόνο δυο τιμές αληθής ή ψευδής 10. Τι είναι ένα πρόγραμμα ; Ένα πρόγραμμα είναι ένα σύνολο εντολών που είναι δοσμένες με μορφή εκτελέσιμη από τον υπολογιστή για την επίλυση ενός προβλήματος. 11. Ποια είναι η δομή ενός προγράμματος ; Η δομή ενός προγράμματος αποτελείται από τρία βασικά μέρη : - Τίτλος προγράμματος όπου δίνουμε και το όνομά του. - Τμήμα των δηλώσεων όπου περιγράφουμε τα ονόματα και τους τύπους όλων των μεταβλητών, σταθερών και υποπρογραμμάτων - Κύριο μέρος ή σώμα του προγράμματος όπου γράφονται όλες οι εντολές που θα εκτελεστούν ξεκινώντας πάντα με την λέξη ΑΡΧΗ (Begin) και τελειώνοντας με την λέξη ΤΕΛΟΣ ( End ). Β) 1 Να διατυπώσετε τον ορισμό του αλγορίθμου Αλγόριθμος είναι μία πεπερασμένη ακολουθία αυστηρώς καθορισμένων εντολών, κάθε μία από τις οποίες είναι εκτελέσιμη σε πεπερασμένο χρόνο, για την επίλυση ενός συγκεκριμένου προβλήματος. 2 Τι ονομάζουμε εκτελεστή του αλγορίθμου;
Εκτελεστή του αλγορίθμου, ονομάζουμε το σύστημα εκείνο το οποίο καλείται να εκτελέσει τις εντολές του αλγορίθμου. 3 Με ποια σειρά εκτελούνται οι εντολές ενός αλγορίθμου; Οι εντολές ενός αλγορίθμου εκτελούνται ακολουθιακά - σειριακά (η μία μετά την άλλη, μία μόνο φορά η κάθε μία), εκτός εάν σε κάποιο σημείο η ροή του αλγορίθμου αλλάξει με την χρήση κάποιας συνθήκης. 4 Αιατυπώστε σειριακό αλγόριθμο, με μορφή φυσικής γλώσσας με βήματα, που να υπολογίζει το άθροισμα τεσσάρων αριθμών. 1. Διάβασε α 2. Διάβασε β 3. Διάβασε γ 4. Διάβασε δ 5. Πρόσθεσε τους α,β,γ,δ και τοποθέτησε το αποτέλεσμα στην μεταβλητή Σ 6. Εμφάνισε - Εκτύπωσε το αποτέλεσμα 5 5 Διατυπώστε μη σειριακό αλγόριθμο, με μορφή φυσικής γλώσσας με βήματα, που να υπολογίζει το άθροισμα τεσσάρων αριθμών. 1. Αρχικοποίησε την μεταβλητή αθροίσματος S =0 και την μεταβλητή πλήθους αριθμών ί=1 2. Διάβασε A 3. Πρόσθεσε το A στην S 4. Πρόσθεσε 1 στην i 5. Αν το πλήθος ϊ των αριθμών ο. που διάβασες είναι μικρότερο ή ίσο του 4 πήγαινε στο βήμα 2. 6. Εμφάνισε - Εκτύπωσε το αποτέλεσμα S Παρατηρούμε πως πετυχαίνουμε με αυτόν τον τρόπο να μην επαναλαμβάνουμε κατά την συγγραφή του αλγορίθμου κάποιες εντολές (στη συγκεκριμένη περίπτωση την εντολή "διάβασε"), όπως επίσης να χρησιμοποιούμε μία και μόνο μεταβλητή A. Ας φανταστούμε τι θα γινόταν εάν επιθυμούσαμε να αθροίσουμε 1000 αριθμούς. 6 Με ποιους παράγοντες εξασφαλίζεται η πληρότητα του αλγορίθμου; ; (γενικές ιδιότητες αλγορίθμου). Οι παράγοντες που εξασφαλίζουν την πληρότητα του αλγορίθμου είναι: η είσοδος η έξοδος η καθοριστικότητα η περατότητα η αποτελεσματικότητα (INPUT) (OUTPUT)
7 Περιγράψτε γιατί η "είσοδος" αποτελεί παράγοντα εξασφάλισης πληρότητας. Σε έναν αλγόριθμο απαιτούμε να δίνεται το πεδίο ορισμού του ή καλύτερα το πεδίο εφαρμογής του. Με τον όρο αυτό εννοούμε το μέγιστο πεδίο αρχικών τιμών για τις οποίες εφαρμόζεται ο αλγόριθμος. Έτσι, κάθε αλγόριθμος δέχεται ένα σύνολο μεταβλητών εισόδου οι οποίες αποτελούν τα δεδομένα του αλγορίθμου. Το σύνολο αυτό μπορεί να είναι και το κενό, όταν επί παραδείγματι ο αλγόριθμος δημιουργεί και επεξεργάζεται πρωτογενείς τιμές συναρτήσεων παραγωγής τυχαίων αριθμών. 8 Περιγράψτε γιατί η "έξοδος" αποτελεί παράγοντα εξασφάλισης πληρότητας. Κάθε αλγόριθμος πρέπει να δημιουργεί κάποιο ή κάποια αποτελέσματα προς τον χρήστη ή προς έναν άλλον αλγόριθμο. 9 Περιγράψτε γιατί η "καθοριστικότητα" αποτελεί παράγοντα εξασφάλισης πληρότητας. Κάθε εντολή του αλγορίθμου πρέπει να είναι επακριβώς και αυστηρώς καθορισμένη, έτσι που η εκτέλεση της να μην αφήνει καμμία αμφιβολία για το τι κάνει και να μην απαιτούνται πρόσθετες εξηγήσεις. 10 Περιγράψτε γιατί η "περατότητα" αποτελεί παράγοντα εξασφάλισης πληρότητας. Κάθε αλγόριθμος πρέπει να καταλήγει στην λύση του προβλήματος μετά από πεπερασμένο πλήθος κανόνων-εντολών σε πεπερασμένο χρόνο. Δηλαδή, η εφαρμογή του επάνω σε συγκεκριμένα αρχικά δεδομένα να οδηγεί μετά από πεπερασμένο πλήθος βημάτων και σε πεπερασμένο χρόνο στην ζητούμενη λύση. Μία διαδικασία που δεν ολοκληρώνεται μετά από πεπερασμένο πλήθος βημάτων σε πεπερασμένο χρόνο, δεν αποτελεί αλγόριθμο, αλλά απλά μία υπολογιστική διαδικασία. 11 Περιγράψτε γιατί η "αποτελεσματικότητα" αποτελεί παράγοντα εξασφάλισης πληρότητας. Κάθε εντολή του αλγορίθμου πρέπει να είναι διατυπωμένη απλά και κατανοητά, ώστε να είναι δυνατόν να εκτελεστεί επακριβώς σε πεπερασμένο χρόνο. (Βέβαια, απαραίτητη προϋπόθεση είναι η εντολή να ανήκει στο σύστημα εντολών του εκτελεστή και συνεπώς να είναι εκτελέσιμη). 12 Πώς ορίζεται η "δομή δεδομένων";
Η δομή δεδομένων είναι τύπος δεδομένων που χρησιμοποιείται για να εκφράσει δεδομένα που αποτελούνται από περισσότερα του ενός συστατικά. 13 Αναφέρετε τους τρόπους παρουσίασης του αλγορίθμου, Οι τρόποι με τους οποίους παρουσιάζουμε έναν αλγόριθμο είναι: 1. το ελεύθερο κείμενο 2. η φυσική γλώσσα με βήματα 3. το διάγραμμα ροής και γενικότερα οι διαγραμματικές τεχνικές 4. ο ψευδοκώδικας 14 Περιγράψτε τους τρόπους παρουσίασης του αλγορίθμου. Ο τρόπος παρουσίασης του αλγορίθμου επιτυγχάνεται με: A το ελεύθερο κείμενο, όπου ο αλγόριθμος εκφράζεται χρησιμοποιώντας απλή φυσική γλώσσα, όπως ακριβώς μιλάμε. Αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης του αλγορίθμου. Εγκυμονεί τον κίνδυνο παραβίασης της αποτελεσματικότητας του αλγορίθμου, διότι εύκολα μπορεί να οδηγήσει σε μη εκτελέσιμη παρουσίαση. Β την φυσική γλώσσα με βήματα, όπου ο αλγόριθμος εκφράζεται με την χρήση απλής φυσικής γλώσσας, αλλά οι προτάσεις έχουν διαχωριστεί σε παραγράφους και τα βήματα ή οι εντολές του αλγορίθμου έχουν αριθμηθεί. Η μέθοδος αυτή εγκυμονεί τον κίνδυνο παραβίασης της καθοριστικότητας του αλγορίθμου. Γ τις διαγραμματικές τεχνικές όπως το διάγραμμα ροής ή λογικό διάγραμμα, όπου αναπαριστούμε τα βήματα του αλγορίθμου γραφικά με την βοήθεια ειδικών γεωμετρικών σχημάτων-συμβόλων, που κάθε ένα έχει την δική του σημασία και δηλώνει μία συγκεκριμένη ενέργεια ή λειτουργία. Το διάγραμμα ροής παρουσιάζει την μεγαλύτερη εποπτικότητα Δ τον ψευδοκώδικα, που αποτελεί μία πιο πειστική αναπαράσταση του αλγορίθμου και έρχεται πιο κοντά στην κωδικοποίηση ενός προγράμματος. Χρησιμοποιούμε μερικές λέξεις που έχουν αυστηρά καθορισμένη έννοια και τρόπο χρήσεως (δεσμευμένες λέξεις). Ο ψευδοκώδικας παρουσιάζει σε μεγαλύτερο βαθμό τα χαρακτηριστικά που πρέπει να έχει ένας τρόπος παρουσίασης αλγορίθμων.
15 Πια είδη μεγεθών χρησιμοποιούμε στον αλγόριθμο; Υπάρχουν δύο είδη μεγεθών: - οι σταθερές, των οποίων η τιμή δεν αλλάζει κατά την εκτέλεση του αλγορίθμου - οι μεταβλητές, των οποίων οι τιμές μεταβάλλονται κατά την εκτέλεση του αλγορίθμου. 16 Υπάρχουν κάποιοι περιορισμοί στην ονομασία του αλγορίθμου και των μεταβλητών; Τα ονόματα των μεταβλητών, τα επιλέγει ο προγραμματιστής κατά την κρίση του και αναγνωρίζονται μέσα στο κυρίως σώμα του αλγορίθμου, μόνο εάν προηγουμένως έχουν δηλωθεί και μάλιστα με την συγκεκριμένη μορφή και τύπο, στο τμήμα δηλώσεων του αλγορίθμου (ερώτ. 2.21-2.22). Στην δήλωση των μεταβλητών και του ονόματος του αλγορίθμου, υπάρχουν κάποιοι περιορισμοί, που ποικίλουν ανάλογα με την γλώσσα προγραμματισμού στην οποία θα κωδικοποιήσουμε τον αλγόριθμο. - να ξεκινούν πάντα με γράμμα, - μπορούν να περιέχουν γράμματα και ψηφία, - δεν μπορούν να περιέχουν κανένα άλλο ειδικό σύμβολο (συμπεριλαμβανομένου και του κενού), παρά μόνο την κάτω παύλα Πρέπει να τονίσουμε πως σε κάποιες γλώσσες προγραμματισμού, η χρήση κεφαλαίων και πεζών γραμμάτων στην ονομασία, διαφοροποιεί την μεταβλητή., Επιπλέον, η χρήση ελληνικών γραμμάτων για την ονομασία του αλγορίθμου και των μεταβλητών δεν είναι επιτρεπτή. Όμως, αυτούς τους τελευταίους περιορισμούς δεν θα τους λάβουμε αυστηρά υπ' όψιν, μιας και το σχολικό σύγγραμμα χρησιμοποιεί ελληνικούς χαρακτήρες. Έτσι, κυρίως στην ονομασία αλγορίθμων, θα χρησιμοποιούμε κάποιες φορές και ελληνικούς χαρακτήρες, Είναι βέβαια προτιμότερο να συνηθίζει κανείς από την αρχή, να προσαρμόζεται στους περιορισμούς που θέτει κάποια γλώσσα προγραμματισμού. Βέβαια, ας μην αγνοούμε πως στόχος του μαθήματος, δεν είναι η γνώση κάποιας συγκεκριμένης γλώσσας προγραμματισμού, αλλά η ανάπτυξη αλγορίθμων, με σκοπό την αντιμετώπιση προβλημάτων και την βελτίωση της κριτικής σκέψης. 17 Ποιους τύπους μεγεθών χρησιμοποιούμε στον αλγόριθμο; Οι τύποι μεγεθών που χρησιμοποιούμε είναι: ο ακέραιος ο πραγματικός ο χαρακτήρας (γράμμα, ψηφίο, ειδικό σύμβολο, μέσα σε εισαγωγικά).
η συμβολοσειρά ή το λεκτικό (οποιοιδήποτε χαρακτήρες: γράμματα, ψηφία, ειδικοί χαρακτήρες, όπου στην απόδοση τιμής τοποθετούνταν μέσα σε εισαγωγικά). ο λογνκός ή boolean(δέχεται δύο τιμές: TRUE,,,FALSE, δηλαδή αληθές, ψευδές) άλλοι τύποι δεδομένων (πίνακες, εγγραφές κ.α.) παραδείγματα: ακέραιος α < -125 πραγματικός b< 4-32.756 χαρακτήρας c< "ε" συμβολοσειρά ή λεκτικό d < "είναι ένα κείμενο " λογικός ή boolean e< false Σημείωση Πρέπει να επισημάνουμε: πως κάθε Η/Υ μπορεί να αναπαραστήσει ένα πεπερασμένο υποσύνολο ακεραίων αριθμών. Αν λοιπόν παραστήσουμε με maxint τον μέγιστο ακέραιο που μπορεί να αναπαρασταθεί, τότε ο Η/Υ επεξεργάζεται ακεραίους στο σύνολο [-maxint,maxint]. Έτσι, οποιαδήποτε πράξη δώσει αποτέλεσμα ακεραίου εκτός των ορίων του διαστήματος αυτού θα προκύψει σφάλμα. Προς το παρόν, στην ανάπτυξη αλγορίθμων δεν θα λάβουμε υπόψιν μας αυτόν τον περιορισμό, θεωρώντας πως maxint=. 18 Ποια είναι η δομή του αλγορίθμου σε μορφή ψευδοκώδικα; Ένας αλγόριθμος σε μορφή ψευδοκώδικα (όπως και σε κώδικα), αποτελείται από: Α) την επικεφαλίδα (ξεκινά με την δεσμευμένη λέξη "αλγόριθμος" και στη συνέχεια γράφεται η ονομασία του αλγορίθμου. Υπάρχει περίπτωση να δηλώσουμε και τις μεταβλητές με τον τύπο τους, αν ο αλγόριθμος έχει την έννοια υποαλγορίθμου). Β) το τμήμα δηλώσεων (δηλώνουμε τις σταθερές και τις μεταβλητές με τον τύπο τους, που θα χρησιμοποιήσουμε στον αλγόριθμο). Γ) το κυρίως σώμα του αλγορίθμου (οριοθετείται από τις δεσμευμένες λέξεις "αρχή" και "τέλος". Περιλαμβάνει συγκεκριμένες εντολές που αφορούν την εκτέλεση πράξων, συναρτήσει των δεδομένων που έχουν περιγραφεί στο τμήμα δηλώσεων. Οι πράξεις είναι δυνατόν να είναι εκχωρήσεις, συγκρίσεις, έλεγχοι, είσοδος, έξοδος κ.λ.π. Συνήθως, κάθε εντολή χωρίζεται από την επόμενη με κάποιο ειδικό σύμβολο (π.χ. το ";"). Στον ψευδοκώδικα δεν θα χρησιμοποιούμε κανένα σύμβολο για τον σκοπό αυτό).
19 Παρουσιάστε την μορφή της δομής του αλγορίθμου σε ψευδοκώδικα. Ο ψευδοκώδικας παρουσιάζεται στο σχολικό βιβλίο ουσιαστικά με δύο τρόπους. Στο κύριο σώμα του αλγορίθμου οι εντολές που τοποθετούνται μεταξύ των λέξεων αρχή και τέλος, γράφονται διαδοχικά. Έτσι, χρησιμοποιούμε τον πρώτο τρόπο που η μορφή του παρουσιάζεται παρακάτω, όταν επιθυμούμε να κατασκευάσουμε έναν πλήρη και αυτόνομο αλγόριθμο που να διαβάζει τα δεδομένα (ενδεχομένως από το πληκτρολόγιο) και να εξάγει τα αποτελέσματα (ενδεχομένως στον εκτυπωτή ή την οθόνη). Αλγόριθμος όνομα_αλγορίθμου σταθερές όνομα_σταθεράς_1 = τιμή_1 όνομα_σταθεράς_η = τιμή_π μεταβλητές τύπος και ονόματα μεταβλητών αρχή... εντολές... τέλος όνομα_αλγορίθμου Ο δεύτερος τρόπος που παρουσιάζεται παρακάτω, ισχύει όταν ο αλγόριθμος παρουσιάζεται με την μορφή υπο-αλγορίθμου, όπου δέχεται δεδομένα από άλλον αλγόριθμο ή υπο-αλγόριθμο και εξάγει τα αποτελέσματα σε άλλον. Υπενθυμίζουμε πως ο υποαλγόριθμος αποτελεί ουσιαστικά λύση τμήματος ενός γενικότερου προβλήματος. Αλγόριθμος όνομα_αλγορίθμου δεδομένα //ονόματα δεδομένων// βοηθητικές μεταβλητές Αρχή.εντολές. αποτελέσματα //ονόματα αποτελεσμάτων// τέλος όνομα_αλγορίθμου 20 Τι γνωρίζετε για την εντολή εκχώρησης τιμής;
Η γενική μορφή εκχώρησης τιμής (ή απόδοσης τιμής) σε μία μεταβλητή είναι: μεταβλητή := έκφραση; ή μεταβλητή <- έκφραση Γνωρίζουμε πως: Α. στο αριστερό μέλος βρίσκεται η μεταβλητή, της οποίας η τιμή είναι άγνωστη, ενώ στα δεξιά βρίσκεται η παράσταση, αποτελούμενη από σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή. Β. σε μία εντολή εκχώρησης είναι δυνατόν η παράσταση, η τιμή της οποίας εκχωρείται σε μία μεταβλητή, να περιέχει την μεταβλητή αυτή. Τότε, σε αυτήν εκχωρείται ουσιαστικά, μία τιμή, η οποία εξαρτάται από την τρέχουσα τιμή της. π.χ. η εντολή Α < Α+1, αυξάνει κατά 1 την τρέχουσα τιμή της μεταβλητής Α. (η εντολή εκχώρησης τιμής, δεν συμπίπτει με την μαθηματική έννοια της ισότητας). θ στα αριστερά της εντολής εκχώρησης τιμής, δεν είναι δυνατόν να υπάρχει παράσταση ή σταθερά. Έτσι, πρέπει να προσέχουμε πως: για να είναι δυνατή η εκτέλεση μίας εντολής εκχώρησης θα πρέπει όλες οι μεταβλητές που βρίσκονται στα δεξιά της εντολής να έχουν τιμή, να μην είναι δηλαδή απροσδιόριστες. * στις περισσότερες γλώσσες προγραμματισμού, έτσι και στην περίπτωση μας, όπου αναπτύσσουμε αλγόριθμους, θεωρείται αναγκαία η δήλωση της μεταβλητής και του τύπου της πριν χρησιμοποιηθεί. η μεταβλητή που βρίσκεται στα αριστερά μίας εντολής εκχώρησης, θα πρέπει να είναι ίδιου τύπου με το αποτέλεσμα που δίνει το δεξί μέρος (έτσι, δεν μπορεί να γίνει εκχώρηση λεκτικού σε μεταβλητή τύπου ακεραίου). με την λήξη του αλγορίθμου πρέπει τα αποτελέσματα να έχουν τιμή, σαν αποτελέσματα εντολών εκχώρησης. 21 Πώς και γιατί χρησιμοποιούμε σχόλια στον αλγόριθμο; Χρησιμοποιούμε σχόλια προκειμένου να δώσουμε επεξηγήσεις σε αυτόν που διαβάζει τον αλγόριθμο. Ανάλογα με την γλώσσα που θα υλοποιήσουμε χρησιμοποιούμε και το κατάλληλο σύμβολο για να δηλώσουμε ότι ακολουθεί σχόλιο. Εδώ θα χρησιμοποιούμε το σύμβολο! και στη συνέχεια του συμβόλου μπορούν να ακολουθούν τα σχόλια. Άλλα σύμβολα μπορούν να είναι το * ή τα {}. Πρέπει να τονίσουμε, πως τα σχόλια, αγνοούνται από τον Η/Υ κατά την εκτέλεση του αλγορίθμου. Χρησιμοποιώντας τα όμως, αυξάνουμε την
εποπτικότητα και είναι πιο εύκολο στον αναγνώστη να καταλάβει με την πρώτη ματιά ποια είναι η χρησιμότητα του αλγορίθμου. Είναι δυνατόν να προσθέσουμε, υπό μορφήν σχολίων, τον συγγραφέα του αλγορίθμου, για να γνωρίζουμε σε ποιον θα απευθυνθούμε, την ημερομηνία συγγραφής του, τι σημαίνουν οι διάφορες μεταβλητές που χρησιμοποιούμε κ.λ.π. 22 Ποιοι είναι οι τελεστές αριθμητικών πράξεων που μπορούμε να χρησιμοποιήσουμε σε έναν αλγόριθμο και ποια η σημασία τους; Οι τελεστές αριθμητικών πράξεων που χρησιμοποιούμε σε έναν αλγόριθμο είναι: Πρόσθεση, πολλαπλασιασμός αφαίρεση, διαίρεση Επίσης, σε πολλές γλώσσες προγραμματισμού χρησιμοποιούμε και κάποιες συναρτήσεις-τελεστές. Δύο σημαντικοί και πολύ χρήσιμοι είναι: Α div B δίνει το ακέραιο πηλίκο της διαίρεσης A/B. Amod B δίνει το ακέραιο υπόλοιπο της διαίρεσης A/B. Έτσι, ισχύει: A mod B = A - (A div B) * Β Προσοχή! Τα ορίσματα A και B στα mod και div, πρέπει να είναι ακέραιοι. Έτσι, οι πράξεις div και mod, δεν χρησιμοποιούνται για πραγματικούς. Σε μία τέτοια περίπτωση θα χρησιμοποιούμε τον τελεστή "/". Παραδείγματα αριθμητικών τελεστών: 2-3=-1 2 + 3-5 + 2*3 = 6 17/4 = 4.25 25 div 4 = 6 (-25) div 4 = -6 26 div 25 mod 6=1 2.0 + 3-5.0+ 2*3.0 = 6.0 10/2=5.0 23 Χρησιμοποιώντας τους γνωστούς τελεστές αριθμητικών πράξεων μεταξύ δύο ακεραίων a και b) ποιος θα είναι ο τύπος του αποτελέσματος; Προφανώς, οι πράξεις +,-,*, div, mod θα δώσουν ακέραιο αποτέλεσμα, ενώ η πράξη "/" θα δώσει πραγματικό αριθμό. Έτσι: 6/3=2. πραγματικός. Συνεπώς, είναι σίγουρο πως αν σε μία παράσταση υπάρχει το σύμβολο "/", το αποτέλεσμα θα είναι πραγματικός αριθμός. 24 Ποια είναι η σειρά προτεραιότητας των πράξεων στους αριθμητικούς τελεστές;
Καταρχήν, αυτό που πρέπει να γνωρίζουμε είναι πως όπου χρειάζεται, χρησιμοποιούμε παρενθέσεις. Προσοχή! Ποτέ δεν χρησιμοποιούμε αγκύλες ή άγκιστρα όπως στις μαθηματικές πράξεις, αλλά χρησιμοποιούμε μόνο παρενθέσεις. Έτσι, είναι δυνατόν να έχουμε παρενθέσεις και μέσα σε αυτές άλλες παρενθέσεις. Άρα, με το σκεπτικό αυτό: a) προηγούνται οι πράξεις εντός των παρενθέσεων και μάλιστα πρωτίστως των εσωτερικών. Ώστε, ξεκινάμε από τις εσωτερικές παρενθέσεις προς τις εξωτερικές. b) στη συνέχεια εκτελούνται και είναι ίδιας προτεραιότητας οι πράξεις *, /, div, mod. Βέβαια είναι σημαντικό και πρέπει να αναφερθεί πως ίδιας προτεραιότητας πράξεις εκτελούνται από αριστερά προς τα δεξιά. c) τέλος, εκτελούνται οι πράξεις +, -. 25 Ποια είναι η σειρά προτεραιότητας των πράξεων στις παρακάτω εντολές εκχώρησης; α) Α <- Χ/(Υ*Ζ) β) Β <- Χ/Υ*Ζ α) Καταρχήν, θα εκτελεστεί η πράξη μέσα στην παρένθεση Υ*Ζ και μετά η διαίρεση β) Πρώτα θα γίνει η διαίρεση και μετά ο πολλαπλασιασμός 26 Να αναφέρετε και να περιγράψτε τα κριτήρια που πρέπει να ικανοποιεί κάθε αλγόριθμος. Κάθε αλγόριθμος πρέπει να ικανοποιεί τα επόμενα κριτήρια: Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών. Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν αλλο αλγόριθμο. Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση, όπου ο διαιρέτης λαμβάνει μηδενική τιμή. Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μία διαδικασία που
δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία (computational procedure). Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη. 27 Από ποιες σκοπιές η Πληροφορική ως επιστήμη μελετά τους αλγορίθμους; Η Πληροφορική μελετά τους αλγορίθμους από τις τέσσερις ακόλουθες σκοπιές: Υλικού (hardware). Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού, δηλαδή από τον τρόπο που είναι δομημένα σε μία ενιαία αρχιτεκτονική τα διάφορα συστατικά του υπολογιστή (δηλαδή ανάλογα με το αν ο υπολογιστής έχει κρυφή μνήμη και πόση, ανάλογα με την ταχύτητα της κύριας και δευτερεύουσας μνήμης κοκ.). Γλωσσών Προγραμματισμού (programming languages). Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή, χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου. Γενικά μία γλώσσα που είναι χαμηλοτέρου επιπέδου (όπως η assembly ή η γλώσσα C) είναι ταχύτερη από μία άλλη γλώσσα που είναι υψηλοτέρου επιπέδου (όπως η Basic ή Pascal). Ακόμη, σημειώνεται ότι διαφορές συναντώνται μεταξύ των γλωσσών σε σχέση με το πότε εμφανίσθηκαν. Θεωρητική (theoretical). Το ερώτημα που συχνά τίθεται είναι, αν πράγματι υπάρχει ή όχι κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος.. Ωστόσο η προσέγγιση αυτή είναι ιδιαίτερα σημαντική, γιατί προσδιορίζει τα όρια της λύσης που θα βρεθεί σε σχέση με ένα συγκεκριμένο πρόβλημα. Αναλυτική (analytical). Μελετώνται οι υπολογιστικοί πόροι (computer resources) που απαιτούνται από έναν αλγόριθμο, όπως για παράδειγμα το μέγεθος της κύριας και της δευτερεύουσας μνήμης, ο χρόνος για λειτουργίες CPU και για λειτουργίες εισόδου/εξόδου κ.λπ. 28 Ποια είναι η διαφορά της θεωρητικής από την αναλυτική προσέγγιση στην επίλυση ενός προβλήματος με χρήση αλγορίθμου; Η θεωρητική προσέγγιση θέτει το ερώτημα αν υπάρχει ή όχι κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος, ενώ στην αναλυτική προσέγγιση γίνεται μελέτη των υπολογιστικών πόρων που απαιτούνται από έναν αλγόριθμο. Περιγράψτε τους τρόπους περιγραφής και αναπαράστασης αλγορίθμων. Η αναπαράσταση ενός αλγορίθμου μπορεί να γίνει με:
ελεύθερο κείμενο (free text), που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων, δηλαδή την αποτελεσματικότητα. διαγραμματικές τεχνικές (diagramming techniques), που συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου. Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί, η πιο παλιά και η πιο γνωστή ίσως, είναι το διάγραμμα ροής (flow chart). Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν αποτελεί την καλύτερη λύση, γι αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη. φυσική γλώσσα (natural language) κατά βήματα. Στην περίπτωση αυτή χρειάζεται προσοχή, γιατί μπορεί να παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου, όπως προσδιορίσθηκε προηγουμένως, δηλαδή το κριτήριο του καθορισμού. κωδικοποίηση (coding), δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο. Ελεύθερο κείμενο που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Φυσική γλώσσα με βήματα. Διαγραμματικές τεχνικές που συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου. Η πιο γνωστή τεχνική είναι το διάγραμμα ροής. Κωδικοποίηση, δηλαδή με ένα πρόγραμμα γραμμένο είτε με μία ψευδογλώσσα, είτε σε κάποιο προγραμματιστικό περιβάλλον, που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο. 29 Τι είναι οι σταθερές και οι μεταβλητές; Κατά τη συγγραφή ενός αλγορίθμου χρησιμοποιούνται σταθερές και μεταβλητές. Με τον όρο σταθερές αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια εκτέλεσης του αλγορίθμου. Οι σταθερές διακρίνονται σε: 1. Αριθμητικές με χρήση των αριθμητικών χαρακτήρων, του +, του - και του κόμματος ως δεκαδικό σημείο, όπως 12,+9,-15,7. 2. Αλφαριθμητικές που σχηματίζονται από οποιουσδήποτε χαρακτήρες σε διπλά εισαγωγικά. Π.χ.: "Η ρίζα είναι:", "Νέα τιμή:" και 3. Λογικές που παίρνουν δύο τιμές: Αληθής, Ψευδής. Οι μεταβλητές είναι γλωσσικά αντικείμενα, που χρησιμοποιούνται για να παραστήσουν στοιχεία δεδομένων. Στις μεταβλητές εκχωρείται μία τιμή-, η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου. Οι μεταβλητές διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές. 30 Ποια είναι τα σύμβολα στα διαγράμματα ροής;
Με την έλλειψη δηλώνεται η αρχή και το τέλος του αλγορίθμου. Με το πλάγιο παραλληλόγραμμο δηλώνεται η είσοδος ή η έξοδος στοιχείων. Με το ορθογώνιο δηλώνεται η εκτέλεση των πράξεων. Με το ρόμβο δηλώνεται μία ερώτηση με δυο ή περισσότερες εξόδους για απάντηση. 31 Ποια είναι η γενική μορφή της ψευδογλώσσας; Αλγόριθμος όνομα εντολή 1 εντολή 2 εντολή ν Τέλος όνομα 32 Ποιες λέξεις καλούνται δεσμευμένες; Οι λέξεις που έχουν αυστηρά καθορισμένο νόημα για τον αλγόριθμο καλούνται δεσμευμένες λέξεις. Τέτοιες λέξεις για παράδειγμα είναι: Αλγόριθμος, Τέλος, Διάβασε, Εκτύπωσε. 33 Τι είναι η εντολή εκχώρησης και πώς συντάσσεται; Η γενική μορφή της εντολής ει'ναι: Μεταβλητή «-Έκφραση και η λειτουργία της είναι: "γίνονται οι πράξεις στην έκφραση και το αποτέλεσμα αποδίδεται, μεταβιβάζεται, εκχωρείται στη μεταβλητή". Στην εντολή χρησιμοποιείται το αριστερό βέλος προκειμένου να δείχνει τη φορά της εκχώρησης. 34 Ποια είναι τα είδη των τελεστών; Τελεστές ονομάζονται τα γνωστά σύμβολα που χρησιμοποιούνται για τις πράξεις. Διακρίνονται σε: Αριθμητικούς, Λογικούς, Συγκριτικούς. 35 Ποιοι είναι οι αριθμητικοί τελεστές; Οι αριθμητικοί τελεστές που χρησιμοποιούνται στις πράξεις είναι οι ακόλουθοι: Στην πρόσθεση χρησιμοποιείται το +. Στην αφαίρεση χρησιμοποιείται το -. Στον πολλαπλασιασμό χρησιμοποιείται το *. Στη διαίρεση χρησιμοποιείται το /. Για την ύψωση μίας μεταβλητής ή σταθεράς σε δύναμη μπορεί να χρησιμοποιείται το σύμβολο Λ. Η πράξη div συμβολίζει το ακέραιο μέρος της διαίρεσης. Για παράδειγμα 7 div 2 = 3, Το mod συμβολίζει το υπόλοιπο της διαίρεσης. Για παράδειγμα 7 mod 2 = 1. 36 Ποιοι είναι οι συγκριτικοί και ποιοι οι λογικοί τελεστές; Οι συγκριτικοί τελεστές είναι: <, <=, =, <>, >=, > Οι λογικοί τελεστές είναι: και (σύζευξη), ή (διάζευξη), όχι (άρνηση). 37 Τι είναι οι εκφράσεις;
Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά μέχρι μια πολύπλοκη μαθηματική παράσταση. Οι εκφράσεις διαμορφώνονται από τους τελεστέους (σταθερές ή μεταβλητές) και τους τελεστές. Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών στις μεταβλητές και στην εκτέλεση των πράξεων. Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των πράξεων και τη χρήση των παρενθέσεων. 38 Πότε χρησιμοποιούνται σχόλια και τι ρόλο έχουν; Μπορούμε κατά τη συγγραφή ενός αλγορίθμου να χρησιμοποιούμε επεξηγηματικές φράσεις. Οι φράσεις αυτές καλούνται σχόλια. Προκειμένου να διαχωρίζονται οι φράσεις αυτές από τις λέξεις - κλειδιά του αλγορίθμου, στις πρώτες προτάσσεται το σύμβολο!. Τα σχόλια δεν αποτελούν εκτελέσιμες εντολές και γράφονται σε οποιοδήποτε σημείο του αλγορίθμου χωρίς να επηρεάζουν την εκτέλεση του. 39 Να περιγραφεί η δομή της ακολουθίας και να δοθεί σε διάγραμμα ροής ένα παράδειγμα αυτής της αλγοριθμικής προσέγγισης. Η δομή ακολουθίας χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών προβλημάτων, όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών. Στις δομές ακολουθίας, τα βήματα εκτελούνται το ένα μετά το άλλο μέχρι το τέλος του αλγορίθμου. 40 Τι καλείται λογική συνθήκη; Η λογική συνθήκη είναι μια έκφραση που συγκρίνει τιμές και επιστρέφει Αληθής αν η συνθήκη ισχύει και Ψευδής αν η συνθήκη δεν ισχύει. 41 Ποιοι είναι οι βασικοί τύποι συνιστωσών/ εντολών ενός αλγορίθμου; (θέμα Εξετάσεων Ιούνιος 2000, Ιούνιος 2001 Εσπερινά Λύκεια) Οι βασικοί τύποι συνιστωσών/εντολών ενός αλγορίθμου είναι: Η δομή ακολουθίας με σειριακή τταρουσίαση των βημάτων. Οι δομές επιλογής με εκτϊλ$ση βημάτων βάσει κριτηρίων. Οι δομές επανάληψης. Οι συνδυασμοί των δομών επιλογής και επανάληψης σχηματίζουν τις εμφωλευμένες δομές. 42 Να περιγραφεί η δομή της επιλογής και να δοθεί με ψευδογλώσσα ένα παράδειγμα αυτής της αλγοριθμικής προσέγγισης. Στα περισσότερα προβλήματα υπάρχει κάποιο σημείο που πρέπει να αποφασίσουμε ποια θα είναι τα επόμενα βήματα. Η απόφαση αυτή λαμβάνεται βάσει κάποιων κριτηρίων ή συνθηκών που μπορεί να είναι διαφορετικά για κάθε διαφορετικό στιγμιότυπο ενός προβλήματος.
Γενικά, η δομή της επιλογής περιλαμβάνει τον έλεγχο κάποιας συνθήκης, που μπορεί να έχει δυο τιμές (Αληθής ή Ψευδής) και ακολουθείται η απόφαση εκτέλεσης κάποιας ενέργειας με βάση την τιμή της λογικής αυτής συνθήκης. Υπάρχουν οι παρακάτω μορφές της δομής επιλογής: Η συνθέτη δομή επιλογής. Ο αλγόριθμος σε ψευδογλώσσα για αυτή τη δομή είναι: Αν < συνθήκη > τότε εντολές 1 αλλιώς εντολές 2 Τέλός_αν Στην σύνθετη δομή επιλογής αρχικά ελέγχεται η συνθήκη. Αν η συνθήκη είναι αληθής εκτελείται μόνο η ομάδα εντολών 1 και αγνοείται η ομάδα εντολών 2. Αν η συνθήκη είναι ψευδής δεν λαμβάνεται υπόψη η ομάδα εντολών 1 και εκτελείται μόνο η ομάδα εντολών 2. Παράδειγμα για τη σύνθετη δομή επιλογής θα βρείτε στο θέμα 2. Η απλή ή περιορισμένη δομή επιλογής. Ο αλγόριθμος σε ψευδογλώσσα για αυτή τη δομή είναι: Αν < συνθήκη > τότε Αν <συνθήκηί> τότε εντολή ή εντολές Τέλος_αν Στην απλή δομή επιλογής αρχικά ελέγχεται η συνθήκη. Οι εντολές ή η εντολή εκτελείται μόνο αν η συνθήκη είναι αληθής. Δεν ορίζεται ομάδα εντολών για την περίπτωση που η συνθήκη είναι ψευδής. 43 Να περιγραφεί η δομή των διαδικασιών πολλαπλών επιλογών και να δοθεί με ψευδογλώσσα και με διάγραμμα ροής ένα παράδειγμα αυτής της αλγοριθμικής προσέγγισης. Οι δομές πολλαπλών επιλογών εφαρμόζονται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές αποφάσεις ανάλογα με τη τιμή που παίρνει μια, έκφραση., Παράδειγμα για τη δομή πολλαπλών επιλογών θα βρείτε στο θέμα 12. 44 Να περιγραφεί η δομή των εμφωλευμένων διαδικασιών και να δοθεί με ψευδογλώσσα ένα παράδειγμα αυτής της αλγοριθμικής προσέγγισης. ' Όταν κάποιες δομές περιέχονται σε μια ομάδα εντολών μιας άλλης δομής, τότε λέμε ότι σχηματίζουν μια εμφωλευμένη δομή. Πολλαπλές επιλογές μπορούν να υλοποιηθούν και με εμφωλευμένη δομή. Παράδειγμα για τη δομή εμφωλευμένων διαδικασιών θα βρείτε στο θέμα 18.
45 Ποια είναι η διαφορά της εντολής Αν... αλλιώς και της Αν... αλλιώς_αν; Στην πρώτη περίπτωση, αν η συνθήκη ισχύει τότε εκτελούνται οι εντολές που βρίσκονται μεταξύ των λέξεων τότε και αλλιώς, διαφορετικά εκτελούνται οι εντολές μεταξύ των λέξεων αλλιώς και Τέλος_αν. Στην εντολή Αν... αλλιώς_αν εκτελούνται οι εντολές που βρίσκονται στο αντίστοιχο τμήμα, όταν η συνθήκη είναι αληθής. 46 Τι είναι τα εμφωλευμένα Αν; Εμφωλευμένα Αν ονομάζονται δύο ή περισσότερες εντολές της μορφής Αν... τότε... αλλιώς που περιέχονται η μία μέσα στην άλλη. 47 Πότε χρησιμοποιείται η εντολή Επίλεξε; Όταν οι εναλλακτικές περιπτώσεις επιλογής είναι πολλές, μπορεί να χρησιμοποιηθεί η εντολή Επίλεξε. 48 Πότε χρησιμοποιούμε επαναληπτικές δομές; Οι εντολές επανάληψης χρησιμοποιούνται, όταν μία ομάδα εντολών πρέπει να Εκτελεστεί αρκετές φορές ανάλογα με την τιμή μίας συνθήκης. 49 Να περιγραφεί η δομή των επαναληπτικών διαδικασιών και να δοθεί με ακολουθία βημάτων ένα παράδειγμα αυτής της αλγοριθμικής προσέγγισης. Οι δομές επανάληψης χρησιμοποιούνται σε περιπτώσεις, όπου μια ακολουθία εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι κοινό. Οι επαναληπτικές διαδικασίες μπορεί να έχουν διάφορες μορφές και συνήθως εμπεριέχουν και συνθήκες επιλογών (εμφωλευμένες δομές). Οι τρεις βασικές μορφές δομών επανάληψης είναι: 1. Επαναληπτική Δομή με έλεγχο επανάληψης στην αρχή. Η σύνταξη της δομής αυτής είναι: Όσο <συνθήκη> επανέλαβε Εντολές Τέλος_επανάληψης Η δομή αυτή, συνήθως, χρησιμοποιείται όταν είναι άγνωστος ο αριθμός των.επαναλήψεων, Η λειτουργία της δομής είναι η εξής: Επαναλαμβάνεται η εκτέλεση των εντολών όσο η συνθήκη είναι Αληθής. Όταν η συνθήκη γίνει Ψευδής, η δομή επανάληψης τερματίζει και ο αλγόριθμος συνεχίζει με την εντολή που ακολουθεί μετά το Τέλος_επανάληψης. Η συνθήκη πρέπει να μεταβάλλεται μέσα στη δομή επανάληψης για να αποφεύγεται η ατέρμονη επανάληψη των εντολών. Σε περίπτωση που η συνθήκη δεν πάρει την τιμή
Ψευδής σε πεπε-, >ασμένο χρόνο και πεπερασμένο αριθμό εντολών, θα δημιουργηθεί ένας ατέρ-μονας βρόχος. Στα θέματα 1 έως 8 θα βρείτε τη αλγοριθμική επίλυση προβλημάτων που επιλύθηκαν με τη δομή επανάληψης Όσο...επανάλαβε. 2. Επαναληπτική Δομή με έλεγχο επανάληψης στο τέλος. Η σύνταξη της δομής αυτής είναι: Αρχή_επανάληψης εντολές Μέχρις_ότου < συνθήκη > Η δομή αυτή, συνήθως, χρησιμοποιείται όταν είναι άγνωστος ο αριθμός των επαναλήψεων! Η λειτουργία της δομής είναι η εξής: Επαναλαμβάνεται η εκτέλεση των εντολών όσο η συνθήκη είναι Ψευδής. Όταν η συνθήκη γίνει Αληθής, η δομή επανάληψης τερματίζει και ο αλγόριθμος συνεχίζει με την εντολή που ακολουθεί μετά το Μέχρις_ότου. Η συνθήκη πρέπει να μεταβάλλεται μέσα στη δομή επανάληψης για να αποφεύγεται η ατέρμονη επανάληψη των εντολών. Σε περίπτωση που η συνθήκη δεν πάρει την τιμή Αληθής σε πεπερασμε'νο χρόνο και πεπερασμένο αριθμό εντολών, θα δημιουργηθεί ένας ατέρμονος βρόχος. Στα θέματα 9 έως 17 θα βρείτε τη αλγοριθμική επίλυση προβλημάτων που επιλύθηκαν με τη δομή επανάληψης Αρχή_επανάληψης...Μέχρις_ότου. 3. Επαναληπτική Δομή για ορισμένο αριθμό επαναλήψεων. Η σύνταξη της δομής αυτής είναι: μεταβλητή από τ1 μέχρι τ2 με_βήμα β εντολές Τέλος_επανάληψης Για Όταν ο αριθμός των επαναλήψεων που θα εκτελεστεί η επαναληπτική δομή είναι γνωστός εκ των προτέρων, είναι προτιμότερο να χρησιμοποιείται η δομή Για...από...μέχρι. Η αρχική τιμή τ1 της μεταβλητής δίνεται με το από. Για το λόγο αυτό δεν χρειάζεται ειδική εντολή για την απόδοση αρχικής τιμής στη μεταβλητή πριν από την επανάληψη. Η τελική τιμή τ2 της μεταβλητής δίνεται με το μέχρι. Για το λόγο αυτό δεν χρειάζεται συνθήκη για τον τερματισμό της δομής επανάληψης. Το βήμα προσδιορίζει την αριθμητική ποσότητα που προστίθεται σε κάθε επανάληψη στη μεταβλητή. Όταν το βήμα δεν σημειώνεται, υπονοείται ότι είναι μονάδα. Δεν υπάρχει εντολή για τη μεταβολή της μεταβλητής
μέσα στην ομάδα εντολών της επανάληψης αφού μεταβάλλεται αυτόματα με το βήμα. Στσ θέματα 18 έως 31 θα βρείτε τη αλγοριθμική επίλυση προβλημάτων που επιλύθηκαν με τη δομή επανάληψης Για...από...μέχρι. 50 Ποιες είναι οι διαφορές των δομών Όσο... επανέλαβε και Αρχή_επανσλη ψης... Μέχρις_ότου; Όσο... επανέλαβε Αρχή επανάληψης... Με'χρις ότου Η συνθήκη για τον τερματισμό της Η συνθήκη για τον τερματισμό της δομής δομής επανάληψης βρίσκεται στην επανάληψης βρίσκεται στο τέλος. αρχή. Οι εντολές που εμπεριέχονται στη δομή επανάληψης Όσο... επανέλαβε μπορεί να μην εκτελεστούν ποτέ". Αυτό οφείλεται στο ότι η συνθήκη βρίσκεται στην αρχή της δομής. Οι εντολές που εμπεριέχονται στη δομή επανάληψης Αρχή επανάληψης... Μέχρις_ότου θα εκτελεστούν τουλάχιστον μία φορά. Αυτό οφείλεται στο ότι η συνθήκη βρίσκεται στο τέλος της δομής. Η δομή κλείνει με το Τέλος επανάληψης. Η δομή κλείνει με το Μέχρις ότου. Η εκτέλεση των εντολών επαναλαμβάνεται όσο η συνθήκη είναι Αληθής. Όταν η συνθήκη γίνει Ψευδής, τότε ο αλγόριθμος συνεχίζει με την εντολή που ακολουθεί το Τέλος_επανάληψης. Η εκτέλεση των εντολών επαναλαμβάνεται όσο η συνθήκη είναι Ψευδής. Όταν η συνθήκη γίνει Αληθής, τότε ο αλγόριθμος συνεχίζει με την εντολή που ακολουθεί το Μέχρις_ότου. 51 Ποιες είναι οι διαφορές της δομής επανάληψης Για... από... μέχρι από τις άλλες δύο δομές επανάληψης; Για μεταβλητή από τί μέχρι τ2 με_βήμα β Όσο... επανέλαβε και Αρχή_επανάληψης... Μέχρις_ότου Χρησιμοποιείται όταν ο αριθμός Χρησιμοποιείται όταν είναι άγνωστο το πόσες των επαναλήψεων που θα φορές θα επαναληφθεί η εκτέλεση των εντολών. εκτελεστεί η επαναληπτική δομή είναι γνωστός εκ των προτέρων. Η αρχική τιμή τ1 της Απαιτείται η ανάθεση τιμών στις μεταβλητές που μεταβλητής δίνεται με το από. εμπλέκονται στη συνθήκη. Για το λόγο αυτό δεν χρειάζεται ειδική εντολή για την απόδοση
αρχικής τιμής της μεταβλητής πριν από την επανάληψη. Δεν υπάρχει συνθήκη για τον Υπάρχει συνθήκη για τον τερματισμό της δομής τερματισμό της δομής επανάληψης. επανάληψης. Η επανάληψη τερματίζει όταν η μεταβλητή λάβει τιμή ίση ή μεγαλύτερη από τ2. Δεν υπάρχει εντολή για τη μεταβολή της μεταβλητής μέσα στην ομάδα εντολών της επανάληψης αφού μεταβάλλεται αυτόματα με το βήμα. Η συνθήκη πρέπει να μεταβάλλεται μέσα στη δομή επανάληψης για να αποφύγουμε τον ατέρμονα βρόχο. 52 Να περιγραφεί με ακολουθία βημάτων το πρόβλημα του πολλαπλασιασμού αλά ρωσικά. Αλγόριθμος: Πολλαπλασιασμός δύο θετικών ακεραίων αλά ρωσικά Δεδομένα : Αποτελέσματα : Βήμα 1 Βήμα 2 Βήμα 3 Βήμα 4 Βήμα 5 Βήμα 6 Βήμα 7 Δύο ακέραιοι Μ1 και Μ2, όπου Μ1, Μ2 > Ί. Το γινόμενο Ρ = ΜΙ *Μ2 θέσε Ρ - 0. Αν Μ2 > 0, τότε πήγαινε στο βήμα 3, αλλιώς πήγαινε στο βήμα 7. Αν ο Μ2 είναι περιττός, τότε θέσε Ρ= Ρ + Μ1. θέσε Μ1 = Μ1 * 2. θέσεμ2 = Μ2 Ο1Υ2. Πήγαινε στο βήμα 2. Τύπωσε το Ρ. 53 Ποια η πρακτική σημασία του πολλαπλασιασμού αλά ρωσικά; Πότε γίνεται χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων; Η πρακτική σημασία του πολλαπλασιασμού αλά ρωσικά είναι η απλότητα στην υλοποίηση του σε σχέση με τον χειρωνακτικό τρόπο πολλαπλασιασμού. Ο πολλαπλασιασμός αλά ρωσικά χρησιμοποιεί πολλαπλασιασμό επί δύο και διαίρεση δια 2. Οι πράξεις αυτές υλοποιούνται ταχύτατα από τα κυκλώματα του υπολογιστή σε αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία. Για το λόγο αυτό χρησιμοποιείται στους υπολογιστές.