ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ"

Transcript

1 ΑΕΠΠ ΚΑΤΕΥΘΥΝΣΗΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΚΑΤΕΥΘΥΝΣΗ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ) ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ (ΚΑΘΗΓΗΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ) vczioulas@yahoo.com url : ΣΧΟΛΙΚΟ ΕΤΟΣ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 1

2 ΑΕΠΠ ΚΑΤΕΥΘΥΝΣΗΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 2 Βασικές Έννοιες Αλγορίθμων... 3 Κεφάλαιο 3 Δομές Δεδομένων & Αλγόριθμοι Κεφάλαιο 5 Ανάλυση Αλγορίθμων Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό Κεφάλαιο 7 Βασικά Στοιχεία Προγραμματισμού Κεφάλαιο 8 Επιλογή & Επανάληψη Κεφάλαιο 9 Πίνακες Κεφάλαιο 10 Υποπρογράμματα ΠΑΡΑΡΤΗΜΑΤΑ Παράρτημα Α Τυπολόγιο Ψευδογλώσσας Παράρτημα Β Τυπολόγιο Γλώσσας Παράρτημα Γ Πίνακας ASCII Παράρτημα Δ Μοντέλα Επεξεργασίας Πινάκων Παράρτημα Δ Λειτουργίες σε Στοίβα & Ουρά Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 2

3 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦ.2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΑΛΓΟΡΙΘΜΟΣ Είναι έννοια που αφορά σε μεθόδους επίλυσης προβλημάτων και η ηλικία της αριθμεί χιλιάδες χρόνια. Οι ρίζες της κρατούν από την αρχαιότητα με γνωστότερους αλγορίθμους αυτούς του Ευκλείδη (για τον υπολογισμό του μέγιστου κοινού διαιρέτη δύο αριθμών) και του Ερατοσθένη (κόσκινο Ερατοσθένη για την εύρεση των πρώτων αριθμών από 1 έως N). Η λέξη προέρχεται από μια μελέτη του πέρση μαθηματικού Abu Ja far Mohammed ibn Musa al Khwarizmi (825 π.χ) η οποία αποτελεί την πρώτη πλήρη πραγματεία άλγεβρας. Αλγόριθμος είναι μια πεπερασμένη ακολουθία βημάτων ή ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο μήκος χρόνου, με σκοπό την επίλυση ενός προβλήματος. Βασική ορολογία στο πεδίο των αλγορίθμων αποτελούν οι παρακάτω έννοιες: Εντολή: Είναι καθένα από τα αριθμημένα βήματα (ενέργειες) του αλγορίθμου. Εκτελεστής: Είναι αυτός που πρόκειται να εκτελέσει τις κατανοητές σε αυτόν εντολές του αλγορίθμου (υπολογιστής ή άνθρωπος). Πρόγραμμα: Είναι ένας αλγόριθμος εκφρασμένος κατά τέτοιο τρόπο ώστε να γίνει κατανοητός και εκτελέσιμος από τον υπολογιστή. Ο αλγόριθμος δεν συνδέεται αποκλειστικά με προβλήματα πληροφορικής, η μαθηματικά και άλλα επιστημονικά προβλήματα. Μπορεί να αποτελεί εργαλείο και για την επίλυση κοινών καθημερινών προβλημάτων. Παραδείγματα καθημερινών αλγορίθμων Η σειρά εκτέλεσης των βημάτων δεν είναι πάντα υποχρεωτική για την επίλυση ενός προβλήματος. Δημιουργία Γεύματος Συγκέντρωσε τα υλικά Προετοίμασε τα σκεύη Παρασκεύασε το φαγητό Ετοίμασε τη σαλάτα Στρώσε το τραπέζι Γευμάτισε αυτό που προετοίμασες Καθάρισε το τραπέζι Πλύνε πιάτα και κουζινικά Ψήσιμο καφέ Βάλε νερό στο μπρίκι Δώσε ποσότητα καφέ Δώσε ποσότητα ζάχαρης Βάλε το μπρίκι στο μάτι Άναψε το μάτι της κουζίνας Ανακάτεψε μέχρι να φουσκώσει Βάλε το καφέ στο φλιτζάνι Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 3

4 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΡΙΤΗΡΙΑ ΠΛΗΡΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΥ Ένας αλγόριθμος χαρακτηρίζεται πλήρης όταν ικανοποιεί τα παρακάτω κριτήρια: ΕΙΣΟΔΟΣ (input) Ένας αλγόριθμος δέχεται καμία, μία ή πολλές τιμές δεδομένων που του δίνονται ως είσοδοι. Η περίπτωση που έχουμε μηδέν δεδομένα είναι όταν: τα παράγει ο ίδιος ο αλγόριθμος (συναρτήσεις παραγωγής τυχαίων αριθμών για δημιουργία ή επεξεργασία πρωτογενών τιμών) αποτελούν γνωστές τιμές από την διατύπωση του προβλήματος. ΕΞΟΔΟΣ (output) Κάθε αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία ή περισσότερες τιμές εξόδου που είναι τα αποτελέσματά του. Αυτά τα αποτελέσματα απευθύνονται προς το χρήστη ή προς ένα επόμενο αλγόριθμο. ΚΑΘΟΡΙΣΤΙΚΟΤΗΤΑ (definiteness) Κάθε εντολή θα πρέπει να είναι αυστηρά καθορισμένη, δηλαδή να μην αφήνει καμία αμφιβολία για τον τρόπο εκτέλεσής της. π.χ. μια εντολή διαίρεσης θα πρέπει να λαμβάνει υπόψη και την περίπτωση που ο διαιρέτης έχει την τιμή 0. Χ Α*Β (αυστηρά καθορισμένη εντολή) Χ Α/Β (μη καθορισμένη εντολή, αφού το Β μπορεί να είναι 0) Χ Α/(Β 3) (μη καθορισμένη εντολή αφού το Β μπορεί να είναι 3) Χ Τ_Ρ(Α) (μη καθορισμένη εντολή, αφού το Α μπορεί να είναι < 0) ΠΕΡΑΤΟΤΗΤΑ (finiteness) Ο αλγόριθμος θα πρέπει να επιλύει το πρόβλημα με την εκτέλεση πεπερασμένου αριθμού εντολών σε πεπερασμένο χρόνο. Μια διαδικασία που δεν τελειώνει μετά από πεπερασμένο αριθμό βημάτων ονομάζεται «υπολογιστική διαδικασία» και δεν αποτελεί αλγόριθμο. ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ (effectiveness) Κάθε εντολή του αλγορίθμου πρέπει να είναι απλή, δηλαδή δεν αρκεί να έχει ορισθεί αλλά να είναι και εκτελέσιμη. π.χ. η εκχώρηση πραγματικής τιμής σε ακέραια μεταβλητή δεν αποτελεί μια αποτελεσματική εντολή. Χ A + Hello Z 5 > 4 (αναποτελεσματική εντολή, ανεπίτρεπτη αριθμητική έκφραση) (αναποτελεσματική εντολή, ανεπίτρεπτη λογική έκφραση) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 4

5 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΜΕΘΟΔΟΙ ΑΝΑΠΑΡΑΣΤΑΣΗΣ ΑΛΓΟΡΙΘΜΩΝ Ένας αλγόριθμος μπορεί να αναπαρασταθεί με τέσσερις τρόπους παρουσίασης : ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ (free text) Είναι ο πιο αδόμητος και ανεπεξέργαστος τρόπος παρουσίασης, όπου ο αλγόριθμος εκφράζεται χρησιμοποιώντας απλή ελληνική γλώσσα. Με το ελεύθερο κείμενο υπάρχει ο κίνδυνος να παραβιασθεί το κριτήριο της αποτελεσματικότητας. ΦΥΣΙΚΗ ΓΛΩΣΣΑ ΜΕ ΒΗΜΑΤΑ (natural language) Ο αλγόριθμος είναι εκφρασμένος σε ελληνική γλώσσα, όπου οι προτάσεις είναι χωρισμένες σε παραγράφους και τα βήματα είναι αριθμημένα. Εδώ υπάρχει ο κίνδυνος να παραβιαστεί το κριτήριο της καθοριστικότητας. ΚΩΔΙΚΟΠΟΙΗΣΗ (coding) Χρήση ενός προγράμματος (εκφρασμένου σε ψευδογλώσσα ή κάποια γλώσσα προγραμματισμού) που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο. ΔΙΑΓΡΑΜΜΑΤΙΚΕΣ ΤΕΧΝΙΚΕΣ (diagramming techniques) Η πιο γνωστή τεχνική είναι τα Διαγράμματα Ροής, τα οποία και αποτελούν έναν γραφικό τρόπο παρουσίασης του αλγορίθμου, σύμφωνα με τον οποίο τα διάφορα βήματα του αλγορίθμου παριστάνονται με ειδικά γεωμετρικά σχήματα που παρουσιάζονται παρακάτω : Η έλλειψη δηλώνει την αρχή και το τέλος του αλγορίθμου. Το παραλληλόγραμμο δηλώνει την είσοδο ή την έξοδο στοιχείων. Το ορθογώνιο δηλώνει την εκτέλεση μίας ή περισσοτέρων πράξεων. Ο ρόμβος δηλώνει μια συνθήκη που επιδέχεται απάντηση Αληθής ή Ψευδής. Τα Δ.Ρ.Δ είναι η πιο παλιά διαγραμματική τεχνική αναπαράστασης αλγορίθμου που ωστόσο δεν αποτελεί την καλύτερη λύση. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 5

6 ΠΑΡΑΔΕΙΓΜΑ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΟΣ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Να δοθεί αλγόριθμος που διαβάζει το γραπτό και προφορικό βαθμό ενός μαθητή και ελέγχει αν προβιβάζεται στην επόμενη τάξη ή όχι. Ο μαθητής προβιβάζεται, όταν ο μέσος όρος προφορικού και γραπτού βαθμού είναι μεγαλύτερος του 9.5. ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ Πάρε τον γραπτό και προφορικό βαθμό του μαθητή. Πρόσθεσε τους δύο βαθμούς και διαίρεσε το άθροισμα με το 2. Αν το αποτέλεσμα είναι μεγαλύτερο από το 9.5, τότε ο μαθητής περνάει την τάξη, διαφορετικά δεν την περνάει ΦΥΣΙΚΗ ΓΛΩΣΣΑ ΜΕ ΒΗΜΑΤΑ Βήμα 1 Διάβασε το προφορικό και το γραπτό βαθμό Βήμα 2 Θέσε άθροισμα = προφορικός + γραπτός Βήμα 3 Θέσε ΜΟ = άθροισμα / 2 Βήμα 4 Αν ΜΟ > 9.5 τότε πήγαινε στο βήμα 7 Βήμα 5 Εμφάνισε το μήνυμα «δεν περνάει» Βήμα 6 Πήγαινε στο βήμα 8 Βήμα 7 Εμφάνισε το μήνυμα «Περνάει» Βήμα 8 Τέλος αλγορίθμου ΚΩΔΙΚΟΠΟΙΗΣΗ Αλγόριθμος Μαθητής Διάβασε Γραπτός, Προφορικός Άθροισμα Γραπτός + Προφορικός ΜΟ Άθροισμα / 2 Αν ΜΟ > 9.5 τότε Εμφάνισε Περνάει Αλλιώς Εμφάνισε Δεν Περνάει Τέλος_αν Τέλος Μαθητής ΔΙΑΓΡΑΜΜΑΤΙΚΕΣ ΤΕΧΝΙΚΕΣ (ΔΡΔ) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 6

7 ΣΤΟΙΧΕΙΑ ΑΛΓΟΡΙΘΜΟΥ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Ένας αλγόριθμος διατυπωμένος σε ψευδογλώσσα αρχίζει πάντα με τη λέξη «Αλγόριθμος» ακολουθούμενη από το όνομα του αλγορίθμου και τελειώνει με την λέξη «Τέλος» ακολουθούμενη πάλι από το ίδιο όνομα. Μια εκτελεστέα εντολή εκτελεί μια συγκεκριμένη λειτουργία, ενώ μια δηλωτική εντολή δηλώνει και δεν εκτελεί κάποια ενέργεια. Δηλωτικές εντολές είναι οι: Αλγόριθμος, Τέλος, Δεδομένα // //, Αποτελέσματα // //. Εκτελεστέες εντολές είναι οι: Εμφάνισε, Εκτύπωσε, Διάβασε, εντολές εκχώρησης. ΤΕΛΕΣΤΕΟΙ Είναι οντότητες του αλγορίθμου που διακρίνονται σε σταθερές και μεταβλητές. ΣΤΑΘΕΡΕΣ Γενική μορφή αλγορίθμου Αλγόριθμος Όνομα Δεδομένα // // εντολή 1 εντολή 2... εντολή Ν Αποτελέσματα // // Τέλος Όνομα δηλωτικές εντολές εκτελεστέες εντολές δηλωτικές εντολές Οι σταθερές (constants) είναι προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια εκτέλεσης του αλγορίθμου. Οι σταθερές τιμές μέσα σε ένα αλγόριθμο μπορεί να είναι κυριολεκτικές υπό μορφή απλής τιμής (π.χ. 24, 3.14, Μαρία, Αληθής) ή συμβολικές υπό μορφή αναγνωριστικών ονομάτων. ώρες 24 π 3,14 όνομα Maria βρέθηκε Αληθής ΜΕΤΑΒΛΗΤΕΣ Οι μεταβλητές (variables) είναι γλωσσικά αντικείμενα που χρησιμοποιούνται για να παραστήσουν στοιχεία δεδομένων. Η διαφορά τους από τις σταθερές είναι ότι δέχονται μια αρχική τιμή η οποία επιτρέπεται και να αλλάξει κατά τη διάρκεια εκτέλεσης του αλγορίθμου. x 4 y 2.5 μάθημα ΑΕΠΠ x x * y μάθημα ΑΟΘ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 7

8 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Όλα τα δεδομένα που χειρίζεται ο υπολογιστής δεν είναι ίδια και για να μπορέσει να τα επεξεργαστεί, ομαδοποιούνται σε κατηγορίες. Κάθε κατηγορία δεδομένων ονομάζεται τύπος δεδομένων. Οι κυριότεροι τύποι δεδομένων της ψευδογλώσσας είναι: Αριθμητικός - Ακέραιος (π.χ. 10, 25, 0, -30, 17, -41) Αριθμητικός - Πραγματικός (π.χ. 2.5, -6.8, 3.3, 0.4, -1.0) Αλφαριθμητικός (π.χ. Mary30, 10, Hello World!! ) Λογικός (π.χ. Αληθής, Ψευδής ) Στις αριθμητικές τιμές περιλαμβάνονται όλοι οι ακέραιοι και πραγματικοί αριθμοί και για να δημιουργηθούν χρησιμοποιούνται οι χαρακτήρες + και καθώς και το κόμμα (,) ως δεκαδικό σημείο. Οι αλφαριθμητικές τιμές αποτελούνται από συμβολοσειρές (strings) μέσα σε διπλά εισαγωγικά που περιέχουν γράμματα, ψηφία ή σημεία στίξης. Οι λογικές τιμές, σε αντίθεση με τους άλλους δύο τύπους, είναι μόνο δύο, Αληθής και Ψευδής. Για παράδειγμα, η αριθμητική τιμή 10 δεν έχει καμία σχέση με την αλφαριθμητική τιμή "10" που είναι μία συμβολοσειρά αποτελούμενη από τα ψηφία 1 και 0. X 10 Y "10" Z X + 2 Z Y + 2 (επιτρεπτή εντολή) (λάθος, μη αποτελεσματική εντολή) ΚΑΝΟΝΕΣ ΟΝΟΜΑΤΩΝ Τα αναγνωριστικά (identifiers) που επιλέγουμε για το όνομα ενός αλγορίθμου, όπως και για τα συμβολικά ονόματα των σταθερών και μεταβλητών του, πρέπει να πληρούν τους εξής περιορισμούς: Αποτελούνται μόνο από επιτρεπτά σύμβολα γράμματα ελληνικά (Α..Ω, α..ω) ή λατινικά (A..Z, a..z) ψηφία (0..9) χαρακτήρας _ (κάτω παύλα, underscore) Πρέπει υποχρεωτικά να αρχίζουν με γράμμα Δεν αποτελούν δεσμευμένες λέξεις της ψευδογλώσσας Δεν περιέχουν κενά ή άλλα μη αποδεκτά σύμβολα Προτείνεται να χρησιμοποιούνται ονόματα μεταβλητών και σταθερών τέτοια που να παραπέμπουν στο περιεχόμενο Παραδείγματα εσφαλμένων ονομάτων : 100Α, Κόστος$, Διάβασε, Μέση Τιμή Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 8

9 ΔΕΣΜΕΥΜΕΝΕΣ ΛΕΞΕΙΣ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Οι δεσμευμένες λέξεις έχουν διπλή χρησιμότητα μέσα σε έναν αλγόριθμο: Κάνουν πιο ομοιόμορφη τη γλώσσα του κώδικα (π.χ. Αλγόριθμος, Τέλος, Δεδομένα, Αποτελέσματα) Περιγράφουν τις εντολές της ψευδογλώσσας (π.χ. Διάβασε, Εμφάνισε, Εκτύπωσε, Αντιμετάθεσε κλπ.). ΤΕΛΕΣΤΕΣ Οι δεσμευμένες λέξεις (reserved words) είναι λέξεις που έχουν αυστηρά προκαθορισμένη σημασία στον αλγόριθμο. Είναι τα σύμβολα που υλοποιούν τις διάφορες πράξεις. Διακρίνονται σε τρία είδη : Αριθμητικοί Συγκριτικοί Λογικοί +, -, *, /, div, mod, ^ =,,,,, τελεστές ψευδογλώσσας =, <>,,, >=, <= τελεστές γλώσσας ΚΑΙ, Ή, ΟΧΙ Οι αριθμητικοί τελεστές (πρόσθεση, αφαίρεση, πολλαπλασιασμός, πραγματική διαίρεση, ακέραιο πηλίκο, ακέραιο υπόλοιπο και ύψωση σε δύναμη) χρησιμοποιούνται στις πράξεις μεταξύ αριθμητικών σταθερών και μεταβλητών. Τελεστής Εξήγηση Παράδειγμα + Πρόσθεση = 19 - Αφαίρεση 5 8 = -3 * Πολλαπλασιασμός 3 * 5 = 15 / Πραγματική διαίρεση 17 / 5 = 3.4 div mod Ακέραιο πηλίκο Ακέραιο υπόλοιπο 17 div 5 = 3 5 div 17 = 0 17 mod 5 = 2 5 mod 17 = 5 ^ Ύψωση σε δύναμη 5^3 = 125 Οι τελεστές div και mod μπορούν να εφαρμοστούν μόνο σε θετικούς ακέραιους αριθμούς. Η πρακτική χρήση του τελεστή mod είναι για να ελεγχθεί αν ένας αριθμός Χ είναι πολλαπλάσιο ενός αριθμού α με την πράξη Χ mod α = 0. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 9

10 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Ο τελεστής div υπολογίζει το ακέραιο πηλίκο μιας διαίρεσης ενώ ο τελεστής mod το ακέραιο υπόλοιπο μιας διαίρεσης π.χ. Οι συγκριτικοί τελεστές χρησιμοποιούνται στις λογικές εκφράσεις για να συγκρίνουν δύο αριθμητικές, αλφαριθμητικές ή λογικές τιμές π.χ. Τελεστής Εξήγηση Παράδειγμα Τιμή > Μεγαλύτερο < Μικρότερο = Ίσο με Μεγαλύτερο ή ίσο Μικρότερο ή ίσο Διάφορο 5 > 2 Γιώργος > Μαρία 34 < 2 Κ < Αλέξανδρος 15 = 30 div 2 Β = Β 20 div 4 10 mod 2 Καλημέρα Καλησπέρα 3 * div 20 Γιάννης Ελένη 42 7 * 6 ΝΙΚΟΣ Νίκος Αληθής Ψευδής Ψευδής Ψευδής Αληθής Αληθής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Αληθής Ένα αλφαριθμητικό δεδομένο μπορεί να περιέχει ένα ή περισσότερους χαρακτήρες. Η σύγκριση μεταξύ αλφαριθμητικών δεδομένων γίνεται βάσει αλφαβητικής σειράς των χαρακτήρων και γενικότερα βασίζεται στη διάταξη των χαρακτήρων βάσει του κώδικα ASCII. Όταν συγκρίνουμε λογικές τιμές, η μόνη σύγκριση που επιτρέπεται να γίνει είναι η περίπτωση του ίσου (=) και του διαφόρου ( ). Αυτό συμβαίνει διότι οι μόνες τιμές που παίρνουν τα λογικά δεδομένα είναι οι λογικές τιμές Αληθής και Ψευδής και άρα δεν έχει νόημα η σύγκριση μεγαλύτερο (>) ή μικρότερο (<) μεταξύ τους. Οι λογικοί τελεστές ΚΑΙ (σύζευξη), Ή (διάζευξη) και ΌΧΙ (άρνηση) χρησιμοποιούνται στις λογικές εκφράσεις για την δημιουργία πιο σύνθετων συνθηκών και έχουν πάντα ως αποτέλεσμα την λογική τιμή Αληθής ή Ψευδής π.χ. Τελεστής Εξήγηση Παράδειγμα Τιμή ΚΑΙ Ή ΟΧΙ Σύζευξη Διάζευξη Άρνηση 5 > 2 ΚΑΙ 5 < 12 Γ < Μ ΚΑΙ Γ > Δ 3 < 20 Ή 3 > 1 Κ = Α Ή Κ = Χ ΟΧΙ(5 > 2) ΟΧΙ( Α > ΑΕΠΠ ) Αληθής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 10

