ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

εύτερη γενιά: γλώσσα assembly

Λογισµικό (Software SW) Γλώσσες

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Αρχές Προγραμματισμού Υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

Προγραμματισμός Ι (HY120)

Computing. Νοέμβριος Έκδοση 1.0

3 Αλληλεπίδραση Αντικειμένων

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

Βασικές Αρχές Προγραμματισμού

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

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

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Outline. 4 Object-Oriented Programming

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

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

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

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

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

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

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

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

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

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

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

Περιεχόμενα. Πρόλογος... 21

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

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

Στοιχειώδης προγραμματισμός σε C++

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Διαδικασιακός Προγραμματισμός

Κεφάλαιο 2: Μεταφραστές

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Περιεχόμενα. Πρόλογος... 17

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

Transcript:

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού Ιστορική εξέλιξη Προγραμματιστικά μοντέλα Βασικές λειτουργικότητες γλωσσών προγραμματισμού Εισαγωγή στις Δομές Δεδομένων Διαδικασίες και πέρασμα παραμέτρων Σύνταξη γλώσσας και γραμματική Στάδια μεταγλώττισης Αντικειμενοστρεφής προγραμματισμός Δηλωτικός προγραμματισμός Οι διαφάνειες βασίζονται σε μεγάλο βαθμό σε αυτές που συνοδεύονται με το προτεινόμενο σύγγραμμα, καθώς και στις διαφάνειες προηγούμενων ετών 1του κ. Κουρκουμπέτη.

Γλώσσες προγραμματισμού Γλώσσα Προγραμματισμού: Εργαλείο για αναπαράσταση αλγορίθμων προσιτό στους ανθρώπους εύκολα μετατρέπεται σε γλώσσα μηχανής που είναι κατανοητή από τον Η/Υ 2

Πρώτη Γενιά: Γλώσσα Μηχανής Γλώσσα μηχανής: οι εντολές αναπαριστώνται σε δυαδικό σύστημα Κάθε εντολή αναπαρίσταται ως μια ακολουθία από δυαδικά ψηφία Το πρόγραμμα ήταν μια σειρά από τέτοιες εντολές, π.χ. Εξαιρετικά δύσκολο το γράψιμο και η κατανόηση προγραμμάτων Συχνά σφάλματα Δύσκολη αποσφαλμάτωση (debugging) 3

Δεύτερη γενιά: γλώσσα assembly Ένα μνημονικό σύστημα για την αναπαράσταση προγραμμάτων Χρήση μνημονικών (mnemonic) ονομάτων για αναπαράσταση εντολών. Ονόματα για όλους τους καταχωρητές. Υπάρχει ακριβής 1-1 αντιστοιχία μεταξύ των εντολών της μηχανής και των εντολών assembly. Η μετάφραση από γλώσσα assembly σε γλώσσα μηχανής γίνεται από ένα πρόγραμμα που ονομάζεται assembler Γλώσσα μηχανής 156C 166D 5056 30CE C000 Γλώσσα assembly LD R5, Price LD R6, ShippingCharge ADDI R0, R5 R6 ST R0, TotalCost HLT 4

Μειονεκτήματα της Assembly O προγραμματιστής πρέπει να σκέφτεται πάλι σε γλώσσα μηχανής (απλά αλλάζει η αναπαράσταση και σύνταξη των εντολών) Η assembly είναι εγγενώς εξαρτημένη από τη μηχανή (οι εντολές ενός προγράμματος σε assembly εκφράζονται με ιδιότητες εγγενείς στην τεχνολογία της συγκεκριμένης μηχανής) Δύσκολη έως αδύνατη φορητότητα (portability) (μεταφορά του ίδιου προγράμματος ώστε να είναι σωστό σε μια άλλη μηχανή) Τα αρχέτυπα (εντολές) είναι χαμηλού επιπέδου (πολύ κοντά στο hardware) Δεν διευκολύνει στον γενικό σχεδιασμό ενός προγράμματος (γιατί αποτελείται από μικροεντολές που συνδέονται με πολύ μικρές λειτουργίες του Η/Υ) 5

