Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων
2.1 Τι είναι αλγόριθμος ✗ Ο όρος προέρχεται από μετάφραση του βιβλίο του Αμπού Αμπντουλάχ Μοχάμεντ Ιμπν Μούζα Αλ Χουαρίζμι Περσικά/Αραβικά: أبو عبد الله محمد بن موسى الخوارزمي με τίτλο Κιταμπ Αλ-γκιαμπρ ✗ Λόγω της προέλευσης από την Άλγεβρα σήμαινε κάτι σαν “συστηματική διαδικασία αριθμητικών χειρισμών” Παράδειγμα: Αλγόριθμος Ευκλείδη για την εύρεση Μ.Κ.Δ Με δεδομένους δύο φυσικούς αριθμούς α και β με α>β (αν ισχύει α<β άλλαζουμε τη σειρά τους): αν ο β είναι 0 τότε ο α είναι ο ΜΚΔ αν ο β δεν είναι 0 τότε επαναλαμβάνουμε τη διαδικασία χρησιμοποιώντας τον β και το υπόλοιπο της διαίρεσης α/β
2.1 Τι είναι αλγόριθμος ✗ Με την εξέλιξη της Θεωρίας Αλγορίθμων και της επιστήμης της Πληροφορικής χρησιμοποιείται για να δηλώσει μεθόδους που εφαρμόζονται για την επίλυση προβλημάτων
Κριτήρια αλγορίθμου ✗ Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. ✗ Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο. ✗ Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. ✗ Περατότητα (finiteness). Ο αλγόριθμος πρέπει να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. ✗ Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή, ώστε να μπορεί να εκτελεστεί.
Κριτήρια αλγορίθμου ✗ Η έννοια του αλγόριθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής. Η θεώρηση μίας σύνθετης εργασίας με διακριτά βήματα που εκτελούνται διαδοχικά, είναι ένας πολύ χρήσιμος και πρακτικός τρόπος σκέψης για την επίλυση πολλών (αν όχι όλων) προβλημάτων. ✗ Πολλές φορές η παραβίαση των κριτηρίων του αλγορίθμου δεν είναι προφανής. Περισσότερα παραδείγματα αργότερα, όταν κωδικοποιήσουμε αλγορίθμους
2.3 Περιγραφή και αναπαράσταση αλγορίθμων. ✗ Ελεύθερο κείμενο (free text). Ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης. Μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση παραβιάζοντας το κριτήριο της αποτελεσματικότητας. ✗ Διαγραμματικές τεχνικές (diagramming techniques). Γραφικός τρόπος παρουσίασης του αλγορίθμου με διάγραμμα ροής (flow chart) ✗ Με φυσική γλώσσα (natural language) κατά βήματα. Μπορεί να παραβιασθεί το κριτήριο της καθοριστικότητας. ✗ Με κωδικοποίηση (coding). Με πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο
Πριν προχωρήσουμε... ✗ Οι αλγόριθμοι που θα κωδικοποιήσουμε πρέπει να εκτελούνται σε μια υπολογιστική μηχανή. Οι σύγχρονοι Η/Υ σχεδιάζονται με βάση την αρχιτεκτονική φον Νόιμαν, που διατυπώθηκε την δεκαετία του 40. ✗ Τα δεδομένα και οι εντολές των εκτελούμενων προγραμμάτων αποθηκεύονται σε μια μοναδική μνήμη εγγραφής-ανάγνωσης. ✗ Τα περιεχόμενα της μνήμης αυτής μπορούν να διευθυνσιοδοτηθούν κατά κελί, χωρίς να μας ενδιαφέρει ο τύπος των δεδομένων που περιέχεται εκεί. ✗ Η εκτέλεση των εντολών του προγράμματος πραγματοποιείται σειριακά (εκτός και αν υπάρχει ρητή διακλάδωση), από μια εντολή στην επόμενη.
Πριν προχωρήσουμε... ✗ Οι αλγόριθμοι που θα αναπτύξουμε θα κωδικοποιηθούν με την χρήση μιας Ψευδογλώσσας, οι εντολές της οποίας είναι αποτελεσματικές, ώστε να μπορούν να εκτελεστούν από την μηχανή φον Νόιμαν ✗ Εκτός από την Ψευδογλώσσα, θα χρησιμοποιήσουμε και την γλώσσα προγραμματισμού ΓΛΩΣΣΑ, ώστε οι κωδικοποιημένοι αλγόριθμοι να εκτελούνται στον υπολογιστή. ✗ Οι δομές της Ψευδογλώσσας και της ΓΛΩΣΣΑΣ είναι ίδιες και χρησιμοποιούνται σε όλες τις γλώσσες προγραμματισμού γενικού σκοπού. ✗ Επιπλέον, θα αναπαραστήσουμε αλγορίθμους με διαγράμματα ροής.