11 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΕΚΦΡΑΣΕΙΣ Είναι προτάσεις που αποτελούνται από τελεστέους (σταθερές και μεταβλητές), τελεστές, συναρτήσεις και παρενθέσεις. Το αποτέλεσμα που προκύπτει από την αποτίμηση της έκφρασης, μπορεί να αποδίδεται σε μία μεταβλητή, ή να συνιστά στην εκτέλεση μιας πράξης. Η τελική τιμή της έκφρασης εξαρτάται από την ιεραρχία των πράξεων και την χρήση των παρενθέσεων. Για να προκύψει η τιμή μιας έκφρασης θα πρέπει να αντικατασταθούν όλες οι μεταβλητές με τις τιμές τους. Για το λόγο αυτό, είναι απαραίτητο όλες οι μεταβλητές σε μία έκφραση να έχουν από πριν κάποια τιμή (να είναι ορισμένες). Οι εκφράσεις χωρίζονται σε δύο κατηγορίες: Αριθμητικές εκφράσεις Υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις και μετά την εκτέλεση των πράξεων παράγουν πάντα μια αριθμητική τιμή. Για τη σύνταξη μιας αριθμητικής έκφρασης χρησιμοποιούμε μεταξύ άλλων αριθμητικές σταθερές, μεταβλητές, συναρτήσεις, αριθμητικούς τελεστές και παρενθέσεις. Λογικές Εκφράσεις ΙΕΡΑΡΧΙΑ ΤΩΝ ΠΡΑΞΕΩΝ ΚΑΝΟΝΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΩΝ 1) Από τα αριστερά προς τα δεξιά 2) Παρενθέσεις ( ) αρχικά οι εσωτερικές 3) Δυνάμεις ( ^ ) 4) Πολλαπλασιασμοί ( * ) Διαιρέσεις ( /, div, mod ) 5) Προσθέσεις ( + ) Αφαιρέσεις ( - ) 6) Συγκρίσεις ( =,,,,, ) 7) Λογικές ( ΟΧΙ, ΚΑΙ, Η ) α + β + γ α^2 + Τ_Ρ(γ) β/(γ-2) Α_Τ(β) (β+2)^(1/2)/3 Είναι εκφράσεις που υλοποιούν συγκρίσεις και δίνουν ως αποτέλεσμα μια λογική τιμή Αληθής ή Ψευδής. Για τη σύνταξη μιας λογικής έκφρασης χρησιμοποιούμε μεταξύ άλλων συγκριτικούς και λογικούς τελεστές, σταθερές, μεταβλητές, παρενθέσεις και αριθμητικές εκφράσεις. x+1 > y-2 όνομα = ΑΕΠΠ x>5 KAI x<10 ΟΧΙ(α>0) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 11

12 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ ΤΙΜΗΣ Η σύνταξη της εντολής εκχώρησης έχει την γενική μορφή: μεταβλητή έκφραση Το σύμβολο διαβάζεται «γίνεται» ή «εκχώρησε» και δεν έχει καμία σχέση με το σύμβολο της ισότητας (=), αφού δεν πρόκειται για εξίσωση. Το σύμβολο του βέλους δείχνει την φορά της εκχώρησης. Η έκφραση που τοποθετείται στα δεξιά του τελεστή εκχώρησης ( ) μπορεί να είναι αριθμητική ή λογική π.χ. Α 5 Χ Α + 3 (αριθμητική έκφραση, Χ = 8) Υ Α > 10 (λογική έκφραση, Υ = Ψευδής) Η σημασιολογία της εντολής είναι ότι υπολογίζεται η τιμή της έκφρασης που βρίσκεται στα δεξιά του συμβόλου και το αποτέλεσμα που βρίσκουμε εκχωρείται στην μεταβλητή που βρίσκεται στα αριστερά του συμβόλου. ΠΑΡΑΤΗΡΗΣΕΙΣ ΓΙΑ ΤΗΝ ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ Στο αριστερό μέρος μιας εντολής εκχώρησης επιτρέπεται να υπάρχει μόνο μία μεταβλητή π.χ. Σωστές εντολές: Λάθος εντολές: Χ Α*Β όνομα Μαρία Α*Β Χ Μαρία όνομα Η ίδια μεταβλητή μπορεί να βρίσκεται και δεξιά και αριστερά του τελεστή εκχώρησης π.χ. Στην εντολή Χ Χ + 2 η μεταβλητή Χ αυξάνεται κατά 2. Στην εντολή Α ΟΧΙ(Α) η μεταβλητή Α αλλάζει λογική τιμή. Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου δεδομένων π.χ. Στην εντολή Χ A div Β Στην εντολή Υ A / Β Στην εντολή Α Αληθής Στην εντολή Z Καλημέρα η μεταβλητή Χ είναι ακεραίου τύπου η μεταβλητή Υ είναι πραγματικού τύπου η μεταβλητή Α είναι λογικού τύπου η μεταβλητή Ζ είναι αλφαριθμητικού τύπου Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 12

13 ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ ΑΛΓΟΡΙΘΜΟΥ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Είσοδος δεδομένων σε έναν αλγόριθμο γίνεται με την εκτελεστέα εντολή Διάβασε που συντάσσεται ως εξής: Διάβασε μεταβλητή 1, μεταβλητή 2,, μεταβλητή Ν Με την εντολή Διάβασε διακόπτεται η ροή εκτέλεσης του αλγορίθμου, μέχρι τη στιγμή που ο χρήστης θα εισάγει (από το πληκτρολόγιο) τόσα δεδομένα όσα χρειάζονται για τις μεταβλητές που βρίσκονται δεξιά της εντολής Διάβασε. Η έξοδος των αποτελεσμάτων γίνεται με την εκτελεστέα εντολή Εμφάνισε (ή την εντολή Εκτύπωσε ή την εντολή Γράψε) που συντάσσεται ως εξής: Εμφάνισε αποτέλεσμα 1, αποτέλεσμα 2,, αποτέλεσμα Ν Το κάθε αποτέλεσμα που εμφανίζεται μπορεί να είναι μεταβλητή, σταθερά, μαθηματική παράσταση ή συμβολοσειρά π.χ. οι παρακάτω εντολές εμφανίζουν τα διπλανά αποτελέσματα στην οθόνη. Α 7 Β 5 Εμφάνισε 10 Εμφάνισε Α =,Α Εμφάνισε Β =,Β Εμφάνισε Α+Β =,Α+Β Εμφάνιση στην 10 Α = 7 Β = 5 Α+Β = 12 Εναλλακτικά της εντολής Διάβασε, τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου με τη δηλωτική εντολή Δεδομένα //... // Εναλλακτικά της εντολής Εμφάνισε (στην οθόνη) ή Εκτύπωσε (στον εκτυπωτή), τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου με τη δηλωτική εντολή Αποτελέσματα //... // Εναλλακτικοί τρόποι εισόδου - εξόδου Αλγόριθμος Αθροισμα Διάβασε Α, Β Σ Α + Β Εμφάνισε Σ Τέλος Αθροισμα Αλγόριθμος Αθροισμα Διάβασε Α, Β Σ Α + Β Αποτελέσματα //Σ// Τέλος Αθροισμα Αλγόριθμος Αθροισμα Δεδομένα // Α, Β // Σ Α + Β Εμφάνισε Σ Τέλος Αθροισμα Αλγόριθμος Αθροισμα Δεδομενα // Α, Β // Σ Α + Β Αποτελέσματα //Σ// Τέλος Αθροισμα Αν στην διατύπωση ενός προβλήματος ζητείται να διαβαστούν τα δεδομένα του ή να εμφανιστούν τα αποτελέσματά του, τότε ακολουθούμε την μέθοδο των εντολών Διάβασε, Εμφάνισε. Διαφορετικά αν η διατύπωση του προβλήματος δεν ζητά κάτι τέτοιο, τότε μπορούν να εφαρμοστούν οι εντολές Δεδομένα// // και Αποτελέσματα// // για τη διαχείριση εισόδου και εξόδου. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 13

14 ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ ΣΥΝΘΗΚΕΣ ΑΠΛΕΣ ΣΥΝΘΗΚΕΣ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Συνθήκη είναι μια λογική έκφραση η οποία μπορεί πάντα να πάρει δύο εναλλακτικές τιμές, Αληθής ή Ψευδής. Μια απλή συνθήκη βασίζεται στη σύγκριση δύο τιμών με χρήση κατάλληλων συγκριτικών τελεστών (=, >, <,,, ). ΣΥΝΘΕΤΕΣ ΣΥΝΘΗΚΕΣ ΑΛΗΘΕΙΣ ΨΕΥΔΕΙΣ 5 > 2-3 > 10 A < F Β > Δ = 10 John john ΑΒΓ = ΑΒC Μπορούμε να δημιουργήσουμε σύνθετες συνθήκες χρησιμοποιώντας τους λογικούς τελεστές ΚΑΙ (σύζευξη), Ή (διάζευξη), ΟΧΙ (άρνηση). Τα αποτελέσματα κάθε πράξης, φαίνονται στον παρακάτω πίνακα αληθείας. Θεωρούμε ότι τα Α, Β είναι λογικές μεταβλητές ή λογικές εκφράσεις (συνθήκες). Α Β Α ΚΑΙ Β Α Η Β ΟΧΙ(Α) Αληθής Αληθής Αληθής Αληθής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Αληθής Αληθής Ψευδής Ψευδής Ψευδής Ψευδής Αληθής ΣΥΖΕΥΞΗ : Το αποτέλεσμα είναι Αληθής όταν και οι δύο συνθήκες είναι Αληθής. Σε κάθε άλλη περίπτωση είναι Ψευδής. ΔΙΑΖΕΥΞΗ : Το αποτέλεσμα είναι Αληθής όταν τουλάχιστον μία από τις δύο συνθήκες είναι Αληθής. Σε διαφορετική περίπτωση είναι Ψευδής. ΑΡΝΗΣΗ : Το αποτέλεσμα είναι Αληθής αν η συνθήκη είναι Ψευδής και Ψευδής αν η συνθήκη είναι Αληθής. α 5 β 7 γ -3 α > 0 και α < 10 α > β ή α < 10 β α και β γ όχι(β > α) γ α και α < β α = β ή α = γ (Αληθής) (Αληθής) (Αληθής) (Ψευδής) (Ψευδής) (Ψευδής) Οι τελεστές ΚΑΙ, Η χρειάζονται δύο τελεστέους (συνθήκες) για να εφαρμοστούν. Αντιθέτως, ο τελεστής ΟΧΙ εφαρμόζεται σε έναν τελεστέο. Παρατήρηση: Τις συνθήκες τις συναντάμε κυρίως μέσα στις δομές επιλογής και επανάληψης ή ακόμα και σε εντολές εκχώρησης (αρκεί η μεταβλητή στην οποία εκχωρείται μια λογική έκφραση, να είναι μία λογική μεταβλητή) π.χ. α 10 ( α ακέραια μεταβλητή με τιμή 10 ) y α > 5 ( y λογική μεταβλητή με τιμή Αληθής ) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 14

15 ΔΟΜΕΣ ΕΝΤΟΛΩΝ ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Στον Δομημένο Προγραμματισμό όλες οι διαδικασίες ακολουθούν τρία βασικά σχήματα δομών εντολών για τη κατασκευή του αλγορίθμου. Αυτές οι δομές εντολών ονομάζονται και αλγοριθμικές δομές ή συνιστώσες και μας επιτρέπουν να λύσουμε το οποιοδήποτε πρόβλημα. Αυτές είναι: ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ Σύμφωνα με την δομή αυτή, που χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών προβλημάτων, οι εντολές του αλγορίθμου εκτελούνται σειριακά (ακολουθιακά), δηλαδή η μία μετά την άλλη. Ο αλγόριθμος ξεκινάει με την επικεφαλίδα, ακολουθεί η είσοδος των δεδομένων, η επεξεργασία τους, η έξοδος των αποτελεσμάτων και τέλευταία η εντολή του τέλους του αλγορίθμου. ΔΟΜΗ ΕΠΙΛΟΓΗΣ Με την δομή αυτή καταργείται η ακολουθιακή ροή εκτέλεσης των εντολών του αλγορίθμου. Αυτό γίνεται βάσει του αποτελέσματος της συνθήκης μιας εντολής επιλογής, που μπορεί να πάρει δύο εναλλακτικές τιμές, (Αληθής ή Ψευδής). Βάσει του αποτελέσματος, μόνο ένα τμήμα της εντολής επιλογής εκτελείται κάθε φορά. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να εφαρμοσθεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι κοινό. Και στη δομή αυτή καταργείται η ακολουθιακή ροή εκτέλεσης των εντολών. Βάσει του αποτελέσματος μιας συνθήκης, επαναλαμβάνεται για κάποιες φορές ένα συγκεκριμένο τμήμα εντολών του αλγορίθμου. Στις εντολές επανάληψης χρειάζεται προσοχή ώστε να μην καταστρατηγηθεί η ιδιότητα της περατότητας του αλγορίθμου (ατελείωτες επαναλήψεις). Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 15

16 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΕΝΤΟΛΕΣ ΔΟΜΗΣ ΕΠΙΛΟΓΗΣ ΑΠΛΗ ΕΠΙΛΟΓΗ Αν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές, διαφορετικά δεν γίνεται τίποτα. Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Αν Συνθήκη τότε εντολή Αν Συνθήκη τότε εντολές Τέλος_αν Διάβασε α Αν α < 0 τότε α α * (-1) Τέλος_αν Εμφάνισε α ΣΥΝΘΕΤΗ ΕΠΙΛΟΓΗ Αν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές 1, διαφορετικά οι εντολές 2. Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Αν Συνθήκη τότε Εντολές 1 Αλλιώς Εντολές 2 Τέλος_αν Διάβασε α Αν α mod 2 = 0 τότε Εμφάνισε άρτιος Αλλιώς Εμφάνισε περιττός Τέλος_αν ΠΟΛΛΑΠΛΗ ΕΠΙΛΟΓΗ Οι συνθήκες ελέγχονται με τη σειρά και η πρώτη που βρεθεί Αληθής εκτελούνται οι εντολές της. Αν καμία δεν βρεθεί Αληθής, τότε εκτελούνται οι εντολες του Αλλιώς (προαιρετικό τμήμα). Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Αν Συνθ 1 τότε Εντολές 1 Αλλιώς_αν Συνθ 2 τότε Εντολές 2 Αλλιώς_αν Συνθ 3 τότε Εντολές 3.. Αλλιώς Εντολές Τέλος_αν Διάβασε χ Αν χ = 1 τότε Εμφάνισε Α Αλλιώς_αν χ = 2 τότε Εμφάνισε Β Αλλιώς_αν χ = 3 τότε Εμφάνισε Γ Αλλιώς Εμφάνισε Λάθος Τέλος_αν Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 16

17 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΕΝΤΟΛΕΣ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ ΟΣΟ ΕΠΑΝΑΛΑΒΕ Όσο η συνθήκη είναι Αληθής, εκτελούνται οι εντολές που βρίσκονται μέσα στο σώμα της εντολής ΟΣΟ. Όταν η συνθήκη γίνει Ψευδής, η εντολή ΟΣΟ τερματίζει την εκτέλεσή της. Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Όσο Συνθήκη επανάλαβε εντολές α 1 Όσο α <= 100 επανάλαβε Εμφάνισε α α α + 1 Τέλος_Επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ Οι εντολές της επανάληψης εκτελούνται τουλάχιστον 1 φορά. Η επαναληπτική τους εκτέλεση συνεχίζεται όσο η συνθήκη είναι Ψευδής. Όταν η συνθήκη γίνει Αληθής, η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ τερματίζει την εκτέλεσή της. Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Αρχή_Επανάληψης εντολές Μέχρις_ότου Συνθήκη α 1 Αρχή_Επανάληψης Εμφάνισε α α α + 1 Μέχρις_Ότου α > 100 ΓΙΑ ΑΠΟ ΜΕΧΡΙ ΜΕ_ΒΗΜΑ Η μεταβλητή παίρνει όλες τις τιμές από το τ1 μέχρι το τ2, μεταβαλλόμενη κάθε φορά κατά β. Ο αριθμός των τιμών που παίρνει κάθε φορά η μεταβλητή προσδιορίζει και το πλήθος των επαναλήψεων εκτέλεσης της εντολής ΓΙΑ. Όταν το βήμα είναι 1, το τμήμα με_βήμα μπορεί να παραλειφθεί Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα Για μετ από τ1 μέχρι τ2 με_βήμα β εντολές Ίδιο με της εντολής Όσο επανάλαβε Για α από 1 μέχρι 100 Εμφάνισε α Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 17

18 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ ΤΩΝ ΕΝΤΟΛΩΝ ΕΠΑΝΑΛΗΨΗΣ Οι εντολές ΟΣΟ και ΜΕΧΡΙΣ_ΟΤΟΥ χρησιμοποιούνται επιβεβλημένα μέσα σε ένα αλγόριθμο, όταν ο αριθμός των επαναλήψεων είναι άγνωστος. Αντιθέτως, όταν ο αριθμός των επαναλήψεων είναι γνωστός, τότε η χρήση της εντολή ΓΙΑ είναι η καλύτερη δυνατή. Η εντολή ΟΣΟ εκτελείται επαναληπτικά όσο η συνθήκη της είναι αληθής. Μόλις η συνθήκη της γίνει ψευδής, σταματά την εκτέλεσή της. Αντιθέτως, η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται επαναληπτικά όσο η συνθήκη της είναι ψευδής. Μόλις η συνθήκη της γίνει αληθής, σταματά η εκτέλεσή της. Η εντολή ΟΣΟ μπορεί να μην εκτελεστεί και καμία φορά, αν την πρώτη φορά που θα ελέγξουμε την συνθήκη της, την βρούμε ψευδή. Αυτό γίνεται γιατί η συνθήκη προηγείται των εντολών. Αντιθέτως, η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ θα εκτελεστεί τουλάχιστον μια φορά, αφού οι εντολές προηγούνται της συνθήκης. Σε μια εντολή επανάληψης, το τμήμα που επαναλαμβάνεται καλείται βρόχος (loop). Όταν ένας αλγόριθμος ξεκινήσει μια επανάληψη και δεν καταφέρει να βγει από αυτή, τότε η άπειρη αυτή ανακύκλωση ονομάζεται ατέρμων βρόχος. ΠΑΡΑΔΕΙΓΜΑ (αντιστοιχίες εντολών επανάληψης) i 1 i 1 Για i από 1 μέχρι 100 με_βήμα 1 Όσο (i 100) επανέλαβε Αρχή_Επανάληψης Εμφάνισε i Εμφάνισε i Εμφάνισε i i i + 1 i i + 1 Μέχρις_ότου (i > 100) Και οι τρεις παραπάνω εντολές κάνουν το ίδιο πράγμα (εμφανίζουν τους αριθμούς από 1 έως 100). Οι δύο πρώτες (ΟΣΟ, ΜΕΧΡΙΣ_ΟΤΟΥ) για να εξασφαλίσουν την περατότητα, προσαυξάνουν τον δείκτη i κατά 1 μέσα σε κάθε επανάληψη, πράγμα που στην τρίτη εντολή (ΓΙΑ) γίνεται αυτόματα από το βήμα. Η ΟΣΟ έχει την συνθήκη στην αρχή και η ΜΕΧΡΙΣ ΟΤΟΥ στο τέλος της επανάληψης. Οι συνθήκες περιέχουν εντελώς αντίθετους συγκριτικούς τελεστές, αλλά όμως κάνουν το ίδιο πράγμα, δηλαδή ελέγχουν τον δείκτη i να μην υπερβεί το πάνω όριο που είναι 100. ΠΑΡΑΔΕΙΓΜΑΤΑ (εντολής ΓΙΑ) Εντολή Φορές - Επαναλήψεις Τιμές δείκτη ι Για ι από 1 μέχρι φορές 1,2,3,...,10 Για ι από 10 μέχρι 1 με_βήμα 1 10 φορές 10,9,8,...,1 Για ι από 0 μέχρι 1 με_βήμα φορές 0.0, 0.1,..., 1.0 Για ι από 5 μέχρι 5 1 φορά 5 Για ι από 5 μέχρι 1 0 φορές --- Για ι από 0 μέχρι φορές 0,1,2,...,10, Για ι από 0 μέχρι 10 με_βήμα 2 6 φορές 0,2,4,6,8,10 Για ι από 1 μέχρι 2 με_βήμα 0 άπειρες φορές 1,1,1,1,. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 18

19 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΠΑΡΑΔΕΙΓΜΑ (μετατροπή εντολής ΓΙΑ σε ΟΣΟ και αντίστροφα) Έστω ότι θέλουμε να εμφανίσουμε όλους τους άρτιους αριθμούς από το 1 έως το 100 Για A από 2 μέχρι 100 με_βήμα 2 Εμφάνισε A i 2 Όσο i <= 100 επανάλαβε Εμφάνισε i i i + 2 ΑΠΑΙΤΟΥΜΕΝΕΣ ΕΝΕΡΓΕΙΕΣ ΓΙΑ ΟΣΟ Αρχικοποίηση μεταβλητής Α από 2 Α 2 Έλεγχος τελικής τιμής μέχρι 100 Α 100 Βήμα προσαύξησης ή μείωσης με_βήμα 2 Α Α + 2 (*) Οι ενέργειες είναι ανάλογες στην περίπτωση που το βήμα είναι αρνητικό ΕΜΦΩΛΕΥΜΕΝΕΣ ΔΟΜΕΣ Είναι σύνθετες δομές εντολών, σύμφωνα με τις οποίες, μέσα στο σώμα μιας δομής εντολών ανοίγει και ολοκληρώνεται μια άλλη δομή εντολών, του ιδίου ή άλλου τύπου. Οι εντολές που ανοίγουν τελευταίες πρέπει να κλείνουν πρώτες π.χ. Παραδείγματα εμφωλευμένων δομών: Αν (Συνθ) τότε Αν (Συνθ) τότε εντολές Αλλιώς εντολές Τέλος_αν Τέλος_αν Για i από 1 μέχρι 10 Όσο (j<20) επανάλαβε εντολές εντολές Αρχή_Επανάληψης Αν (Συνθ) τότε εντολές αλλιώς εντολές Τέλος_αν Μέχρις_Ότου (Συνθ) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 19

20 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΜΦΩΛΕΥΜΕΝΩΝ ΔΟΜΩΝ ΕΝΤΟΛΩΝ ΕΜΦΩΛΕΥΜΕΝΕΣ ΑΝ..ΑΛΛΙΩΣ Αν (Συνθ 1) τότε Εντολές 1 αλλιώς Αν (Συνθ 2) τότε Εντολές 2 αλλιώς Αν (Συνθ 3) τότε Εντολές 3 αλλιώς Εντολές 4 Τέλος_αν Τέλος_αν Τέλος_αν ΕΜΦΩΛΕΥΜΕΝΕΣ ΌΣΟ Όσο (Συνθ 1) επανάλαβε εντολές 1 Όσο (Συνθ 2) επανάλαβε εντολές 2 ΕΜΦΩΛΕΥΜΕΝΕΣ ΜΕΧΡΙΣ_ΟΤΟΥ Αρχή_Επανάληψης εντολές 1 Αρχή_επανάληψης εντολές 2 Μέχρις_ότου (Συνθ 2) Μέχρις_ότου (Συνθ 1) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 20

