ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές. Εισαγωγή. Νίκος Αθανάσης.

Σχετικά έγγραφα
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

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

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

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

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

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Εισαγωγή στον Προγραμματισμό

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

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

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

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

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

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

Α. Ερωτήσεις Ανάπτυξης

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

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

Εισαγωγή στον προγραμματισμό

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

Η γλώσσα προγραμματισμού Python

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Δομές Δεδομένων & Αλγόριθμοι

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

6. Εισαγωγή στον προγραµµατισµό

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Μαλούτα Θεανώ Σελίδα 1

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Προγραμματισμός I (Θ)

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

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

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

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

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Υπολογιστών

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

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

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

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Δομές Δεδομένων και Αλγόριθμοι

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

6. 1 Η έννοια του προγράμματος

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

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

Επιμέλεια: Γιακουμόγλου Βαγγέλης.

Θεωρία Προγραμματισμού

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

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

Transcript:

ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές Εισαγωγή Νίκος Αθανάσης e-mail: athanasis@geo.aegean.gr

Συνοπτικά Σκοπός του μαθήματος Στόχοι του μαθήματος Αντικείμενο του μαθήματος Κανονισμός του μαθήματος Εισαγωγικές έννοιες

Σκοπός του μαθήματος Να εισάγει έννοιες και τεχνικές που σχετίζονται με το πεδίο των Αλγορίθμων Να εστιάσει σε τεχνολογίες σχεδιασμού και υλοποίησης εφαρμογών λογισμικού Να διδάξει μεθοδολογίες για την ανάπτυξη εφαρμογών λογισμικού, οι οποίες απαιτούν κατανόηση και δυνατότητα συγγραφής προγραμμάτων σε επίπεδο ανώτερο από το εισαγωγικό Να παρουσιάσει δεξιότητες για τη χρήση συγκεκριμένων αρχιτεκτονικών λύσεων στο σχεδιασμό λογισμικού μέσα από αξιοποίηση ποικίλων Δομών Δεδομένων

Σκοπός του μαθήματος Να διδάξει μεθοδολογίες για τη διεξαγωγή έρευνας στον τομέα των Αλγορίθμων και της Ανάπτυξης Λογισμικού μέσα από την εκμάθηση σύγχρονων γλωσσών προγραμματισμού όπως η Python Να μπορέσουν οι φοιτητές να υλοποιήσουν πλήθος από πραγματικές εφαρμογές που «τρέχουν» σε ένα σύγχρονο προγραμματιστικό περιβάλλον και συγκεντρώνουν τη λειτουργικότητα που παρέχεται από ένα φάσμα διαφορετικών APIs

Στόχοι του μαθήματος Στο τέλος του εξαμήνου, θα είστε σε θέση να: Κατανοείτε βασικές αλγοριθμικές δομές και να αναπτύσσετε ολοκληρωμένα προγράμματα Αναλύετε ένα μεγάλο πλήθος αλγορίθμων μέσα από τη γλώσσα προγραμματισμού Python Αξιοποιείτε εργαλεία από ποικίλα προγραμματιστικά περιβάλλοντα για την ανάπτυξη εξειδικευμένων εφαρμογών λογισμικού

Αντικείμενο του μαθήματος Αντικειμενοστραφής Προγραμματισμός και τεχνικές ανάπτυξης αλγορίθμων με τη γλώσσα Python Πολυπλοκότητα Αλγορίθμων Η προγραμματιστική τεχνική της Αναδρομής Συλλογές και πίνακες Προγραμματιστικές Τεχνικές και Δομές Δεδομένων Ι (Ουρά, Στοίβες, Συνδεδεμένες Λίστες)