Τρίτη γενιά γλωσσών Βασίζεται σε σχετικά μικρό αριθμό από αρχέτυπα υψηλού επιπέδου, π.χ. Ανεξάρτητες από τη μηχανή (τις περισσότερες φορές) Παραδείγματα: FORTRAN, COBOL Κάθε αρχέτυπο ανταποκρίνεται σε μία μικρή ακολουθία εντολών γλώσσας μηχανής. Μεταφράζεται σε γλώσσα μηχανής από ένα πρόγραμμα που λέγεται compiler (μεταγλωττιστής) Εναλλακτικά αντί για compiler υπάρχει ο ερμηνευτής (interpreter) Εκτελεί τις εντολές καθώς τις μεταφράζει, ενώ ο compiler πρώτα μεταφράζει όλες τις εντολές του προγράμματος σε γλώσσα μηχανής και μετά τις εκτελεί 6

Προγραμματιστικά μοντέλα Διαφορετικές φιλοσοφίες στον προγραμματισμό Προστακτικό (imperative) ή διαδικαστικό (procedural) μοντέλο: η διαδικασία προγραμματισμού είναι μια ακολουθία από εντολές, που όταν εκτελεστούν, επενεργούν στα δεδομένα και παράγουν το επιθυμητό αποτέλεσμα Υπονοεί ότι πρέπει να βρεθεί ο αλγόριθμος για την επίλυση του προβλήματος και έπειτα ο αλγόριθμος να αναπαρασταθεί σαν μια ακολουθία από εντολές Το πιο παραδοσιακό από τα μοντέλα Παραδείγματα: FORTRAN (για αριθμητικούς υπολογισμούς) COBOL (για επιχειρησιακές εφαρμογές ) BASIC, C, Pascal (γενικής χρήσης) Ada (η επίσημη γλώσσα ανάπτυξης στρατιωτικών εφαρμογών από το Υπ. Άμυνας των ΗΠΑ, επίσης για εναέριες εφαρμογές) 7

Η σύνθεση ενός τυπικού προστακτικού προγράμματος (Declarative statements) (imperative statements) Υπάρχουν και σχόλια (comments) που βελτιώνουν την αναγνωσιμότητα 8

Προγραμματιστικά μοντέλα (2) Δηλωτικό (declarative) μοντέλο: ο προγραμματιστής πρέπει να περιγράψει το πρόβλημα προς επίλυση, και όχι τον αλγόριθμο Εφαρμόζει ένα γενικό αλγόριθμο επίλυσης προβλημάτων Χρήση για προσομοίωση συστημάτων (οικονομία, πολιτική, μετεωρολογία, περιβάλλον) π.χ. για πρόγνωση Ο προγραμματιστής περιγράφει τι θέλει να προσομοιωθεί, ο αλγόριθμος πρόγνωσης υπάρχει στην γλώσσα Παραδείγματα: Prolog, τομέας τεχνητής νοημοσύνης Ο τομέας μαθηματικών της Επίσημης Λογικής (Formal Logic) έδωσε ώθηση σε αυτές τις γλώσσες 9

Προγραμματιστικά μοντέλα (3) Συναρτησιακό (functional) μοντέλο: Το πρόγραμμα είναι μια οντότητα που δέχεται εισόδους και βγάζει εξόδους (όπως η συνάρτηση) Πρόγραμμα = συνάρτηση που μετασχηματίζει εισόδους σε εξόδους Το πρόγραμμα κατασκευάζεται συνδέοντας μικρότερες ενότητες (συναρτήσεις) Προγραμματισμός: σύνθεση αυτής της συνάρτησης από απλούστερες Έξοδοι από μια συνάρτηση χρησιμοποιούνται ως είσοδοι σε άλλες συναρτήσεις Ο προγραμματισμός έγκειται στο χτίσιμο μεγάλων συναρτήσεων από μικρότερες Παραδείγματα: LISP Συμβολισμός για την συνάρτηση f(x,y,z): (f x y z) Μεγάλο πλεονέκτημα σε σχέση με τις προστακτικές γλώσσες προγραμματισμού: δεν χρειάζονται πολλές μεταβλητές και συνεπώς καταναλώνεται πολύ λιγότερος χώρος στη μνήμη για το πρόγραμμα 10

