Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ Κεφάλαιο 2: Βασικές Έννοιες Αλγορίθμων 2.1 Τι είναι αλγόριθμος 2.3 Περιγραφή και αναπαράσταση αλγορίθμων 2.4 Βασικές συνιστώσες/ εντολές ενός αλγορίθμου
2.1 Τι είναι αλγόριθμος (1/4) Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Ο αλγόριθμος περιγράφει τη λύση ενός προβλήματος με τη μορφή οδηγιών-βημάτων (εντολών) Η έννοια του αλγορίθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής. (π.χ, μια συνταγή, η συναρμολόγηση μιας μηχανής)
2.1 Τι είναι αλγόριθμος (2/4) Κριτήρια Αλγορίθμων: Κάθε αλγόριθμος πρέπει να πληροί τα ακόλουθα κριτήρια: Είσοδος (Input) Έξοδος (Output) Καθοριστικότητα (Definitness) Περατότητα (Finiteness) Αποτελεσματικότητα (Effectiveness)
2.1 Τι είναι αλγόριθμος (3/4) Είσοδος (input): Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Έξοδος (output): Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο. Καθοριστικότητα (definiteness): Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της.
2.1 Τι είναι αλγόριθμος (4/4) Περατότητα (finiteness): Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Αποτελεσματικότητα (effectiveness): Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή (ώστε να μπορεί να εκτελεστεί επακριβώς και σε πεπερασμένο μήκος χρόνου).
2.3 Περιγραφή και αναπαράσταση αλγορίθμων (1/5) Ελεύθερο κείμενο (free text): Ο πιο απλός τρόπος περιγραφής Ανεπεξέργαστος και αδόμητο ς τρόπος περιγραφής αλγορίθμου. Μπορεί να οδηγήσει σε ασάφειες παραβιάζοντας την αποτελεσματικότητα. Διαγραμματικές τεχνικές (diagramming techniques): Γραφική αναπαράσταση του αλγορίθμους (με χρήση σχημάτων, βέλη κτλ) Πιο γνωστή μορφή τα Διαγράμματα Ροής (Flow Charts).
2.3 Περιγραφή και αναπαράσταση αλγορίθμων (2/5) Φυσική Γλώσσα(natural language): Περιγραφή με χρήση κειμένου Επίσης ανεπεξέργαστος και αδόμητο ς τρόπος περιγραφής αλγορίθμου. Μπορεί να οδηγήσει σε ασάφειες παραβιάζοντας την καθοριστικότητα. Κωδικοποίηση (coding): Περιγραφή σε ψευδογλώσσα ή σε κάποια γλώσσα προγραμματισμού.
2.3 Περιγραφή και αναπαράσταση αλγορίθμων (3/5) Διάγραμμα Ροής: αποτελείται από ένα σύνολο γεωμετρικών σχημάτων, όπου το καθένα δηλώνει μία συγκεκριμένη ενέργεια ή λειτουργία. Τα γεωμετρικά σχήματα ενώνονται μεταξύ τους με βέλη, που δηλώνουν τη σειρά εκτέλεσης των ενεργειών αυτών
2.3 Περιγραφή και αναπαράσταση αλγορίθμων (4/5) Έλλειψη: δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου Ρόμβος: δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
2.3 Περιγραφή και αναπαράσταση αλγορίθμων (5/5) Ορθογώνιο: δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων Πλάγιο παραλληλόγραμμο: δηλώνει είσοδο ή έξοδο στοιχείων
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (1/24) Δομή Ακολουθίας: Η πιο απλή αλγοριθμική δομή Οι εντολές ακολουθούν (σειριακά) η μία την άλλη Χρησιμοποιείται για την αντιμετώπιση απλών προβλημάτων Η σειρά των εντολών είναι καθορισμένη (π.χ. συνταγή)
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (2/24) Δομή Ακολουθίας (παράδειγμα): Πρόσθεση αριθμών
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (3/24) Δομή Επιλογής: Χρησιμοποιείται όταν πρέπει να παρθεί μια απόφαση από τον αλγόριθμο (ερώτηση που ξεκινά με «Αν») Περιλαμβάνει τον έλεγχο κάποιας συνθήκης που μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής) Ακολουθεί η απόφαση εκτέλεσης κάποιας ενέργειας με βάση την τιμή της λογικής αυτής συνθήκης.
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (4/24) Δομή Επιλογής (παράδειγμα): Απόλυτη τιμή
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (5/24) Δομή Επιλογής (παράδειγμα): Σύγκριση αριθμών
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (6/24) Δομή Πολλαπλής Επιλογής: Χρησιμοποιείται όταν οι πιθανές επιλογές μιας απόφασης είναι περισσότερες από δύο. Περιλαμβάνει τον έλεγχο διαδοχικών συνθηκών που μπορεί κάθε μία μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής) Ακολουθεί η απόφαση εκτέλεσης μόνο μίας ενέργειας από όλες τις δυνατές.
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (7/24) Δομή Πολλαπλής Επιλογής (παράδειγμα): Ανάθεση γραμμάτων σε αριθμούς
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (8/24) Εμφωλευμένη Δομή Επιλογής: Χρησιμοποιείται όταν η απόφαση από μια δομή επιλογής οδηγεί σε μια νέα δομή επιλογής. Περιλαμβάνει τον έλεγχο διαδοχικών συνθηκών που μπορεί κάθε μία μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής)
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (9/24) Εμφωλευμένη Δομή Επιλογής (παράδειγμα): Χαρακτηρισμός ατόμων
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (10/24) Λογικές Συνθήκες στη δομή επιλογής: Η αποτίμηση των λογικών συνθηκών βασίζεται στην Άλγεβρα Boole (άλγεβρα της λογικής) Υπάρχουν μόνο 2 στοιχεία (Αληθής/Ψευδής, Ναι/Όχι, 0/1) Ορίζονται 3 λογικές πράξεις: ΚΑΙ (σύζευξη), Ή (διάζευξη), ΟΧΙ (άρνηση) Προτεραιότητα λογικών πράξεων: ΟΧΙ ΚΑΙ Ή Οι 3 πράξεις συνδυάζονται για να εκφράσουν πιο πολύπλοκες συνθήκες
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (11/24) Λογικές Συνθήκες στη δομή επιλογής: Πίνακας Αληθείας Λογικών Πράξεων
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (12/24) Δομή Επανάληψης: Χρησιμοποιείται όταν μια ακολουθία εντολών πρέπει να εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό. Η ακολουθία εντολών εκτελείται επαναληπτικά. Η εκτέλεση των εντολών επαναλαμβάνεται : Όσο μια συνθήκη παραμένει αληθής (Όσο…επανάλαβε) Μέχρι μια συνθήκη να γίνει αληθής (Επανάλαβε…μέχρις ότου) Για ένα συγκεκριμένο αριθμό επαναλήψεων (Για…από…μέχρι)
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (13/24) Δομή Επανάληψης: Όσο <συνθήκη> επανάλαβε εκτέλεση των εντολών επαναλαμβάνεται όσο η λογική συνθήκη <συνθήκη> παραμένει αληθής
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (14/24) Δομή Επανάληψης (παράδειγμα): Εκτύπωση αριθμών από 1 έως 100
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (15/24) Δομή Επανάληψης (παράδειγμα): Επαναληπτική είσοδος στοιχείων
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (16/24) Δομή Επανάληψης: Αρχή_επανάληψης … μέχρις_ότου <συνθήκη> Η εκτέλεση των εντολών επαναλαμβάνεται μέχρις ότου η λογική συνθήκη <συνθήκη> γίνει αληθής Αρχή_επανάληψης εντολές Μέχρις_ότου συνθήκη
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (17/24) Δομή Επανάληψης (παράδειγμα): Εκτύπωση θετικών αριθμών
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (18/24) Δομή Επανάληψης: Για <μετρητής> από <αρχική_τιμή> μέχρι <τελική_τιμή> Ο <μετρητής> ξεκινά από την <αρχική_τιμή> και αυξάνεται κατά ένα σε κάθε κύκλο της επανάληψης. Η εκτέλεση των εντολών επαναλαμβάνεται μέχρις ότου ο <μετρητής> λάβει την <τελική_τιμή> Για μετρητής από αρχική_τιμή μέχρι τελική_τιμή εντολές Τέλος_επανάληψης
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (19/24) Δομή Επανάληψης (παράδειγμα): Υπολογισμός αθροίσματος
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (18/24) Δομή Επανάληψης: Για <μετρητής> από <αρχική_τιμή> μέχρι <τελική_τιμή> με βήμα <βήμα> Η λειτουργία και η λογική είναι όπως και στη Για…από…μέχρι. Η διαφορά είναι ότι σε κάθε κύκλο της επανάληψης ο <μετρητής> μεταβάλλεται κατά <βήμα> Το <βήμα> μπορεί να λάβει και αρνητικές τιμές Για μετρητής από αρχική_τιμή μέχρι τελική_τιμή με βήμα εντολές Τέλος_επανάληψης
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (20/24) Δομή Επανάληψης (παράδειγμα): Υπολογισμός αθροίσματος άρτιων από 1 ως 100
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (21/24) Δομή Επανάληψης (παράδειγμα): Πολλαπλασιασμός αλά ρώσικα Είναι στην πραγματικότητα ο τρόπος με τον οποίο εκτελεί ο Η/Υ πολλαπλασιασμό χρησιμοποιώντας 2 βασικές και απλούστερες ενέργειες: Πρόσθεση Ολίσθηση
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (22/24) Δομή Επανάληψης (παράδειγμα): Πολλαπλασιασμός αλά ρώσικα
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (23/24) Δομή Επανάληψης (παράδειγμα): Πολλαπλασιασμός αλά ρώσικα
2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου (24/24) Δομή Επανάληψης (παράδειγμα): Πολλαπλασιασμός αλά ρώσικα
Σημειώσεις Δυαδικός Πολλαπλασιασμός με πρόσθεση και ολίσθηση Οι δυαδικοί αριθμοί έχουν ως ψηφία μόνο το 0 και 1 101101102 = 18210 (0*1 + 1*2 + 1*4 + 0*8 + 1*16 + 1*32 + 0*64 +1*128) Στο δυαδικό σύστημα αν ένας αριθμός ολισθήσει: Αριστερά: Πολλαπλασιάζεται επί 2 11012 = 1310 110102= 2610 Δεξιά: Διαιρείται (ακέραια) με το 2 101112 = 2310 10112 = 1110 Για να πολλαπλασιαστεί ένα δυαδικός αριθμός με μια δύναμη του 2 (2, 4, 8, 16 κτλ)αρκεί να ολισθήσει τόσες θέσεις προς τα αριστερά όσος είναι ο εκθέτης της δύναμης 11012 * 1002 (= 13*4 = 13*22 συνεπώς ολίσθηση 2 θέσεις αριστερά) = 1101002 = 5210 (δηλ. όπως όταν στο δεκαδικό πολ/με με το 1010, προσθέτουμε μηδενικά στα δεξιά)
Σημειώσεις Δυαδικός Πολλαπλασιασμός με πρόσθεση και ολίσθηση Κάθε πολλαπλασιασμός στο δυαδικό σύστημα μπορεί να αναλυθεί σε άθροισμα πολλαπλασιασμών με δυνάμεις του 2 1011012 * 100112 = 45*19 = 45 * (1 + 2 + 16) = 45 * (20 + 21 + 24) = 45 * 20 + 45 * 21 + 45 * 24 = 1011012 * 12 + 1011012 * 102 + 1011012 * 100002 = 101012 + 10110102 + 10110100002 = 4510 + 9010 + 72010 = 85510 = 11010101112 Έτσι ο πολλαπλασιασμός υλοποιείται στη CPU μόνο με κυκλώματα πρόσθεσης και ολίσθησης που είναι σχετικά απλά.
Σημειώσεις 101101 (=45) x 10011 (=19) 101101 (=45) 101101 (=90) 000000 Δυαδικός Πολλαπλασιασμός με πρόσθεση και ολίσθηση Στην πραγματικότητα ο δυαδικός πολλαπλασιασμός δε διαφέρει και τόσο από τον δεκαδικό που μαθαίνουμε στο σχολείο. 101101 (=45) x 10011 (=19) 101101 (=45) 101101 (=90) 000000 +101101 (=720) 1101010111 (=855)