21 ΣΧΟΛΙΑ (Comments) ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Είναι επεξηγηματικές φράσεις του αλγορίθμου, οι οποίες για να διαχωριστούν από τις λέξεις κλειδιά του αλγορίθμου (δεσμευμένες λέξεις και εντολές), γράφονται αρχίζοντας με τον χαρακτήρα! Δηλαδή ότι ακολουθεί τον χαρακτήρα! μέσα στον αλγόριθμο και μέχρι το τέλος της τρέχουσας γραμμής, θεωρείται ως σχόλιο (επεξηγηματική φράση) και δεν λαμβάνεται υπόψη ως εντολή από τον αλγόριθμο. ΓΕΝΙΚΗ ΔΟΜΗ ΑΛΓΟΡΙΘΜΟΥ Ο σκελετός ενός αλγορίθμου υπό μορφή ψευδογλώσσας έχει ως εξής: Αλγόριθμος Όνομα_Αλγορίθμου Δεδομένα //... // εντολές Αποτελέσματα //... // Τέλος Όνομα_Αλγορίθμου ΟΛΙΣΘΗΣΗ (SHIFT) Μέσα στον υπολογιστή όλα τα δεδομένα (αριθμοί, λέξεις, σύμβολα κλπ) παρουσιάζονται με δυαδικά ψηφία 0 και 1. Ένας αριθμός μπορεί για παράδειγμα να παρασταθεί από 1 byte δηλαδή από 8 bits π.χ Ολίσθηση προς τα αριστερά σημαίνει ότι χάνεται το αριστερότερο ψηφίο της δυαδικής ακολουθίας η οποία και συμπληρώνεται από τα δεξιά με 0. Ολίσθηση προς τα δεξιά σημαίνει ότι χάνεται το δεξιότερο ψηφίο της δυαδικής ακολουθίας η οποία και συμπληρώνεται από τα αριστερά με 0. Η ολίσθηση προς τα αριστερά ισοδυναμεί με πολλαπλασιασμό επί 2 Η ολίσθηση προς τα δεξιά ισοδυναμεί με ακέραια διαίρεση διά 2 ΠΑΡΑΔΕΙΓΜΑ αρχικός αριθμός ολίσθηση προς τα αριστερά ολίσθηση προς τα δεξιά Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 21

22 ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Ο υπολογιστής προκειμένου να εκτελέσει τον πολλαπλασιασμό μεταξύ δύο αριθμών Α και Β, βασίζεται στην πράξη της ολίσθησης υποβάλλοντας τον ένα αριθμό (έστω Α) σε συνεχείς διπλασιασμούς (αριστερή ολίσθηση) και τον άλλο αριθμό (έστω Β) σε συνεχείς ακέραιους υποδιπλασιασμούς (δεξιά ολίσθηση). Ο αλγόριθμος που ακολουθεί ο υπολογιστής για να υπολογίσει το γινόμενο δύο αριθμών, είναι γνωστός ως Πολλαπλασιασμός αλά Ρωσικά. Αλγόριθμος Πολ_αλά_Ρωσικά Δεδομένα // Α, Β // S 0 Όσο Β > 0 επανάλαβε Αν Β mod 2 = 1 τότε S S + Α Τέλος_Αν Α Α * 2 Β B div 2 Αποτελέσματα // S // Τέλος Πολ_αλά_Ρωσικά ΠΑΡΑΔΕΙΓΜΑ : Έστω ότι θέλουμε να υπολογίσουμε το γινόμενο των αριθμών 45 και 19 Θεωρούμε τον αριθμό 45 ως Α και τον αριθμό 19 ως Β (ή αντίστροφα) Διπλασιάζουμε συνεχώς τον αριθμό Α και υποδιπλασιάζουμε ακέραια τον αριθμό Β Η διαδικασία συνεχίζεται μέχρι ο αριθμός Β να γίνει 0 Στην στήλη του Β, όσοι αριθμοί είναι περιττοί προσθέτουμε τα αντίστοιχα Α Το άθροισμα των Α είναι και το τελικό αποτέλεσμα (γινόμενο Α*Β) Α Β Άθροισμα 855 Η μέθοδος αυτή χρησιμοποιείται πρακτικά στα κυκλώματα των υπολογιστών, γιατί υλοποιείται πολύ πιο απλά από τον χειρωνακτικό τρόπο πολλαπλασιασμού. Πιο συγκεκριμένα, απαιτεί πολλαπλασιασμό επί 2 (left shift), διαίρεση διά 2 (right shift) και πρόσθεση. Αντιθέτως, η γνωστή μας διαδικασία πολλαπλασιασμού είναι πιο χρονοβόρα γιατί απαιτεί πολλαπλασιασμό με οποιονδήποτε ακέραιο και πρόσθεση. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 22

23 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΚΕΦ.3 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Τα δεδομένα ενός προβλήματος αποθηκεύονται συστηματικά (και όχι τυχαία) στη κύρια ή στη δευτερεύουσα μνήμη του υπολογιστή υπό μορφή δομών δεδομένων. Δομή Δεδομένων (data structure) είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από μία σειρά λειτουργίες (πράξεις). Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (στοιχείων). Οι πράξεις που γίνονται πάνω στις δομές δεδομένων είναι οι εξής οκτώ : ΠΡΟΣΠΕΛΑΣΗ (Access) Πρόσβαση σε κόμβο για εξέταση ή τροποποίηση του περιεχομένου του ΕΙΣΑΓΩΓΗ (Insertion) Προσθήκη νέου ή νέων κόμβων στην δομή ΔΙΑΓΡΑΦΗ (Deletion) Αφαίρεση κόμβου ή κόμβων από τη δομή Πράξεις που απαγορεύονται στις στατικές δομές (πίνακες) ΑΝΑΖΗΤΗΣΗ (Searching) Προσπέλαση κόμβων με σκοπό να εντοπιστούν αυτοί που πληρούν μια συγκεκριμένη ιδιότητα (π.χ. Σειριακή, Δυαδική Αναζήτηση) ΤΑΞΙΝΟΜΗΣΗ (Sorting) Διάταξη των κόμβων της δομής κατά αύξουσα ή φθίνουσα σειρά του περιεχομένου τους (π.χ. Ταξινόμηση Φυσαλίδα) ΑΝΤΙΓΡΑΦΗ (Copying) Μερικοί ή όλοι οι κόμβοι μιας δομής αντιγράφονται σε μία άλλη δομή ΣΥΓΧΩΝΕΥΣΗ (Merging) Δύο ή περισσότερες δομές συνενώνονται σε μία νέα ενιαία δομή ΔΙΑΧΩΡΙΣΜΟΣ (Separation) Διάσπαση δομής σε δύο ή περισσότερες επιμέρους δομές Παρατηρήσεις: Σπάνια χρησιμοποιούνται και οι οκτώ πράξεις σε κάποια δομή. Κάποια δομή μπορεί να είναι αποδοτικότερη από κάποια άλλη με κριτήριο κάποια λειτουργία, ή λιγότερο αποδοτική για κάποια άλλη λειτουργία. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 23

24 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Ο αλγόριθμος και οι δομές δεδομένων είναι έννοιες που εξαρτώνται άμεσα μεταξύ τους και για το λόγο αυτό, το πρόγραμμα τις βλέπει σαν μια αδιάσπαστη ενότητα. Ο N. Wirth (δημιουργός της γλώσσας Pascal, 1976) συνδέει τους αλγόριθμους και τις δομές δεδομένων μέσα από την παρακάτω εξίσωση (κανόνα): ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ ΔΙΑΚΡΙΣΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ Οι Δομές Δεδομένων διακρίνονται σε δύο βασικές κατηγορίες : τις στατικές δομές (static data structures) και τις δυναμικές δομές (dynamic data structures). ΣΤΑΤΙΚΕΣ (Static) Αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Έχουν σταθερό μέγεθος. Στην πράξη υλοποιούνται με Πίνακες. Το μέγεθος τους καθορίζεται κατά την ώρα του προγραμματισμού, δηλαδή τη στιγμή της μετάφρασης και όχι την στιγμή της εκτέλεσης. ΔΥΝΑΜΙΚΕΣ (Dynamic) Δεν αποθηκεύονται σε διαδοχικές θέσεις μνήμης αλλά σε τυχαίες (δυναμική παραχώρηση της μνήμης). Δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς εισάγονται ή διαγράφονται δεδομένα (εν εξελίξει της εκτέλεσης του προγράμματος). Όλες οι σύγχρονες γλώσσες προγραμματισμού παρέχουν δυναμικές δομές δεδομένων. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 24

25 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Πίνακας (matrix) είναι μια στατική δομή δεδομένων που περιέχει πάντα στοιχεία του ιδίου τύπου (δηλαδή ακέραιες, πραγματικές, χαρακτήρες ή λογικές τιμές). Οι πίνακες χαρακτηρίζονται από την διάσταση τους καθώς και από τον τύπο των στοιχείων που περιέχουν. Έτσι έχουμε μονοδιάστατους, δισδιάστατους, τρισδιάστατους ή πολυδιάστατους πίνακες. Μονοδιάστατοι Έχουν μία διάσταση και σχηματικά έχουν την μορφή μιας γραμμής ή μιας στήλης. Κάθε στοιχείο χαρακτηρίζεται από το όνομα του πίνακα και έναν αριθμό εντός αγκύλης ή παρένθεσης (διατακτικός αριθμός, η δείκτης) που αφορά στην αντίστοιχη θέση του στοιχείου μέσα στον πίνακα π.χ. table [ i ] Δισδιάστατοι Έχουν δύο διαστάσεις και κατά την χρήση τους αναφέρονται πρώτα οι γραμμές (οριζόντιες) και μετά οι στήλες (κάθετες). Κάθε στοιχείο χαρακτηρίζεται από το όνομα του πίνακα και δύο αριθμούς (διατακτικοί αριθμοί ή δείκτες) εντός αγκύλης ή παρένθεσης που ο πρώτος αφορά στην αντίστοιχη γραμμή και ο δεύτερος στην αντίστοιχη στήλη του πίνακα π.χ. table [ i, j ] Ο πίνακας που έχει ίδιο αριθμό γραμμών και στηλών, καλείται τετραγωνικός. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 25

26 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΥΠΟΔΕΙΞΕΙΣ (Προσπέλαση στοιχείων Πίνακα) Όταν θέλουμε να επεξεργαστούμε ένα πίνακα (δηλαδή να τον διαβάσουμε, να τον εμφανίσουμε ή να τον τροποποιήσουμε) πρέπει να κάνουμε την ίδια δουλειά για κάθε ένα από τα στοιχεία του ξεχωριστά. Για την επεξεργασία των στοιχείων ενός πίνακα συνήθως χρησιμοποιούμε την επαναληπτική δομή ΓΙΑ, αφού το πλήθος των στοιχείων που επεξεργαζόμαστε είναι γνωστό. Αν ο πίνακας είναι μονοδιάστατος, τότε για να διατρέξουμε τα στοιχεία του χρειάζεται μία εντολή Για από 1 μέχρι Ν, όπου Ν θα είναι το σύνολο των στοιχείων του πίνακα. Αν ο πίνακας είναι δισδιάστατος, τότε για να διατρέξουμε τα στοιχεία του χρειάζονται δύο εμφωλευμένες εντολές ΓΙΑ, όπου η πρώτη θα είναι Για από 1 μέχρι Μ (πίνακας Μ γραμμών) και η δεύτερη θα είναι Για από 1 μέχρι Ν (πίνακας Ν στηλών) Πιο συγκεκριμένα, η ανάγνωση των στοιχείων των δύο πινάκων της προηγούμενης σελίδας θα γίνει ως εξής: Μονοδιάστατος table 10 θέσεων Για i από 1 μέχρι 10 Διάβασε table[ i ] Δισδιάστατος table 5*6 κατά γραμμές Για i από 1 μέχρι 5 Για j από 1 μέχρι 6 Διάβασε table[i, j] Δισδιάστατος table 5*6 κατά στήλες Για j από 1 μέχρι 6 Για i από 1 μέχρι 5 Διάβασε table[i, j] Παρόμοια λειτουργία προσπέλασης των στοιχείων ακολουθούμε και στην περίπτωση της εμφάνισης ή της τροποποίησης τους. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 26

27 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΣΤΟΙΒΑ (Stack) Είναι μία δομή δεδομένων που μοιάζει με μία στοίβα από πιάτα. Τα στοιχεία εισάγονται και εξάγονται από την στοίβα βάσει της τεχνικής LIFO (Last in First out) δηλαδή το τελευταίο στοιχείο που εισάγεται στη στοίβα, εξάγεται πρώτο. ΩΘΗΣΗ (PUSH) Τοποθέτηση ενός νέου στοιχείου στην κορυφή της στοίβας ΚΥΡΙΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΑΠΩΘΗΣΗ (POP) Εξαγωγή ενός στοιχείου από την κορυφή της στοίβας Έλεγχος αν η στοίβα είναι γεμάτη Υπερχείλιση (overflow) Έλεγχος αν υπάρχει τουλάχιστον 1 στοιχείο στη στοίβα. Υποχείλιση (underflow) Στην πράξη υλοποιείται με : Έναν μονοδιάστατο πίνακα (έστω Α). Μία βοηθητική μεταβλητή (με όνομα συνήθως top) που λειτουργεί ως δείκτης και δείχνει στην κορυφή της στοίβας. Άρα οι κύριες λειτουργίες μεταφράζονται στις εξής ενέργειες: ΩΘΗΣΗ top top + 1 Είσοδος στοιχείου στην Α[top] ΑΠΩΘΗΣΗ Έξοδος στοιχείου από Α[top] top top Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 27

28 ΟΥΡΑ (Queue) ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Είναι μια δομή δεδομένων στην οποία τα στοιχεία εισάγονται και εξάγονται βάσει της τεχνικής FIFO (First in First out) δηλαδή το πρώτο στοιχείο που εισάγεται, εξάγεται πρώτο (όπως μια ουρά έκδοσης εισιτηρίων). Η ουρά αποτελεί ως προς την επίδοσή της, αντικείμενο μελέτης ενός κλάδου των μαθηματικών που ονομάζεται Επιχειρησιακή Έρευνα και ειδικότερα του κλάδου που ονομάζεται Θεωρία Ουρών. ΕΙΣΑΓΩΓΗ (ENQUEUE) ΚΥΡΙΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΕΞΑΓΩΓΗ (DEQUEUE) Εισαγωγή στοιχείου στο πίσω άκρο της ουράς Εξαγωγή στοιχείου από το Εμπρός άκρο της ουράς Στην πράξη υλοποιείται με : Μονοδιάστατο πίνακα (έστω Α). Δύο βοηθητικές μεταβλητές (δείκτες) που η μία δείχνει στο πρώτο στοιχείο της ουράς (front ή εμπρός) και η άλλη στο τελευταίο στοιχείο (rear ή πίσω). Άρα οι κύριες λειτουργίες μεταφράζονται στις εξής πράξεις : ΕΙΣΑΓΩΓΗ rear rear + 1 Εισαγωγή στοιχείου στην A[rear] θέση ΕΞΑΓΩΓΗ Εξαγωγή στοιχείου από A[front] front front + 1 Κάθε φορά θα πρέπει να γίνεται έλεγχος κατά την εισαγωγή αν υπάρχει ελεύθερος χώρος στον πίνακα και κατά την εξαγωγή αν υπάρχει ένα τουλάχιστον στοιχείο. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 28

29 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΑΛΓΟΡΙΘΜΟΙ ΑΝΑΖΗΤΗΣΗΣ ΣΕΙΡΙΑΚΗ - ΓΡΑΜΜΙΚΗ ΑΝΑΖΗΤΗΣΗ Με τη λειτουργία της αναζήτησης προσπελάζουμε τους κόμβους μιας δομής για να εντοπίσουμε όσους από αυτούς έχουν μία δεδομένη ιδιότητα. Η λειτουργία αυτή μπορεί να εφαρμοστεί σε πίνακα που περιέχει αριθμητικά (ακέραια ή πραγματικά) ή αλφαριθμητικά δεδομένα. Η εφαρμογή μιας μεθόδου αναζήτησης σε πίνακα εξαρτάται από δύο βασικούς παράγοντες : Αν ο πίνακας περιέχει επαναλαμβανόμενα στοιχεία Αν ο πίνακας είναι ταξινομημένος ή όχι Η μέθοδος της Σειριακής Αναζήτησης (Sequential Search) ή Γραμμικής Αναζήτησης (Linear Search) είναι η πιο απλή μέθοδος. Ο Αλγόριθμος ελέγχει μια-μια τις θέσεις του πίνακα με την σειρά για να εντοπίσει το προς αναζήτηση στοιχείο (έστω key). Μόλις το στοιχείο βρεθεί, ο αλγόριθμος επιστρέφει την θέση (έστω pos) που το περιέχει. Σε πίνακα χωρίς επαναλήψεις στοιχείων, ο αλγόριθμος σταματάει την αναζήτηση μόλις το στοιχείο βρεθεί. Αυτό ισχύει είτε ο πίνακας είναι ταξινομημένος είτε όχι. Σε πίνακα μη ταξινομημένο με επαναλήψεις στοιχείων, ο αλγόριθμος θα ελέγξει όλες τις θέσεις του πίνακα, έστω και αν το στοιχείο έχει ήδη βρεθεί. Σε πίνακα ταξινομημένο με επαναλήψεις, ο αλγόριθμος συνεχίζει την αναζήτηση μέχρι να βρεθεί στοιχείο μεγαλύτερο από αυτό που αναζητιέται. Το αποτέλεσμα του αλγορίθμου είναι μια λογική μεταβλητή (έστω done, found, ή βρέθηκε), η οποία παίζει το ρόλο της σημαίας (flag) και είναι ψευδής όσο το στοιχείο δεν βρέθηκε, ενώ γίνεται αληθής όταν βρεθεί. Η Σειριακή μέθοδος είναι η πιο απλή αλλά και η πιο αναποτελεσματική μέθοδος. Η χρήση της δικαιολογείται όταν : 1. Ο πίνακας είναι μη ταξινομημένος 2. Ο πίνακας είναι μικρού μεγέθους (ν 20) 3. Η αναζήτηση γίνεται σπάνια Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 29

30 ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Μια εναλλακτική μέθοδος αναζήτησης, είναι η Δυαδική Αναζήτηση (Binary Search) η οποία είναι σαφώς γρηγορότερη από την Σειριακή μέθοδο αλλά μπορεί να εφαρμοστεί μόνο σε ταξινομημένο πίνακα. Με τον αλγόριθμο της Δυαδικής αναζήτησης ψάχνουμε μια τιμή (έστω key) στον ταξινομημένο (κατά αύξουσα σειρά) πίνακα. Η μέθοδος χρησιμοποιεί δύο δείκτες με ονόματα start και end που καθορίζουν το διάστημα στο οποίο θα πραγματοποιηθεί η αναζήτηση, δηλαδή το διάστημα [start, end]. Στην συνέχεια, χωρίζει το διάστημα αναζήτησης στη μέση δημιουργώντας ένα δείκτη με όνομα μέσος (ή med), ο οποίος προσδιορίζει το μεσαίο στοιχείο του διαστήματος με βάση τον υπολογισμό μέσος = (start+end) div 2. Με επαναληπτική διαδικασία αναζητά το στοιχείο key στο διάστημα αναζήτησης [start,end] ως εξής: Αν το μεσαίο στοιχείο είναι ίσο με το key, αυτό σημαίνει ότι βρέθηκε το στοιχείο στη μεσαία θέση του διαστήματος και η αναζήτηση τερματίζεται. Αν το μεσαίο στοιχείο είναι μικρότερο από το key, η αναζήτηση συνεχίζεται στο δεύτερο μισό του διαστήματος που καθορίζεται από το διάστημα [μέσος+1,end]. Αν το μεσαίο στοιχείο είναι μεγαλύτερο από το key, η αναζήτηση συνεχίζεται στο πρώτο μισό του διαστήματος που καθορίζεται από το διάστημα [start,μέσος+1]. Η παραπάνω διαδικασία επαναλαμβάνεται μέχρι να εντοπιστεί το στοιχείο key στη μεσαία θέση κάποιου διαστήματος αναζήτησης ή ο δείκτης start να γίνει μεγαλύτερος από το δείκτη end, πράγμα που σημαίνει ότι το στοιχείο δεν βρέθηκε. Σύγκριση αποδοτικότητας αλγορίθμων Σειριακής και Δυαδικής αναζήτησης Πλήθος στοιχείων Ν Συγκρίσεις Σειριακής Συγκρίσεις Δυαδικής Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 30

31 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΑΛΓΟΡΙΘΜΟΙ ΤΑΞΙΝΟΜΗΣΗΣ Ταξινόμηση (Sorting) ή Διάταξη (Ordering) είναι η τακτοποίηση των κόμβων μιας δομής δεδομένων με μια ιδιαίτερη σειρά (αύξουσα ή φθίνουσα). Σκοπός της ταξινόμησης είναι να διευκολύνει την αναζήτηση στοιχείων στον πίνακα. temp A[j] A[j] A[j-1] A[j-1] temp Δοθέντων των στοιχείων α1, α2,.., αν η ταξινόμηση συνίσταται στη μετάθεση της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μια σειρά ακ1, ακ2,.., ακν και δοθείσης μιας συνάρτησης διάταξης F να ισχύει: F(ακ1) F(ακ2) F(ακν) Η Ταξινόμηση Ευθείας Ανταλλαγής Φυσαλίδα (Bubble Sort) βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων. Η ανταλλαγή των στοιχείων ονομάζεται αντιμετάθεση, και για την υλοποίησή της χρησιμοποιείται μια βοηθητική μεταβλητή, έστω temp. Κάθε φορά γίνονται διαδοχικές προσπελάσεις στον πίνακα και μετακινείται το μικρότερο κλειδί προς τις αρχικές θέσεις του πίνακα. Σε κάθε πέρασμα του αλγορίθμου από τον πίνακα ταξινομείται και ένα στοιχείο. Σε ένα πίνακα μεγέθους Ν στοιχείων, χρειάζονται Ν-1 περάσματα για να ταξινομηθεί. Ο αλγόριθμος Φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης. Εναλλακτικές μέθοδοι ταξινόμησης είναι: η ταξινόμηση με επιλογή (selection sort) η ταξινόμηση με παρεμβολή εισαγωγή (insertion sort) η γρήγορη ταξινόμηση (quick sort) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 31