Παράδειγμα Συναρτησιακού Μοντέλου Γλώσσας Προγραμματισμού Σε μια imperative γλώσσα προγραμματισμού θα ήταν (Find_diff (Find_sum Old_balance Credits) (Find_sum Debits)) 11

Προγραμματιστικά μοντέλα (4) Αντικειμενο- στραφές (object- oriented) μοντέλο / Object- oriented Programming Κατά βάση προστακτικό μοντέλο Μονάδες δεδομένων = ενεργά αντικείμενα Κάθε αντικείμενο μπορεί να επενεργεί στον εαυτό του ή σε άλλα αντικείμενα Παράδειγμα 1: Graphical User Interface Κάθε εικονίδιο είναι ένα αντικείμενο Κάθε αντικείμενο περιλαμβάνει διαδικασίες (μεθόδους, methods) που ορίζουν πως αποκρίνεται σε διάφορα γεγονότα Παράδειγμα 2: λίστα ονομάτων Παραδοσιακός προγραμματισμός: λίστα = σύνολο δεδομένων, προγραμματιστής υπεύθυνος να κατασκευάσει αλγόριθμο προσπέλασης OOP: λίστα = αντικείμενο = δεδομένα + διαδικασίες χειρισμού (εισαγωγή ή αφαίρεση στοιχείου στη λίστα, ταξινόμηση, αναζήτηση) 12

Αντικειμενο- στραφές μοντέλο Κλάση (class) αντικειμένων: το σύνολο ιδιοτήτων που χαρακτηρίζουν ίδια αντικείμενα (που ανήκουν στην ίδια κλάση) Ορίζεται μια κλάση αντικειμένων π.χ. Εικονίδιο, δορυφόρος, σταθμός βάσης Έπειτα ορίζονται αντικείμενα π.χ. icon1, icon2 σαν εκδοχές (instances) της κλάσης Το μοντέλο OOP είναι μοντέλο δομημένου προγραμματισμού όπου ο προγραμματισμός γίνεται χτίζοντας το πρόγραμμα με μπλοκ Παραδείγματα: C++, Visual Basic, Java, C# 13

Η εξέλιξη των προγραμματιστικών μοντέλων Δείτε και το: http://www.inc.com/larry- kim/10- most- popular- programming- languages- today.html 14

Σεναριακές Γλώσσες προγραμματισμού Σεναριακές Γλώσσες προγραμματισμού (scripting languages): χρησιμοποιούνται για να κάνουν μικρές διαχειριστικές εργασίες στον υπολογιστή Σενάριο (script): κομμάτι κώδικα που υλοποιεί την συγκεκριμένη εργασία Π.χ. Ο διαχειριστής ενός συστήματος γράφει ένα πρόγραμμα για να καταγράψει τις εργασίες που χρειάζεται να γίνουν για αρχειοποίηση Ή ένα script για ανάγνωση και δεικτειοδότηση (indexing) εικόνων από μια φωτογραφική μηχανή Γλώσσες: Perl, PHP 15

Τύποι και Δηλώσεις μεταβλητών σε C, C++, C# και Java Μεταβλητή (variable): όνομα που υποδηλώνει μια θέση μνήμης Αν αλλάξει η τιμή που είναι αποθηκευμένη σε αυτή τη θέση μνήμης, αλλάζει και η τιμή που σχετίζεται με την μεταβλητή Τύποι (types) Δεδομένων Ακέραιος (integer): Ακέραιος αριθμός Πραγματικός (real): Αριθμοί με δεκαδικά ψηφία Χαρακτήρες (character): Σύμβολα Boolean: Αληθές/ψευδές Δηλώσεις Μεταβλητών float Length, Width; int Price, Tax, Total; char Symbol 16

Δομές δεδομένων (Data structures) Δομές δεδομένων: Νοητικά σχήματα για τη διάταξη δεδομένων Οι αλγόριθμοι προτιμούν τα δεδομένα να είναι δομημένα (για μεγαλύτερη αποδοτικότητα) Πίνακες (arrays) Λίστες (lists) Δένδρα (trees) Πως τα υλοποιούμε στη μνήμη; 17

