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