Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές
|
|
- Ἀνίκητος Μανωλάς
- 5 χρόνια πριν
- Προβολές:
Transcript
1 Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
2 Περιεχόμενα 1 Μεταβλητές και Αντικείμενα 2 Διάρκεια Ζωής και Διαχείριση Μνήμης 3 Εμβέλεια 4 Παραστάσεις Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
3 Περιεχόμενα 1 Μεταβλητές και Αντικείμενα 2 Διάρκεια Ζωής και Διαχείριση Μνήμης 3 Εμβέλεια 4 Παραστάσεις Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
4 Μεταβλητές και Αντικείμενα Ονομα ονομάζουμε μία ακολουθία χαρακτήρων, που χρησιμοποιείται για να αναφερόμαστε σε κάποιο συστατικό του προγράμματος (μεταβλητή, σταθερά, συνάρτηση, τύπο,...). Τα ονόματα στις περισσότερες γλώσσες σχηματίζονται από γράμματα του λατινικού αλφαβήτου, αριθμητικά ψηφία, διαχωριστικούς χαρακτήρες (π.χ. ), ενώ ενδέχεται κατά περίπτωση να επιτρέπεται η χρήση άλλων συμβόλων, χαρακτήρων από άλλα αλφάβητα... Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
5 Μεταβλητές και Αντικείμενα Η μεταβλητή είναι πολύ σημαντική έννοια για τις προστακτικές γλώσσες γιατί ο προγραμματισμός συνίσταται στις διαδοχικές αλλαγές τιμών των αντικειμένων που είναι αποθηκευμένα στη μνήμη κατά τη διάρκεια της εκτέλεσης του προγράμματος και τα οποία είναι προσβάσιμα μέσω των μεταβλητών με τις οποίες συνδεόνται. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
6 Μεταβλητές και Αντικείμενα Αντικείμενο ονομάζουμε οτιδήποτε μπορεί να παριστάνεται από τα δεδομένα που είναι αποθηκευμένα σε μία ομάδα κελιών της μνήμης. (Σημειώνεται ότι στις αντικειμενοστρεφείς γλώσσες η έννοια του αντικειμένου έχει διαφορετική σημασία.) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
7 Μεταβλητές και Αντικείμενα Ενα αντικείμενο χαρακτηρίζεται από τα εξής στοιχεία: Αναφορά: είναι η θέση (ή οι θέσεις) στη μνήμη, στην οποία είναι αποθηκευμένο το αντικείμενο. Τύπο: καθορίζει το σύνολο των τιμών που μπορεί να πάρει το αντικείμενο και τις διαθέσιμες λειτουργίες στις οποίες μπορεί να συμμετέχει. Τιμή: καθορίζεται σε κάθε χρονική από το περιεχόμενο της μνήμης, σε συνδυασμό με τον τύπο του αντικειμένου (η υλοποίηση του οποίου δίνει έναν τρόπο μετατροπής του περιεχομένου της μνήμης σε τιμή). Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
8 Μεταβλητές και Αντικείμενα Κάθε μεταβλητή έχει ένα όνομα και συνδέεται με κάποιο αντικείμενο. Η τιμή της μεταβλητής ταυτίζεται με αυτή του αντικειμένου με το οποίο είναι συνδεδεμένη. Ο τύπος της μεταβλητής (αν υπάρχει) καθορίζει τον τύπο των αντικειμένων με τα οποία μπορεί να συνδεθεί η μεταβλητή. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
9 Μεταβλητές και Αντικείμενα Υπάρχουν δύο βασικές προσεγγίσεις για το πώς συνδέονται οι μεταβλητές με τα αντικείμενα: Μοντέλο τιμών: κάθε μεταβλητή είναι άρρηκτα συνδεδεμένη με ένα μοναδικό αντικείμενο. Σε αυτή την περίπτωση μία μεταβλητή είναι πρακτικά ένα αντικείμενο με όνομα και συνήθως ταυτίζεται με το αντικείμενο αυτό. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
10 Μεταβλητές και Αντικείμενα Μοντέλο αναφορών: κάθε μεταβλητή μπορεί να συνδέεται με διαφορετικά αντικείμενα σε διαφορετικές χρονικές στιγμές. Σε αυτή την περίπτωση η μεταβλητή είναι απλά ένα όνομα συνδεδεμένο με μία θέση μνήμης στην οποία αποθηκεύται κάθε φορά η αναφορά στο αντικείμενο με το οποίο συνδέεται η μεταβλητή. Οι γλώσσες με μοντέλο τιμών, μπορούν να υλοποιήσουν το μοντέλο αναφορών με χρήση δεικτών. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
11 Μεταβλητές και Αντικείμενα Moντελo τιµων x 2015 y 2015 Moντελo αναϕoρων x y 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
12 Μεταβλητές και Αντικείμενα Ψευδωνυμία ονομάζεται το φαινόμενο κατα το οποίο δύο μεταβλητές συνδέονται με το ίδιο αντικείμενο, π.χ. πέρασμα παραμέτρων με αναφορά Εντολή EQUIVALENCE της FORTRAN τύπος union στη C, variant records στην Pascal σύνηθες στο μοντέλο αναφορών Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
13 Περιεχόμενα 1 Μεταβλητές και Αντικείμενα 2 Διάρκεια Ζωής και Διαχείριση Μνήμης 3 Εμβέλεια 4 Παραστάσεις Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
14 Διάρκεια Ζωής και Διαχείριση Μνήμης Ονομάζουμε μπλοκ μία ενότητα του προγράμματος, η οποία μπορεί να περιέχει δηλώσεις μεταβλητών (και γενικότερα ονομάτων). Για παράδειγμα ένα υποπρόγραμμα αποτελεί μπλόκ. Διάρκεια ζωής ενός αντικειμένου ονομάζεται το χρονικό διάστημα κατά την εκτέλεση του προγράμματος κατά το οποίο το αντικείμενο είναι αποθηκευμένο σε κάποιες θέσεις μνήμης που χρησιμοποιούνται από το πρόγραμμα. Οταν μία μεταβλητή συνδέεται με ένα αντικείμενο, ενδέχεται η διάρκεια ζωής της σύνδεσης μεταβλητής - αντικειμένου να διαφέρει από την διάρκεια ζωής του ίδιου του αντικειμένου. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
15 Διάρκεια Ζωής και Διαχείριση Μνήμης Η διάρκεια ζωής ενός αντικειμένου γενικά διαφέρει από τη διάρκεια εκτέλεσης του προγράμματος. Αυτό είναι χρήσιμο για αρκετούς λόγους: Ενδέχεται το σύνολο των αντικειμένων που θα πρέπει να αποθηκευτούν στη μνήμη κατα τη διάρκεια της εκτέλεσης του προγράμματος να απαιτεί χώρο που υπερβαίνει το μέγεθος της διαθέσιμης μνήμης. Ενδέχεται να πρέπει να κατασκευαστεί μία λίστα από αντικείμενα που το πλήθος τους δεν είναι γνωστό εκ των προτέρων. Ενα αναδρομικό υποπρόγραμμα δημιουργεί αντικείμενα σε κάθε κλήση του και το βάθος της αναδρομής καθορίζεται κατά τη διάρκεια της εκτέλεσης του προγράμματος.... Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
16 Διάρκεια Ζωής και Διαχείριση Μνήμης Μπορούμε να διακρίνουμε τις παρακάτω τρεις κατηγορίες αντικειμένων, ανάλογα με τη διάρκεια ζωής τους. Τα αντικείμενα κάθε κατηγορίας αποθηκεύονται σε ένα ξεχωριστό τμήμα της μνήμης: Στατικά αντικείμενα: έχουν διάρκεια ζωής ίση με ολόκληρο το χρόνο εκτέλεσης του προγράμματος. Η αναφορά τους μπορεί να καθοριστεί στατικά (σε χρόνο φόρτωσης). Αντικείμενα στοίβας: έχουν ως διάρκεια ζωής τη διάρκεια εκτέλεσης ενός υποπρογράμματος (η γενικότερα ενός μπλοκ του προγράμματος). Τα αντικείμενα αυτά αποθηκεύονται σε ένα τμήμα της μνήμης που ονομάζεται στοίβα (η αποθήκευση αυτών των αντικειμένων μπορεί να γίνει στατικά μόνο σε γλώσσες που δεν υποστηρίζουν αναδρομή). Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
17 Διάρκεια Ζωής και Διαχείριση Μνήμης Αντικείμενα σωρού: δημιουργούνται και καταστρέφονται σε αυθαίρετες χρονικές στιγμές. Τα αντικείμενα αυτά: δημιουργούνται με κατάλληλη εντολή του προγράμματος και η διάρκεια ζωής τους ενδέχεται να υπερβαίνει τη διάρκεια εκτέλεσης του μπλόκ κατά την εκτέλεση του οποίου δημιουργούνται. καταστρέφονται με έναν από τους παρακάτω τρόπους: με κατάλληλη εντολή του προγράμματος αυτόματα κατά τη συλλογή σκουπιδιών, αν διαπιστωθεί ότι δεν υπάρχει πρόσβαση από το πρόγραμμα προς αυτά όταν ολοκληρωθεί το πρόγραμμα. αποθηκεύονται σε ένα τμήμα της μνήμης που ονομάζεται σωρός. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
18 Διάρκεια Ζωής και Διαχείριση Μνήμης Παράδειγμα Εστω το παρακάτω πρόγραμμα Pascal: program p; var q:^integer; procedure create(n:integer); begin; new(q); q^:=n; end; procedure delete; begin; dispose(q) end; begin (* of program p *) create(5); delete; end. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
19 Διάρκεια Ζωής και Διαχείριση Μνήμης Το αντικείμενο τύπου ^integer (δείκτης σε ακέραιο) που συνδέεται με τη μεταβλητή q είναι στατικό αντικείμενο. Η διάρκεια ζωής του ταυτίζεται με τη διάρκεια εκτέλεσης του προγράμματος. Το αντικείμενο τύπου integer που συνδέεται με την τυπική παράμετρο n του υποπρογράμματος create είναι αντικείμενο στοίβας. Η διάρκεια ζωής του ταυτίζεται με τη διάρκεια εκτέλεσης του υποπρογράμματος create. Το αντικείμενο που κατασκευάζεται στο υποπρόγραμμα create με την χρηση του new είναι αντικείμενο σωρού. Το αντικείμενο αυτό δεν έχει δικό του όνομα. Είναι ωστόσο προσπελάσιμο μέσω της μεταβλητής q η τιμή της οποίας είναι η θέση μνήμης στην οποία είναι αποθηκευμένο αυτό το αντικείμενο. Το αντικείμενο αυτό εξακολουθεί να υπάρχει και μετά την ολοκλήρωση του υποπρογράμματος create και καταστρέφεται κατά τη διάρκεια εκτέλεσης της delete με χρήση του dispose. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
20 Διάρκεια Ζωής και Διαχείριση Μνήμης Τα στατικά αντικείμενα αποθηκεύονται σε ένα ξεχωριστό τμήμα της μνήμης και οι αναφορές τους μπορούν να καθοριστούν κατά τη φόρτωση του προγράμματος. Η μνήμη στην οποία αποθηκεύονται μπορεί να βρίσκεται στην αρχή της στοίβας, χωρίς αυτό να είναι απαραίτητο. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
21 Διάρκεια Ζωής και Διαχείριση Μνήμης Η στοίβα χρησιμοποιείται για αντικείμενα που δημιουργούνται κατά την αρχή της εκτέλεσης ενός μπλόκ και καταστρέφονται κατά την ολοκλήρωσή του. Η δέσμευση μνήμης για αυτά τα αντικείμενα γίνεται δυναμικά (σε χρόνο εκτέλεσης). Παρατηρούμε ότι οι κλήσεις των υποπρογραμμάτων ακολουθούν την λογική LIFO (last in first out): το πρώτο υποπρόγραμμα που καλείται είναι το τελευταίο που ολοκληρώνεται. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
22 Διάρκεια Ζωής και Διαχείριση Μνήμης Η διαχείριση της στοίβας γίνεται με τον παρακάτω τρόπο: Αρχικά η στοίβα είναι κενή (ο χώρος στη μνήμη που διατίθεται για την αποθήκευση της στοίβας είναι αχρησιμοποίητος) Κάθε φορά που καλείται ένα υποπρόγραμμα δημιουργείται στην κορυφή της στοίβας ένα εγγράφημα δραστηριοποίησης, στο οποίο αποθηκεύονται (μαζί με άλλες πληροφορίες που σχετίζονται με το υποπρόγραμμα) τα αντικείμενα στοίβας που δημιουργούνται με την κλήση του υποπρογράμματος. Παρότι η θέση μνήμης ενός αντικειμένου στοίβας δεν μπορεί να προβλεφθεί στατικά, η σχετική θέση του μέσα στο εγγράφημα δραστηριοποίησης μπορεί να καθοριστεί στατικά. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
23 Διάρκεια Ζωής και Διαχείριση Μνήμης Οταν ολοκληρώνεται η εκτέλεση ένος υποπρογράμματος, το εγγράφημα δραστηριοποίησης του διαγράφεται από τη στοίβα και οι αντίστοιχες θέσεις μνήμης ελευθερώνονται. Κατ αυτό τον τρόπο τα αντικείμενα που είχαν δημιουργηθεί κατά την κλήση του καταστρέφονται. Η στοίβα συρρικνώνεται στο μέγεθος που είχε ακριβώς πριν την κλήση. Παρατηρούμε ότι στο τμήμα της μνήμης που διατίθεται για αποθήκευση των αντικειμένων στοίβας, η στοίβα όπως επίσης και ο αχρησιμοποίητος χώρος αποτελούνται απο συνεχόμενες θέσεις μνήμης. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
24 Διάρκεια Ζωής και Διαχείριση Μνήμης Παράδειγμα Εστω ο παρακάτω σκελετός προγράμματος σε Pascal: program p(...); var...; procedure a(...); var...; begin... end; procedure b(...); var...; begin... end; procedure c(...); var...; begin... b(...);... a(...);... end; procedure d(...); var...; begin... c(...);... end; begin (* of program p *) d(...); b(...) end. (* of program p *) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
25 Διάρκεια Ζωής και Διαχείριση Μνήμης Στο παρακάτω σχήμα φαίνεται πως τροποποιείται το περιεχόμενο της στοίβας κατά την κλήση και την ολοκλήρωση κάθε υποπρογράμματος. Το κυρίως πρόγραμμα p καλεί αρχικά το υποπρόγραμμα d, το d καλεί το c και το c διαδοχικά τα υποπρογράμματα b και a. Στη συνέχεια το κυρίως πρόγραμμα p καλεί το b. Η στοίβα μεγαλώνει από αριστερά προς τα δεξιά (η κορυφή της στοίβας είναι το δεξιότερο σημείο της), ενώ ο χρόνος τρέχει από πάνω προς τα κάτω. Οι στατικές μεταβλητές αποθηκεύονται σε ξεχωριστό τμήμα της μνήμης, το οποίο εικονίζεται ακριβώς πρίν από την αρχή της στοίβας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
26 Διάρκεια Ζωής και Διαχείριση Μνήμης αρχη κληση d κληση c κληση b oλoκληρωση b κληση a oλoκληρωση a oλoκληρωση c oλoκληρωση d κληση b oλoκληρωση b τɛλoς p p d p d c p d c b p d c p d c a p d c p d p p b p Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
27 Διάρκεια Ζωής και Διαχείριση Μνήμης Παρατηρούμε ότι εγγραφήματα δραστηριοποίησης διαφορετικών υποπρογραμμάτων (π.χ. των b και a) χρησιμοποιούν τις ίδιες θέσεις της στοίβας σε διαφορετικές χρονικές στιγμές. Επίσης τα εγγραφήματα δραστηριοποίησης διαφορετικών κλήσεων του ίδιου υποπρογράμματος (π.χ. του b) χρησιμοποιούν διαφορετικές θέσεις της στοίβας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
28 Διάρκεια Ζωής και Διαχείριση Μνήμης Ο σωρός χρησιμοποιείται για αντικείμενα που σχηματίζονται και καταστρέφονται με ακαθόριστο τρόπο. Η δέσμευση μνήμης για αυτά τα αντικείμενα γίνεται δυναμικά (σε χρόνο εκτέλεσης). Επειδή η διάρκεια ζωής αυτών των αντικειμένων δεν μπορεί να προβλεφθεί τη στιγμή που δεσμεύεται η μνήμη για την αποθήκευσή τους, ενδέχεται σε κάποια χρονική στιγμή ο διαθέσιμος χώρος στο σωρό να αποτελείται από πολλά μικρά τμήματα τα οποία δεν είναι συνεχόμενα στη μνήμη. Αυτό σημαίνει ότι ένα (σχετικά μεγάλο) αντικείμενο ενδέχεται να μην χωράει στο σωρό, παρότι ο συνολικός διαθέσιμος χώρος υπερβαίνει το μέγεθός του. Το φαινόμενο αυτό ονομάζεται εξωτερική κατάτμηση. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
29 Διάρκεια Ζωής και Διαχείριση Μνήμης Η διαχείριση της διαθέσιμης μνήμης στο σωρό μπορεί να γίνει με διάφορους αλγόριθμους. Μία κατηγορία αλγορίθμων βασίζεται στη διατήρηση μίας συνδεδεμένης λίστας με όλα τα ελεύθερα τμήματα του σωρού. Η λειτουργία αυτών των αλγορίθμων συνοψίζεται παρακάτω: Αρχικά η λίστα περιέχει ένα μοναδικό τμήμα που καλύπτει ολόκληρο το σωρό, καθώς ολόκληρη η μνήμη του σωρού είναι διαθέσιμη. Οταν υπάρχει αίτημα για την κατασκευή ενός αντικειμένου, αναζητείται στη λίστα ένα τμήμα με μέγεθος επαρκές ώστε να αποθηκευτεί το αντικείμενο. Αν το τμήμα της μνήμης που επιλέγεται είναι μεγαλύτερο από το μέγεθος του αντικειμένου, τότε το αχρησιμοποίητο τμήμα αποθηκεύεται στη λίστα στη θέση του αρχικού. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
30 Διάρκεια Ζωής και Διαχείριση Μνήμης Οταν καταστραφεί ένα αντικείμενο, το τμήμα της μνήμης που καταλάμβανε αποδεσμεύεται και εισάγεται στην κατάλληλη θέση της λίστας. Στη συνέχεια γίνεται έλεγχος για το αν κάποιο από τα γειτονικά τμήματα του σωρού είναι ελεύθερο. Στην περίπτωση αυτή τα δύο (ή τρία) τμήματα συνενώνονται σε ένα μοναδικό τμήμα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
31 Διάρκεια Ζωής και Διαχείριση Μνήμης Υπάρχουν διάφορες παραλλαγές του παραπάνω γενικού αλγόριθμου διαχείρισης του σωρού: Ο αλγόριθμος πρώτου ταιριάσματος ικανοποιεί το αίτημα για μνήμη χρησιμοποιώντας το πρώτο τμήμα που θα βρεί στη λίστα και το οποίο είναι αρκετά μεγάλο ώστε να ικανοποιήσει το αίτημα. Ο αλγόριθμος καλύτερου ταιριάσματος, ανάμεσα στα τμήματα της λίστας, επιλέγει το μικρότερο από αυτά που είναι αρκετά μεγάλα ώστε να μπορούν να ικανοποιήσουν το αίτημα. Ο αλγόριθμος καλύτερου ταιριάσματος κάνει καλύτερη διαχείριση του σωρού, ωστόσο είναι πιο αργός καθώς σε κάθε περίπτωση πρέπει να εξετάσει ολόκληρη της λίστα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
32 Διάρκεια Ζωής και Διαχείριση Μνήμης Για τη μείωση του χρόνου αναζήτησης, έχουν αναπτυχθεί αλγόριθμοι που χρησιμοποιούν περισσότερες από μία λίστες, κάθε μία από τις οποίες περιέχει τμήματα διαφορετικού μεγέθους, και πιο πολύπλοκα κριτήρια επιλογής του τμήματος μνήμης που θα δεσμεύσουν. Στην περίπτωση που για την ικανοποίηση ενός αιτήματος πρόκειται να χρησιμοποιηθεί ένα τμήμα του σωρού λίγο μεγαλύτερο από το μέγεθος που απαιτείται, ορισμένοι αλγόριθμοι επιλέγουν να δεσμέυσουν ολόκληρο το διαθέσιμο τμήμα και να μην αφήσουν το υπόλοιπο ως διαθέσιμο. Το αποτέλεσμα αυτής της επιλογής ονομάζεται εσωτερική κατάτμηση. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
33 Διάρκεια Ζωής και Διαχείριση Μνήμης Παράδειγμα Εστω ότι η μνήμη που διατίθεται για το σωρό έχει μέγεθος 10ΜΒ και ότι η διαχείριση γίνεται με τον αλγόριθμο καλύτερου ταιριάσματος. Αν αρχικά κατασκευαστούν κατά σειρά αντικείμενα μεγέθους 1ΜΒ, 2ΜΒ, 1ΜΒ, 2ΜΒ, 1ΜΒ και 2ΜΒ, και στη συνέχεια καταστραφούν όλα τα αντικείμενα μεγέθους 1ΜΒ, συνολικά υπάρχουν ελεύθερα 4ΜΒ στα οποία όμως δεν μπορεί να αποθηκευτεί ένα αντικείμενο μεγέθους 2ΜΒ. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
34 Διάρκεια Ζωής και Διαχείριση Μνήμης 1MB 1MB 2MB 2MB 1MB 1MB 10MB 2MB 2MB 1MB 1MB 2MB 2MB 1MB 1MB Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
35 Διάρκεια Ζωής και Διαχείριση Μνήμης Εκτός από το πρόβλημα της εξωτερικής κατάτμησης, ένα άλλο πρόβλημα που μειώνει τη διαθέσιμη μνήμη στο σωρό είναι η ύπαρξη σκουπιδιών. Σκουπίδια ονομάζονται τα αντικείμενα τα οποία είναι αποθηκευμένα στο σωρό, χωρίς ωστόσο να υπάρχει πλέον πρόσβαση προς αυτά από το πρόγραμμα. Και τα δύο προβλήματα, αν δεν αντιμετωπιστούν από το περιβάλλον εκτέλεσης του προγράμματος, είναι καταστροφικά για την εκτέλεση του προγράμματος, καθώς αν ένα αίτημα για δημιουργία αντικειμένου δεν μπορέσει να ικανοποιηθεί τότε αυτό μπορεί να συνεπάγεται ανώμαλο τερματισμό της λειτουργίας του προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
36 Διάρκεια Ζωής και Διαχείριση Μνήμης Για την αντιμετώπιση της εξωτερικής κατάτμησης γίνεται ανασυγκρότηση του σωρού (μετακίνηση των ενεργών αντικειμένων σε συνεχόμενες θέσεις μνήμης, έτσι ώστε η διαθέσιμη μνήμη να αποτελείται από συνεχόμενες θέσεις). Η διαδικασία για την εύρεση των σκουπιδιών, την καταστροφή τους και την επιστροφή της μνήμης που καταλαμβάνουν στο σωρό ονομάζεται συλλογή σκουπιδιών. Η δημιουργία σκουπιδιών είναι συνειδητή επιλογή σε πολλές γλώσσες, ώστε να αποφεύγονται χειρότερα προβλήματα (όπως οι ξεκρέμαστοι δείκτες). Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
37 Διάρκεια Ζωής και Διαχείριση Μνήμης Στο μοντέλο τιμών για τις μεταβλητές: στατικά αντικείμενα είναι τα αντικείμενα που συνδέονται με καθολικές μεταβλητές του προγράμματος ή με στατικές μεταβλητές υποπρογραμμάτων (τοπικές μεταβλητές που διατηρούν τις τιμές τους ανάμεσα σε διαδοχικές κλήσεις ενός υποπρογράμματος). Επίσης στατικά αντικείμενα είναι και διάφορα βοηθητικά αντικείμενα που κατασκευάζονται από το μεταφραστή και αντιστοιχούν σε πληροφορίες που είναι χρήσιμες στο χρόνο εκτέλεσης. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
38 Διάρκεια Ζωής και Διαχείριση Μνήμης αντικείμενα στοίβας είναι τα αντικείμενα που συνδέονται με δυναμικές μεταβλητές των υποπρογραμμάτων (τοπικές μεταβλητές που η τιμή τους χάνεται μετά την ολοκλήρωση του υποπρογράμματος) αντικείμενα σωρού είναι τα αντικείμενα που συνδέονται με μεταβλητές τύπου δείκτη και σχηματίζονται με εντολές όπως η new της Pascal και η malloc τη C. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
39 Διάρκεια Ζωής και Διαχείριση Μνήμης Στο μοντέλο αναφορών για τις μεταβλητές: όλα τα αντικείμενα αποθηκεύονται στο σωρό. στη στοίβα αποθηκεύονται οι δυναμικές μεταβλητές των υποπρογραμμάτων (δηλαδή οι αναφορές των αντικειμένων με τα οποία συνδέονται οι μεταβλητές) στατικά αποθηκεύονται οι καθολικές μεταβλητές του προγράμματος και οι στατικές μεταβλητές υποπρογραμμάτων. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
40 Περιεχόμενα 1 Μεταβλητές και Αντικείμενα 2 Διάρκεια Ζωής και Διαχείριση Μνήμης 3 Εμβέλεια 4 Παραστάσεις Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
41 Εμβέλεια Εμβέλεια μίας μεταβλητής (ή γενικότερα κάποιου ονόματος π.χ σταθεράς, συνάρτησης κ.λ.π.) ονομάζεται το τμήμα του προγράμματος στο οποίο η μεταβλητή είναι ορατή. Ονομάζουμε περιβάλλον αναφοράς ενός μπλοκ το σύνολο των μεταβλητών που είναι ορατές στο μπλοκ. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
42 Εμβέλεια Η εμβέλεια μίας μεταβλητής γενικά δεν καλύπτει ολόκληρο το πρόγράμμα. Αυτό είναι χρήσιμο για αρκετούς λόγους: Ο προγραμματιστής μπορεί να χρησιμοποιεί ονόματα μεταβλητών σε ένα τμήμα κώδικα που ενδεχομένως χρησιμοποιούνται και σε κάποιο άλλο τμήμα του προγράμματος, χωρίς να δημιουργείται σύγκρουση. Μπορεί να τροποποιηθεί ένα τμήμα του κώδικα (π.χ. ένα υποπρόγραμμα) χωρίς να απαιτούνται αλλαγές (δηλώσεις μεταβλητών) έξω από αυτό. Το πρόγραμμα είναι πιο αναγνώσιμο αν οι μεταβλητές δηλώνονται κοντά στο σημείο που χρησιμοποιούνται.... Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
43 Εμβέλεια Η εμβέλεια των μεταβλητών σε μία γλώσσα καθορίζεται από τους κανόνες εμβέλειας. Υπάρχουν δύο βασικοί κανόνες εμβέλειας: ο στατικός κανόνας εμβέλειας (Pascal, C, Java, Haskell) ο δυναμικός κανόνας εμβέλειας (APL, SNOBOL, Lisp, Perl) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
44 Εμβέλεια Οταν εφαρμόζεται ο στατικός κανόνας, η εμβέλεια μίας μεταβλητής καθορίζεται από το κείμενο του προγράμματος. Με βάση το στατικό κανόνα, η εμβέλεια μίας μεταβλητής ορίζεται ως το μπλοκ στο οποίο δηλώνεται, καθώς και τα εσωτερικά μπλοκ που περιέχονται σε αυτό, υπό την προϋπόθεση ότι δεν δηλώνεται μέσα σε αυτά μεταβλητή με το ίδιο όνομα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
45 Εμβέλεια Παράδειγμα Εστω το παρακάτω πρόγραμμα Pascal: Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
46 Εμβέλεια program p(...); var s,z:integer;... procedure a(...); var x:integer;... procedure c(...); var z:char; procedure b(...); var y:real;... procedure d(...); var u:char;... procedure e(...); var v:char; begin (* of program p *)... end. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
47 Εμβέλεια Η μεταβλητή s που δηλώνεται στο κυρίως πρόγραμμα p είναι ορατή σε ολόκληρο το πρόγραμμα. Η μεταβλητή z που δηλώνεται στο κυρίως πρόγραμμα p είναι είναι ορατή σε ολόκληρο το πρόγραμμα εκτός από το υποπρόγραμμα c στο οποίο δηλώνεται άλλη μεταβλητή με το ίδιο όνομα. Οι μεταβλητές που ορίζονται στην a (π.χ. η x) είναι ορατές στην a και στη c (αλλά όχι στις b, d, e). Οι μεταβλητές που ορίζονται στην b (π.χ. η y) είναι ορατές στις b, d και e. Οι μεταβλητές που ορίζονται στην c (π.χ. η z) είναι ορατές μόνο στη c (αντίστοιχα για d, e). Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
48 Εμβέλεια Παρατηρούμε ότι αν σε δύο μπλοκ δηλώνονται μεταβλητές με το ίδιο όνομα και το ένα περιέχεται μέσα στο άλλο (όπως συμβαίνει με το πρόγραμμα p και το υποπρόγραμμα c στο παράδειγμα στα οποία δηλώνονται μεταβλητές με το όνομα z) τότε η εμβέλεια της μεταβλητής που δηλώνεται στο εξετερικό μπλοκ δεν περιλαμβάνει το εσωτερικό μπλοκ. Αυτό το φαινόμενο ονομάζεται τρύπα στην εμβέλεια. Η εμβέλεια της μεταβλητής z του προγράμματος p του παραδείγματος απεικονίζεται με λευκό χρώμα στο παρακάτω σχήμα: Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
49 Εμβέλεια p a c b d e Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
50 Εμβέλεια Οταν εφαρμόζεται ο δυναμικός κανόνας, η εμβέλεια μίας μεταβλητής καθορίζεται από τη σειρά κλήσεων των μπλοκ του προγράμματος. Με βάση το δυναμικό κανόνα, η εμβέλεια μίας μεταβλητής ορίζεται ως το μπλοκ στο οποίο δηλώνεται, καθώς και όλα τα μπλοκ που ενεργοποιούνται (αρχίζουν να εκτελούνται) μετά από αυτό, μέχρι να ενεργοποιηθεί μπλοκ στο οποίο δηλώνεται μεταβλητή με το ίδιο όνομα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
51 Εμβέλεια Παράδειγμα program p(...); var x:integer; procedure a(...); var... begin... end procedure b(...); var x:real;... begin... call a... end; procedure c(...); var... begin... call b... end; begin (* of program p *) call c... end. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
52 Εμβέλεια Η ακολουθία κλήσεων είναι: p c b a Η εμβέλεια της μεταβλητής x της που δηλώνεται στο πρόγραμμα p φτάνει μέχρι και την κλήση της c. Η κλήση της a βλέπει τη μεταβλητή x της που δηλώνεται στην b. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
53 Εμβέλεια Η χρήση των κανόνων εμβέλειας και ειδικότερα του δυναμικού κανόνα, μπορεί να βοηθήσει τον προγραμματιστή να μειώσει τον αριθμό των παραμέτρων ενός υποπρογράμματος. Παράδειγμα Παράδειγμα: Εστω το παρακάτω πρόγραμμα Pascal: Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
54 Εμβέλεια Παράδειγμα program CentralShop(output); var price:real; procedure TotalCost(quantity:integer); begin writeln(quantity*price:10:2) end; procedure DepartmentA(quantity:integer); var price:real; begin price:=32.00; TotalCost(quantity) end; procedure DepartmentB(quantity:integer); var price:real; begin price:=33.33; TotalCost(quantity) end; begin (* of program p *) price:=31.20; TotalCost(10); DepartmentA(5); DepartmentB(3) end. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
55 Εμβέλεια Αν εφαρμόστει ο στατικός κανόνας εμβέλειας (όπως συμβαίνει στην Pascal) το πρόγραμμα θα τυπώσει τις τιμές , , Αυτό συμβαίνει επειδή η εμβέλεια της μεταβλητής price η οποία δηλώνεται στο πρόγραμμα CentralShop καλύπτει το υποπρόγραμμα TotalCost, ενώ αντίθετα οι μεταβλητές price της DepartmentA και της DepartmentB δεν είναι ορατές μέσα στην TotalCost. Αν εφαρμόστει ο δυναμικός κανόνας εμβέλειας το πρόγραμμα θα τυπώσει τις τιμές , , Αυτό συμβαίνει επειδή κάθε φορά το υποπρόγραμμα TotalCost βρίσκεται στην εμβέλεια μίας διαφορετικής μεταβλητής price, που εξαρτάται από το μπλοκ από το οποίο κλήθηκε (το CentralShop, το DepartmentA και το DepartmentB αντίστοιχα). Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
56 Εμβέλεια Ονομάζουμε μή τοπική μεταβλητή, μία μεταβλητή που είναι ορατή σε ένα μπλοκ, χωρίς όμως να έχει δηλωθεί σε αυτό. Οι κανόνες εμβέλειας μας βοηθούν να καθορίσουμε σε ποιά μη τοπική μεταβλητή αναφέρεται ένα όνομα, το οποίο δεν έχει δηλωθεί στο μπλοκ. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
57 Εμβέλεια Με βάση το στατικό κανόνα εμβέλειας αναζητούμε μία μεταβλητή ξεκινώντας από το τρέχον μπλοκ και προχωρώντας κάθε φορά στο άμεσα εξωτερικότερο μπλοκ, μέχρι να συναντήσουμε δήλωση της μεταβλητής. Αν η μεταβλητή υπάρχει σε ένα μπλοκ για το οποίο υπάρχουν περισότερες από μία ενεργοποιήσεις (λόγω αναδρομής) τότε λαμβάνεται υπόψη η πιο πρόσφατη ενεργοποίηση. Με βάση το δυναμικό κανόνα εμβέλειας αναζητούμε μία μεταβλητή ξεκινώντας από το τρέχον μπλοκ και ακολουθώντας αντίστροφα την αλυσίδα των κλήσεων, μέχρι να συναντήσουμε μπλοκ που περιέχει δήλωση της μεταβλητής. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
58 Εμβέλεια Παράδειγμα program p(output); var x,y,z:integer; procedure a; var w:integer; begin x:=x+1; y:=y+1; z:=z+1 end; procedure b(x:integer); var z:integer; procedure c(z:integer); begin a; writeln(x,y,z); end; begin (* of procedure b *) z:=50; a; c(60); writeln(x,y,z); end; begin (* of program p *) x:=10; y:=20; z:=30; a; b(40); writeln(x,y,z) end. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
59 Εμβέλεια Επειδή στο πρόγραμμα γίνονται αρκετές αλλαγές στις τιμές των μεταβλητών και υπάρχουν μεταβλητές με το ίδιο όνομα, παρουσιάζουμε την εκτέλεση του προγράμματος σε μορφή πίνακα. Η πρώτη στήλη του πίνακα αναγράφει την εντολή (ή γενικότερα τη λειτουργία) που εκτελεί το πρόγραμμα, ενώ κάθε μία από τις υπόλοιπες στήλη αντιστοιχεί σε μία μεταβλητή που αποθηκεύεται στη στοίβα κατά την εκτέλεση του προγράμματος. Για απλούστευσή, θεωρούμε ότι οι στατικές μεταβλητές του προγράμματος αποθηκεύονται στην αρχή της στοίβας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
60 Εμβέλεια Η στοίβα μεγαλώνει από τα αριστερά προς τα δεξιά. Η κορυφή της μετατοπίζεται προς τα δεξιά κάθε φορά που καλείται ένα υποπρόγραμμα και προς τα αριστερά κάθε φορά που ολοκληρώνεται ένα υποπρόγραμμα. Ο χρόνος τρέχει από πάνω προς τα κάτω. Στον πίνακα αποτυπώντουμε μόνο τις θέσεις που αντιστοιχούν σε μεταβλητές και όχι ολόκληρο το εγγράφημα δραστηριοποίησης που αποθηκεύται στη στοίβα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
61 Εμβέλεια Στον πίνακα που ακολουθεί δίνεται η εκτέλεση του προγράμματος στην περίπτωση που εφαρμόζεται ο στατικός κανόνας εμβέλειας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
62 Εμβέλεια Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
63 Εμβέλεια Παρατηρήσεις: Το υποπρόγραμμα a αναφέρεται στις μεταβλητές x,y,z οι οποίες δεν δηλώνονται μέσα σε αυτό. Με βάση το στατικό κανόνα, οι x,y,z αναζητούνται στο αμέσως εξωτερικότερο μπλοκ που είναι το κυρίως πρόγραμμα, όπου πράγματι υπάρχει δήλωση των μεταβλητών αυτών. Συνεπώς το υποπρόγραμμα a σε κάθε μία από τις τρεις κλήσεις του αυξάνει κατά ένα τις τιμές των μεταβλητών x,y,z του κυρίως προγράμματος. Το υποπρόγραμμα c αναφέρεται στη μεταβλητή x η οποία δεν δηλώνονται μέσα σε αυτό. Με βάση το στατικό κανόνα, η x αναζητείται στο αμέσως εξωτερικότερο μπλοκ που είναι το υποπρόγραμμα b. Στο b πράγματι υπάρχει δήλωση της x. Συνεπώς το υποπρόγραμμα c τυπώνει την τιμή της x του υποπρογράμματος b. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
64 Εμβέλεια Το υποπρόγραμμα c αναφέρεται στη μεταβλητή y η οποία δεν δηλώνονται μέσα σε αυτό. Με βάση το στατικό κανόνα, η y αναζητείται στο αμέσως εξωτερικότερο μπλοκ που είναι το υποπρόγραμμα b, όπου ωστόσο δεν υπάρχει δήλωση της y. Η αναζήτηση συνεχίζεται στο μπλοκ που περικλείει άμεσα το υποπρόγραμμα b, που είναι το κυρίως πρόγραμμα. Εκεί υπάρχει δήλωση της μεταβλητής y. Συνεπώς το υποπρόγραμμα c τυπώνει την τιμή της y του κυρίως προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
65 Εμβέλεια Το υποπρόγραμμα c αναφέρεται στη μεταβλητή z για την οποία υπάρχει δήλωση μέσα σε αυτό. Για αυτή τη μεταβλητή δεν χρειάζεται να εφαρμοστεί ο κανόνας εμβέλειας και τυπώνεται η τιμή της τοπικής μεταβλητής z. Αντίστοιχα το υποπρόγραμμα b τυπώνει τις τιμές των τοπικών μεταβλητών x,z και την τιμή της μεταβλητής y του κυρίως προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
66 Εμβέλεια Στον πίνακα που ακολουθεί δίνεται η εκτέλεση του προγράμματος στην περίπτωση που εφαρμόζεται ο δυναμικός κανόνας εμβέλειας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
67 Εμβέλεια Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
68 Εμβέλεια Παρατηρήσεις: Κατά την πρώτη κληση του υποπρογράμματος a οι μεταβλητές x,y,z οι οποίες δεν δηλώνονται μέσα σε αυτό, αναζητούνται στο κυρίως πρόγραμμα, που είναι το μπλοκ από το οποίο έγινε η κλήση του υποπρογράμματος a. Στο κυρίως πρόγραμμα υπάρχει δήλωση των μεταβλητών x,y,z. Συνεπώς το υποπρόγραμμα a στην πρώτη κλήση του αυξάνει κατά ένα τις τιμές των μεταβλητών x,y,z του κυρίως προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
69 Εμβέλεια Κατά την δεύτερη κληση του υποπρογράμματος a οι μεταβλητές x,y,z, αναζητούνται στο υποπρόγραμμα b από το οποίο έγινε η κλήση του a. Στο b υπάρχει δήλωση των x,z, ωστόσο δεν υπάρχει δήλωση της y. Η αναζήτηση για την y συνεχίζεται στο μπλοκ που κάλεσε το b, το οποίο είναι το κυρίως πρόγραμμα. Στο κυρίως πρόγραμμα υπάρχει δήλωση της μεταβλητής y. Συνεπώς το υποπρόγραμμα a στην δεύτερη κλήση του αυξάνει κατά ένα τις τιμές των μεταβλητών x,z του υποπρογράμματος b καθώς και της μεταβλητής y του κυρίως προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
70 Εμβέλεια Κατά την τρίτη κληση του υποπρογράμματος a η αναζήτηση γίνεται με παρόμοιο τρόπο. Ακολουθώντας αντίστροφα την σειρά των κλήσεων, η μεταβλητή z εντοπίζεται στο υποπρόγραμμα c, η x στο υποπρόγραμμα a και η y στο κυρίως πρόγραμμα. Συνεπώς το υποπρόγραμμα a στην τρίτη κλήση του αυξάνει κατά ένα τις τιμές της μεταβλητής z του υποπρογράμματος b, της x του υποπρογράμματος b και της y του κυρίως προγράμματος. Με παρόμοιο τρόπο γίνεται η εφαρμογή του δυναμικού κανόνα για τις μη τοπικές μεταβλητές των υποπρογραμμάτων b και c. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
71 Εμβέλεια Παρατηρούμε ότι με βάση το στατικό κανόνα όλες οι αναφορές ενός ονόματος μεταβλητής μέσα από ένα μπλοκ αναφέρονται στην ίδια δήλωση. με βάση το δυναμικό κανόνα η ίδια αναφορά ενός ονόματος μεταβλητής μέσα από ένα μπλοκ μπορεί να αναφέρεται σε διαφορετικές δηλώσεις, για διαφορετικές ενεργοποιήσεις του μπλοκ. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
72 Εμβέλεια Μία μεταβλητή ή γενικότερα ένα όνομα μπορεί να δηλώνεται σε διάφορα σημεία ενός μπλόκ. Υπάρχουν διαφορετικοί τρόποι συσχέτισης της εμβέλειας του ονόματος με το μπλοκ που την περιέχει: Η εμβέλεια του ονόματος καλύπτει ολόκληρο το μπλοκ, ακόμη και το τμήμα που προηγείται της δήλωσης (π.χ ονόματα συναρτήσεων στη Haskell και μελών μίας κλάσης στη Java και τη C++) Η εμβέλεια του ονόματος καλύπτει το τμήμα του μπλοκ που ακολουθεί τη δήλωση. Αν υπάρχει δήλωση του ίδιου ονόματος σε εξωτερικό μπλοκ, τότε η εμβέλεια του ονόματος στο εξωτερικό μπλοκ καλύπτει και το τμήμα του τρέχοντος μπλοκ μέχρι τη δήλωση. (π.χ. ονόματα μεταβλητών στη C, C++, Java) Η εμβέλεια του ονόματος καλύπτει ολόκληρο το μπλοκ, ακόμη και το τμήμα που προηγείται της δήλωσης, ωστόσο το όνομα μπορεί να χρησιμοποιηθεί μόνο μετά τη δήλωση (π.χ. ονόματα μεταβλητών στη Pascal, C#) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
73 Εμβέλεια Πολλές γλώσσες προγραμματισμού περιέχουν ένα σύνολο από προκαθορισμένα ονόματα σταθερών, τύπων, συναρτήσεων κλπ. Αυτές μπορούμε να θεωρήσουμε ότι ανήκουν σε ένα τεχνητό μπλοκ. Για το στατικό κανόνα εμβέλειας, αυτό το μπλοκ θεωρούμε ότι περιέχει το μπλοκ του κυρίως προγράμματος. Για το δυναμικό εμβέλειας, θεωρούμε ότι αυτό το μπλοκ βρίσκεται στην αρχή της ακολουθίας των κλήσεων. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
74 Εμβέλεια Ορισμένες γλώσσες παρέχουν τρόπους ώστε να αποφέυγεται η τρύπα στη εμβέλεια μία μεταβλητής όταν δηλώνεται μεταβλητή με το ίδιο όνομα σε εσωτερικότερο μπλοκ. Για παράδειγμα στη C++ το ::X αναφέρεται στην καθολική μεταβλητή X. Επίσης στην Ada μπορούμε να αναφερθούμε ρητά στη μεταβλητή x που δηλώνεται στο υποπρόγραμμα a γράφοντας a.x. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
75 Εμβέλεια Στις γλώσσες προγραμματισμού στις οποίες δεν υπάρχουν δηλώσεις μεταβλητών (όπως για παράδειγμα η Python), η εισαγωγή μίας τοπικής μεταβλητής γίνεται έμμεσα από τον τρόπο χρήσης της, με βάση κάποιους κανόνες που εξαρτώνται από τη γλώσσα. Στην Python όταν ένα υποπρόγραμμα αναθέτει τιμή σε μία μεταβλητή, τότε αυτή θεωρείται αυτόματα τοπική μεταβλητή. Η Python εφαρμόζει το στατικό κανόνα εμβέλειας. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
76 Εμβέλεια Παράδειγμα Εστω το παρακάτω πρόγραμμα Python: def f(): x = y+1 print(x,y) x = 1 y = 5 f() print(x,y) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
77 Εμβέλεια Η εντολή x = y+1 του υποπρογράμματος f δηλώνει έμμεσα μία τοπική μεταβλητή x. Αντίθετα το όνομα y αναφέρεται στην μεταβλητή y του κυρίως προγράμματος, καθώς δεν γίνεται ανάθεση τιμής στην y εντός του υποπρογράμματος f και συνεπώς η y είναι μη τοπική μεταβλητή. Αν εκτελεστεί το παραπάνω πρόγραμμα θα τυπωθούν οι τιμές 6 5 από την f και 1 5 από το κυρίως πρόγραμμα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
78 Εμβέλεια Παράδειγμα Αν μέσα σε ένα υποπρόγραμμα της Python θέλουμε να αναθέσουμε τιμή σε μη τοπική μεταβλητή, τότε θα πρέπει να χρησιμοποιήσουμε μία από τις εντολές global ή nonlocal: def f(): global x x = y+1 print(x,y) x = 1 y = 5 f() print(x,y) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
79 Εμβέλεια Η εντολή global x του υποπρογράμματος f δηλώνει ότι το όνομα x αναφέρεται στην μεταβλητή x του κυρίως προγράμματος. Συνεπώς καμία μεταβλητή στο υποπρογράμματος f δεν είναι τοπική. Αν εκτελεστεί το παραπάνω πρόγραμμα θα τυπωθούν οι τιμές 6 5 από την f και 6 5 από το κυρίως πρόγραμμα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
80 Περιεχόμενα 1 Μεταβλητές και Αντικείμενα 2 Διάρκεια Ζωής και Διαχείριση Μνήμης 3 Εμβέλεια 4 Παραστάσεις Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
81 Παραστάσεις Οι συμβολικές σταθερές είναι ονόματα τα οποία αντιστοιχούν σε τιμές, οι οποίες δεν μπορούν να αλλάξουν κατά την εκτέλεση του προγράμματος. Η χρήση σταθερών βοηθάει την αναγνωσιμότητα και διευκολύνει τη συντήρηση του προγράμματος. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
82 Παραστάσεις Υπάρχουν δύο προσεγγίσεις για τις συμβολικές σταθερές: Αντικαθίστανται από την τιμή τους σε χρόνο μετάφρασης Δημιουργούνται μεταβλητές που η τιμή τους δεν μπορεί να αλλάξει. Αυτό είναι χρήσιμο αν η σταθερά είναι πίνακας ή αν η τιμή της σταθερά καθορίζεται σε χρόνο εκτέλεσης. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
83 Παραστάσεις Οι γλώσσες συνήθως έχουν κάποιες προκαθορισμένες σταθερές. Για παράδειγμα η PASCAL έχει προκαθορισμένες τις σταθερές true, false, maxint, nil. Ορισμένες γλώσσες επιτρέπουν η τιμή της σταθεράς να ορίζεται από μία παράσταση. Επίσης ορισμένες γλώσσες επιτρέπουν σταθερές σύνθετου τύπου. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
84 Παραστάσεις Μία παράσταση σχηματίζεται από σταθερές (συμβολικές ή κυριολεκτικές), μεταβλητές (ή στοιχεία πινάκων, πεδία εγγραφών κλπ), συναρτήσεις, τελεστές και παρενθέσεις. Οι μεταβλητές και οι σταθερές αποτελούν απλές παραστάσεις. Οι τελεστές και οι συναρτήσεις χρησιμοποιούνται ώστε να σχηματιστούν σύνθετες παραστάσεις από πιο απλές (τις οποίες δέχονται ως ορίσματα). Οι παρενθέσεις χρησιμοποιούνται για να καθοριστεί η σειρά εφαρμογής των τελεστών. Επίσης συνήθως τα ορίσματα μία συνάρτησης δίνονται μέσα σε παρενθέσεις χωρισμένα μέ κόμμα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
85 Παραστάσεις Οι τελεστές και οι συναρτήσεις έχουν παρόμοια χρησιμότητα. Συνήθως ο όρος τελεστής χρησιμοποιείται για λειτουργίες πάνω σε βασικούς τύπους, οι οποίες συμβολίζονται με χρήση μή αλφαριθμητικών συμβόλων (πχ +, -, *, /, >>, :, ++,...). Κατα κανόνα οι τελεστές είναι προκαθορισμένοι, αν και ορισμένες γλώσσες δίνουν τη δυνατότητα ορισμού τελεστών από τον προγραμματιστή. Ο όρος συνάρτηση χρησιμοποιείται συνήθως για υποπρογράμμα τα οποία επιστρέφουν κάποιο αποτέλεσμα και τα οποία έχουν ονόματα που σχηματίζονται με γράμματα του αλφαβήτου και αριθμητικά σύμβολα. Ο ορισμός των συναρτήσεων αποτελεί μέρος ενός προγράμματος, ενώ οι περισσότερες γλώσσες έχουν κάποιες προκαθορισμένες συναρτήσεις. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
86 Παραστάσεις Οι συναρτήσεις και οι τελεστές δέχονται ένα πλήθος ορισμάτων, από τα οποία εξαρτάται το αποτέλεσμα που επιστρέφει η συνάρτηση ή ο τελεστής. Μία συνάρτηση (ή ένας τελεστής) λέμε ότι χρησιμοποιεί προθεματικό, ενθεματικό ή επιθεματικό συμβολισμό, αν το όνομα της (ή το σύμβολο, στην περίπτωση του τελεστή) γράφεται πριν, ανάμεσα ή μετά από τα ορίσματα. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
87 Παραστάσεις Οι περισσότερες γλώσσες χρησιμοποιούν προθεματικό συμβολισμό για τις συναρτήσεις με διάφορες παραλλαγές ως προς τη σύνταξη: Pascal, C: f(1,2,3) Haskell: f Lisp: (f 1 2 3) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
88 Παραστάσεις Επίσης, οι περισσότερες γλώσσες χρησιμοποιούν ενθεματικό συμβολισμό για τους δυαδικούς τελεστές και προθεματικό συμβολισμό για τους μοναδιαίους τελεστές: 1+2, 3*4, 10/4, x && y, x y 1:[2,3] (προσθήκη στοιχείου σε λίστα στη Haskell) Programming + Languages (συνένωση συμβολοσειρών στη Java) -q!p (λογική άρνηση στη C) *p (προσπέλαση μνήμης μέσω δείκτη στη C) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
89 Παραστάσεις Η Pascal χρησιμοποιεί επιθεματικό τελεστή για την προσπέλαση μνήμης μέσω δείκτη: pˆ Η Lisp χρησιμοποιεί προθεματικό συμβολισμό για όλους τους τελεστές, όπως και για τις συναρτήσεις, βάζοντας τον τελεστή μαζί με τα ορίσματα μέσα σε παρένθεση: (+ 1 2) Ο συμβολισμός αυτός είναι γνωστός ως Πολωνικός συμβολισμός. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
90 Παραστάσεις Μια παράσταση μπορεί να εμφανίζεται: Στο δεξί μέλος μίας εντολής ανάθεσης. Στη συνθήκη ελέγχου μίας εντολής απόφασης ή επανάληψης. Ως πραγματική παράμετρος σε μία κλήση υποπρογράμματος. Μέσα σε [ ] ώστε να προσδιορίζει το στοιχείο ενός πίνακα.... Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
91 Παραστάσεις Ονομάζουμε αποτίμηση της παράστασης τη διαδικασία υπολογισμού της τιμής της. Η τιμή μίας παράστασης που περιέχει συναρτήσεις προκύπτει από τις τιμές των απλών παραστάσεων που την αποτελούν και των τιμών που επιστρέφονται από τις συναρτήσεις, με εφαρμογή των τελεστών. Η σειρά εφαρμογής των τελεστών, επηρεάζει την τιμή της παράστασης. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
92 Παραστάσεις Για παράδειγμα η αποτίμηση της παράστασης * 5 δίνει τιμή 17, αν εκτελέσουμε πρώτα τον πολλαπλασιασμό 25, αν εκτελέσουμε πρώτα την πρόσθεση Επίσης η αποτίμηση της παράστασης δίνει τιμή 4, αν εκτελέσουμε πρώτα την αριστερή αφαίρεση 6, αν εκτελέσουμε πρώτα τη δεξιά αφαίρεση Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
93 Παραστάσεις Χρησιμοποιούμε παρενθέσεις για να δηλώσουμε την επιθυμητή σειρά εφαρμογής των τελεστών κατά την αποτίμηση. Μπορούμε να περιορίσουμε τη χρήση παρενθέσεων αν εισάγουμε κανόνες προτεραιότητας και προσεταιρισμού. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
94 Παραστάσεις Οι κανόνες προτεραιότητας ιεραρχούν τους τελεστές, έτσι ώστε ένας τελεστής με μεγαλύτερη προτεραιότητα να εφαρμόζεται πριν από τελεστές με μικρότερη προτεραιότητα. Προτεραιότητα τελεστών στη Haskell (μικραίνει όσο κατεβαίνουμε): not (μοναδιαίοι) ^ div mod + == / = <= >= > < && Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
95 Παραστάσεις Για παράδειγμα στην στη Haskell η παράσταση x+2*y >= 2*a + 3*b είναι ισοδύναμη με την (x+(2*y)) >= ((2*a) + (3*b)) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
96 Παραστάσεις Οι κανόνες προσεταιρισμού καθορίζουν τη σειρά εφαρμογής τελεστών που έχουν την ίδια προτεραιότητα. Ο συνηθισμένος κανόνας προσεταιρισμού είναι από τα αριστερά προς τα δεξιά. Στη Haskell: οι τελεστές div mod + && προσεταιρίζονται από αριστερά προς τα δεξια οι τελεστές ^ προσεταιρίζονται από τα δεξιά προς τα αριστερά. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
97 Παραστάσεις Για παράδειγμα στη Haskell η παράσταση x / y * z είναι ισοδύναμη με την (x / y) * z ενώ η παράσταση x ^ y ^ z είναι ισοδύναμη με την x ^ (y ^ z) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
98 Παραστάσεις Αν επιθυμούμε διαφορετική σειρά εφαρμογής των τελεστών από αυτή που προκύπτει με βάση τους κανόνες προτεραιότητας και προσεταιρισμού, χρησιμοποιούμε παρενθέσεις. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
99 Παραστάσεις Μπορούμε να κατασκευάσουμε ένα δέντρο που να περιγράφει τη δομή μιας παράστασης. Για το σκοπό αυτό, πρώτα θα πρέπει να αρθούν όλες οι αμφισημίες, ώστε να είναι μονοσήμαντα ορισμένη η δομή της παράστασης, δηλαδή να είναι ξεκάθαρο ποιες υποπαραστάσεις αποτελούν τα ορίσματα του κάθε τελεστή. Αυτό γίνεται με βάση του κανόνες προτεραιότητας και προσεταιρισμού: μπορούμε να προσθέσουμε κατάλληλα παρενθέσεις σε μία παράσταση έτσι ώστε τα ορίσματα κάθε τελεστή η συνάρτησης να είναι είτε απλές παραστάσεις (σταθερές ή μεταβλητές) είτε σύνθετες παραστάσεις κλεισμένες σε παρενθέσεις. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
100 Παραστάσεις Η παραπάνω μετατροπή μας βοηθάει στο να περιγράψουμε την παράσταση με ένα δέντρο: Μία απλή παράσταση (συμβολική ή κυριολεκτική σταθερά ή μεταβλητή) παριστάνεται από ένα δέντρο αποτελούμενο από έναν κόμβο με ετικέτα τη σταθερά ή τη μεταβλητή. Μία σύνθετη παράσταση παριστάνεται από ένα δέντρο η ρίζα του οποίου έχει ετικέτα το όνομα της συνάρτησης ή του τελεστή που θα δώσει το τελικό αποτέλεσμα, ενώ τα παιδιά του από αριστερά προς τα δεξιά είναι οι ρίζες των δέντρων που αντιστοιχούν στις παραστάσεις που αποτελόυν τα ορίσματα της συνάρτησης ή του τελεστή. Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
101 Παραστάσεις Παράδειγμα Εστω η παράσταση x^2^a-x div a mod 2+2*x Με βάση τους κανόνες προτεραιότητας των τελεστών, η παραπάνω παράσταση γράφεται ισοδύναμα ((x^(2^a))-((x div a) mod 2))+(2*x) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
102 Παραστάσεις Το δέντρο που αντιστοιχεί στην παράσταση ((x^(2^a))-((x div a) mod 2))+(2*x) είναι: + - * ^ mod 2 x x ^ div 2 2 a x a Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
103 Παραστάσεις Παράδειγμα Εστω η παράσταση x+1<=3*y x>0&&y mod x==1 Με βάση τους κανόνες προτεραιότητας των τελεστών, η παραπάνω παράσταση γράφεται ισοδύναμα ((x+1)<=(3*y)) ((x>0)&&((y mod x)==1)) Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο Ιωαννίνων ) / 122
ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL
8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to
Pascal. 15 Νοεμβρίου 2011
Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση
procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019
Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο
2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επιμέλεια : Δρεμούσης Παντελής Κεφάλαια 2,7,8 1. Τι είναι αλγόριθμος; Μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο
ΑΕΠΠ Ερωτήσεις θεωρίας
ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος
Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των
Η γλώσσα προγραμματισμού Strange
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και
10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.
1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.
Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων
Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων 1 Είσοδος/Έξοδος Είσοδος/Έξοδος ανάλογα με τον τύπο του προγράμματος Πρόγραμμα
Βασικές έννοιες προγραμματισμού
Βασικές έννοιες προγραμματισμού Αλφάβητο Γράμματα Κεφαλαία Ελληνικά ( Α Ω ) Πεζά Ελληνικά ( α ω ) Κεφαλαία Λατινικά ( A Z ) Πεζά Ελληνικά ( a z) Ψηφία 0-9 Ειδικοί χαρακτήρες ( +, -, *,/, =,.,,!, κενό )
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,
Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής
ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ
ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να
Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος
Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Pascal, απλοί τύποι, τελεστές και εκφράσεις
Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το
Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι
Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα
Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.
AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Κεφάλαιο 10 ο Υποπρογράµµατα
Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν
Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2
Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού
Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:
Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε
Ενδεικτικές Ερωτήσεις Θεωρίας
Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο
! Δεν μπορούν να λυθούν όλα τα προβλήματα κάνοντας χρήση του παρ/λου προγ/σμου ΑΡΧΗ ΝΑΙ Διάβα σε a Εκτύπ ωσε a > a 0 ΟΧΙ ΤΕΛΟΣ Σύμβολα διαγράμματος ροής 1 Ακέραιος τύπος 14 0-67 2 Πραγματικός τύπος
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη
Προγραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL )Βασικά στοιχεία Αναγνωριστικά (Identifiers) Τα αναγνωριστικά είναι ονόματα με τα οποία μπορούμε να αναφερόμαστε σε αποθηκευμένες
Πρόβλημα 37 / σελίδα 207
Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση
Συναρτήσεις. Υποπρόγραμμα
Συναρτήσεις Υποπρόγραμμα Ένα σύνολο από εντολές που κάνουν κάτι συγκεκριμένο, έχουν στενή σχέση/εξάρτηση μεταξύ τους, έχουν «χαλαρή» σύνδεση με τον υπόλοιπο κώδικα, μπορεί να εξαχθεί από το πρόγραμμά μας
Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python
Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και
2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Pascal. 26 Οκτωβρίου 2011
Pascal 6 Οκτωβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε
Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας
ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας
ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.
ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για
Η γλώσσα προγραμματισμού EEL
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική
Επιµέλεια Θοδωρής Πιερράτος
εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,
Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Διαδικασίες και συναρτήσεις 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1 Βασικές έννοιες Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα
{ int a = 5; { int b = 7; a = b + 3;
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 1: Γλώσσες με δομή block Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1
Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ σε ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΕΠΠ) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ σε ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΕΠΠ) Δημιουργία - Συγγραφή Costas Chatzinikolas info@costaschatzinikolas.gr Τελευταία Ενημέρωση:
- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)
Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο
ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ
ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,
Προγραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος
Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός
Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:
ΠΡΟΣΟΜΟΙΩΣΗ ΑΠΟΛΥΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ
Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό
53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η
53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς
Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )
Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη
ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33
ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Γλώσσες Προγραμματισμού Μεταγλωττιστές
Γλώσσες Προγραμματισμού Μεταγλωττιστές Παραγωγή Τελικού Κώδικα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Παραγωγή Τελικού κώδικα. Οργάνωση μνήμης Εγγραφήματα Δραστηριοποίησης
Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888
ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό
13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας
ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας
Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος
Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Ενότητες βιβλίου: 6.3, 7.1-7.6, 7.10, 8.1 Ώρες διδασκαλίας: 2 Φυσικές
Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος
Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις
Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ
Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 6: Εμβέλεια, Δέσμευση Μνήμης Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμοί (1) Εμβέλεια ενός ονόματος (Scope),
Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Συναρτήσεις ΣΥΝΑΡΤΗΣΕΙΣ 1.1. Ο λόγος ύπαρξης των συναρτήσεων Όπως είδαµε µία διαδικασία µπορεί να υπολογίζει περισσότερα από ένα αποτελέσµατα τα
Κλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης
Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ (ΠΕΡΙΛΗΨΗ) ΕΠΙΜΕΛΕΙΑ: ΝΙΚΗΦΟΡΟΣ ΜΑΝΔΗΛΑΡΑΣ ΚΕΦΑΛΑΙΟ 2 ο -ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ 2.1 ΤΙ ΕΙΝΑΙ ΑΛΓΟΡΙΘΜΟΣ ΟΡΙΣΜΟΣ: Αλγόριθμος είναι
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8 1. Δώστε τον ορισμό του αλγόριθμου. Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση
Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1
Κατακερματισμός 4/3/2009 Μ.Χατζόπουλος 1 H ιδέα που βρίσκεται πίσω από την τεχνική του κατακερματισμού είναι να δίνεται μια συνάρτησης h, που λέγεται συνάρτηση κατακερματισμού ή παραγωγής τυχαίων τιμών
ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ
ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)
d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι
Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
3 Αλληλεπίδραση Αντικειμένων
Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή
ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ
ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ
ΘΕΜΑ Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και, δίπλα,
3 ο Εργαστήριο Μεταβλητές, Τελεστές
3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13
Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ
ΘΕΜΑ Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και, δίπλα,
I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:
ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει
Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ
ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 MAΪΟΥ 2006 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ
Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης
Προγραμματισμός Υπολογιστών & Κ.Π. Γιαλούρης Στόχοι του σημερινού μαθήματος Εξοικείωση με τα περιβάλλοντα της Python Κατανόηση βασικών εννοιών & τεχνικών Τύπος δεδομένων Μεταβλητή Εντολή ανάθεση τιμής
Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν
Εισαγωγή στην Αριθμητική Ανάλυση
Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.