Πίνακες Δομή δεδομένων: α11 α12 α13 α21 α22 α23 γραμμή 1 γραμμή 2 γραμμή 3 Μνήμη: αρχή του πίνακα... γραμμή 1 γραμμή 2 γραμμή 3... 18

Παράδειγμα: Ένας 2- διάστατος πίνακας 2 γραμμών και 9 στηλών int Scores[2][9] στην C INTEGER Scores(2,9) στην Fortran Πάνω αριστερά στοιχείο του πίνακα: Scores[0][0] στην C, Scores(1,1) στην FORTRAN 19

Λίστες Λίστα: ακολουθία από records (int ή πιο σύνθετα records, βλ. Παρακάτω) Λίστα: 10, 12, 6, 7 πρόσθεση μέλους: 10, 12, 2, 6, 7 pointer (δείκτης)... 27 30 34 36... 30 nil... 10 12 34 6 36 7 27 27 30 34 36 40 10 30 12 40 6 36 7 nil 2 34 20

Δένδρα T Α Δομή δεδομένων: A B C Β nil nil D E C Υλοποίηση στη μνήμη: D nil nil E nil nil 21

Ετερογενής πίνακας (structure) Eτερογενής πίνακας ή Δομή (structure) ή record. Μπλοκ δεδομένων με στοιχεία (πεδία) ενδεχομένως διαφορετικού τύπου Employee.Name Employee.Age Employee.SkillRating 22

Παράδειγμα Ετερογενούς πίνακα δεδομένων 23

Σταθερές (constants) και δηλώσεις ανάθεσης Καλύτερα να δηλώνονται στην αρχή του προγράμματος Αν χρειαστεί να αλλαχθούν, θα αλλαχθούν μόνο εκεί Δηλώσεις ανάθεσης (assignment statements) Μπορεί να διαφέρουν σε διαφορετικές γλώσσες, π.χ. Αριθμητικές πράξεις Τηρείται η προτεραιότητα τελεστών (operator precedence) 2*4 + 6 / 2 = 11 Ο ίδιος τελεστής μπορεί να έχει διαφορετικές λειτουργίες π.χ. + κάνει πρόσθεση (αν έχει ως τελεστέους αριθμούς) ή συνένωση (concatenation) από strings (αν έχει ως τελεστέους strings) Αυτή η «διπλή» λειτουργία λέγεται υπερφόρτωση τελεστή (operator overloading) 24

Δομές ελέγχου και οι αναπαραστάσεις τους στις γλώσσες C, C++, C#, και Java

Η δομή βρόχου for και η αναπαράσταση της στις γλώσσες C++, C# και Java 26

Διαδικασίες (procedures) Διαδικασία (procedure): μια σειρά από εντολές που υλοποιούν μια εργασία Μπορεί να χρησιμοποιηθεί ως αυτούσια προγραμματιστική μονάδα 27

Διαδικασίες (2) Έχουν τη δομή ενός συνήθους προγράμματος (κεφαλίδα, δήλωση μεταβλήτών, σειρά εντολών) Μεταβλητές: Τοπικές (local), χρησιμοποιούνται και αλλάζουν μόνο εντός της διαδικασίας Ολικές (global), χρησιμοποιούνται και αλλάζουν σε όλο το πρόγραμμα Εύρος ή εμβέλεια (scope) μιας μεταβλητής: το μέρος του προγράμματος που μπορεί μια μεταβλητή να χρησιμοποιηθεί Κλήση: απλά με το όνομα 28

Παράδειγμα Διαδικασίας Παράμετροι (parameters): ορίσματα Τυπικές (formal) παράμετροι: οι παράμετροι που χρησιμοποιούνται εντός της διαδικασίας Πραγματικές (actual) παράμετροι: οι τιμές που ανατίθενται στις τυπικές παραμέτρους όταν καλείται η διαδικασία από το κυρίως πρόγραμμα 29