32 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΑΛΛΕΣ ΤΕΧΝΙΚΕΣ ΤΑΞΙΝΟΜΗΣΗΣ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΕΠΙΛΟΓΗ Επιλογή του στοιχείου με το ελάχιστο κλειδί και ανταλλαγή του στοιχείου αυτού με το πρώτο στοιχείο του πίνακα. Αυτές οι λειτουργίες επαναλαμβάνονται για τα υπόλοιπα στοιχεία του πίνακα. Στο τέλος απομένει το μεγαλύτερο στοιχείο στη τελευταία θέση. ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΠΑΡΕΜΒΟΛΗ ΕΙΣΑΓΩΓΗ Αλγόριθμος ιδανικός για περιπτώσεις δεδομένων περίπου ταξινομημένων. Συγκρίνουμε το 2 ο με το 1 ο στοιχείο και αν χρειαστεί τα αντιμεταθέτουμε ώστε το 1 ο να είναι μικρότερο. Κατόπιν, ελέγχουμε το 3 ο και το τοποθετούμε εμβόλιμα στη σωστή θέση σε σχέση με τα 2 πρώτα. Επαναλαμβάνουμε το ίδιο και για τα άλλα στοιχεία. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 32

33 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΜΝΗΜΗΣ Σε μεγάλες εφαρμογές, επειδή η κύρια μνήμη (RAM) δεν επαρκεί ως αποθηκευτικός χώρος δεδομένων, γίνεται χρήση της δευτερεύουσας μνήμης (κυρίως του μαγνητικού δίσκου), όπου τα δεδομένα σώζονται υπό μορφή αρχείων. Μια βασική διαφορά κύριας και δευτερεύουσας μνήμης, είναι ότι στη δευτερεύουσα τα δεδομένα διατηρούνται ακόμα και στην περίπτωση που διακοπεί η παροχή ρεύματος. Έτσι τα δεδομένα διατηρούνται και μετά τον τερματισμό του προγράμματος, ενώ στις δομές δεδομένων της κύριας μνήμης, όπως είναι οι πίνακες, αυτό δεν ισχύει. Η δευτερεύουσα μνήμη είναι οργανωμένη σε ειδικές δυναμικές δομές δεδομένων που ονομάζονται αρχεία. Τα στοιχεία ενός αρχείου ονομάζονται εγγραφές (records) και κάθε μία από αυτές αποτελείται από πεδία (fields). Κάποια από τα πεδία ταυτοποιούν την εγγραφή ενώ κάποια άλλα απλά περιγράφουν διάφορα χαρακτηριστικά της. Το πεδίο που ταυτοποιεί μια εγγραφή ονομάζεται Πρωτεύον Κλειδί (primary key), ή απλά κλειδί. Με δεδομένο ένα πρωτεύον κλειδί, μπορεί να χρησιμοποιηθεί και δεύτερο πεδίο για να ταυτοποιήσουμε μια εγγραφή. Αυτό το πεδίο ονομάζεται δευτερεύον κλειδί (secondary key). ΠΑΡΑΔΕΙΓΜΑ ΑΡΧΕΙΟΥ: ΜΑΘΗΤΕΣ εγγραφή πρωτεύον κλειδί Αριθμός μητρώου δευτερεύον κλειδί Ονοματεπώνυμο Έτος γέννησης Τάξη Τμήμα Τηλέφωνο πεδία Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 33

34 ΔΥΝΑΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Οι βασικές δυναμικές δομές δεδομένων είναι οι λίστες, τα δέντρα και οι γράφοι. ΛΙΣΤΕΣ Οι λίστες (lists) είναι δομές δεδομένων που οι κόμβοι τους συνήθως βρίσκονται σε απομακρυσμένες θέσεις μνήμης και η σύνδεσή τους γίνεται με δείκτες. Ο δείκτης (pointer) είναι ένας ιδιαίτερος τύπος δεδομένων που προσφέρεται από τις περισσότερες σύγχρονες γλώσσες προγραμματισμού. Ο δείκτης δεν λαμβάνει αριθμητικές τιμές, αλλά οι τιμές του είναι διευθύνσεις στην κύρια μνήμη και χρησιμοποιείται ακριβώς για τη σύνδεση των διαφόρων στοιχείων μιας δομής, που είναι αποθηκευμένα σε μη συνεχόμενες θέσεις μνήμης. Κάθε κόμβος μιας λίστας αποτελείται από δύο πεδία: τα δεδομένα (μία ή περισσότερες αριθμητικές ή αλφαριθμητικές πληροφορίες) τον δείκτη (που δείχνει στον επόμενο κόμβο) Ο όρος index αναφέρεται σε θέση πίνακα ενός ο όρος pointer σε θέση μνήμης. Έστω μία λίστα με 4 κόμβους, όπου τα βελάκια δείχνουν τους δείκτες. Για την εισαγωγή (παρεμβολή) ενός νέου κόμβου στη λίστα (π.χ. μεταξύ 2 ου και 3 ου ) γίνεται αναδιάταξη των κατάλληλων δεικτών. Έτσι, ενώ η λογική σειρά των κόμβων διατηρείται, οι φυσικές θέσεις της μνήμης είναι διαφορετικές. Για την διαγραφή ενός κόμβου, αρκεί να αλλάξει τιμή ο δείκτης του προηγούμενου κόμβου και να δείχνει τον επόμενο του διαγραμμένου κόμβου. Ο διαγραμμένος κόμβος αποτελεί πλέον άχρηστο δεδομένο και ο χώρος μνήμης που καταλάμβανε παραχωρείται για άλλη χρήση. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 34

35 ΑΕΠΠ / ΚΕΦ. 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΔΕΝΤΡΑ Τα δέντρα (trees) είναι δομές δεδομένων που υλοποιούνται με τη βοήθεια δεικτών στα οποία κάθε κόμβος μπορεί να οδηγεί σε ένα ή περισσότερους επόμενους κόμβους. Τα δένδρα είναι δομές που στις σύγχρονες γλώσσες προγραμματισμού υλοποιούνται με τη βοήθεια των δεικτών. Ωστόσο, μπορούν να υλοποιηθούν και με στατικές δομές (π.χ. πίνακες). Ο αρχικός κόμβος κάθε δέντρου ονομάζεται ρίζα (root), από τον οποίο ξεκινούν όλοι οι άλλοι κόμβοι. Οι κόμβοι αυτοί λέγονται παιδιά της ρίζας. Με την ίδια λογική, κάθε κόμβος μπορεί να είναι γονέας για κάποιους άλλους κόμβους, οι οποίοι με τη σειρά τους θεωρούνται παιδιά του. Οι τερματικοί κόμβοι ενός δέντρου ονομάζονται φύλλα. ΓΡΑΦΟΙ Ένας γράφος (graph) είναι δομή δεδομένων που αποτελείται από ένα σύνολο κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών (ή ακμών ή τόξων) που ενώνουν μερικούς ή όλους τους κόμβους. Ο γράφος είναι η πιο γενική δομή δεδομένων, αφού όλες οι προηγούμενες δομές μπορούν να θεωρηθούν περιπτώσεις γράφων. Πολλά καθημερινά προβλήματα μπορούν να περιγραφούν με τη βοήθεια γράφων (π.χ. εύρεση ταχύτερης διαδρομής). Λόγω της μεγάλης πληθώρας των προβλημάτων που σχετίζονται με γράφους, έχει αναπτυχθεί η Θεωρία Γράφων, η οποία συχνά αποτελεί αυτοδύναμο μάθημα σε πανεπιστημιακά τμήματα. Οι δυναμικές δομές δεδομένων χρησιμοποιούν δείκτες και κατά την υλοποίησή τους δεν απαιτείται εκ των προτέρων καθορισμός του μέγιστου αριθμού κόμβων. Οι δομές αυτές είναι πιο ευέλικτες από τις στατικές δομές γιατί μπορούν να αλλάζουν το μέγεθος τους κατά τη διάρκεια εκτέλεσης του προγράμματος. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 35

36 ΑΕΠΠ / ΚΕΦ. 5 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦ.5 - ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΠΙΔΟΣΗ ΑΛΓΟΡΙΘΜΩΝ Η έννοια της επίδοσης (performance) είναι παρόμοια με την έννοια της αποδοτικότητας (efficiency) του αλγορίθμου και σημαίνει το πόσο γρήγορα εκτελείται ένας αλγόριθμος. Για την λύση ενός προβλήματος, είναι δυνατό να υπάρχουν περισσότεροι από ένας αλγόριθμοι. Το ζητούμενο είναι η εύρεση του βέλτιστου αλγορίθμου, δηλαδή του πιο αποδοτικού. Η επίδοσης ενός αλγορίθμου επηρεάζεται από δύο βασικούς παράγοντες: τη χειρότερη περίπτωση του αλγορίθμου το μέγεθος του προβλήματος ΧΕΙΡΟΤΕΡΗ ΠΕΡΙΠΤΩΣΗ Η χειρότερη περίπτωση του αλγορίθμου αφορά στο μέγιστο κόστος εκτέλεσης του αλγορίθμου το οποίο μετριέται σε υπολογιστικούς πόρους. Αυτό μπορεί να επηρεάσει την επιλογή και τη σχεδίαση του αλγορίθμου. Η μέτρηση της χειρότερης περίπτωσης γίνεται με τον υπολογισμό των βασικών πράξεων που θα πρέπει να εκτελέσει ο αλγόριθμος στην χειρότερη περίπτωση. Οι βασικές πράξεις είναι τρεις : ανάθεση τιμής σύγκριση δύο μεταβλητών αριθμητική πράξη μεταξύ δύο μεταβλητών Η χειρότερη περίπτωση αφορά στις τιμές εκείνες, που όταν δοθούν ως είσοδος στον αλγόριθμο, οδηγούν στην εκτέλεση μέγιστου αριθμού βασικών πράξεων. ΠΑΡΑΔΕΙΓΜΑ: Για τον επόμενο αλγόριθμο είναι προφανές ότι η χειρότερη περίπτωση προκύπτει όταν γίνουν 10 επαναλήψεις (δηλαδή n = 10). Αλγόριθμος Παράδειγμα n 0 S 0 Αρχή_επανάληψης Διάβασε α S S + α n n + 1 Μέχρις_ότου (α = 0) ή (n = 10) Εκτύπωσε S Τέλος Παράδειγμα Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 36

37 ΑΕΠΠ / ΚΕΦ. 5 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΜΕΓΕΘΟΣ ΕΙΣΟΔΟΥ ΑΛΓΟΡΙΘΜΟΥ Σε κάθε αλγόριθμο υπάρχουν κάποιες μεταβλητές που εκφράζουν το μέγεθος εισόδου του αλγορίθμου. Το μέγεθος εισόδου συμβολίζεται με n, και προσδιορίζει τον αριθμό των βασικών πράξεων που πρέπει να εκτελεσθούν για να υλοποιηθεί ο αλγόριθμος. Γενικά, σε έναν αλγόριθμο οι μεταβλητές που λειτουργούν ως δεδομένα εισόδου εκφράζουν το μέγεθος της εισόδου του. Οι μεταβλητές αυτές απεικονίζουν τους διαφορετικούς συνδυασμούς τιμών που κρίνουν τη συμπεριφορά ενός αλγορίθμου και δίνονται ως δεδομένα στον αλγόριθμο. Για παράδειγμα, σε έναν αλγόριθμο ταξινόμησης, το n εξαρτάται από το πλήθος των αντικειμένων που θα ταξινομηθούν (βασική πράξη σύγκριση). Σε ένα αλγόριθμο αναζήτησης, εξαρτάται από το πλήθος των στοιχείων του πίνακα (βασική πράξη σύγκριση). Σε έναν πολλαπλασιασμό, εξαρτάται από το πλήθος των στοιχείων που πολλαπλασιάζονται (βασική πράξη αριθμητική). Το μέγεθος εισόδου ενός αλγορίθμου (n), προσδιορίζει την πολυπλοκότητα του. Ο χρόνος εκτέλεσης ενός αλγορίθμου εξαρτάται από το μέγεθός του n. ΧΡΟΝΟΣ ΕΚΤΕΛΕΣΗΣ ΑΛΓΟΡΙΘΜΟΥ Ο χρόνος εκτέλεσης ενός αλγορίθμου κρίνεται με βάση τον αριθμό των πράξεων που θα πραγματοποιηθούν κατά την εκτέλεση του. ΠΑΡΑΔΕΙΓΜΑ: Για τον επόμενο αλγόριθμο παρατίθεται πίνακας υπολογισμού της επίδοσης του, εκφρασμένος σε πλήθος βασικών πράξεων. Αλγόριθμος Παράδειγμα P 0 Για i από 1 μέχρι 5 Εμφάνισε i Διάβασε α P P * α Εκτύπωσε P Τέλος Παράδειγμα Εντολή Αλγορίθμου Αριθμός Πράξεων Ανάθεση τιμής στο P 1 Βρόχος Επανάληψης αρχική τιμή στο i 1 έλεγχος i 6 αύξηση i 5 εμφάνιση i 5 Διάβασμα α 5 υπολογισμός P 10 εκτύπωση P 1 Σύνολο 34 Οι επαναληπτικοί βρόχοι παίζουν σημαντικό ρόλο στην επίδοση ενός αλγορίθμου. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 37

38 ΑΕΠΠ / ΚΕΦ. 5 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΠΟΔΟΤΙΚΟΤΗΤΑ ΑΛΓΟΡΙΘΜΩΝ Ένα πρόβλημα μπορεί κάποιες φορές να λυθεί με περισσότερους από έναν αλγόριθμους. Η αποδοτικότητα κάθε αλγορίθμου είναι ένα μέτρο σύγκρισης για να ελεγχθεί αν αυτός είναι καλύτερος ή χειρότερος σε σχέση με κάποιον άλλο. Ένας αποδοτικός αλγόριθμος μπορεί να: Επιστρέφει τα αποτελέσματα στο συντομότερο δυνατό χρόνο Κάνει χρήση της λιγότερης δυνατής μνήμης Οι παράγοντες αποδοτικότητας που επηρεάζουν το χρόνο εκτέλεσης ενός αλγορίθμου είναι: Τύπος ηλεκτρονικού υπολογιστή Γλώσσα προγραμματισμού Δομή προγράμματος και δομές δεδομένων Χρόνος πρόσβασης στο δίσκο και ενέργειες εισόδου - εξόδου Είδος συστήματος (ενός ή πολλών χρηστών) Για να μπορούν να συγκριθούν δύο αλγόριθμοι, είναι αναγκαίο να χρησιμοποιούνται τα ίδια δεδομένα και οι ίδιες συνθήκες εκτέλεσης και για τους δύο. Πιο συγκεκριμένα, οι προϋποθέσεις σύγκρισης δύο αλγορίθμων είναι : Να έχουν συνταχθεί στην ίδια γλώσσα προγραμματισμού Να χρησιμοποιείται ο ίδιος μεταφραστής της γλώσσας προγραμματισμού Να χρησιμοποιείται η ίδια υπολογιστική πλατφόρμα Να χρησιμοποιούνται τα ίδια δεδομένα ελέγχου σαν είσοδος ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΑΛΓΟΡΙΘΜΩΝ Υπάρχουν δύο βασικοί τρόποι μέτρησης της επίδοσης ενός αλγορίθμου: ο εμπειρικός (εκ των υστέρων) και ο θεωρητικός (εκ των προτέρων). ΕΜΠΕΙΡΙΚΟΣ (a posteriori) Είναι απλούστερος τρόπος μέτρησης Ο αλγόριθμος υλοποιείται και εφαρμόζεται σε ένα σύνολο δεδομένων, ώστε να υπολογισθεί ο απαιτούμενος χρόνος επεξεργασίας και η χωρητικότητα μνήμης. Παρουσιάζει 2 βασικά μειονεκτήματα που μπορούν να οδηγήσουν σε λανθασμένη εκτίμηση για την επίδοση του αλγορίθμου: - είναι δύσκολο να προβλεφθεί η συμπεριφορά του αλγορίθμου για κάποιο άλλο σύνολο δεδομένων - ο χρόνος επεξεργασίας εξαρτάται από το υλικό, τη γλώσσα προγραμματισμού, το μεταφραστή και τη δεινότητα του προγραμματιστή. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 38

39 ΘΕΩΡΗΤΙΚΟΣ (a priori) ΑΕΠΠ / ΚΕΦ. 5 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Χρήση μεταβλητής n, που εκφράζει το μέγεθος του προβλήματος. Η μέτρηση της αποδοτικότητας του αλγορίθμου να ισχύει για οποιοδήποτε σύνολο δεδομένων και ανεξάρτητα από υποκειμενικούς παράγοντες. Η σημασία της μεταβλητής n εξαρτάται από το πρόβλημα (π.χ. στο πρόβλημα ταξινόμησης k στοιχείων, ισχύει ότι n = k). O χρόνος επεξεργασίας και ο απαιτούμενος χώρος μνήμης εκτιμώνται με τη βοήθεια μίας συνάρτησης f(n) που εκφράζει τη χρονική πολυπλοκότητα ή την πολυπλοκότητα χώρου. Σε πολλές περιπτώσεις όμως δεν ενδιαφέρουν οι επακριβείς τιμές αλλά μόνο η γενική συμπεριφορά των αλγορίθμων, δηλαδή η τάξη του αλγορίθμου. Για το λόγο αυτό εισάγεται ο λεγόμενος συμβολισμός Ο. Το Ο σημαίνει Order ενώ το O(n) διαβάζεται «πολυπλοκότητα της τάξης n O συμβολισμός Ο δίνει ένα άνω φράγμα για την πολυπλοκότητα ενός αλγορίθμου, δηλαδή ένα μέτρο, που ποτέ δεν πρόκειται να ξεπεράσει ο αλγόριθμος προς τα επάνω. Η πολυπλοκότητα αλγορίθμου δίνει ένα μέτρο της χρονικής καθυστέρησης και άρα της ταχύτητας εκτέλεσης του αλγορίθμου για την επίλυση του προβλήματος. Οι βασικότερες κατηγορίες χρονικής πολυπλοκότητας είναι οι εξής: Πολυπλοκότητα Ονομασία Παρατηρήσεις O(1) Σταθερή Κάθε εντολή εκτελείται μια ή μερικές φορές O(logn) O(n) O(nlogn) Λογαριθμική Γραμμική Γραμμολογαριθμική Με log συμβολίζεται ο δυαδικός αλγόριθμος (συνηθέστερος) και με ln ο φυσικός Η καλύτερη επίδοση για έναν αλγόριθμο που θέλει να εξετάσει ή να δώσει στην έξοδο n στοιχεία Συνήθως διαβάζεται nlogn και χαρακτηρίζει μια βασική οικογένεια αλγορίθμων ταξινόμησης. O(n 2 ) Τετραγωνική Χρήση σε προβλήματα μικρού μεγέθους O(n 3 ) Κυβική Χρήση σε προβλήματα μικρού μεγέθους O(2 n ) Εκθετική Σπάνια πρακτική εφαρμογή ακόμα και σε προβλήματα με μικρό αριθμό δεδομένων Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 39

40 ΑΕΠΠ / ΚΕΦ. 5 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΒΑΣΙΚΩΝ ΑΛΓΟΡΙΘΜΩΝ Ταξινόμηση Ευθείας Ανταλλαγής: Η πολυπλοκότητα του αλγορίθμου ταξινόμησης εξαρτάται από δύο λόγους: το πλήθος των συγκρίσεων των στοιχείων που απαιτούνται (C) το πλήθος των μετακινήσεων των στοιχείων που θα γίνουν (M) Ο αριθμός των συγκρίσεων σε κάθε περίπτωση είναι C = (n-1) που βάσει των ιδιοτήτων της αριθμητικής προόδου ισχύει ότι: C = n(n 1) 2 Άρα η πολυπλοκότητα του αλγορίθμου Φυσαλίδα είναι O(n 2 ) Γραμμική Αναζήτηση: Η πολυπλοκότητα του αλγορίθμου αναζήτησης εξαρτάται από: το πλήθος των συγκρίσεων των στοιχείων που απαιτούνται Το κόστος των συγκρίσεων συμβολίζεται με Α αν η αναζήτηση είναι ανεπιτυχής και με Ε αν η αναζήτηση είναι επιτυχής. Σε περίπτωση επιτυχούς αναζήτησης, οι συγκρίσεις κλειδιών που πραγματοποιούνται κατά μέσο όρο είναι: C = n n(n + 1) = = n + 1 n 2n 2 Άρα εφόσον τα κλειδιά αναζητούνται ισοπίθανα, η πολυπλοκότητα του αλγορίθμου Σειριακής Αναζήτησης είναι O(n). Στην περίπτωση ανεπιτυχούς αναζήτησης, ο αλγόριθμος αναγκάζεται να προσπελάσει όλα τα στοιχεία του πίνακα και άρα η πολυπλοκότητα είναι πάλι γραμμικής τάξης Ο(n). Τέλος, σε περίπτωση που ο πίνακας είναι ταξινομημένος, η αναζήτηση βελτιώνεται αλλά η πολυπλοκότητα παραμένει γραμμικής τάξης. Πολυπλοκότητα Βασικών Αλγορίθμων Ώθηση Απώθηση σε Στοίβα Ο(1) Εισαγωγή Εξαγωγή σε Ουρά Ο(1) Fibonacci επαναληπτική Ο(n) Ταξινόμηση Ευθείας Ανταλλαγής Ο(n 2 ) Σειριακή Αναζήτηση O(n) Δυαδική Αναζήτηση O(logn) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 40

