AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία *** φιλικά Απόστολος Παρατήρηση1: Στην περίπτωση που ο χώρος Παρατήρηση2: Οι αλγόριθμοι ταξινόμησης στις αναζήτησης περιέχει το αναζητούμενο στοιχείο σε σελίδες 4 και 5, κάνουν αύξουσα ταξινόμηση. περισσότερες από μία θέσεις, ο αλγόριθμος ΣειριακήΑναζήτηση στην υλοποίηση της σελίδας 4 επιστρέφει μόνο την πρώτη θέση.
SOS Θεωρία ΑΕΠΠ 2017 (AeppAcademy.com) Σειρά Εκτέλεσης Εντολών: από πάνω προς τα κάτω και αποκαλείται ακολουθία (sequence). Αλγόριθμος: πεπερασμένη σειρά αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο ενεργειών, που στοχεύουν στην επίλυση ενός προβλήματος. Δημιουργία Προγράμματος: η μετατροπή του αλγορίθμου που επιλύει ένα πρόβλημα σε εντολές προγράμματος. Κριτήρια Αλγορίθμου: είσοδος, έξοδος, καθοριστικότητα, περατότητα, αποτελεσματικότητα. Τρόποι Αναπαράστασης Αλγορίθμου: ελεύθερο κείμενο, διαγραμματικές τεχνικές, φυσική γλώσσα, κωδικοποίηση. Σύμβολα Διαγράμματος Ροής: έλλειψη, ρόμβος, ορθογώνιο, πλάγιο παραλληλόγραμμο. Τα σύμβολα ενώνονται με βέλη. Μεταβλητή: θέση μνήμης του υπολογιστή με συγκεκριμένο όνομα. Χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου. Στη μεταβλητή εκχωρείται μια τιμή που μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου. Σταθερά: προκαθορισμένη τιμή στη μνήμη ενός υπολογιστή. Παραμένει αμετάβλητη σε όλη τη διάρκεια εκτέλεσης του αλγορίθμου. Τύποι Μεταβλητών: ακέραιες, πραγματικές, χαρακτήρες, λογικές. Τελεστές: σύμβολα που χρησιμοποιούνται σε διάφορες πράξεις. Διακρίνονται σε αριθμητικούς, λογικούς και συγκριτικούς. Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση, οι αριθμητικές πράξεις εκτελούνται πρώτες. Ακόμη, οι λογικοί τελεστές έχουν χαμηλότερη ιεραρχία από τους συγκριτικούς. Αριθμητικοί Τελεστές: +, -, *, /, ^ Div, Mod Συναρτήσεις που περιέχονται στη Γλώσσα: ΗΜ(Χ), ΣΥΝ(Χ), ΕΦ(Χ), Τ_Ρ(Χ), ΛΟΓ(Χ), Ε(Χ), Α_Μ(Χ), Α_Τ(Χ). Λογικοί Τελεστές: Και, Ή, Όχι Σύζευξη: Αληθής Και Αληθής = Αληθής, Αληθής Και Ψευδής = Ψευδής, Ψευδής Και Αληθής = Ψευδής, Ψευδής Και Ψευδής = Ψευδής Διάζευξη: Ψευδής Ή Ψευδής = Ψευδής, Ψευδής Ή Αληθής = Αληθής, Αληθής Ή Ψευδής = Αληθής, Αληθής Ή Αληθής = Αληθής. Άρνηση: Όχι Ψευδής = Αληθής, Όχι Αληθής = Ψευδής. Τελεστές Σύγκρισης: <, <=, =, <>, >=, >. Ολίσθηση Αριστερά: Πολλαπλασιασμός Επί Δύο Ολίσθηση Δεξιά: Διαίρεση με Δύο Δομή Δεδομένων: Ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Βασικές Λειτουργίες επί των Δομών Δεδομένων: Προσπέλαση, Εισαγωγή, Διαγραφή, Αναζήτηση, Ταξινόμηση, Αντιγραφή, Συγχώνευση, Διαχωρισμός. Σειριακή Αναζήτηση γίνεται όταν: πίνακας μη ταξινομημένος, πίνακας μικρού μεγέθους, αναζήτηση γίνεται σπάνια. Φυσικές Γλώσσες: χρησιμοποιούνται για την επικοινωνία ανθρώπου ανθρώπου. Τεχνητές Γλώσσες: χρησιμοποιούνται για την επικοινωνία ανθρώπου μηχανής. Γλώσσες Προγραμματισμού: είναι τεχνητές γλώσσες. Προσδιορίζονται από αλφάβητο, λεξιλόγιο, γραμματική, σημασιολογία. Γραμματική: αποτελείται από το τυπικό ή τυπολογικό και το συντακτικό. Διαφορές Φυσικών Τεχνητών Γλωσσών: διαφέρουν στην δυνατότητα εξέλιξης τους. Οι φυσικές γλώσσες εξελίσσονται συνεχώς. Οι τεχνητές γλώσσες χαρακτηρίζονται από στασιμότητα. Ιεραρχική Σχεδίαση Προγράμματος: χρησιμοποιεί την στρατηγική της συνεχούς διαίρεσης του προβλήματος σε υποπροβλήματα. Τμηματικός Προγραμματισμός: υλοποιεί την ιεραρχική σχεδίαση προγράμματος. Κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα του προγράμματος. Δομημένος Προγραμματισμός: μεθοδολογία σύνταξης προγραμμάτων που έχει σκοπό να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων. Στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών (ακολουθίας, επιλογής, επανάληψης). Πλεονεκτήματα Δομημένου Προγραμματισμού: δημιουργία απλούστερων προγραμμάτων, άμεση μεταφορά των αλγορίθμων σε προγράμματα, διευκόλυνση ανάλυσης του προγράμματος σε τμήματα, περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος, διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους, ευκολότερη διόρθωση και συντήρηση.
Μεταγλωττιστής: δέχεται στη είσοδο ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής. Το τελευταίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι τελείων ανεξάρτητο από το αρχικό πρόγραμμα. Ανιχνεύει τα συντακτικά λάθη και εμφανίζει κατάλληλα διαγνωστικά μηνύματα. Μειονέκτημα: Προτού χρησιμοποιηθεί ένα πρόγραμμα, πρέπει να περάσει από τη διαδικασία της μεταγλώττισης και σύνδεσης. Πλεονέκτημα: Η εκτέλεση του προγράμματος είναι πιο γρήγορη από εκείνη του ισοδύναμου εκτελέσιμου προγράμματος που παράγει ο διερμηνευτής. Διερμηνευτής: διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μια εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής. Ανιχνεύει τα συντακτικά λάθη και εμφανίζει κατάλληλα διαγνωστικά μηνύματα. Πλεονέκτημα: Άμεση εκτέλεση προγράμματος. Μειονέκτημα: Η εκτέλεση του προγράμματος είναι πιο αργή από εκείνη του ισοδύναμου εκτελέσιμου προγράμματος που παράγει ο μεταγλωττιστής. Συντάκτης: μικρός επεξεργαστής κειμένου με δυνατότητες που διευκολύνουν τη γρήγορη γραφή των εντολών του προγράμματος. Εκχώρηση Τιμής σε Μεταβλητή: γίνεται είτε με εντολή του προγράμματος είτε με εισαγωγή τιμών από το πληκτρολόγιο κατά τη διάρκεια εκτέλεσης του προγράμματος. Έλεγχος Δεδομένων: γίνεται κυρίως με χρήση της εντολής Αρχή_Επανάληψης.. Μέχρις_Ότου. Είναι δυνατή όμως και η χρήση της εντολής Όσο.. Επανάλαβε. Πίνακας: ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Χρήση Πινάκων: οι νέοι προγραμματιστές έχουν την τάση να χρησιμοποιούν πίνακες χωρίς πρώτα να εξετάζουν αν πραγματικά ο πίνακας είναι απαραίτητος στο πρόγραμμα τους. Πρέπει να δοθεί βάρος στον έλεγχο της αναγκαιότητας χρήσης των πινάκων. Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη μέχρι το τέλος της εκτέλεσης, τότε η χρήση των πινάκων είναι απαραίτητη. Μειονεκτήματα Χρήσης Πινάκων: 1.Απαίτηση μνήμης. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος (συνήθως πολλές) θέσεις μνήμης. 2. Περιορίζονται οι δυνατότητες του προγράμματος επειδή είναι οι πίνακες είναι στατικές δομές. Τυπικές Λειτουργίες σε Πίνακες: υπολογισμός αθροισμάτων στοιχείων του πίνακα, εύρεση μέγιστου ή ελάχιστου στοιχείου, ταξινόμηση, αναζήτηση στοιχείου, συγχώνευση δύο πινάκων. Χαρακτηριστικά Υποπρογραμμάτων: μία είσοδος και μια έξοδος, ανεξαρτησία από άλλα υποπρογράμματα, μικρό μέγεθος. Πλεονεκτήματα Χρήσης Υποπρογραμμάτων: διευκολύνεται η ανάπτυξη του αλγορίθμου. Διευκολύνεται η κατανόηση και η διόρθωση του προγράμματος. Απαιτείται λιγότερος χρόνος στη συγγραφή του προγράμματος. Επεκτείνονται οι δυνατότητες των γλωσσών προγραμματισμού. Παράμετρος: μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο. Συνάρτηση: τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μια τιμή με το όνομα της. Διαδικασία: τύπος υποπρογράμματος που μπορεί να εκτελέσει όλες τις λειτουργίες ενός προγράμματος. Πραγματικές Παράμετροι: μεταβλητές του κυρίως προγράμματος. Χρησιμοποιούνται για την κλήση του υποπρογράμματος. Τυπικές Παράμετροι: μεταβλητές του υποπρογράμματος. Λέγονται και dummy parameters γιατί δεν έχουν άλλο ρόλο από το να δέχονται τις πραγματικές παραμέτρους. Εμβέλεια μεταβλητής: το τμήμα του προγράμματος στο οποίο είναι γνωστή η συγκεκριμένη μεταβλητή.
1. A Βασικοί Αλγόριθμοι ναζήτηση τιμής Key σε π ίνακα Π[ Ν] Αλγόριθμος ΣειριακήΑναζήτηση Δεδομένα // Π, key // i 1 θέση 0 βρέθηκε Ψευδής Όσο i <= Ν Και Όχι( βρέθηκε ) Επανάλαβε Αν Π[i] = key Τότε βρέθηκε θέση i i i + 1 Αληθής Αποτελέσματα // θέση, βρέθηκε // Τέλος ΣειριακήΑναζήτηση 2. Αναζήτηση τιμής Key σε ταξινομημένο π ίνακα Π[ Ν] Αλγόριθμος ΔυαδικήΑναζήτηση Δεδομένα // Π, key // αριστερά 1 δεξιά Ν βρέθηκε Ψευδής θέση 0 Όσο αριστερά <= δεξιά Και Όχι( βρέθηκε ) Επανάλαβε μέσο ( αριστερά + δεξιά ) Div 2 Αν Π[μέσο] = key Τότε βρέθηκε Αληθής θέση μέσο _Αν Π[μέσο] > Key Τότε δεξιά μέσο 1 αριστερά μέσο + 1 Αποτελέσματα // θέση, βρέθηκε // Τέλος ΔυαδικήΑναζήτηση 3. Ταξινόμηση Πίνακα Α[ Ν] Αλγόριθμος Φυσαλίδα Για i Από 1 Μέχρι Ν - 1 Για j Από 1 Μέχρι Ν i Αν Π[j] > Π[j + 1] Τότε Αντιμετάθεσε( Π[j], Π[j + 1] ) Τέλος Φυσαλίδα 4. Βελτιωμένη Ταξινόμηση Πίνακα Α[ Ν] Αλγόριθμος ΦυσαλίδαΒελτιωμένη Αρχή_Επανάληψης έγινεανταλλαγή Ψευδής Για j Από 1 Μέχρι Ν i Αν Π[j] > Π[j + 1] Τότε Αντιμετάθεσε( Π[j], Π[j + 1] ) έγινεανταλλαγή Αληθής Mέχρις_Ότου έγινεανταλλαγή = Ψευδής Τέλος ΦυσαλίδαΒελτιωμένη 5. Συγχώνευση Ταξινομημένων Πινάκων Χ[ Ν], Υ[ Μ] σε π ίνακα Ζ[ Ν + Μ] Αλγόριθμος ΣυγχώνευσηΠινάκων Δεδομένα // X, Y // i 1 j 1 k 1 Όσο i <= N Και j <= M Επανάλαβε Αν X[i] < Y[j] Τότε Z[k] X[i] i i + 1 Z[k] Y[j] j j + 1 k k + 1 Αν i > n Τότε Για t Από j Μέχρι M Z[k + t j] Y[t] Για t Από i Μέχρι N Z[k + t i] X[t]
Αποτελέσματα // Z // Τέλος ΣυγχώνευσηΠινάκων 6. Ταξινόμηση Πίνακα Α[ Ν] με επιλογή Αλγόριθμος ΤαξινόμησηΕπιλογή θέσημin 0 Για j Από 1 Μέχρι Ν 1 θέσημin j Για i Από j + 1 Μέχρι Ν Αν Α[i] < Α[θέσηΜin] Τότε θέσημin i Αν θέσημin < > j Τότε Αντιμετάθεσε (Α[j], Α[θέσηΜin]) Τέλος ΤαξινόμησηΕπιλογή 7. Υπ ολογισμός Μέσου Όρου κατά Γραμμή σε π ίνακα Α[ Ν, Μ] Αλγόριθμος ΜέσοςΌροςΚατάΓραμμή Για i Από 1 Μέχρι Ν άθροισμα 0 Για j Από 1 Μέχρι Μ άθροισμα άθροισμα + Α[i, j] μέσοςόρος άθροισμα / Μ Γράψε μ. όρος γραμμής, i, :, μέσοςόρος Αποτελέσματα // μέσοςόρος // Τέλος ΜέσοςΌροςΚατάΓραμμή 8. Υπ ολογισμός Μέσου Όρου κατά Στήλη σε π ίνακα Α[ Ν, Μ] Αλγόριθμος ΜέσοςΌροςΚατάΣτήλη Για j Από 1 Μέχρι M άθροισμα 0 Για i Από 1 Μέχρι N άθροισμα άθροισμα + Α[i, j] μέσοςόρος άθροισμα / N Γράψε μ. όρος στήλης, j, :, μέσοςόρος Αποτελέσματα // μέσοςόρος // Τέλος ΜέσοςΌροςΚατάΣτήλη 9. Εύρεση Ελάχιστου Γραμμής σε πίνακα Α[ Ν, Μ] Αλγόριθμος ΕλάχιστοΓραμμής Για i Από 1 Μέχρι N ελάχιστο Α[i, 1] Για j Από 2 Μέχρι M Αν Α[i, j] < ελάχιστο Τότε ελάχιστο A[i, j] Γράψε ελάχιστο γραμμής, i, :, ελάχιστο Αποτελέσματα // ελάχιστο // Τέλος ΕλάχιστοΓραμμής 10. Εύρεση Μέγιστου Στήλης σε πίνακα Α[ Ν, Μ] Αλγόριθμος ΜέγιστοΣτήλης Για j Από 1 Μέχρι M μέγιστο Α[1, j] Για i Από 2 Μέχρι N Αν Α[i, j] > μέγιστο Τότε μέγιστο A[i, j] Γράψε μέγιστο στήλης, j, :, μέγιστο Αποτελέσματα // μέγιστο // Τέλος ΜέγιστοΣτήλης