Πέρασμα παραμέτρων Περιγραφή διαδικασίας: Κλήση διαδικασίας με κατάλληλες παραμέτρους: Πέρασμα παραμέτρων κατά τιμή ή αξία (Passed by value) Ένα αντίγραφο των δεδομένων που παριστάνεται με τις πραγματικές παραμέτρους δίνεται στην διαδικασία Αλλαγή των δεδομένων από την διαδικασία: αλλάζει μόνο τα δεδομένα στο αντίγραφο, και όχι αυτά στο κυρίως (καλόν) πρόγραμμα Πέρασμα παραμέτρων κατ αναφορά (passed by reference) Δίνεται στην διαδικασία απευθείας πρόσβαση στις τιμές των πραγματικών παραμέτρων, δηλ. δίνονται στην διαδικασία οι διευθύνσεις των πραγματικών παραμέτρων Αλλαγή των δεδομένων από την διαδίκασία αλλάζει τα δεδομένα και στο κυρίως πρόγραμμα Η μέθοδος χρησιμοποιείται αν ο σκοπός της διαδικασίας είναι η αλλαγή των δεδομένων (π.χ. ταξινόμηση μιας λίστας) 30

Παράδειγμα: Πέρασμα παραμέτρων κατά αξία Actual = 5 Κλήση διαδικασίας: 31

Παράδειγμα: Πέρασμα παραμέτρων κατ αναφορά Actual = 5 Κλήση διαδικασίας: 32

Παράδειγμα Συνάρτησης Διαφορά από την Διαδικασία: Η συνάρτηση (function) πάντα επιστρέφει μια τιμή 33

Μετάφραση Πρόγραμμα- πηγή (source program): το πρόγραμμα γραμμένο στην αρχική του μορφή Μετάφραση: μετατροπή προγράμματος από μια μορφή σε άλλη Πρόγραμμα- αντικείμενο (object- program): ενδιάμεσο αποτέλεσμα μετάφρασης Χρειαζόμαστε μετάφραση για: εντολές σε γλώσσα υψηλού επιπέδου δομές δεδομένων (υψηλού επιπέδου) δύο στρατηγικές: διερμηνεία (interpretation) μεταγλωττισμός (compilation) 34

Διερμηνεία Διερμηνευτής (interpreter): Μεταφράζει και εκτελεί το πρόγραμμα υψηλού επιπέδου εντολή προς εντολή ταχύτητα όχι σημαντική λίγη μνήμη ανακάλυψη λαθών (debugging) ξεκίνα από την αρχή του προγράμματος υψηλού επιπέδου Repeat μετάφρασε την επόμενη εντολή υψηλού επιπέδου εκτέλεσε την μετάφραση της εντολής με τα αντίστοιχα δεδομένα until τέλος προγράμματος 35

Μεταγλωττισμός Μεταγλωττιστής (Compiler): μεταφράζει μία φορά το πρόγραμμα υψηλού επιπέδου (source program) σε πρόγραμμα γλώσσας μηχανής / πρόγραμμα- αντικείμενο (object program) Ταχύτητα σημαντική ξεκίνα από την αρχή του προγράμματος υψηλού επιπέδου Repeat μετάφρασε την επόμενη εντολή υψηλού επιπέδου until τέλος προγράμματος κάνε τις τελικές αλλαγές στον μεταφρασμένο κώδικα ώστε να είναι έτοιμος για εκτέλεση 36

Η διαδικασία της Μεταγλώττισης Λεκτικός Αναλυτής Συντακτικός Αναλυτής Γεννήτρια κώδικα Πρόγραμμα αντικείμενο Πηγαίο Πρόγραμμα 37

Μεταγλώττιση Λεκτικός αναλυτής (lexical analyzer): διαβάζει το πρόγραμμα χαρακτήρα προς χαρακτήρα, αναγνωρίζει συμβολικές οντότητες Συμβολική οντότητα (token) Ταξινόμηση tokens σε κατηγορίες (τελεστές, σύμβολα, αριθμητικές τιμές, κλπ) Συντακτικός αναλυτής (parser): συντάσσει τα tokens σε προτάσεις και statements Αναγνώριση της γραμματικής δομής του προγράμματος Αναγνώριση του ρόλου κάθε token Παράδειγμα σύνταξης στα αγγλικά: Δεσμευμένες λέξεις (reserved words) Ο parser χρησιμοποιεί την Γραμματική (grammar) της γλώσσας Γραμματική: σύνολο από συντακτικούς κανόνες 38