41 ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦ.6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ Οι φυσικές γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι προκειμένου να επικοινωνήσουν μεταξύ τους. Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες γραμματικής και σύνταξης αλλάζουν. Οι τεχνητές γλώσσες, που είναι οι γλώσσες προγραμματισμού, χρησιμοποιούνται για την επικοινωνία ανθρώπου μηχανής. Αυτές χαρακτηρίζονται από στασιμότητα, αφού κατασκευάζονται συνειδητά για ένα συγκεκριμένο λόγο. Οι αλλαγές που δέχονται προκειμένου να διορθώσουν κάποιες αδυναμίες ή να καλύψουν μεγαλύτερο εύρος εφαρμογών είναι συνήθως σε: επίπεδο διαλέκτου (π.χ. GW Basic, Quick Basic, Visual Basic) επίπεδο επέκτασης (π.χ. C, C++) ΣΤΟΙΧΕΙΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κάθε γλώσσα προγραμματισμού προσδιορίζεται από τέσσερα βασικά στοιχεία: ΑΛΦΑΒΗΤΟ Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα. Για παράδειγμα η ελληνική γλώσσα περιέχει 24 γράμματα (πεζά και κεφαλαία), 10 ψηφία από 0 έως 9 και τα σημεία στίξης. Το αντίστοιχο συμβαίνει και με την αγγλική γλώσσα. ΛΕΞΙΛΟΓΙΟ Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου και είναι δεκτές από τη γλώσσα. Για παράδειγμα οι λέξεις ΟΣΟ, ΓΙΑ, ΔΙΑΒΑΣΕ είναι δεκτές από τη γλώσσα, ενώ οι ΤΕΛΟΣ, ΕΠΑΝΕΛΑΒΕ δεν είναι. ΓΡΑΜΜΑΤΙΚΗ Είναι το σύνολο των κανόνων μιας γλώσσας προγραμματισμού που περιλαμβάνει: Τυπικό (Τυπολογικό) είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι (ορθογραφικά) αποδεκτή. Για παράδειγμα η λέξη ΓΡΑΨΕ είναι αποδεκτή, ενώ η ΓΡΑΠΣΕ δεν είναι. Συντακτικό είναι το σύνολο των κανόνων που ορίζει την νομιμότητα της σύνδεσης και διάταξης των λέξεων για την δημιουργία προτάσεων (αφορά δηλαδή στην ορθή σύνταξη των εντολών). Για παράδειγμα: η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή, ενώ η ΟΣΟ (Χ > 0) ΤΟΤΕ είναι λάθος. ΣΗΜΑΣΙΟΛΟΓΙΑ Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων, εκφράσεων και προτάσεων σε μια γλώσσα. Είναι δηλαδή η εσωτερική σημασία των εντολών που αποφασίζεται από τον δημιουργό της γλώσσας. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 41

42 ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ ΙΕΡΑΡΧΙΚΗ ΣΧΕΔΙΑΣΗ ΙΕΡΑΡΧΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η ιεραρχική σχεδίαση βασίζεται στην μέθοδο «από πάνω προς τα κάτω» (Top- Down Design) και χρησιμοποιεί τη στρατηγική της συνεχούς διαίρεσης του προβλήματος σε υποπροβλήματα. Πιο συγκεκριμένα, η ιεραρχική σχεδίαση περιλαμβάνει : τον καθορισμό των βασικών λειτουργιών του προβλήματος σε ανώτερο επίπεδο. την διάσπαση των λειτουργιών αυτών σε μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο, ώστε να είναι τόσο απλές που να μην μπορούν να υποστούν περαιτέρω διάσπαση. Την σύνθεση των λύσεων των επιμέρους προβλημάτων για την παραγωγή της λύσης του συνολικού προβλήματος. ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η ιεραρχική σχεδίαση στην πράξη υλοποιείται με τον τμηματικό προγραμματισμό, σύμφωνα με τον οποίο κάθε υποπρόβλημα αντιμετωπίζεται ως ανεξάρτητη ενότητα (module). Κάθε υποπρόβλημα που προβλέπει η ιεραρχική σχεδίαση, υλοποιείται με ανεξάρτητο τμήμα προγράμματος που καλείται υποπρόγραμμα. Βασικά πλεονεκτήματα του τμηματικού προγραμματισμού είναι ότι: Διευκολύνει την δημιουργία του προγράμματος Μειώνει τα λάθη Ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 42

43 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Είναι η μεθοδολογία που σήμερα έχει επικρατήσει σε όλες σχεδόν τις σύγχρονες γλώσσες, και είναι επινόηση του καθηγητή E. Dijkstra το Στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών : - Ακολουθία - Επιλογή - Επανάληψη Όλα τα προγράμματα γράφονται χρησιμοποιώντας μόνο αυτές τις τρεις δομές, ή συνδυασμό τους. Κάθε προγραμματιστής μπορεί να γράφει σύνθετα προγράμματα μειώνοντας ταυτόχρονα τα λάθη και διευκολύνοντας την κατανόηση και τη συντήρηση. Κάθε πρόγραμμα καθώς και κάθε ενότητα προγράμματος, έχει μόνο μία είσοδο και μόνο μία έξοδο. Ο Δομημένος Προγραμματισμός περιέχει τις έννοιες της Ιεραρχικής Σχεδίασης και του Τμηματικού Προγραμματισμού Η λογική του δομημένου προγραμματισμού ξεκίνησε από την ανάγκη κατάργησης ή τουλάχιστον περιορισμού της χρήσης της εντολής GOTO (Πήγαινε στο), η οποία προκαλούσε την αλλαγή της ροής εκτέλεσης του προγράμματος. Η αλόγιστη χρήση της εντολής αυτής άλλαζε συνεχώς την ροή του προγράμματος και έκανε δύσκολη την κατανόηση, την παρακολούθηση και την συντήρησή του. Αδόμητος τρόπος (χρήση GOTO) ΑN (Χ > 0) ΤΟΤΕ GOTO 1 AN (X = 0) TOTE GOTO 2 ΓΡΑΨΕ Αρνητικός GOTO 4 1: ΓΡΑΨΕ Θετικός GOTO 4 2: ΓΡΑΨΕ Μηδέν 4:! Συνέχεια Δομημένος τρόπος ΑΝ (Χ > 0) ΤΟΤΕ ΓΡΑΨΕ Θετικός ΑΛΛΙΩΣ_ΑΝ (Χ = 0) ΤΟΤΕ ΓΡΑΨΕ Μηδέν ΑΛΛΙΩΣ ΓΡΑΨΕ Αρνητικός ΤΕΛΟΣ_ΑΝ Πλεονεκτήματα Δομημένου Προγραμματισμού Δημιουργία απλούστερων προγραμμάτων Άμεση μεταφορά αλγορίθμων σε προγράμματα Εύκολη ανάλυση του προγράμματος σε τμήματα Περιορισμός λαθών κατά την ανάπτυξη Ευκολία ανάγνωσης και κατανόησης από τρίτους Ευκολία διόρθωσης και συντήρησης Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 43

44 ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Κάθε πρόγραμμα που γράφεται, πρέπει να μετατραπεί σε γλώσσα κατανοητή από τον υπολογιστή, ώστε να μπορεί να εκτελεστεί. Αυτή είναι η γλώσσα μηχανής. Υπάρχουν δύο βασικές κατηγορίες μεταφραστικών προγραμμάτων που το επιτυγχάνουν αυτό. Οι Μεταγλωττιστές και οι Διερμηνευτές. ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ (Compiler) Δέχεται σαν είσοδο το πρόγραμμα της γλώσσας υψηλού επιπέδου και παράγει το ισοδύναμο της γλώσσας μηχανής. Αυτό είναι ανεξάρτητο από το αρχικό πρόγραμμα και εκτελείται σε οποιονδήποτε υπολογιστή οποιαδήποτε στιγμή. Κάνει έλεγχο συντακτικών λαθών και σε περίπτωση που βρεθούν το πρόγραμμα υποβάλλεται ξανά προς μεταγλώττιση μέχρι να παραχθεί το σωστό εκτελέσιμο. Άρα κάθε πρόγραμμα πριν εκτελεστεί πρέπει πρώτα να περάσει από διαδικασία μεταγλώττισης (αρκετές φορές μέχρι να διορθωθούν όλα τα λάθη) και της σύνδεσης. ΔΙΕΡΜΗΝΕΥΤΗΣ (Interpreter) ΔΙΑΔΙΚΑΣΙΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ ΚΑΙ ΣΥΝΔΕΣΗΣ Διαβάζει μία μία τις εντολές του αρχικού προγράμματος και ταυτόχρονα μεταφράζει και εκτελεί την καθεμιά σε εντολές γλώσσας μηχανής. Σε αντίθεση με τον μεταγλωττιστή, κάνει άμεση εκτέλεση και άρα άμεση διόρθωση. Είναι όμως πιο αργός από το ισοδύναμο εκτελέσιμο πρόγραμμα του μεταγλωττιστή. ΔΙΑΔΙΚΑΣΙΑ ΜΕΤΑΦΡΑΣΗΣ ΚΑΙ ΕΚΤΕΛΕΣΗΣ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 44

45 ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ (Source) ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Είναι το αρχικό πρόγραμμα μετά την συγγραφή του από τον προγραμματιστή. Αποτελεί ένα απλό αρχείο κειμένου που δημιουργείται με τον συντάκτη (editor). ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ (Object) Είναι το πρόγραμμα που παράγεται μετά την μεταγλώττιση του πηγαίου προγράμματος. Είναι σε μορφή κατανοητή από τον υπολογιστή (δυαδικά ψηφία) αλλά δεν είναι εκτελέσιμο. Για να εκτελεστεί χρειάζεται σύνδεση με άλλα προγράμματα. ΣΥΝΔΕΤΗΣ ΦΟΡΤΩΤΗΣ (Linker - Loader) Το πρόγραμμα που επιτυγχάνει την σύνδεση με άλλα υποπρογράμματα ονομάζεται Συνδέτης Φορτωτής. Αναλαμβάνει να συνδέσει και να συμπληρώσει το αντικείμενο με άλλα τμήματα προγράμματος, που έχουν γραφεί χωριστά και είναι απαραίτητα για την εκτέλεσή του. Τα τμήματα προγράμματος που συνδέονται στο αντικείμενο μπορεί να είναι γραμμένα από τον ίδιο τον προγραμματιστή ή να βρίσκονται σε βιβλιοθήκες προγραμμάτων (libraries) της γλώσσας. ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ (Executable) Είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. Το εκτελέσιμο πρόγραμμα παράγεται μόνο όταν το αρχικό έχει γραφεί χωρίς συντακτικά λάθη (δηλαδή έχει περάσει επιτυχώς το στάδιο της μεταγλώττισης). ΣΥΝΤΑΚΤΗΣ (Editor) Είναι ειδικό πρόγραμμα που χρησιμοποιείται για την συγγραφή του αρχικού προγράμματος (πηγαίου). Λειτουργεί ως ένας μικρός επεξεργαστής κειμένου που επιτρέπει την γρήγορη συγγραφή προγραμμάτων. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 45

46 ΚΑΤΗΓΟΡΙΕΣ ΛΑΘΩΝ ΑΕΠΠ / ΚΕΦ. 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Συντακτικά: εμφανίζονται κατά την μεταγλώττιση και οφείλονται σε παραβίαση των γραμματικών κανόνων της γλώσσας. Προκύπτουν συνήθως από ορθογραφικά ή συντακτικά σφάλματα (π.χ. αναγραμματισμός εντολών), παράληψη δηλώσεων μεταβλητών ή ασυμβατότητα τύπων και πρέπει πάντα να διορθωθούν για να παραχθεί το εκτελέσιμο πρόγραμμα π.χ. Χ (Α+Β+Γ):3 Λογικά: εμφανίζονται κατά την εκτέλεση και είναι πιο σημαντικά λάθη και δυσκολότερα στην διόρθωση αφού οφείλονται σε εσφαλμένη υλοποίηση του αλγορίθμου π.χ. Χ Α+Β+Γ/3 ΑΠΑΙΤΟΥΜΕΝΑ ΠΡΟΓΡΑΜΜΑΤΑ Ένα προγραμματιστικό περιβάλλον χρειάζεται να διαθέτει μια σειρά προγραμμάτων προκειμένου να επιτρέπει στον προγραμματιστή να δημιουργήσει, να μεταφράσει και να εκτελέσει ένα πρόγραμμα: Α) Συντάκτης, Β) Μεταγλωττιστής, Γ) Συνδέτης Συντάκτης ΠΗΓΑΙΟ ΠΗΓΑΙΟ Μεταγλωττιστής ΤΕΛΙΚΟ ΤΕΛΙΚΟ Συνδέτης ΕΚΤΕΛΕΣΙΜΟ Στα σύγχρονα προγραμματιστικά περιβάλλοντα compiler και interpreter παρουσιάζονται μαζί. O interpreter χρησιμοποιείται κατά τη φάση της δημιουργίας του προγράμματος. Ο compiler χρησιμοποιείται για την τελική έκδοση και εκμετάλλευση του προγράμματος. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 46

47 ΑΕΠΠ / ΚΕΦ. 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦ.7 - ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η υλοποίηση ενός αλγορίθμου γίνεται πάντα με μία γλώσσα προγραμματισμού. Η επιλογή της κατάλληλης γλώσσας δεν είναι εύκολη και εξαρτάται από το είδος του προγράμματος. Σχετικά με τις διάφορες γλώσσες πρέπει να γνωρίζουμε τα εξής : Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού, αλλά καταλληλότερη για συγκεκριμένο τύπο εφαρμογών. Κάθε γλώσσα εξαρτάται σε μεγάλο βαθμό από τον εξοπλισμό και το λειτουργικό σύστημα. Σχεδόν όλες οι γλώσσες έχουν κοινά χαρακτηριστικά (τύπους δεδομένων, βασικές δομές, εντολές). Οι αλγόριθμοι του σχολικού βιβλίου υλοποιούνται με μία γλώσσα προγραμματισμού που έχει το όνομα «ΓΛΩΣΣΑ» και περιέχει κάποια χαρακτηριστικά από τις σύγχρονες γλώσσες όπως Pascal, Visual Basic, C, C++, Java κλπ. ΑΛΦΑΒΗΤΟ ΓΛΩΣΣΑΣ ΓΡΑΜΜΑΤΑ Κεφαλαία και Πεζά του Ελληνικού Λατινικού Αλφαβήτου (Α-Ω, α-ω, Α-Ζ, a-z) ΨΗΦΙΑ 0 9 και ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ + - * / =. ( ),! & _ [ ] κενός χαρακτήρας ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η «ΓΛΩΣΣΑ» υποστηρίζει τους εξής τέσσερις τύπους δεδομένων : ΑΚΕΡΑΙΟΣ Περιλαμβάνει τους αρνητικούς και θετικούς ακέραιους π. χ 253, 0, -40, 3490 ΠΡΑΓΜΑΤΙΚΟΣ Περιλαμβάνει τους πραγματικούς (δεκαδικούς) αριθμούς π. χ 3.14, 0.25, ΧΑΡΑΚΤΗΡΑΣ Περιλαμβάνει αλφαριθμητικά δεδομένα που μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο. Πρέπει πάντα να περικλείονται μέσα σε απλά εισαγωγικά π.χ. 'Κ', 'Hello', '10', 'ΑΒ30', 'George', 'ΑΕΠΠ' ΛΟΓΙΚΟΣ Δέχεται μόνο δύο τιμές Αληθής και Ψευδής. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 47

48 ΑΕΠΠ / ΚΕΦ. 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του Η/Υ καταλαμβάνοντας συγκεκριμένο αριθμό θέσεων (bytes). Ανάλογα με τον τύπο δεδομένων της, κάθε μεταβλητή καταλαμβάνει διαφορετικό αριθμό bytes στη μνήμη. Έτσι μια ακέραια (integer) μεταβλητή δεσμεύει 1, 2 ή 4 bytes στη μνήμη, ενώ μια πραγματική (real) 4 ή 8 bytes. ΣΤΑΘΕΡΕΣ Σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά την διάρκεια εκτέλεσης του προγράμματος, δηλαδή γλωσσικά αντικείμενα που παίρνουν μόνο μια ειδική τιμή. Κάθε σταθερά ανήκει σε έναν από τους παραπάνω τέσσερις τύπους δεδομένων. Η δήλωση των συμβολικών σταθερών γίνεται στην αρχή του προγράμματος μετά την επικεφαλίδα ως εξής : ΣΤΑΘΕΡΕΣ Όνομα = Τιμή Όνομα = Τιμή ΜΕΤΑΒΛΗΤΕΣ Μεταβλητές (variables) είναι γλωσσικά στοιχεία που χρησιμοποιούνται για να παραστήσουν στοιχεία δεδομένων, των οποίων η τιμή μπορεί να αλλάζει κατά την εκτέλεση του προγράμματος. Οι μεταβλητές που χρησιμοποιούνται στο πρόγραμμα, αντιστοιχούνται από τον μεταγλωττιστή (compiler) σε συγκεκριμένες θέσεις της μνήμης. Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση της μνήμης (που έχει δεσμευτεί για την μεταβλητή αυτή). Το διπλανό σχέδιο δείχνει την αντιστοίχιση των μεταβλητών Χ, Α και Β στη μνήμη του υπολογιστή (να θεωρηθεί ότι ως τιμή εισόδου δίνεται το 2), βάσει του τμήματος εντολών που εκτελούνται. Ενώ η τιμή της μεταβλητής αλλάζει, αυτό που μένει αναλλοίωτο είναι ο τύπος δεδομένων της (δηλαδή ακέραιος, πραγματικός, χαρακτήρας ή λογικός). Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 48

