Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές

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

Download "Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές"

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

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

Pascal. 15 Νοεμβρίου 2011

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; }

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; } Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

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

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019 Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο

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

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

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

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

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

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

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

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

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

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

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων 1 Είσοδος/Έξοδος Είσοδος/Έξοδος ανάλογα με τον τύπο του προγράμματος Πρόγραμμα

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

Βασικές έννοιες προγραμματισμού

Βασικές έννοιες προγραμματισμού Βασικές έννοιες προγραμματισμού Αλφάβητο Γράμματα Κεφαλαία Ελληνικά ( Α Ω ) Πεζά Ελληνικά ( α ω ) Κεφαλαία Λατινικά ( A Z ) Πεζά Ελληνικά ( a z) Ψηφία 0-9 Ειδικοί χαρακτήρες ( +, -, *,/, =,.,,!, κενό )

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,

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

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

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

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

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

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

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 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 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

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

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

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

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

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

Συναρτήσεις. Υποπρόγραμμα

Συναρτήσεις. Υποπρόγραμμα Συναρτήσεις Υποπρόγραμμα Ένα σύνολο από εντολές που κάνουν κάτι συγκεκριμένο, έχουν στενή σχέση/εξάρτηση μεταξύ τους, έχουν «χαλαρή» σύνδεση με τον υπόλοιπο κώδικα, μπορεί να εξαχθεί από το πρόγραμμά μας

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Pascal. 26 Οκτωβρίου 2011

Pascal. 26 Οκτωβρίου 2011 Pascal 6 Οκτωβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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

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

Η γλώσσα προγραμματισμού EEL Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική

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

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

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

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

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

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

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

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

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Διαδικασίες και συναρτήσεις 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1 Βασικές έννοιες Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα

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

{ int a = 5; { int b = 7; a = b + 3;

{ int a = 5; { int b = 7; a = b + 3; Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 1: Γλώσσες με δομή block Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

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

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση: ΠΡΟΣΟΜΟΙΩΣΗ ΑΠΟΛΥΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

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

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

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

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

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η 53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 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 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 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

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

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Ενότητες βιβλίου: 6.3, 7.1-7.6, 7.10, 8.1 Ώρες διδασκαλίας: 2 Φυσικές

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

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60 Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 6: Εμβέλεια, Δέσμευση Μνήμης Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμοί (1) Εμβέλεια ενός ονόματος (Scope),

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

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Συναρτήσεις ΣΥΝΑΡΤΗΣΕΙΣ 1.1. Ο λόγος ύπαρξης των συναρτήσεων Όπως είδαµε µία διαδικασία µπορεί να υπολογίζει περισσότερα από ένα αποτελέσµατα τα

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ (ΠΕΡΙΛΗΨΗ) ΕΠΙΜΕΛΕΙΑ: ΝΙΚΗΦΟΡΟΣ ΜΑΝΔΗΛΑΡΑΣ ΚΕΦΑΛΑΙΟ 2 ο -ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ 2.1 ΤΙ ΕΙΝΑΙ ΑΛΓΟΡΙΘΜΟΣ ΟΡΙΣΜΟΣ: Αλγόριθμος είναι

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 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.

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i. Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ ΘΕΜΑ Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και, δίπλα,

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και, δίπλα,

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

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

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

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

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 MAΪΟΥ 2006 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης Προγραμματισμός Υπολογιστών & Κ.Π. Γιαλούρης Στόχοι του σημερινού μαθήματος Εξοικείωση με τα περιβάλλοντα της Python Κατανόηση βασικών εννοιών & τεχνικών Τύπος δεδομένων Μεταβλητή Εντολή ανάθεση τιμής

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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