Περιγραφή σύνταξης Α. Διαγράμματα σύνταξης Λογική Παράσταση Εντολή if then else Εντολή Β.Κανόνες BNF ifstmt - > if log_exp then stmt if log_exp then stmt else stmt If x<1 then y=2 else z=1 39

Παράδειγμα γραμματικής Ο Γιάννης είναι καλός μαθητής και έχει κακό χαρακτήρα Γραμματική (σύνταξη): προτ - > απλή_προτ σύνθ_προτ απλή_προτ - > υποκ ρήμα επίθ αντικ υποκ ρήμα αντικ σύνθ_προτ - > απλή_προτ και απλή_προτ απλή_προτ και σύνθ_προτ Βασικοί τύποι λέξεων (τερματικά σύμβολα): {υποκ, ρήμα, επίθ, αντικ, και} Λεξικογραφική περιγραφή: υποκ - > Γιάννης, Κώστας, άνδρας ρήμα - > έχει, κάνει,... 40

Ορισμός σύνταξης BNF Γραμματικές: BNF σύνταξη (Backus- Naur Form) κανόνες παραγωγής, τερματικά, μη- τερματικά σύμβολα τερματικά σύμβολα (terminals, tokens): στοιχειώδη σύμβολα, δεν αναλύονται περισσότερο ( τύποι λέξεων...) μη- τερματικά σύμβολα (non- terminals): συντακτικές κατηγορίες (προτάσεις, υπο- προτάσεις,...), δηλ. αυτά που μπορούν να αναλυθούν περαιτέρω με άλλα διαγράμματα δυνατότητα αναδρομικών ορισμών Γλώσσα: σύνολο σωστών ακολουθιών τερματικών συμβόλων 41

Διαγράμματα σύνταξης για τη δομή της αλγεβρικής παράστασης x+y*z E -> T+E T-E T T -> F*T F/T F F -> x y z 42

Δέντρο συντακτικής ανάλυσης για τη συμβολοσειρά x+y*z E - > T+E T- E T T - > F*T F/T F F - > x y z 43

Παράδειγμα γλώσσας Γλώσσα = απλές αριθμητικές εκφράσεις με 0,...,9 και +,-,*,/ E - > E + E E E E * E E / E - E E - > 0 1 2 3 4 5 6 7 8 9 9-2*5 είναι σωστή πρόταση; 6+*4 είναι σωστή πρόταση; Σημασία πρότασης; 9 E E - E E E 2 * 5 συντακτικό δέντρο Σωστή πρόταση: υπάρχει προτασιακό δέντρο που να την δικαιολογεί 44

Ασάφεια στην Γραμματική E - > E + E E E E * E E / E - E E - > 0 1 2 3 4 5 6 7 8 9 τι σημαίνει 9-2*5 ; E E 9 E E 2 * 5 2 συντακτικά δέντρα! ποιο από τα δύο εννοούμε; E - E 9 E E - E * 2 E 5 45

Παράδειγμα ασαφούς γραμματικής Θεωρείστε την εντολή: Μπορεί να ερμηνευτεί και με τα δυο δέντρα Ασάφεια (ambiguity) Σε ποιο if αναφέρεται το else; Στον ψευδοκώδικα αποφεύγουμε το μπέρδεμα ως εξής: 46

Παράδειγμα Λεκτικής και Συντακτικής Ανάλυσης Συντακτική ανάλυση συντακτικό δένδρο condition relation statement conditional statement assignment expression operator if id neq num then set id to id + id b if b x b! = b 1 b thenb setb y b to bx + y Λεκτική ανάλυση 47