49 ΑΕΠΠ / ΚΕΦ. 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η δήλωση μεταβλητών γίνεται πάντα μετά την δήλωση των σταθερών ως εξής : ΜΕΤΑΒΛΗΤΕΣ Τύπος : Λίστα Μεταβλητών Τύπος : Λίστα Μεταβλητών Σωστή τακτική είναι να επιλέγονται ονόματα μεταβλητών που να παραπέμπουν στο περιεχόμενό τους (δηλαδή για μια μεταβλητή που συμβολίζει τον μισθό ενός υπαλλήλου, δεν βοηθάει να δώσουμε ονόματα όπως Χ ή Α ή Μ αλλά ονόματα όπως Salary, Misthos, Mis, Sal, ΜΙΣΘΟΣ, μισθός, Μ, μ κλπ. ΚΑΝΟΝΕΣ ΟΝΟΜΑΤΩΝ Τα ονόματα που επιλέγουμε για τις σταθερές και μεταβλητές του προγράμματος πρέπει να πληρούν τους εξής περιορισμούς: Αποτελούνται από γράμματα (ελληνικά ή λατινικά), νούμερα και το σύμβολο _ (underscore) Πρέπει υποχρεωτικά να αρχίζουν με γράμμα Δεν αποτελούν δεσμευμένες λέξεις της ΓΛΩΣΣΑΣ Δεν περιέχουν κενά ή άλλα σύμβολα Παραδείγματα λανθασμένων ονομάτων : 100Α, ΑΒ@, Κόστος$, ΤΟΤΕ, Μέση Τιμή ΤΕΛΕΣΤΕΣ ΑΡΙΘΜΗΤΙΚΟΙ ΣΥΓΚΡΙΤΙΚΟΙ ΛΟΓΙΚΟΙ + = ΚΑΙ - < > Η * > ΟΧΙ / >= ^ < DIV <= MOD ΣΥΝΑΡΤΗΣΕΙΣ (ενσωματωμένες μαθηματικές) Οι πιο συχνά χρησιμοποιούμενες συναρτήσεις είναι : ΗΜ (Χ) Ημίτονο Χ ΛΟΓ (Χ) Λογάριθμος του Χ ΣΥΝ (Χ) Συνημίτονο Χ Ε (Χ) e x ΕΦ (Χ) Εφαπτομένη Χ Α_Μ (Χ) Ακέραιο μέρος του Χ Τ_Ρ (Χ) Τετραγωνική ρίζα του Χ Α_Τ (Χ) Απόλυτη τιμή του Χ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 49

50 ΑΕΠΠ / ΚΕΦ. 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΙΕΡΑΡΧΙΑ ΠΡΑΞΕΩΝ Όλες οι μεταβλητές που εμφανίζονται σε μία έκφραση, πρέπει να έχουν προηγουμένως δηλωθεί στο τμήμα Σταθερών και Μεταβλητών. Η ιεραρχία που ακολουθείται στις πράξεις έχει ως εξής : Από αριστερά προς τα δεξιά Παρενθέσεις (πρώτα οι εσωτερικές) ( ) Ύψωση σε δύναμη ^ Πολλαπλασιασμοί και διαιρέσεις *, /, div, mod Προσθέσεις και αφαιρέσεις +, - Συγκριτικοί τελεστές >, <, =, >=, <=, <> Λογικοί τελεστές KAI, H, OXI Ένα από τα πιο συνηθισμένα λάθη είναι ο διαφορετικός αριθμός αριστερών από δεξιές παρενθέσεις. ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ Η τιμή του δεξιού μέλους της εντολής εκχώρησης αποδίδεται στην μεταβλητή του αριστερού μέλους. Μεταβλητή Έκφραση Το σύμβολο εκχώρησης είναι το αριστερό βέλος και πρέπει να διαφοροποιείται από το σύμβολο =, το οποίο χρησιμοποιείται σε συνθήκες ως συγκριτικός τελεστής και στο τμήμα ορισμού σταθερών ως τελεστής απόδοσης τιμής. Σε μια εντολή εκχώρησης, η μεταβλητή και η τιμή της έκφρασης που της εκχωρείται πρέπει να είναι του ιδίου τύπου δεδομένων. ΕΝΤΟΛΕΣ ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ Τα δεδομένα εισάγονται από μια μονάδα εισόδου που είναι το πληκτρολόγιο και γράφονται σε μια μονάδα εξόδου που είναι η οθόνη, ο εκτυπωτής ή η βοηθητική μνήμη. Για την ανάγνωση των δεδομένων χρησιμοποιείται η εντολή ΔΙΑΒΑΣΕ, ενώ για την εμφάνιση αποτελεσμάτων χρησιμοποιείται η εντολή ΓΡΑΨΕ. ΔΙΑΒΑΣΕ λίστα μεταβλητών ΓΡΑΨΕ λίστα στοιχείων Η εκτέλεση της εντολής ΔΙΑΒΑΣΕ οδηγεί στην είσοδο τιμών από το πληκτρολόγιο και την εκχώρησή τους στις μεταβλητές που αναφέρονται. Η εντολή ΓΡΑΨΕ χρησιμοποιείται για την εμφάνιση σταθερών τιμών καθώς και των τιμών των μεταβλητών που αναφέρονται στη λίστα των στοιχείων που εμφανίζονται. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 50

51 ΑΕΠΠ / ΚΕΦ. 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Κάθε πρόγραμμα έχει συγκεκριμένη δομή. Ξεκινάει με την επικεφαλίδα που περιέχει το όνομά του, ακολουθείται από το τμήμα ορισμού σταθερών (αν έχει) και δήλωσης μεταβλητών και ολοκληρώνεται με το κυρίως μέρος το οποίο περικλείεται ανάμεσα σε εντολές ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ. Οι δεσμευμένες λέξεις της ΓΛΩΣΣΑΣ γράφονται με κεφαλαία γράμματα. Αν ο πρώτος χαρακτήρας της γραμμής είναι το θαυμαστικό (!), τότε η γραμμή περιέχει μη εκτελέσιμες εντολές, οι οποίες ονομάζονται σχόλια και έχουν επεξηγηματικό χαρακτήρα. Αν μια εντολή δεν χωράει σε μία γραμμή, τότε συνεχίζει στην επόμενη γραμμή που ο πρώτος χαρακτήρας της είναι ο (&). Κάθε πρόγραμμα της ΓΛΩΣΣΑΣ έχει την εξής μορφή : Επικεφαλίδα Τμήμα ορισμού σταθερών Τμήμα δήλωσης μεταβλητών Κύριο τμήμα εντολών ΠΡΟΓΡΑΜΜΑ Όνομα ΣΤΑΘΕΡΕΣ Όνομα = τιμή... ΜΕΤΑΒΛΗΤΕΣ Τύπος : Λίστα Παραμέτρων... ΑΡΧΗ... εντολές... ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 51

52 ΑΕΠΠ / ΚΕΦ. 8 ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ ΚΕΦ.8 - ΕΠΙΛΟΓΗ ΚΑΙ ΕΠΑΝΑΛΗΨΗ Η «ΓΛΩΣΣΑ» χρησιμοποιεί ακριβώς τις ίδιες δομές εντολών με τους αλγορίθμους. Ο μόνος περιορισμός σε σχέση με τους αλγορίθμους, είναι ότι οι δεσμευμένες λέξεις των εντολών της «ΓΛΩΣΣΑΣ» γράφονται με κεφαλαία γράμματα. ΔΟΜΕΣ ΕΝΤΟΛΩΝ ΕΠΙΛΟΓΗΣ ΑΝ ( Συνθ ) ΤΟΤΕ εντολές ΤΕΛΟΣ_ΑΝ Κλείνει πάντα με ΤΕΛΟΣ_ΑΝ ανεξάρτητα από το πλήθος των εντολών που περιέχει ΑΝ (α >= 0) ΤΟΤΕ ρίζα Τ_Ρ(α) ΤΕΛΟΣ_ΑΝ ΑΝ (Συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ εντολές ΤΕΛΟΣ_ΑΝ ΑΝ (A < B) ΤΟΤΕ min A ΑΛΛΙΩΣ min B ΤΕΛΟΣ_ΑΝ ΑΝ (Συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ_ΑΝ (Συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ_ΑΝ (Συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ εντολές ΤΕΛΟΣ_ΑΝ ΑΝ (x < 10) ΤΟΤΕ ΓΡΑΨΕ 'ΑΠΟΡΡΙΠΤΕΤΑΙ' ΑΛΛΙΩΣ_ΑΝ (x < 12) ΤΟΤΕ ΓΡΑΨΕ 'ΜΕΤΡΙΑ' ΑΛΛΙΩΣ_ΑΝ (x < 15) ΤΟΤΕ ΓΡΑΨΕ 'ΚΑΛΑ' ΑΛΛΙΏΣ_ΑΝ (x < 18) ΤΟΤΕ ΓΡΑΨΕ 'ΠΟΛΥ ΚΑΛΑ' ΑΛΛΙΩΣ ΓΡΑΨΕ 'ΑΡΙΣΤΑ' ΤΕΛΟΣ_ΑΝ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 52

53 ΔΟΜΕΣ ΕΝΤΟΛΩΝ ΕΠΑΝΑΛΗΨΗΣ ΑΕΠΠ / ΚΕΦ. 8 ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ ΟΣΟ (Συνθ) ΕΠΑΝΑΛΑΒΕ εντολές ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ εντολές ΜΕΧΡΙΣ_ΟΤΟΥ (Συνθ) ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ ΒΗΜΑ β εντολές ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΕΝΙΚΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ Οι συνθήκες μπορούν να περιέχουν συγκρίσεις ανάμεσα σε αριθμητικές αλλά και αλφαριθμητικές τιμές (αλφαβητική σύγκριση όπου ότι έπεται αλφαβητικά θεωρείται και μεγαλύτερο π.χ. Α < Β < Γ κλπ.). AN αριθμός = 0 ΤΟΤΕ ΌΣΟ λέξη < > 'Hello' ΕΠΑΝΑΛΑΒΕ ΑΝ Χ+Υ >= (Α+Β)/Γ ΤΟΤΕ Όταν οι αριθμητικοί, οι συγκριτικοί και οι λογικοί τελεστές συνδυάζονται σε μια έκφραση, οι αριθμητικές πράξεις εκτελούνται πρώτες, ακολουθούν οι συγκρίσεις και τέλος γίνονται οι λογικές πράξεις. ΑΝ (Χ + 2 > 8) Ή (Χ Υ * 2 <= 10) ΤΟΤΕ Αν σε μία δομή επιλογής μπορούν να χρησιμοποιηθούν εναλλακτικά είτε εμφωλευμένα ΑΝ είτε λογικοί τελεστές (ΚΑΙ, Η, ΟΧΙ), τότε προτιμάται το δεύτερο λόγω ταχύτητας. ΑΝ (Β < 80) ΤΟΤΕ ΑΝ (Υ < 1.70) ΤΟΤΕ ΓΡΑΨΕ 'ελαφρύς, κοντός' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΑΝ (Β < 80) ΚΑΙ (Υ < 1.70) ΤΟΤΕ ΓΡΑΨΕ 'ελαφρύς, κοντός' ΤΕΛΟΣ_ΑΝ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 53

54 ΑΕΠΠ / ΚΕΦ. 8 ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ Η χρήση εμφωλευμένων ΑΝ οδηγεί σε πολύπλοκες δομές που αυξάνουν την πιθανότητα σφάλματος. Καλό είναι να αποφεύγεται ο έλεγχος περιττών συνθηκών μέσα στις εντολές επιλογής. ΑΝ (ποσ <= 100) ΤΟΤΕ κόστος ποσ * 3.5 ΑΛΛΙΩΣ_ΑΝ (ποσ > 100) ΚΑΙ (ποσ <= 200) ΤΟΤΕ κόστος ποσ * 4.5 ΑΛΛΙΩΣ_ΑΝ (ποσ > 200) ΚΑΙ (ποσ <= 500) ΤΟΤΕ κόστος ποσ * 7.5 ΑΛΛΙΩΣ κόστος ποσ * 8.5 ΤΕΛΟΣ_ΑΝ ΑΝ (ποσ <= 100) ΤΟΤΕ κόστος ποσ * 3.5 ΑΛΛΙΩΣ_ΑΝ (ποσ <= 200) ΤΟΤΕ κόστος ποσ * 4.5 ΑΛΛΙΩΣ_ΑΝ (ποσ <= 500) ΤΟΤΕ κόστος ποσ * 7.5 ΑΛΛΙΩΣ κόστος ποσ * 8.5 ΤΕΛΟΣ_ΑΝ Στις εντολές επανάληψης πρέπει υποχρεωτικά να υπάρχει μέσα στο βρόχο μία εντολή που να μεταβάλλει την τιμή της μεταβλητής που ελέγχεται με την συνθήκη. Διαφορετικά έχουμε άπειρη ανακύκλωση. Α 1 ΟΣΟ (Α <= 100) ΕΠΑΝΑΛΑΒΕ Α Α +... ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Α 1 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Α Α +... ΜΕΧΡΙΣ_ΟΤΟΥ (Α > 100) Στην περίπτωση που δεν είναι γνωστός ο αριθμός των επαναλήψεων, είναι προσωπική επιλογή του προγραμματιστή για το ποια από τις εντολές επανάληψης θα χρησιμοποιήσει (ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ). Κάθε εντολή επανάληψης ΓΙΑ μπορεί να υλοποιηθεί με εντολές ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ. ΓΙΑ Α ΑΠΟ 1 ΜΕΧΡΙ 50 ΜΕ ΒΗΜΑ 2 ΓΡΑΨΕ Α ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Α 1 ΟΣΟ (Α <= 50) ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ Α Α Α + 2 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Α 1 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Α Α Α + 2 ΜΕΧΡΙΣ_ΟΤΟΥ (Α > 50) Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 54

55 ΑΕΠΠ / ΚΕΦ. 8 ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ Το αντίθετο δεν ισχύει πάντα. Αν ο αριθμός των επαναλήψεων είναι γνωστός τότε μπορούμε άνετα να μετατρέψουμε μια ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ σε ΓΙΑ, ενώ αν είναι άγνωστος, η μετατροπή αυτή καθίσταται αδύνατη. ΔΙΑΒΑΣΕ Α ΟΣΟ (Α <> 0) ΕΠΑΝΑΛΑΒΕ S S + A ΔΙΑΒΑΣΕ Α ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Α ΑΝ Α <> 0 ΤΟΤΕ S S + A ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ (Α = 0) ΓΙΑ Α ΑΠΟ ; ΜΕΧΡΙ ; ΜΕ ΒΗΜΑ ; S S + A ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ αδύνατη υλοποίηση ΕΜΦΩΛΕΥΜΕΝΕΣ ΔΟΜΕΣ : ΙΔΙΟΤΗΤΕΣ ΒΡΟΧΩΝ Ο εσωτερικός βρόχος πρέπει να βρίσκεται όλος μέσα στον εξωτερικό (ο βρόχος που ξεκινάει τελευταίος πρέπει να ολοκληρώνεται πρώτος). Η είσοδος σε κάθε βρόχο γίνεται υποχρεωτικά από την αρχή του. Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής και στους δύο βρόχους, όταν είναι εμφωλευμένοι. ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 20 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 55

56 ΚΕΦ.9 ΠΙΝΑΚΕΣ ΑΕΠΠ / ΚΕΦ. 9 ΠΙΝΑΚΕΣ Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. Ο δείκτης είναι μια ακέραια έκφραση σταθερή ή μεταβλητή που τοποθετείται μέσα σε αγκύλες [ ] π.χ. Α[3] Μαθητές[7] Β[5,8] προσπέλαση του 3 ου στοιχείου ενός πίνακα με όνομα Α προσπέλαση του 7 ου στοιχείου ενός πίνακα με όνομα Μαθητές προσπέλαση του στοιχείου της 5 ης γραμμής και 8 ης στήλης ενός πίνακα με όνομα Β Η ανάγνωση, η επεξεργασία και η εκτύπωση των στοιχείων ενός πίνακα γίνεται εύκολα με την εντολή επανάληψης ΓΙΑ Η χρήση του πίνακα δεν είναι πάντα απαραίτητη, αλλά κρίνεται αναγκαία όταν χρειάζεται η αποθήκευση μιας σειράς ομοειδών τιμών για περεταίρω επεξεργασία. ΠΑΡΑΔΕΙΓΜΑ 1 Να γραφεί πρόγραμμα που διαβάζει τις 30 θερμοκρασίες ενός μήνα και υπολογίζει και εμφανίζει την μέση θερμοκρασία του μήνα. ΠΡΟΓΡΑΜΜΑ Χωρίς_πίνακα ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Θ,S,ΜΟ ΑΚΕΡΑΙΕΣ: i ΑΡΧΗ S 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θ S S + Θ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ S / 30 ΓΡΑΨΕ ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΑΡΑΔΕΙΓΜΑ 2 Αν στο παραπάνω πρόγραμμα ζητηθεί να εμφανιστούν και οι θερμοκρασίες των ημερών που είναι μικρότερες της μέσης τιμής, τότε η χρήση πίνακα κρίνεται αναγκαία. Η χρήση του πίνακα σε αυτό το παράδειγμα δεν κρίνεται απαραίτητη, αφού και οι 30 διαφορετικές τιμές αποθηκεύονται διαδοχικά στη μεταβλητή Θ. Το πρόγραμμα υπολογίζει το άθροισμα και τον μέσο όρο των 30 τιμών χωρίς την ανάγκη πίνακα. Με την λήξη της εντολής ΓΙΑ, η μεταβλητή Θ θα διατηρεί την τελευταία (30 η ) τιμή. ΠΡΟΓΡΑΜΜΑ Με_πίνακα ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Θ[30],S,ΜΟ ΑΚΕΡΑΙΕΣ: i ΑΡΧΗ S 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θ[i] S S + Θ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ S / 30 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 ΑΝ Θ[i] < ΜΟ ΤΟΤΕ ΓΡΑΨΕ Θ[i] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 56

57 ΑΕΠΠ / ΚΕΦ. 9 ΠΙΝΑΚΕΣ Ο πίνακας Θ του προηγούμενου παραδείγματος, καταχωρεί ακολουθιακά (σε συνεχόμενα κελιά) τις 30 τιμές του στην μνήμη, όπως φαίνεται στο διπλανό σχήμα. ΠΛΕΟΝΕΚΤΗΜΑΤΑ Η χρήση πινάκων είναι ο πιο βολικός τρόπος για την διαχείριση πολλών δεδομένων του ιδίου τύπου. Αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη μέχρι το τέλος της εκτέλεσης (για περαιτέρω επεξεργασία), τότε η χρήση ενός πίνακα είναι απαραίτητη. ΜΕΙΟΝΕΚΤΗΜΑΤΑ Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει κατά την δήλωσή του πολλές θέσεις μνήμης, άσχετα από τον αν τις χρησιμοποιεί όλες ή όχι. Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Επειδή έχουν σταθερό μέγεθος, δεν μπορούν να καλύψουν την ανάγκη για επιπλέον θέσεις αν αυτό χρειαστεί μέσα στο πρόγραμμα. ΤΥΠΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ Υπολογισμός αθροισμάτων στοιχείων πίνακα Εύρεση μεγίστου ελαχίστου σε πίνακα Ταξινόμηση του πίνακα (φυσαλίδα) Αναζήτηση ενός στοιχείου σε πίνακα (σειριακή ή δυαδική) Συγχώνευση δύο πινάκων Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 57

58 ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Όπως γνωρίζουμε ήδη, τα σύνθετα προβλήματα προκειμένου να αντιμετωπισθούν και να γραφούν τα αντίστοιχα προγράμματα, πρέπει πρώτα να ακολουθηθεί η τεχνική της Ιεραρχικής Σχεδίασης (top-down design) από πάνω προς τα κάτω. Έτσι κάθε δοθέν πρόβλημα αναλύεται σε μικρότερα και αυτά σε ακόμα μικρότερα μέχρι το σημείο στο οποίο φτάνουμε σε προβλήματα με προφανή και εύκολη λύση. Τότε οι αλγόριθμοι και τα τμήματα προγράμματος μπορούν να σχεδιαστούν και να γραφούν εύκολα για κάθε υποπρόβλημα. Τμηματικός Προγραμματισμός είναι η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Υποπρόγραμμα (Subprogram) είναι ένα τμήμα προγράμματος που επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα. ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ Ο χωρισμός του προγράμματος σε ανεξάρτητα υποπρογράμματα προϋποθέτει το αρχικό πρόβλημα να έχει αναλυθεί σε υποπροβλήματα βάσει της ιεραρχικής σχεδίασης. Δεν υπάρχουν κανόνες σωστής ανάλυσης. Ο τμηματικός προγραμματισμός απαιτεί μελέτη και ανάλυση του προβλήματος, εμπειρία στο προγραμματισμό, γνώσεις και ταλέντο. ΙΔΙΟΤΗΤΕΣ ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ Να έχει μία μόνο είσοδο και μία έξοδο Η είσοδος γίνεται πάντα από την αρχή του, ακολουθεί σειρά ενεργειών επεξεργασίας και η έξοδος γίνεται πάντα από το τέλος του. Να είναι ανεξάρτητο από τα άλλα Δηλαδή κάθε υποπρόγραμμα σχεδιάζεται, αναπτύσσεται και συντηρείται αυτόνομα, χωρίς να επηρεάζει τα άλλα. Να μην είναι πολύ μεγάλο Πρέπει να εκτελεί μόνο μία λειτουργία, ώστε να είναι κατανοητό και να ελέγχεται Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 58

59 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΜΗΜΑΤΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εύκολη ανάπτυξη αλγορίθμου και προγράμματος Με σταδιακή επίλυση των υποπροβλημάτων και δημιουργία αντίστοιχων υποπρογραμμάτων και όχι κατευθείαν αντιμετώπιση του αρχικού προβλήματος. Εύκολη κατανόηση και διόρθωση προγράμματος Ένα υποπρόγραμμα μπορεί να διορθωθεί ευκολότερα από ότι το συνολικό πρόγραμμα, χωρίς βέβαια η διόρθωση να επηρεάζει κάποιο άλλο. Επίσης με την τμηματοποίηση, το πρόγραμμα είναι ευκολότερο να κατανοηθεί και να διαβαστεί από κάποιον συντηρητή προγραμματιστή. Λιγότερος χρόνος και προσπάθεια για συγγραφή προγράμματος Επειδή η ίδια λειτουργία μέσα σε ένα πρόγραμμα μπορεί να επαναλαμβάνεται, για το λόγο αυτό γράφουμε ένα υποπρόγραμμα που εκτελεί την λειτουργία αυτή και το καλούμε από πολλά σημεία μέσα στο πρόγραμμα. Έτσι μειώνεται ο χρόνος συγγραφής καθώς και η πιθανότητα λάθους. Επέκταση δυνατοτήτων στις γλώσσες προγραμματισμού Ένα υποπρόγραμμα μπορεί να χρησιμοποιηθεί σε περισσότερα του ενός προγράμματα. Η χρήση του είναι ίδια με αυτήν των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού (π.χ. ημίτονο, συνημίτονο). Αν μια γλώσσα δεν υποστηρίζει μια λειτουργία, τότε αυτή παρέχεται από τα υποπρογράμματα μιας άλλης γλώσσας μέσω της χρήσης βιβλιοθηκών υποπρογραμμάτων. ΠΑΡΑΜΕΤΡΟΙ Η ενεργοποίηση ενός υποπρογράμματος γίνεται μέσα από την κλήση του (το κάλεσμά του). Η κλήση ενός υποπρογράμματος γίνεται από το αρχικό πρόγραμμα ή από κάποιο άλλο υποπρόγραμμα που λέγεται κύριο πρόγραμμα. Το υποπρόγραμμα δέχεται τιμές από το τμήμα προγράμματος που το καλεί και αφού κάνει την εκτέλεσή του, επιστρέφει σε αυτό νέες τιμές ως αποτελέσματα. Παράμετροι (parameters) είναι οι τιμές που περνούν μεταξύ των υποπρογραμμάτων και είναι σαν τις κοινές μεταβλητές. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 59

60 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΑΤΗΓΟΡΙΕΣ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ Ανάλογα με την λειτουργία που εκτελούν, τα υποπρογράμματα διακρίνονται σε δύο βασικές κατηγορίες : διαδικασίες (εκτελούν κάθε λειτουργία που μπορεί να εκτελέσει και το πρόγραμμα) συναρτήσεις (η χρήση τους είναι πιο περιορισμένη). Και οι δύο τύποι υποπρογραμμάτων τοποθετούνται μετά το τέλος του κυρίου προγράμματος, ενώ ο τρόπος κλήσης και σύνταξής τους είναι διαφορετικός. ΣΥΝΑΡΤΗΣΗ (Function) Η συνάρτηση είναι τύπος υποπρογράμματος που υπολογίζει μία τιμή (αριθμητική, χαρακτήρα ή λογική) και την επιστρέφει μέσα από το όνομά της, όπως οι μαθηματικές συναρτήσεις. Η συνάρτηση επιστρέφει την τιμή στο υποπρόγραμμα που την κάλεσε και η χρήση της είναι παρόμοια με αυτή των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού. Η τιμή που επιστρέφει μπορεί να είναι κάθε δυνατού τύπου δεδομένων, δηλαδή ακεραίου, πραγματικού, χαρακτήρα, λογικού. Η βασική δομή μιας συνάρτησης είναι η ακόλουθη : ΣΥΝΑΡΤΗΣΗ όνομα (λίστα παραμέτρων):τύπος συνάρτησης Τμήμα δηλώσεων ΑΡΧΗ όνομα έκφραση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Το όνομα της συνάρτησης πρέπει να είναι έγκυρο σύμφωνα με τους κανόνες ονομάτων της ΓΛΩΣΣΑΣ. Η λίστα παραμέτρων είναι μια λίστα από μεταβλητές, στις οποίες μεταβιβάζονται τιμές από το κυρίως πρόγραμμα κατά την κλήση της συνάρτησης. Επειδή η συνάρτηση επιστρέφει την τιμή της στο κυρίως πρόγραμμα μέσα από το όνομά της, θα πρέπει στο σώμα της να περιέχει μια εντολή εκχώρησης τιμής στο όνομα της συνάρτησης (δηλαδή όνομα έκφραση). Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 60

61 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΣΗΜΕΙΩΣΗ Μια συνάρτηση μπορεί να κληθεί ακριβώς στα ίδια σημεία του προγράμματος που καλούνται οι ενσωματωμένες μαθηματικές συναρτήσεις της ΓΛΩΣΣΑΣ, δηλαδή: εντολές εκχώρησης π.χ. Χ συναρ(α,β) εντολές εξόδου π.χ. ΓΡΑΨΕ 'Αποτέλεσμα = ', συναρ(α,β) λογικές εκφράσεις π.χ. ΑΝ συναρ(α,β) >= 12 ΤΟΤΕ ΠΑΡΑΔΕΙΓΜΑ κλήση συνάρτησης ΠΡΟΓΡΑΜΜΑ Παράδειγμα ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Α,Β,M ΑΡΧΗ ΔΙΑΒΑΣΕ Α, Β Μ MAX(Α,Β) ΓΡΑΨΕ Μ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ MAX(Χ,Υ): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Χ,Υ ΑΡΧΗ ΑΝ Χ > Υ ΤΟΤΕ MAX Χ ΑΛΛΙΩΣ MAX Υ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΔΙΑΔΙΚΑΣΙΑ (Procedure) Η διαδικασία είναι τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος (είσοδο δεδομένων, εκτύπωση αποτελεσμάτων, τροποποίηση τιμής μεταβλητών κλπ). Η διαδικασία μεταβιβάζει τιμές στα άλλα υποπρογράμματα με χρήση παραμέτρων και όχι του ονόματός της Το όνομα της διαδικασίας πρέπει να είναι έγκυρο σύμφωνα με τους κανόνες της ΓΛΩΣΣΑΣ. Η βασική δομή μιας διαδικασίας είναι η ακόλουθη : ΔΙΑΔΙΚΑΣΙΑ όνομα (λίστα παραμέτρων) Τμήμα δηλώσεων ΑΡΧΗ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ Από την λίστα παραμέτρων (μεταβλητών), κάποιες χρησιμοποιούνται για να μεταβιβάσουν τιμές μέσα στη διαδικασία από την κλήση της και κάποιες για να επιστρέψουν τιμές μέσα στο κυρίως πρόγραμμα. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 61

62 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Να σημειωθεί ότι η λίστα παραμέτρων στην διαδικασία δεν είναι υποχρεωτική. Η κλήση της διαδικασίας γίνεται ξεχωριστή εντολή με την δεσμευμένη λέξη ΚΑΛΕΣΕ που ακολουθείται από το όνομα και την λίστα παραμέτρων της διαδικασίας: ΚΑΛΕΣΕ όνομα διαδικασίας (λίστα παραμέτρων) Με την κλήση της διαδικασίας, η εκτέλεση του κυρίως προγράμματος διακόπτεται και εκτελούνται οι εντολές του σώματος της διαδικασίας. Όταν ολοκληρωθεί η εκτέλεση των εντολών της διαδικασίας, η εκτέλεση του προγράμματος συνεχίζεται από την επόμενη εντολή (επιστροφή στο σημείο κλήσης). ΠΑΡΑΔΕΙΓΜΑ κλήση διαδικασίας ΠΡΟΓΡΑΜΜΑ Παράδειγμα ΔΙΑΔΙΚΑΣΙΑ TEST(Χ,Υ,max,min) ΜΕΤΑΒΛΗΤΕΣ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α,Β,μεγ,ελαχ ΑΚΕΡΑΙΕΣ: Χ,Υ,max,min ΑΡΧΗ ΑΡΧΗ ΔΙΑΒΑΣΕ Α, Β ΑΝ Χ > Υ ΤΟΤΕ ΚΑΛΕΣΕ TEST(Α,Β,μεγ,ελαχ) max Χ ΓΡΑΨΕ μεγ min Y ΓΡΑΨΕ ελαχ ΑΛΛΙΩΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ max Υ min X ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΑΓΜΑΤΙΚΕΣ & ΤΥΠΙΚΕΣ ΠΑΡΑΜΕΤΡΟΙ Κατά την κλήση ενός υποπρογράμματος γίνεται πέρασμα τιμών από τις παραμέτρους του κυρίως προγράμματος στο υποπρόγραμμα που καλείται. Οι παράμετροι που βρίσκονται στην εντολή κλήσης αποτελούν την λίστα πραγματικών παραμέτρων (formal parameters), ενώ αυτές που βρίσκονται μέσα στο υποπρόγραμμα που καλείται αποτελούν την λίστα τυπικών παραμέτρων (actual parameters). Οι πραγματικές παράμετροι δηλώνονται πάντα μέσα στο κυρίως πρόγραμμα ενώ οι τυπικές μέσα στο υποπρόγραμμα στο οποίο χρησιμοποιούνται. Τα ονόματα των πραγματικών και των αντίστοιχων τυπικών παραμέτρων μπορεί να είναι και τα ίδια (όμως οι μεταβλητές είναι διαφορετικές). Όλες οι μεταβλητές ισχύουν τοπικά, δηλαδή μόνο μέσα στο τμήμα προγράμματος στο οποίο έχουν δηλωθεί. Σε κάποιες γλώσσες προγραμματισμού οι τυπικές παράμετροι ονομάζονται ορίσματα, ενώ οι πραγματικές παράμετροι απλά παράμετροι. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 62

63 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Η λίστα τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος, ενώ η λίστα των πραγματικών παραμέτρων καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος. Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες: Ίδιος αριθμός των πραγματικών και των τυπικών παραμέτρων. Κάθε πραγματική παράμετρος αντιστοιχίζεται με την τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση μέσα στη λίστα παραμέτρων του υποπρογράμματος. Οι αντίστοιχες τυπικές και πραγματικές παράμετροι (που συνδέονται μεταξύ τους κατά την κλήση) πρέπει να είναι του ιδίου τύπου δεδομένων. ΚΛΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΣΤΟΙΒΑΣ Όταν ένα υποπρόγραμμα καλείται από το κυρίως πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση του προγράμματος, γνωστή και ως διεύθυνση επιστροφής (return address), αποθηκεύεται (ωθείται - push) προσωρινά από τον μεταφραστή σε μία στοίβα που ονομάζεται στοίβα χρόνου εκτέλεσης (execution time stack). Όταν το υποπρόγραμμα ολοκληρώνεται, η διεύθυνση επιστροφής απωθείται (pop) από την στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κυρίως πρόγραμμα. Με τον τρόπο αυτό το κυρίως πρόγραμμα μπορεί να θυμάται το σημείο στο οποίο θα πρέπει να επιστρέψει μετά την ολοκλήρωση του υποπρογράμματος, έτσι ώστε να συνεχίσει την εκτέλεση των εντολών του π.χ. Έστω ότι το υποπρόγραμμα Α καλεί το υποπρόγραμμα Β που καλεί το υποπρόγραμμα Γ. Οι διευθύνσεις επιστροφής των υποπρογραμμάτων Α και Β ωθούνται με την σειρά σε μία στοίβα και απωθούνται με την αντίστροφη σειρά κατά την φάση της εκάστοτε επιστροφής στο σημείο της κλήσης. Μετά το τέλος της εκτέλεσης της διαδικασίας ή της συνάρτησης γίνεται επιστροφή ακριβώς μετά το σημείο απ' όπου κλήθηκε. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 63

64 ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ - ΣΤΑΘΕΡΩΝ Κάθε κύριο πρόγραμμα όπως και κάθε υποπρόγραμμα περιλαμβάνει τις δικές του μεταβλητές και σταθερές. Όλες οι μεταβλητές στη ΓΛΩΣΣΑ είναι γνωστές μόνο στο αντίστοιχο υποπρόγραμμα που δηλώνονται. Θεωρούνται τοπικές στο συγκεκριμένο τμήμα προγράμματος και άρα ισχύουν μόνο μέσα σε αυτό. Ο μόνος τρόπος για να περάσει μία τιμή από ένα υποπρόγραμμα σε ένα άλλο ή από το κυρίως πρόγραμμα σε ένα υποπρόγραμμα είναι διαμέσου των παραμέτρων κατά το στάδιο της κλήσης του υποπρογράμματος και μετά το τέλος της εκτέλεσης του υποπρογράμματος. Εμβέλεια μεταβλητών (variables scope) ονομάζεται το συγκεκριμένο τμήμα του προγράμματος που ισχύουν οι μεταβλητές. Πολλές γλώσσες προγραμματισμού επιτρέπουν τη χρήση των μεταβλητών και των σταθερών, όχι μόνο στο τμήμα προγράμματος που δηλώνονται, αλλά και σε άλλα ή ακόμη και σε όλα τα υπόλοιπα υποπρογράμματα. ΑΠΕΡΙΟΡΙΣΤΗ ΕΜΒΕΛΕΙΑ Όλες οι μεταβλητές και σταθερές είναι γνωστές σε οποιοδήποτε τμήμα του προγράμματος. Συνεπώς, μπορούν να χρησιμοποιούνται σε κάθε τμήμα άσχετα από το που έχουν δηλωθεί. Οι μεταβλητές και σταθερές αυτές ονομάζονται καθολικές (global). Βασικό μειονέκτημα είναι ότι η χρήση τους καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων. Δημιουργεί πολλά προβλήματα όντας αδύνατη για μεγάλα προγράμματα με πολλά υποπρογράμματα. ΠΕΡΙΟΡΙΣΜΕΝΗ ΕΜΒΕΛΕΙΑ Όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, πρέπει να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές (local), δηλαδή ισχύουν μόνο για το υποπρόγραμμα στο οποίο δηλώθηκαν. Βασικό πλεονέκτημα είναι η απόλυτη αυτονομία όλων των υποπρογραμμάτων. Δυνατότητα χρήσης οποιουδήποτε ονόματος, χωρίς να ενδιαφέρει αν το ίδιο χρησιμοποιείται σε άλλο υποπρόγραμμα. ΜΕΡΙΚΩΣ ΠΕΡΙΟΡΙΣΜΕΝΗ ΕΜΒΕΛΕΙΑ Κάποιες μεταβλητές είναι τοπικές και κάποιες άλλες είναι καθολικές. Κάθε γλώσσα έχει τους δικούς της κανόνες για τον τρόπο καθορισμού των μεταβλητών ως τοπικές ή καθολικές. Αυτή η μορφή εμβέλειας δίνει πλεονεκτήματα στον έμπειρο προγραμματιστή. Στον αρχάριο προγραμματιστή καθιστά δυσκολότερη την ανάπτυξη του προγράμματος. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 64

65 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Α ΤΥΠΟΛΟΓΙΟ ΨΕΥΔΟΓΛΩΣΣΑΣ ΠΑΡΑΡΤΗΜΑ Α - ΤΥΠΟΛΟΓΙΟ ΨΕΥΔΟΓΛΩΣΣΑΣ Τίτλος αλγορίθμου Αλγόριθμος Όνομα_Αλγορίθμου Τερματισμός αλγορίθμου Τέλος Όνομα_Αλγορίθμου Τελεστές Αριθμητικοί : + - * / div mod ^ Συγκριτικοί : = < > Λογικοί : και ή όχι Δεδομένα εισόδου : Δεδομένα // // Έξοδος αποτελεσμάτων : Αποτελέσματα // // Είσοδος - Έξοδος Εκχώρηση τιμής Εισαγωγή δεδομένων: Διάβασε μετ1, μετ2,, μετν Εμφάνιση στην οθόνη: Εμφάνισε αποτ1, αποτ2,, αποτν Εκτύπωση στον εκτυπωτή: Εκτύπωσε αποτ1, αποτ2,, αποτν μεταβλητή σταθερά μεταβλητή μεταβλητή μεταβλητή έκφραση Αν συνθ τότε εντολές Τέλος_αν Αν συνθ τότε εντολές 1 αλλιώς εντολές 2 Τέλος_αν Δομές επιλογής Δομές επανάληψης Σχόλια Αν (συνθ) τότε εντολές Αλλιώς_αν (συνθ) τότε εντολές Αλλιώς_αν (συνθ) τότε εντολές Αλλιώς εντολές Τέλος_αν Όσο (συνθ) επανάλαβε εντολές Τέλος_Επανάληψης Αρχή_Επανάληψης εντολές Μέχρις_Ότου (συνθ) Για μεταβλητή από τιμή1 μέχρι τιμή2 με_βήμα β Εντολές Τέλος_Επανάληψης! ότι ακολουθεί το θαυμαστικό στην ίδια γραμμή είναι σχόλιο Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 65

66 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Β ΤΥΠΟΛΟΓΙΟ ΓΛΩΣΣΑΣ ΠΑΡΑΡΤΗΜΑ Β - ΤΥΠΟΛΟΓΙΟ ΓΛΩΣΣΑΣ Τίτλος προγράμματος Τερματισμός προγράμματος Τύποι Δεδομένων Ορισμός σταθερών Δήλωση μεταβλητών Τελεστές ΠΡΟΓΡΑΜΜΑ Όνομα_Προγράμματος ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΚΕΡΑΙΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, ΧΑΡΑΚΤΗΡΕΣ, ΛΟΓΙΚΕΣ ΣΤΑΘΕΡΕΣ όνομα_1 = τιμή1 όνομα_ν = τιμήν ΜΕΤΑΒΛΗΤΕΣ Τύπος δεδομένων : λίστα μεταβλητών Τύπος δεδομένων : λίστα μεταβλητών Αριθμητικοί : + - * / div mod ^ Συγκριτικοί : = <> <= < >= > Λογικοί : ΚΑΙ Ή ΟΧΙ Είσοδος - Έξοδος Εισαγωγή δεδομένων: Εμφάνιση στην οθόνη: ΔΙΑΒΑΣΕ μετ1, μετ2,, μετν ΓΡΑΨΕ αποτ1, αποτ2,, αποτν Συναρτήσεις Εκχώρηση τιμής Δομές επιλογής Δομές επανάληψης Σχόλια ΗΜ (Χ) Ημίτονο Χ ΛΟΓ (Χ) Λογάριθμος του Χ ΣΥΝ (Χ) Συνημίτονο Χ Ε (Χ) e x ΕΦ (Χ) Εφαπτομένη Χ Α_Μ (Χ) Ακέραιο μέρος του Χ Τ_Ρ (Χ) Τετραγωνική ρίζα του Χ Α_Τ (Χ) Απόλυτη τιμή του Χ μεταβλητή έκφραση ΑΝ συνθ ΤΟΤΕ εντολές ΤΕΛΟΣ_ΑΝ ΑΝ (συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ_ΑΝ (συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ_ΑΝ (συνθ) ΤΟΤΕ εντολές ΑΛΛΙΩΣ εντολές ΤΕΛΟΣ_ΑΝ ΌΣΟ (συνθ) ΕΠΑΝΑΛΑΒΕ εντολές ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ συνθ ΤΟΤΕ εντολές 1 ΑΛΛΙΩΣ εντολές 2 ΤΕΛΟΣ_ΑΝ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ εντολές ΜΕΧΡΙΣ_ΌΤΟΥ (συνθ) ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ β εντολές ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ! ότι ακολουθεί το θαυμαστικό στην ίδια γραμμή είναι σχόλιο Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 66

67 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Γ ΠΙΝΑΚΑΣ ASCII ΠΑΡΑΡΤΗΜΑ Γ - ΠΙΝΑΚΑΣ ASCII Ο πίνακας αυτός είναι χρήσιμος κατά τη σύγκριση αλφαριθμητικών δεδομένων. Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 67

68 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΠΑΡΑΡΤΗΜΑ Δ - ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Συνήθεις αλγόριθμοι για ένα πίνακα Α με Ν στοιχεία ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ & ΜΕΣΟΥ ΟΡΟΥ Δεδομένα // Α,Ν // Σ 0 Για i από 1 μέχρι Ν Σ Σ + Α[i] ΜΟ Σ/Ν Αποτελέσματα // Σ,ΜΟ // ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ Δεδομένα // Α,Ν // max Α[1] min Α[1] Για i από 2 μέχρι Ν Αν Α[i] > max τότε max Α[i] Τέλος_αν Αν Α[i] < min τότε min Α[i] Τέλος_αν Αποτελέσματα // max,min // ΑΝΑΣΤΡΟΦΗ ΜΟΝΟΔΙΑΣΤΑΤΟΥ Δεδομένα // Α,Ν // Για i από 1 μέχρι Ν div 2 temp Α[i] A[i] A[N+1-i] A[N+1-i] temp Αποτελέσματα // A // ΣΥΝΕΝΩΣΗ ΠΙΝΑΚΩΝ Α[Ν], Β[Μ] Δεδομένα // Α,B,Ν,M // Για i από 1 μέχρι Ν Γ[i] Α[i] κ Ν+1 Για i από 1 μέχρι Μ Γ[κ] Β[i] κ κ + 1 Αποτελέσματα // Γ // ΜΗΔΕΝΙΣΜΟΣ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ Δεδομένα // Α,Ν // Για i από 1 μέχρι Ν Α[i] 0 Αποτελέσματα // Α // ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ (με θέσεις) Δεδομένα // Α,Ν // max Α[1] min Α[1] minp 1 maxp 1 Για i από 2 μέχρι Ν Αν Α[i] > max τότε max Α[i] maxp i Τέλος_αν Αν Α[i] < min τότε min Α[i] minp i Τέλος_αν Αποτελέσματα // max,min,maxp,minp // ΣΥΓΧΩΝΕΥΣΗ ΤΑΞΙΝ. ΠΙΝΑΚΩΝ Α[Ν], Β[Μ] Δεδομένα // Α,Β,Ν,Μ // i 1 j 1 k 1 Όσο i Ν και j Μ επανάλαβε Αν Α[i] < Β[j] τότε Γ[k] A[i] i i + 1 Αλλιώς Γ[k] Β[j] j j + 1 Τέλος_αν k k + 1 Αν i > Ν τότε Για χ από j μέχρι Μ Γ[k] Β[χ] k k + 1 Αλλιώς Για χ από i μέχρι Ν Γ[k] Α[χ] k k + 1 Τέλος_αν Αποτελέσματα // Γ // Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 68

69 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ) Δεδομένα // Α,Ν,key // i 1 found Ψευδής Όσο (i Ν) και (found = Ψευδής) επανάλαβε Αν (Α[i] = key) τότε found Αληθής pos i αλλιώς i i + 1 Τέλος_Αν Αν (found = Αληθής) τότε Εμφάνισε "Βρέθηκε στη θέση",pos αλλιώς Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ) Δεδομένα // Α,Ν,key // found Ψευδής Για i από 1 μέχρι Ν Αν Α[i] = key τότε found Αληθής Εμφάνισε "Βρέθηκε στη θέση",i Τέλος_Αν Αν found = Ψευδής τότε Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ) (πίνακας ταξινομημένος) Δεδομένα // Α,Ν,key // i 1 found Ψευδής Όσο (i Ν) και (found = Ψευδής) και & (Α[i] <= key) επανάλαβε Αν (Α[i] = key) τότε found Αληθής pos i αλλιώς i i + 1 Τέλος_Αν Αν (found = Αληθής) τότε Εμφάνισε "Βρέθηκε στη θέση",pos αλλιώς Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ) (πίνακας ταξινομημένος) Δεδομένα // Α,Ν,key // i 1 found Ψευδής Όσο (i Ν) και (Α[i] <= key) επανάλαβε Αν Α[i] = key τότε found Αληθής Εμφάνισε "Βρέθηκε στη θέση",i Τέλος_Αν i i + 1 Αν found = Ψευδής τότε Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ (πίνακας αύξουσας διάταξης) Δεδομένα // Α,Ν,key // start 1 end Ν found Ψευδής Όσο (start end) και (found = Ψευδής) επανάλαβε μέσο (start + end) div 2 Αν Α[μέσο] = key τότε found Αληθής Εμφάνισε "Βρέθηκε στη θέση", μέσο αλλιώς_αν Α[μέσο] > key τότε end μέσο - 1 αλλιώς start μέσο + 1 Τέλος_Αν Αν (found = Ψευδής) τότε Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 69

70 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ (ΦΥΣΑΛΙΔΑ) Δεδομένα // Α,Ν // Για i από 2 μέχρι Ν Για j από Ν μέχρι i με_βήμα 1 Αν Α[j-1] > Α[j] τότε temp Α[j-1] A[j-1] A[j] A[j] temp Τέλος_Αν Αποτελέσματα // Α // Υποχρεωτική εκτέλεση Ν-1 επαναλήψεων έστω και αν ο πίνακας έχει ήδη ταξινομηθεί. ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗΣ (Α Τρόπος) Δεδομένα // A,N // Για i από 1 μέχρι N-1 pos i min A[i] Για j από i+1 μέχρι N Αν A[j] < min τότε pos j min A[j] Τέλος_αν A[pos] A[i] A[i] min Αποτελέσματα // A // ΕΞΥΠΝΗ ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ Δεδομένα // Α,Ν // i 2 Αρχή_Επανάληψης F Αληθής Για j από N μέχρι i με_βήμα -1 Αν Α[j-1] > Α[j] τότε temp Α[j-1] A[j-1] A[j] A[j] temp F Ψευδής Τέλος_Αν i i + 1 Μέχρις_Ότου F = Αληθής ή i > Ν Αποτελέσματα // Α // Αποφυγή περιττών επαναλήψεων αν ο πίνακας έχει ήδη ταξινομηθεί. ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗΣ (Β Τρόπος) Δεδομένα // A,N // Για i από 1 μέχρι N-1 pos i Για j από i+1 μέχρι N Αν A[j] < A[pos] τότε pos j Τέλος_αν temp A[pos] A[pos] A[i] A[i] temp Αποτελέσματα // A ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΙΣΑΓΩΓΗΣ (INSERTION SORT) Δεδομένα // A,N // Για i από 2 μέχρι N j i F Ψευδής Όσο j > 1 και F = Ψευδής επανάλαβε Αν Α[j] < Α[j-1] τότε temp A[j] A[j] A[j-1] A[j-1] temp j j -1 αλλιώς F Αληθής Τέλος_αν Αποτελέσματα // A // Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 70

71 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Συνήθεις αλγόριθμοι για ένα πίνακα Α με Ν γραμμές και Μ στήλες ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ & ΜΕΣΟΥ ΟΡΟΥ Δεδομένα // Α,Ν,Μ // Σ 0 Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Σ Σ + Α[i,j] ΜΟ Σ/(Ν*Μ) Αποτελέσματα // Σ,ΜΟ // ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ (με θέσεις) Δεδομένα // Α,Ν,Μ // max Α[1,1] min Α[1,1] minγ 1 minσ 1 maxγ 1 maxσ 1 Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Αν Α[i,j] > max τότε max Α[i,j] maxγ i maxσ j Τέλος_αν Αν Α[i,j] < min τότε min Α[i,j] minγ i minσ j Τέλος_αν Αποτελέσματα // max,min,maxγ,maxσ & minγ,minσ // ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ Δεδομένα // Α,Ν,Μ // max Α[1,1] min Α[1,1] Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Αν Α[i,j] > max τότε max Α[i,j] Τέλος_αν Αν Α[i,j] < min τότε min Α[i,j] Τέλος_αν Αποτελέσματα // max,min // ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ) Δεδομένα // Α,Ν,Μ,key // i 1 found Ψευδής Όσο (i Ν) και (found = Ψευδής) επανάλαβε j 1 Όσο (j M) και (found = Ψευδής) επανάλαβε Αν (Α[i,j] = key) τότε found Αληθής pos1 i pos2 j αλλιώς j j + 1 Τέλος_Αν i i + 1 Αν (found = Αληθής) τότε Εμφάνισε "Βρέθηκε στη θέση",pos1,pos2 αλλιώς Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ) Δεδομένα // Α,Ν,M,key // found Ψευδής Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Αν Α[i,j] = key τότε found Αληθής Εμφάνισε "Βρέθηκε στην",i,j Τέλος_Αν Αν found = Ψευδής τότε Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 71

72 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΤΑ ΓΡΑΜΜΕΣ & ΚΑΤΑ ΣΤΗΛΕΣ ΕΥΡΕΣΗ ΑΘΡΟΙΣMΑΤΩΝ - MO / ΓΡΑΜΜΕΣ Δεδομένα // Α,Ν,Μ // Για i από 1 μέχρι Ν Σ 0 Για j από 1 μέχρι Μ Σ Σ + Α[i,j] ΜΟ Σ / Μ Εμφάνισε Σ, MO ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΩΝ - MO / ΣΤΗΛΕΣ Δεδομένα // Α,Ν,Μ // Για j από 1 μέχρι M Σ 0 Για i από 1 μέχρι N Σ Σ + Α[i,j] MO Σ / Ν Εμφάνισε Σ, MO ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ / ΓΡΑΜΜΕΣ Δεδομένα // Α,Ν,Μ // Για i από 1 μέχρι Ν max A[i,1] Για j από 2 μέχρι Μ Αν Α[i,j] > max τότε max Α[i,j] Τέλος_Αν Εμφάνισε max ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ / ΣΤΗΛΕΣ Δεδομένα // Α,Ν,Μ // Για j από 1 μέχρι M max A[1,j] Για i από 2 μέχρι N Αν Α[i,j] > max τότε max Α[i,j] Τέλος_Αν Εμφάνισε max ΕΥΡΕΣΗ ΘΕΣΗΣ ΜΕΓΙΣΤΟΥ / ΓΡΑΜΜΕΣ Δεδομένα // Α,Ν,Μ // Για i από 1 μέχρι Ν max A[i,1] pos 1 Για j από 2 μέχρι Μ Αν Α[i,j] > max τότε max Α[i,j] pos j Τέλος_Αν Εμφάνισε pos ΕΥΡΕΣΗ ΘΕΣΗΣ ΜΕΓΙΣΤΟΥ / ΣΤΗΛΕΣ Δεδομένα // Α,Ν,Μ // Για j από 1 μέχρι M max A[1,j] pos 1 Για i από 2 μέχρι N Αν Α[i,j] > max τότε max Α[i,j] pos i Τέλος_Αν Εμφάνισε pos ΤΟΠΟΘΕΤΗΣΗ ΣΕ ΠΙΝΑΚΑ B ΤΩΝ ΚΑΤA ΓΡΑΜΜΕΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ TOY A Δεδομένα // Α,Ν,Μ // Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Β[i] ΤΟΠΟΘΕΤΗΣΗ ΣΕ ΠΙΝΑΚΑ B ΤΩΝ ΚΑΤΑ ΣΤΗΛΕΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ TOY A Δεδομένα // Α,Ν,Μ // Για j από 1 μέχρι Μ Για i από 1 μέχρι Ν Β[j] Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 72

73 ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ Αν στον παρακάτω τετραγωνικό πίνακα N*N θεωρήσουμε τον δείκτη i ως δείκτη γραμμών και τον δείκτη j ως δείκτη στηλών, τότε για κάθε στοιχείο (i,j) του πίνακα μπορούμε να αποφανθούμε ότι βρίσκεται: Στην κύρια διαγώνιο αν i = j στοιχείο (i, i) Πάνω από την κύρια διαγώνιο αν i < j Κάτω από την κύρια διαγώνιο αν i > j Στην δευτερεύουσα διαγώνιο αν i + j = N+1 στοιχείο (i,n+1-i) Πάνω από την δευτερεύουσα διαγώνιο αν i + j < N+1 Κάτω από την δευτερεύουσα διαγώνιο αν i + j > N+1 ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ ΣΤΟΙΧΕΙΩΝ ΔΙΑΓΩΝΙΩΝ Α τρόπος (προσπέλαση ολόκληρου του πίνακα) Β τρόπος (προσπέλαση μόνο των διαγώνιων) Δεδομένα // Α,Ν // Σ1 0 Σ2 0 Για i από 1 μέχρι Ν Για j από 1 μέχρι Ν Αν i = j τότε Σ1 Σ1 + Α[i,j] Τέλος_Αν Αν i+j = N+1 τότε Σ2 Σ2 + Α[i,j] Τέλος_Αν Αποτελέσματα // Σ1,Σ2 // ΕΜΦΑΝΙΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΩ ΤΡΙΓΩΝΙΚΟΥ (ΜΟΝΟ) Για i από 1 μέχρι Ν-1 Για j από i+1 μέχρι Ν Εμφάνισε Α[i,j] Δεδομένα // Α,Ν // Σ1 0 Σ2 0 Για i από 1 μέχρι Ν Σ1 Σ1 + Α[i,i] Σ2 Σ2 + Α[i,Ν+1-i] Αποτελέσματα // Σ1,Σ2 // ΕΜΦΑΝΙΣΗ ΣΤΟΙΧΕΙΩΝ ΚΑΤΩ ΤΡΙΓΩΝΙΚΟΥ (ΜΟΝΟ) Για j από 1 μέχρι Ν-1 Για i από j+1 μέχρι Ν Εμφάνισε Α[i,j] Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 73

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο Εισαγωγή - Βασικές έννοιες Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος 2012-13 A Εξάμηνο Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων

Διαβάστε περισσότερα

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

Διαβάστε περισσότερα

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ Α ΜΕΡΟΣ ΘΕΩΡΙΑ ΓΙΑ ΠΙΝΑΚΕΣ 3.1

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με: Αλγόριθμοι 2.2.1. Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά εντολών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Τα κυριότερα χρησιμοποιούμενα

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

Διαβάστε περισσότερα

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΔΕΔΟΜΕΝΑ ΑΛΓΟΡΙΘΜΟΙ -ΠΛΗΡΟΦΟΡΙΑ: Δεδομένα: Αναπαράσταση της Πραγματικότητας Μπορούν να γίνουν αντιληπτά με μια από τις αισθήσεις μας Πληροφορία: Προκύπτει από

Διαβάστε περισσότερα

Πρόβλημα 37 / σελίδα 207

Πρόβλημα 37 / σελίδα 207 Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Πίνακες και βασικές επεξεργασίες αυτών Σκοπιές από τις οποίες μελετά η πληροφορική τα δεδομένα Γλωσσών προγραμματισμού Υλικού Δομών δεδομένων Ανάλυσης δεδομένων 22/11/08 Παρουσιάσεις

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία: Επικοινωνία: spzygouris@gmail.com Να δοθεί ο ορισμός του Αλγορίθμου. Αλγόριθμος, σύμφωνα με το βιβλίο, είναι μια πεπερασμένη σειρά ενεργειών (όχι άπειρες), αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

Διαβάστε περισσότερα

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

! Δεν μπορούν να λυθούν όλα τα προβλήματα κάνοντας χρήση του παρ/λου προγ/σμου ΑΡΧΗ ΝΑΙ Διάβα σε a Εκτύπ ωσε a > a 0 ΟΧΙ ΤΕΛΟΣ Σύμβολα διαγράμματος ροής 1 Ακέραιος τύπος 14 0-67 2 Πραγματικός τύπος

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές έννοιες αλγορίθμων Εισαγωγή Αρχικά εξηγείται ο όρος αλγόριθμος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληροί κάθε

Διαβάστε περισσότερα

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα.

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. 1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. ΑΠΑΝΤΗΣΗ Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός

Διαβάστε περισσότερα

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας είναι ένα δεδομένο. Τα δεδομένα μπορούν να αναπαραστήσουν αφαιρετικά την πραγματικότητα δηλαδή να μας δείχνουν μία απλοποιημένη όψη

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

Διαβάστε περισσότερα

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

Διαβάστε περισσότερα

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων; ΦΡΟΝΤΙΣΤΗΡΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΘΕΜΑ Α ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ 01/03/2015 Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1.

Διαβάστε περισσότερα

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια Είσοδος:

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ σε ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΕΠΠ) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ σε ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΕΠΠ) Δημιουργία - Συγγραφή Costas Chatzinikolas info@costaschatzinikolas.gr Τελευταία Ενημέρωση:

Διαβάστε περισσότερα

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

Διαβάστε περισσότερα

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4) Βασικές Έννοιες Αλγορίθμων Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4) Δομές εντολών Υπάρχουν διάφορα είδη εντολών όπως, ανάθεσης ή εκχώρησης τιμής, εισόδου εξόδου, κ.ά., αλλά γενικά χωρίζονται σε τρείς

Διαβάστε περισσότερα

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς K εφ. 1 σχολικού βιβλίου 1. Επιλύσιμο είναι ένα πρόβλημα για το οποίο ξέρουμε ότι έχει λύση, αλλά αυτή δεν έχει βρεθεί ακόμη. 2. Για

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2015-2016 Θέμα Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις προτάσεις 1-4 και δίπλα τη λέξη ΣΩΣΤΟ,

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός... 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Διάρκεια 3 ώρες Στοιχεία Μαθητή: Όνομα... Επώνυμο... Βαθμός... 2 Θεμα Α (30%) Α1 ΣΩΣΤΟ - ΛΑΘΟΣ 1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες

Διαβάστε περισσότερα

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis

Διαβάστε περισσότερα

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Κεφάλαιο 2 - Πρόβλημα 2.1.1. Η έννοια του προβλήματος Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. 2.1.2. Κατηγορίες προβλημάτων

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Δομές Δεδομένων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Δομές Δεδομένων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Δομές Δεδομένων ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Δομές Δεδομένων Τα δεδομένα ενός προβλήματος αποθηκεύονται στον υπολογιστή,

Διαβάστε περισσότερα

ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ

ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ - Γ ΛΥΚΕΙΟΥ) ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ 2013-2014 Καθηγητής ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ e-mail : vczioulas@yahoo.com site url : http://www.zioulas.gr

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι πρόβλημα (σελ. 3) 2) Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων (σελ. 8) 3) Τι είναι δομή ενός προβλήματος (σελ. 8)