Αντικείμενο του μαθήματος Δυαδικά Δένδρα Αλγόριθμοι Αναζήτησης Αλγόριθμοι Ταξινόμησης Προηγμένες Προγραμματιστικές Τεχνικές (Άπληστη Μέθοδος, Διαίρει και Βασίλευε, Δυναμικός Προγραμματισμό, Οπισθοδρόμηση, Τοποθέτηση 8 Βασιλισσών, Περιοδεύων Πωλητής Προγραμματιστικές Τεχνικές και Διαλειτουργικά Προγραμματιστικά Περιβάλλοντα

Κανονισμός του μαθήματος 10% Συμμετοχή 20% Πρόοδος 25% Ατομική εργασία 45% Τελική εξέταση Μέγιστος αριθμός απουσιών = 3

Βιβλιογραφία Τσίχλας, Κ., Γούναρης, Α., Μανωλόπουλος, Ι. Σχεδίαση και ανάλυση αλγορίθμων, ISBN 978-960-603-465-7 Γεωργιάδης, Λ., Νικολόπουλος, Σ., Παληός, Λ. Δομές δεδομένων. ISBN 978-960-603-477-0 ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ, Κωδικός Βιβλίου στον Εύδοξο: 320302 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ: ΘΕΩΡΙΑ ΚΑΙ ΠΡΑΞΗ, Κωδικός Βιβλίου στον Εύδοξο: 13009253

Η έννοια του αλγορίθμου Αποτελεί την πρώτη ύλη για την εμβάθυνση στα επιμέρους αντικείμενα Θεωρητικής Πληροφορικής Γλώσσες και Αυτόματα Υπολογιστική Πολυπλοκότητα Κρυπτογραφία Βασικές γνωστικές περιοχές της Πληροφορικής Βάσεις Δεδομένων Δίκτυα Επεξεργασία Εικόνας Τεχνητή Νοημοσύνη Παγκόσμιο Ιστός

Η έννοια του αλγορίθμου Προέρχεται από το όνομα του Πέρση μαθηματικού Abu Ja far Mohammed ibn Musa al Khowarizmi, που έζησε τον 9ο αιώνα μ.χ. Η λέξη «al Khowarizmi» σημαίνει «από το Khowarazm», που είναι η σημερινή πόλη Khiva του Ουζμπεκιστάν.

Αλγόριθμοι στην Αρχαιότητα Κόσκινο του Ερατοσθένη για την εύρεση πρώτων αριθμών Μέθοδο του Ευκλείδη για την εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών

Η έννοια του αλγορίθμου Κάθε ενέργεια στην καθημερινή μας ζωή μπορεί να χαρακτηρισθεί ως αλγόριθμος Μία συνταγή μαγειρικής Η διαδικασία ανάληψης χρημάτων από μία αυτόματη ταμειακή μηχανή σε μία τράπεζα, Η διαδικασία πολλαπλασιασμού δύο ακεραίων

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

Κριτήρια Αλγορίθμων Είσοδος (input). Καμία, μία ή περισσότερες ποσότητες να δίνονται ως είσοδοι στον αλγόριθμο. Έξοδος (output). Ο αλγόριθμος να δημιουργεί τουλάχιστον μία ποσότητα ως αποτέλεσμα. Καθοριστικότητα (definiteness). Κάθε εντολή να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Δηλαδή η μηχανή επεξεργασίας δεδομένων που θα κλιθεί να τη διεκπεραιώσει να καταλάβει τι ζητάμε να γίνει. Μπορούμε να το συνδέσουμε με τη σωστή σύνταξη.

Κριτήρια Αλγορίθμων Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του.

Κριτήρια Αλγορίθμων Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι επαρκώς απλή, έτσι ώστε να μπορεί να εκτελεστεί από ένα άτομο με χρήση χαρτιού και μολυβιού. Δεν αρκεί δηλαδή να είναι ορισμένη (κριτήριο 3), αλλά πρέπει να είναι και εκτελέσιμη. Η αποτελεσματικότητα έχει να κάνει με την εκτελεσιμότητα. Αν εκτελείται μια σαφώς ορισμένη εντολή. Για παράδειγμα στην εντολή x=1/y όπου ψ=0, το πρόγραμμα καταλαβαίνει τι πρέπει να κάνει, αλλά δεν μπορεί να το εκτελέσει. Άρα η εντολή είναι μη αποτελεσματική γιατί δεν παράγει αποτέλεσμα.

Η εξίσωση των Αλγορίθμων Από τον Niklaus Wirth (που παρουσίασε την πρώτη δομημένη γλώσσα προγραμματισμού, την Pascal) διατυπώθηκε το 1976 η εξής εξίσωση: Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

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

Δομές Δεδομένων Ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών Στατικές Δομές Δεδομένων Δυναμικές Δομές Δεδομένων

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

Δυναμικές δομές δεδομένων Δεν έχουν σταθερό μέγεθος Ο αριθμός των κόμβων τους αυξομειώνεται ανάλογα με το αν εισάγουμε ή διαγράφουμε δεδομένα Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης

Αλγόριθμοι και Προγράμματα Η έννοια του αλγόριθμου δεν ταυτίζεται με την έννοια του προγράμματος. Το δεύτερο είναι μία υλοποίηση του πρώτου με τη βοήθεια των εντολών και των εργαλείων ενός προγραμματιστικού περιβάλλοντος. Σε σχέση με τα ανωτέρω κριτήρια, ένα πρόγραμμα δεν ικανοποιεί αναγκαστικά το 4ο κριτήριο της περατότητας (για παράδειγμα, ένα λειτουργικό σύστημα εκτελεί διαρκώς έναν ατέρμονα βρόχο περιμένοντας εντολές να εισέλθουν στο σύστημα).

Τρόποι παρουσίασης των αλγορίθμων Με την περιγραφή του αλγόριθμου σε φυσική γλώσσα (natural language) Με ελεύθερο κείμενο (free text). Μπορεί να παραβιασθεί το τρίτο κριτήριο του ορισμού. Με τη χρήση ενός διαγράμματος ροής (flow chart). Με κωδικοποίηση (coding), δηλαδή με ένα πρόγραμμα που, όταν εκτελεσθεί, θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο.

Γλώσσα μηχανής Το πρόγραμμα περιέχει εντολές που είναι σε δυαδική μορφή, άμεσα κατανοητή από τον Η/Υ (όχι όμως από τον άνθρωπο). Δηλαδή, το πρόγραμμα αποτελείται από ακολουθίες 0 και 1 π.χ. 10101000 00001010 11000000 00000001 Πλεονεκτήματα : Ταχύτατη εκτέλεση των εντολών. Δεν απαιτείται μεταφραστικό πρόγραμμα. Μειονεκτήματα : Το γράψιμο του προγράμματος είναι μία ιδιαίτερα επίπονη και χρονοβόρα διαδικασία. Απαιτείται βαθιά γνώση της αρχιτεκτονικής του Η/Υ. Το πρόγραμμα «τρέχει» μόνο στο συγκεκριμένο τύπο του Η/Υ.

Γλώσσες χαμηλού επιπέδου ή Συμβολικές γλώσσες Οι εντολές που είναι σε μορφή 0 και 1 αντικαθίστανται από μνημονικά (συμβολικά) ονόματα. Για παράδειγμα, η εντολή 100001100 αντικαθίστανται από το ADD. Ένα δείγμα χρήσης θα ήταν : INDEX =$01 {βάλε στην INDEX την τιμή 1} ADD INDEX {πρόσθεσε την τιμή της INDEX στον συσσωρευτή} LDA #10 {φόρτωσε στο συσσωρευτή την τιμή 10} CLA {καθάρισε το συσσωρευτή}.. Πλεονεκτήματα : Ταχύτατη εκτέλεση των εντολών. Η μορφή του προγράμματος είναι καλύτερα κατανοητή από τον άνθρωπο σε σχέση με τη γλώσσα μηχανής. Μειονεκτήματα : Η αντιστοιχία 1 προς 1 με τις εντολές της γλώσσας παρέμενε. Απαιτείται η χρήση ενός μεταφραστικού προγράμματος ώστε οι συμβολικές εντολές να μετατραπούν στις αντίστοιχες δυαδικές. Το ειδικό αυτό πρόγραμμα ονομάζεται συμβολομεταφραστής (assembler). Το γράψιμο του προγράμματος εξακολουθεί να είναι μία ιδιαίτερα επίπονη και χρονοβόρα διαδικασία. Απαιτείται βαθιά γνώση της αρχιτεκτονικής του Η/Υ. Το πρόγραμμα «τρέχει» μόνο στο συγκεκριμένο τύπο του Η/Υ.

Γλώσσες υψηλού επιπέδου Λέγονται έτσι διότι τα προγράμματα διατυπωμένα σε μία τέτοια γλώσσα είναι άμεσα κατανοητά από τον άνθρωπο (αλλά όχι από τον Η/Υ) αφού χρησιμοποιείται μία γλώσσα που είναι αρκετά περιγραφική όπως μία φυσική γλώσσα. Παράδειγμα, INPUT Δώσε την τελική τιμή ; N SUM = 0 For INDEX = 1 to N SUM = SUM + INDEX Next Πλεονεκτήματα : Η μορφή του προγράμματος είναι εύκολα κατανοητή από τον άνθρωπο σε σχέση με τη γλώσσα μηχανής ή τη συμβολική γλώσσα. Το γράψιμο του προγράμματος δεν είναι πλέον μία ιδιαίτερα επίπονη και χρονοβόρα διαδικασία όπως συμβαίνει με τη γλώσσα μηχανής ή τη συμβολική γλώσσα. Δεν απαιτείται σχεδόν καμία γνώση της αρχιτεκτονικής του Η/Υ. Συνεπώς, είναι ανεξάρτητα από την αρχιτεκτονική του Η/Υ. Το πρόγραμμα «τρέχει» σε όλους τους τύπους Η/Υ αρκεί να υπάρχει το κατάλληλο μεταφραστικό πρόγραμμα. Συνεπώς ένα χαρακτηριστικό τους είναι η μεταφερσιμότητα, δηλαδή ένα πρόγραμμα υψηλού επιπέδου να εκτελείται, με ελάχιστες μετατροπές, σε πολλούς τύπους Η/Υ. Η εκμάθηση της γλώσσας είναι εύκολη. Η διόρθωση λαθών και η συντήρηση των προγραμμάτων είναι ευκολότερη. Μειονεκτήματα : Απαιτείται η χρήση ενός μεταφραστικού προγράμματος ώστε οι εντολές να μετατραπούν σε πολλές δυαδικές εντολές (δεν έχουμε εδώ αντιστοιχία 1 προς 1). Έχουμε δύο ειδών μεταφραστικά προγράμματα: τους μεταγλωττιστές (compilers) και τους διερμηνείς (interpreters). Το πρόγραμμα «τρέχει» πιο αργά σε σχέση με τα προγράμματα των συμβολικών γλωσσών ή της γλώσσας μηχανής.

Μεταφραστικά Προγράμματα Ο προγραμματισμός είναι η διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέμε στην ορολογία της Πληροφορικής). Ένα πρόγραμμα που φτιάχνεται σε μία γλώσσα υψηλού επιπέδου δεν είναι άμεσα κατανοητό από τον Η/Υ. Θα πρέπει να μεταφραστεί σε ισοδύναμο πρόγραμμα σε γλώσσα μηχανής (δυαδική μορφή). Την διαδικασία μετάφρασης την πραγματοποιούν τα μεταφραστικά προγράμματα. Είναι δύο ειδών: Μεταγλωττιστές (Compilers) Διερμηνευτές (Interpreters)

Μεταφραστικά Προγράμματα Μεταγλωττιστής : Παίρνει, ως είσοδο, το πηγαίο πρόγραμμα και αναλαμβάνει να το μεταφράσει εξ ολοκλήρου παράγοντας το αντικείμενο πρόγραμμα.

Μεταφραστικά Προγράμματα Διερμηνευτής : Παίρνει, ως είσοδο, μία-μία εντολή του πηγαίου, την μεταφράζει και την εκτελεί αμέσως. Η λειτουργία του μοιάζει με τον άνθρωπο-διερμηνέα που μεταφράζει επί τόπου κάθε πρόταση.