Συντακτικός αναλυτής Ο συντακτικός αναλυτής κατασκευάζει ένα συντακτικό δέντρο για το πηγαίο πρόγραμμα Το δέντρο παριστάνει την ερμηνεία του αναλυτή για την γραμματική σύνθεση του προγράμματος Γι αυτό πρέπει οι συντακτικοί κανόνες μιας γλώσσας να είναι μονοσήμαντοι, δηλ. μια σειρά από εντολές να μην οδηγεί σε 2 ή περισσότερα δυνατά συντακτικά δέντρα Ο συντακτικός αναλυτής διαχωρίζει τις δηλωτικές από τις προστακτικές εντολές Κατασκευάζει τον πίνακα συμβόλων (symbol table) με μεταβλητές, σταθερές, τύπους δεδομένων Χρησιμοποιεί τους τύπους δεδομένων για να ερμηνεύσει μια εντολή π.χ. z ß x + y, δηλ. τι τύπος είναι το x και το y (int, float, char) Ακολούθως, δίνει ανάλογο σήμα στην γεννήτρια κώδικα για να κατασκευάσει την κατάλληλη εντολή (ή ακολουθία εντολών) σε γλώσσα μηχανής 48

Οι φάσεις της μεταγλώττισης πηγαίο πρόγραμμα σε γλώσσα υψηλού επιπέδου αφαιρεί άχρηστη πληροφορία Λεκτική ανάλυση... bif bx17=bmaxb-3... blank space πίνακας αριθμ. σταθερών τιμή 3 4001 θέση 100 101 L 41 12 3 12 19 13 if id eq id - num nil Συντακτική ανάλυση nil nil G όνομα Γεννήτρια κώδικα πίνακας συμβόλων x17 integer 1445 max integer 1447 αντικείμενο πρόγραμμα σε γλώσσα μηχανής συντακτικό δένδρο τύπος θέση στη μνήμη y integer 1446 49

Συντακτική ανάλυση abcdbwbwbw Λεκτική ανάλυση Συντακτική ανάλυση Γεννήτρια κώδικα tokens Γραμματική G Κατασκευή συντακτικού δένδρου (parse tree) bottom up αρχικό σύμβολο top - down Πίνακας συμβόλων τερματικά (tokens) κανόνας της γραμματικής 50

Γεννήτρια κώδικα Κατασκευάζει τις εντολές σε γλώσσα μηχανής που υλοποιούν τις εντολές που αναγνωρίζονται από τον συντακτικό αναλυτή Βελτιστοποίηση κώδικα (code optimization) Π.χ. Ελαχιστοποίηση του αριθμού των εντολών σε γλώσσα μηχανής που υλοποιούν μια σειρά εντολών Στο παραπάνω, μετά την 1 η εντολή και πριν την 2 η, αναγνωρίζει η γεννήτρια κώδικα ότι οι x, z υπάρχουν ήδη σε καταχωρητές 51

Γεννήτρια κώδικα (2) condition relation statement conditional statement assignment expression operator if id neq num then set id to id + id 1000 load R0 1456 1001 load R1 100 1002 subtract R0 R0 R1 1002 jumpzero 1007 1003 load R1 1456 1004 load R2 1457 1005 add R1 R1 R2 1006 store R1 1457 1007... x integer 1456 1 100 y integer 1457 module generate-expression(t) A1:= & of left child generate load R1 A1 A2:= & of right child generate load R2 A2 if op = + then generate add R1 R1 R2 else generate subtract R1 R1 R2 52

Διαδικασία Μετάφρασης Διαρκής αλληλεπίδραση και ανταλλαγή μηνυμάτων μεταξύ των διαφόρων σταδίων 53

Ολόκληρη η διαδικασία προετοιμασίας ενός προγράμματος για εκτέλεση Μετάφραση Σύνδεση Φόρτωση Εκτελέσιμο Πηγαίο Πρόγραμμα Υπομονάδα Πρόγραμμα Πρόγραμμα αντικείμενο φόρτωσης 54

Αντικειμενοστραφής προγραμματισμός Αντικείμενο (object): μία αυτόνομη προγραμματιστική μονάδα που περιέχει δεδομένα και διαδικασίες Στις γλώσσες αντικειμενοστραφούς προγραμματισμού (C++, Java) το σημαντικό είναι η σωστή περιγραφή των αντικειμένων Κλάση (class): ένα πρότυπο για όλα τα αντικείμενα του ίδιου τύπου Ένα αντικείμενο ονομάζεται στιγμιότυπο (instance) της κλάσης. Ορισμός αντικειμένων στην C++: Java: 55