Διαβάστε περισσότερα

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

Άσκηση 1. Ποια από τα κάτω αλφαριθμητικά είναι αποδεκτά ως ονόματα μεταβλητών σε έναν αλγόριθμο i. Τιμή

Άσκηση 1. Ποια από τα κάτω αλφαριθμητικά είναι αποδεκτά ως ονόματα μεταβλητών σε έναν αλγόριθμο i. Τιμή Θεωρία επισκόπηση 1 Η μεταβλητή είναι ένα συμβολικό όνομα κάτω από το οποίο βρίσκεται μια τιμή, η οποία μπορεί να μεταβάλλεται κατά την εκτέλεση του αλγορίθμου 1. Τύποι Δεδομένων (Μεταβλητών και Σταθερών)

Διαβάστε περισσότερα

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Αλγόριθµος είναι µια πεπερασµένη σειρά ενεργειών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήµατος. Σηµαντικά σηµεία κεφαλαίου Κριτήρια

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8 1. Δώστε τον ορισμό του αλγόριθμου. Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

Διαβάστε περισσότερα

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 3 1. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή 2. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης 3. Ένας πίνακας

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 ο. αποτέλεσµα προς το χρήστη ή προς έναν άλλο αλγόριθµο. 7 ο ΓΕΛ Καλλιθέας Οδηγός Α.Ε.Π.Π.