Στοιχεία ενός αντικειμένου Μεταβλητή στιγμιότυπου (instance variable) είναι μία μεταβλητή που βρίσκεται στο εσωτερικό ενός αντικειμένου. Π.χ. RemainingPower Μέθοδος (method) είναι μία διαδικασία στο εσωτερικό ενός αντικειμένου. Μπορεί να χειριστεί τις μεταβλητές στιγμιότυπου ενός αντικειμένου. Π.χ. turnright(), turnleft(), fire() Η κληρονομικότητα (inheritance) επιτρέπει σε μία κλάση να περιλαμβάνει ιδιότητες κάποιας προηγούμενα ορισμένης κλάσης 56

Μέθοδος Κατασκευής Μέθοδος κατασκευής (constructor): ειδική μέθοδος που εκτελείται αυτόματα κατά τη δημιουργία ενός αντικειμένου από την κλάση. Ίδιο όνομα με το αντικείμενο Βοηθά στην διαφορετική αρχικοποίηση ή ανάθεση διαφορετικών παραμέτρων σε αντικείμενα της ίδιας κλάσης 57

Ενθυλάκωση Ενθυλάκωση (encapsulation) είναι ένας τρόπος περιορισμού της πρόσβασης στις εσωτερικές ιδιότητες ενός αντικειμένου. Μόνο το ίδιο το αντικείμενο μπορεί να έχει πρόσβαση και να αλλάξει τις ιδιότητες. Μπορεί να είναι: Ιδιωτική Δημόσια. 58

Δηλωτικός προγραμματισμός (Declarative Programming) Επίλυση (resolution): ο συνδυασμός δύο ή περισσοτέρων προτάσεων για την παραγωγή μίας νέας πρότασης (που είναι αληθής αν οι αρχικές προτάσεις είναι αληθείς) Παράδειγμα: (P OR Q) AND (R OR Q) δίνει ως αποτέλεσμα (- >) την (P OR R) Σημαίνει ότι αν η αρχική πρόταση είναι αληθής, τότε και το αποτέλεσμα (η 2 η πρόταση) είναι αληθής Αν Q αληθής, τότε R πρέπει να είναι αληθής. Αν Q ψευδής, τότε η P πρέπει να είναι αληθής. Άρα P OR R είναι αληθής, ανεξάρτητα του τι είναι το Q Επιλυθέν (resolvent) ονομάζεται η νέα πρόταση που σχηματίζεται από την επίλυση. Μορφή όρων (clause form) έχουμε σε μία πρόταση των οποίων τα θεμελιώδη στοιχεία συνδέονται με τη λογική πράξη ΟR. Ενοποίηση (unification) είναι η διαδικασία ανάθεσης τιμών σε μεταβλητές μέσα σε μία πρόταση. 59

Παράδειγμα: Επίλυση των προτάσεων (P OR Q) και (R OR Q) ώστε να παραχθεί η (P OR R) Α Β Αν Συνθήκη Α αληθής Και συνθήκη Β αληθής Τότε και Συνθήκη Γ αληθής Γ 60

Παράδειγμα 2: Επίλυση των προτάσεων (P OR Q), (R OR Q), R, και P Ένα σύνολο από προτάσεις λέγεται ασυνεπές (inconsistent) αν είναι αδύνατο όλες να είναι αληθείς την ίδια στιγμή Επαναληπτική επίλυση για να βρεθεί αν το σύνολο προτάσεων είναι ασυνεπές ή όχι 61

Πολύ σύντομη εισαγωγή στην Prolog Κατηγόρημα (predicate): βασικό δομικό συστατικό της γλώσσας Όλες οι προτάσεις είναι είτε γεγονότα είτε κανόνες. Γεγονός (Fact): όνομα Κατηγορήματος(ορίσματα) Παράδειγμα: parent( bill, mary) faster(rabbit, turtle) (μια συγκεκριμένη εκδοχή) Κανόνας (Rule): συμπέρασμα :- πρόταση :- σημαίνει αν Παράδειγμα: wise(x) :- old(x). Παράδειγμα: (μια γενική ιδιότητα) faster(x, Z) :- faster(x, Y), faster(y, Z) σημαίνει Ο προγραμματιστής καθορίζει τα γεγονότα και τους κανόνες 62