ΚΕΦΑΛΑΙΟ 2 ο. αποτέλεσµα προς το χρήστη ή προς έναν άλλο αλγόριθµο. 7 ο ΓΕΛ Καλλιθέας Οδηγός Α.Ε.Π.Π. ΚΕΦΑΛΑΙΟ 2 ο 1. Τι είναι αλγόριθµος; Η θεωρία των αλγορίθµων έχει µεγάλη παράδοση και η ηλικία ορισµένων από αυτών είναι µερικών χιλιάδων χρόνων, όπως του Ευκλείδη για τον υπολογισµό του ΜΚ δύο αριθµών

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΔΙΑΦΟΡΩΝ ΤΥΠΩΝ ΣΤΟ ΚΕΦΑΛΑΙΟ 2.2

ΕΡΩΤΗΣΕΙΣ ΔΙΑΦΟΡΩΝ ΤΥΠΩΝ ΣΤΟ ΚΕΦΑΛΑΙΟ 2.2 1. 1-Σ, 2-Σ, 3-Λ, 4-Σ, 5-Σ 2. 1-α, 2-α, 3-β, 4-β, 5-α, 6-α, 7-α, 8-β, 9-β, 10-β 3. Τι ονομάζουμε αλγόριθμο; Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επιμέλεια : Δρεμούσης Παντελής Κεφάλαια 2,7,8 1. Τι είναι αλγόριθμος; Μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου Εισαγωγή στις Αρχές της επιστήμης των Η/Υ Β Λυκείου Επιστήμη των υπολογιστών μελετά Θεωρητικά θεμέλια Φύση πληροφοριών Φύση αλγορίθμων Φύση υπολογισμών Και τις τεχνολογικές εφαρμογές τους Από τις σκοπιές

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 9 ο : ΠΙΝΑΚΕΣ ΜΕΡΟΣ 1 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΙΝΑΚΕΣ 1 & 2 ΔΙΑΣΤΑΣΕΩΝ http://eclass.sch.gr/courses/el594100/

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Τελευταίο Μάθημα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Τελευταίο Μάθημα Τελευταίο Μάθημα 1. Να χαρακτηρίσετε καθεμία από τις παρακάτω προτάσεις, ως σωστές (Σ) ή λανθασμένες (Λ) Ο χαρακτήρας του κενού ανήκει στο αλφάβητο της γλώσσας. Σ Λ Σε μία αλφαριθμητική τιμή μπορεί να

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 23/04/2017 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ ( 7) ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας στο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων Αλγόριθµος : Είναι ένα σύνολο βηµάτων, αυστηρά καθορισµένων κι εκτελέσιµων σε πεπερασµένο χρόνο, που οδηγούν στην επίλυση ενός προβλήµατος. Χαρακτηριστικά ενός σωστού

Διαβάστε περισσότερα

θέμα των Πανελλαδικών Εξετάσεων

θέμα των Πανελλαδικών Εξετάσεων Θέμα 2000. 1. Σωστό (Σ) Λάθος (Λ). i. Η περατότητα ενός αλγορίθμου αναφέρεται στο γεγονός ότι καταλήγει στη λύση του προβλήματος μετά από πεπερασμένο αριθμό βημάτων (εντολών). Μονάδες 4 ii. Για να αναπαραστήσουμε

Διαβάστε περισσότερα

Επανάληψη Θεωρίας. Καστούμης Γιώργος

Επανάληψη Θεωρίας. Καστούμης Γιώργος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΨΗ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 1 Ορισµοί: Με τον όρο πρόβληµα εννοείται µια κατάσταση η οποία χρήζει αντιµετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή,

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ 1. Έστω ότι ο καθηγητής σας δίνει δύο αριθμούς και σας ζητάει να του πείτε πόσο είναι το άθροισμά τους. Διατυπώστε

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2014-2015 Πάτρα 5/5/2015 Ονοματεπώνυμο:.. Α1. α. Να γράψετε στο τετράδιό σας τον

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος Θέμα 1 Δίνονται τα παρακάτω τμήματα αλγορίθμου Α. βαλίτσα Αληθής εισιτήριο Αληθής ταξίδι βαλίτσα και εισιτήριο Τι τιμή θα έχει η λογική μεταβλητή

Διαβάστε περισσότερα

Φίλη μαθήτρια, φίλε μαθητή,

Φίλη μαθήτρια, φίλε μαθητή, Φίλη μαθήτρια, φίλε μαθητή, Το παρόν τεύχος, εναρμονισμένο πλήρως με το νέο Πρόγραμμα Σπουδών 2015-2016, αποτελεί μια λογική και φυσική συνέχεια του πρώτου τεύχους. Δόθηκε ιδιαίτερη έμφαση στη μεθοδολογία

Διαβάστε περισσότερα

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων; ΦΡΟΝΤΙΣΤΗΡΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΘΕΜΑ Α ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ 01/03/2015 Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1.

Διαβάστε περισσότερα

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Γ Λυκείου Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον ΜΕΡΟΣ I. ΑΛΓΟΡΙΘΜΟΣ ΦΥΣΙΚΕΣ & ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ ΑΚΟΛΟΥΘΙΑ Περιεχόμενα Κεφάλαιο 2: 2.1-2.3 2.4.1 Κεφάλαιο6: 6.3 Κεφάλαιο 7: όλο Κατηφόρης Παναγιώτης

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Ποιες οι διαφορές μεταξύ των στατικών και των δυναμικών δομών; (Μονάδες 7) II. Να γράψετε στο τετράδιό

Διαβάστε περισσότερα

Κεφάλαιο 2.2: Αλγόριθμοι. Επιστήμη ΗΥ Κεφ. 2.2 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.2: Αλγόριθμοι. Επιστήμη ΗΥ Κεφ. 2.2 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.2: Αλγόριθμοι 1 2.2.1 Ορισμός αλγορίθμου Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

Διαβάστε περισσότερα

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 18/02/2013 ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 18/02/2013 ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΑΠΟΦΟΙΤΟΙ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 18/02/2013 ΘΕΜΑ Α ΑΠΑΝΤΗΣΕΙΣ Α1. α. Παραβιάζει τα κριτήρια της καθοριστικότητας και της περατότητας β. Αιτιολόγηση: ο αλγόριθμος παραβιάζει το κριτήριο

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΑΡΧΗ 1 ης ΣΕΛΙΔΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών Θέμα 1 ο Α. Να χαρακτηρίσετε κάθε μία από

Διαβάστε περισσότερα

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο Πίνακες Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος 2012-13 A Εξάμηνο Πίνακες Η ποιο γνωστή και διαδεδομένη στατική δομή είναι ο πίνακας. Οι πίνακες αποτελούνται από στοιχεία

Διαβάστε περισσότερα

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη. 1ΗΣ ΣΕΛΙΔΑΣ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2015 Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2014-2015 Πάτρα 5/5/2015 Ονοματεπώνυμο:.. Θέμα Α Α1. α. Να γράψετε στο τετράδιό σας τον

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

Διαβάστε περισσότερα

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης ΘΕΜΑ Α A1 Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις α-δ και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή, ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη. a. Σε μία εντολή εκχώρησης του αποτελέσματος

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ 1 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός συγκεκριμένου προβλήματος. Κάθε

Διαβάστε περισσότερα

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Πληροφορική ΙΙ Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Πληροφορική ΙΙ», 2015-2016 Μάθημα 1: Εισαγωγή στους Αλγόριθμους Αλγόριθμος είναι μια πεπερασμένη

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι γνωρίζετε για τη στοίβα και τι για την ουρά; (Μονάδες 7) Στοίβα (Stack) είναι μια δομή στην οποία

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100 ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ Όνομα:.. Βαθμός: /100 Θέμα Α 1. Να χαρακτηρίσετε τις προτάσεις με Σ, αν είναι σωστές και Λ, αν είναι λάθος. a. Οι πίνακες δεν μπορούν να έχουν περισσότερες από δύο

Διαβάστε περισσότερα

ΠΡΟΣ: Τηλέφωνο: 210-3443422 Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.:

ΠΡΟΣ: Τηλέφωνο: 210-3443422 Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.: ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ----- Βαθμός Ασφαλείας: Να διατηρηθεί μέχρι: Βαθ. Προτεραιότητας: ΓΕΝΙΚΗ ΔΙΕΥΘΥΝΣΗ ΣΠΟΥΔΩΝ Π/ΘΜΙΑΣ ΚΑΙ Δ/ΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΙΕΥΘΥΝΣΗ ΣΠΟΥΔΩΝ,

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ ΓΕΛ 15 / 04 / 2018 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΘΕΜΑ Α Α1. Να γράψετε τον αριθμό της κάθε πρότασης (1-5) και δίπλα τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ, αν η

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ 1ο Α. 1. Να αναφέρετε ονοµαστικά τα κριτήρια που πρέπει απαραίτητα

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ 1ΗΣ ΣΕΛΙΔΑΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Σ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΝΕΩΝ ΜΟΥΔΑΝΙΩΝ Δευτέρα, 12 Μαΐου 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ:

Διαβάστε περισσότερα

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

Διαβάστε περισσότερα

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα.

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. 1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. ΑΠΑΝΤΗΣΗ Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός

Διαβάστε περισσότερα

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο Α. Δίνεται η εντολή εκχώρησης: τ κ < λ Ποιες από τις παρακάτω προτάσεις είναι σωστές και ποιες λάθος. Να δικαιολογήσετε

Διαβάστε περισσότερα

Η διαδικασία επίλυσης ενός προβλήματος αποτελείται από μία πεπερασμένη ακολουθία βημάτων, καθένα από τα οποία μας οδηγεί πιο κοντά στη λύση.

Η διαδικασία επίλυσης ενός προβλήματος αποτελείται από μία πεπερασμένη ακολουθία βημάτων, καθένα από τα οποία μας οδηγεί πιο κοντά στη λύση. ΑΛΓΟΡΙΘΜΟΣ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 2 ο ΚΕΦΑΛΑΙΟ Η διαδικασία επίλυσης ενός προβλήματος αποτελείται από μία πεπερασμένη ακολουθία βημάτων, καθένα από τα οποία μας οδηγεί πιο κοντά στη λύση. «ΑΛΓΟΡΙΘΜΟΣ ΕΙΝΑΙ ΜΙΑ

Διαβάστε περισσότερα

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ Εντολές επανάληψης Κεφάλαια 02-08 οµές Επανάληψης Επιτρέπουν την εκτέλεση εντολών περισσότερες από µία φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η οποία καθορίζει την έξοδο από το βρόχο

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΘΕΜΑ 1 ο Α. Να χαρακτηρίσετε τις παρακάτω προτάσεις ως σωστές ή λανθασμένες. 1. Μια διαδικασία

Διαβάστε περισσότερα

ΘΕΜΑ Α. Λύση: 1. Σωστό, 2. Λάθος, 3. Σωστό, 4. Λάθος, 5. Λάθος. Ποια η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; Απάντηση:

ΘΕΜΑ Α. Λύση: 1. Σωστό, 2. Λάθος, 3. Σωστό, 4. Λάθος, 5. Λάθος. Ποια η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; Απάντηση: ΘΕΜΑ Α Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι λανθασμένη. 1. Η ταξινόμηση είναι μια από τις βασικές

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Θέμα 1 ο ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Α) Να χαρακτηρίσετε τις παρακάτω προτάσεις ως

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ Καλλιόπη Μαγδαληνού ΕΠΙΚΕΦΑΛΙΔΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΗΛΩΣΕΙΣ ΣΤΑΘΕΡΩΝ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ πρόγραμμα τεστ σταθερές π = 3.14 μεταβλητές πραγματικές : εμβαδό, ακτίνα αρχή

Διαβάστε περισσότερα