Εμβέλεια. Παραδείγματα. Παραδείγματα. Μπλοκ (blocks)
|
|
- Ζηναις Γαλάνης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού, συχνά χρησιμοποιούμε το ίδιο όνομα ξανά και ξανά fun square x = x * x; fun double x = x + x; Wassily Kandsky, Black les, 1913 Κωστής Σαγώνας <kostis@cs.ntua.gr> Νίκος Παπασπύρου <nickie@softlab.ntua.gr> Τι ακριβώς συμβαίνει; Ονόματα και Εμβέλεια 2 Περιεχόμενα Ορισμοί και εμβέλεια Εμβέλεια μέσω μπλοκ Εμβέλεια με προσδιορισμένους τόπους ονομάτων (labeled namespaces) Εμβέλεια με πρωτογενείς τόπους ονομάτων (primitive namespaces) Στατική και δυναμική εμβέλεια Ξεχωριστή μεταγλώττιση Ορισμοί Όταν υπάρχουν διαφορετικές μεταβλητές με το ίδιο όνομα, υπάρχουν και διαφορετικά πιθανά δεσίματα για κάθε συγκεκριμένο όνομα Το παραπάνω δεν αναφέρεται μόνο σε ονόματα μεταβλητών, αλλά σε ονόματα τύπων, ονόματα σταθερών, ονόματα συναρτήσεων, κ.λπ. Ένας ορισμός είναι οτιδήποτε εγκαθιστά ένα πιθανό δέσιμο (bdg) για ένα όνομα Ονόματα και Εμβέλεια 3 Ονόματα και Εμβέλεια 4
2 Παραδείγματα fun square n = n * n; fun square square = square * square; const Low = 1; High = 10; type Ints = array [Low..High] of Integer; var X: Ints; Εμβέλεια Μπορεί να υπάρχουν περισσότεροι από ένας ορισμοί για κάποιο όνομα Κάθε εμφάνιση του ονόματος (εκτός των ορισμών) πρέπει να είναι δεμένη με κάποιον από τους ορισμούς του ονόματος Λέμε ότι η εμφάνιση ενός ονόματος είναι στην εμβέλεια κάποιου ορισμού του ονόματος όποτε το δέσιμο της συγκεκριμένης εμφάνισης καθορίζεται από αυτόν τον ορισμό Ονόματα και Εμβέλεια 5 Ονόματα και Εμβέλεια 6 Παραδείγματα - fun square square = square * square; val square = fn : t -> t - square 3; val it = 9 : t Μπλοκ (blocks) Ένα μπλοκ είναι ένα οικοδόμημα των γλωσσών που περιέχει ορισμούς και περικλείει μια περιοχή του προγράμματος στην οποία έχουν εφαρμογή οι ορισμοί Κάθε εμφάνιση πρέπει να είναι δεμένη με κάποιον από τους ορισμούς Αλλά με ποιον από όλους; Υπάρχουν πολλοί τρόποι να λύσουμε αυτό το πρόβλημα εμβέλειας val x = 6 val y = 7 x * y Ονόματα και Εμβέλεια 7 Ονόματα και Εμβέλεια 8
3 Είδη μπλοκ στην ML Ένα απλώς ορίζει ένα μπλοκ: δεν έχει άλλο σκοπό Ένας ορισμός fun περιλαμβάνει ένα μπλοκ: fun cube x = x * x * x; Οι διαφορετικές εναλλακτικές προτάσεις των συναρτήσεων ορίζουν διαφορετικά μπλοκ: fun f (a::b::_) = a + b f [a] = a f [] = 0; Κάθε κανόνας σε ένα ταίριασμα αποτελεί ένα μπλοκ: case x of (a,0) => a (_,a) => a Ονόματα και Εμβέλεια 9 Μπλοκ στη Java Στη Java και σε άλλες γλώσσες σαν τη C, μπορούμε να συνδυάσουμε εντολές σε μια σύνθετη εντολή (compound statement ) περικλείοντάς τες σε { και } Μια σύνθετη εντολή χρησιμεύει επίσης ως ένα μπλοκ: while (i < 0) { t c = i * i; p += c; q += c; i -= step; } Ονόματα και Εμβέλεια 10 Φωλιασμένα μπλοκ (nested blocks) Κλασικός κανόνας εμβέλειας σε μπλοκ Τι συμβαίνει όταν ένα μπλοκ περιλαμβάνει ένα άλλο μπλοκ, και τα δύο μπλοκ εμπεριέχουν ορισμούς για το ίδιο όνομα; Παράδειγμα σε ML: ποια είναι η τιμή της διπλανής έκφρασης; val n = 1 val m = n + 2 val n = n + 3 val j = n + m (2 + n) * j Η εμβέλεια ενός ορισμού αποτελείται από το μπλοκ που περιέχει τον ορισμό, από το σημείο του ορισμού μέχρι το τέλος του μπλοκ, εκτός από την εμβέλεια των πιθανών ορισμών του ίδιου ονόματος σε εσωτερικά μπλοκ Αυτός είναι ο κανόνας εμβέλειας που χρησιμοποιείται στην ML Οι περισσότερες γλώσσες με δομή μπλοκ και στατική εμβέλεια χρησιμοποιούν αυτόν τον κανόνα ή κάποια μικρή παραλλαγή του Ονόματα και Εμβέλεια 11 Ονόματα και Εμβέλεια 12
4 Παράδειγμα Προσδιορισμένοι τόποι ονομάτων val n = 1 val m = n + 2 val n = n + 3 val j = n + m (2 + n) * j Η εμβέλεια αυτού του ορισμού είναι A B B A Η έκφραση αποτιμάται ως: m = n + 2 = = 3 n = n + 3 = = 4 j = n + m = = 7 (2 + n) * j = (2 + 4) * 7 = 6 * 7 = 42 Η εμβέλεια αυτού του ορισμού είναι B Ένας προσδιορισμένος τόπος ονομάτων είναι οποιοδήποτε οικοδόμημα της γλώσσας που: 1. περιέχει ορισμούς και μια περιοχή του προγράμματος στην οποία ισχύουν οι ορισμοί 2. έχει ένα όνομα που μπορεί να χρησιμοποιηθεί για προσπέλαση των ορισμών του από έξω από το συγκεκριμένο οικοδόμημα Η ML έχει ένα τέτοιο οικοδόμημα τη δομή (structure) Ονόματα και Εμβέλεια 13 Ονόματα και Εμβέλεια 14 Δομές στην ML (ML structures) Άλλοι προσδιορισμένοι τόποι ονομάτων Οι δομές είναι περίπου σαν μπλοκ: η τιμήa μπορεί να χρησιμοποιηθεί παντού από τον ορισμό της μέχρι το τέλος της δομής structure Fred = struct val a = 42; fun f x = x + a; ; Αλλά οι ορισμοί μέσα στη δομή είναι προσπελάσιμοι και εκτός της δομής, με χρήση του ονόματός της Τόποι ονομάτων που είναι απλώς τόποι ονομάτων: C++ namespace Modula-3 module Ada package Java package Τόποι ονομάτων που έχουν και άλλους σκοπούς: Ορισμοί κλάσεων σε αντικειμενοστρεφείς γλώσσες προγραμματισμού που είναι βασισμένες σε προσδιορισμένους τόπους ονομάτων π.χ. Fred.a και Fred.f Ονόματα και Εμβέλεια 15 Ονόματα και Εμβέλεια 16
5 Παράδειγμα σε Java public class Month { public static t m = 1; public static t max = 12; } Οι μεταβλητές m και max είναι ορατές σε όλη την υπόλοιπη κλάση Αλλά είναι προσπελάσιμες και εκτός της κλάσης, ως Month.m και Month.max Φυσικά, όπως θα δούμε, οι κλάσεις στη Java έχουν και άλλους σκοπούς Πλεονεκτήματα τόπων ονομάτων Δύο αλληλοσυγκρουόμενοι στόχοι: Χρήση απλών μνημονικών ονομάτων όπως π.χ. max Για ό,τι θέλουμε να είναι απροσπέλαστο από τον υπόλοιπο κόσμο, χρησιμοποιούμε ασυνήθη ονόματα όπως maxsupplierbid, δηλαδή ονόματα που δε θα συγκρούονται με ονόματα σε άλλα μέρη του προγράμματος Με χρήση τόπων ονομάτων, μπορούμε να επιτύχουμε και τους δύο στόχους: Εντός του τόπου ονόματος, μπορούμε να χρησιμοποιήσουμε το όνομα max Από έξω, το όνομα SupplierBid.max Ονόματα και Εμβέλεια 17 Ονόματα και Εμβέλεια 18 Εκλέπτυνση τόπων ονομάτων Παράδειγμα αφηρημένου τύπου δεδομένων Οι περισσότεροι τόποι ονομάτων έχουν κάποιο τρόπο να επιτρέπουν μέρος του τόπου ονομάτων να παραμένει ιδιωτικής (δηλ. μη κοινής) χρήσης Με τον τρόπο αυτό κρύβουμε πληροφορία από κάποια μέρη του προγράμματος Τα προγράμματα είναι πιο εύκολα συντηρούμενα όταν χρησιμοποιούν ονόματα με σχετικά μικρή εμβέλεια Για παράδειγμα, οι αφηρημένοι τύποι δεδομένων (abstract data types) αποκαλύπτουν μια αυστηρή διαπροσωπεία και ταυτόχρονα κρύβουν τις λεπτομέρειες της υλοποίησης namespace dictionary contas a constant defition for itialsize a type defition for hashtable a function defition for hash a function defition for reallocate a function defition for create a function defition for sert a function defition for search a function defition for dee namespace Οι ορισμοί της διαπροσωπείας όμως πρέπει να είναι ορατοί Οι λεπτομέρειες της υλοποίησης πρέπει να μείνουν κρυφές Ονόματα και Εμβέλεια 19 Ονόματα και Εμβέλεια 20
6 Δύο προσεγγίσεις Σε κάποιες γλώσσες, όπως η C++, ο τόπος ονομάτων καθορίζει λεπτομερώς την ορατότητα των συστατικών στοιχείων του Σε άλλες γλώσσες, όπως η ML, κάποιο ξεχωριστό οικοδόμημα ορίζει τη διαπροσωπεία του τόπου ονομάτων (π.χ. ένα signature στην ML) Και κάποιες γλώσσες, όπως η Ada και η Java, συνδυάζουν και τις δύο παραπάνω προσεγγίσεις Ο τόπος ονομάτων καθορίζει την ορατότητα namespace dictionary contas private: a constant defition for itialsize a type defition for hashtable a function defition for hash a function defition for reallocate public: a function defition for create a function defition for sert a function defition for search a function defition for dee namespace Ονόματα και Εμβέλεια 21 Ονόματα και Εμβέλεια 22 Ξεχωριστή διαπροσωπεία terface dictionary contas a function type defition for create a function type defition for sert a function type defition for search a function type defition for dee terface namespace mydictionary implements dictionary contas a constant defition for itialsize a type defition for hashtable a function defition for hash a function defition for reallocate a function defition for create a function defition for sert a function defition for search a function defition for dee namespace Μη το δοκιμάσετε στο σπίτι! Επιτρέπεται να ορίσουμε μια μεταβλητή με όνομα t Η ML δε μπερδεύεται - val t = 42; val t = 42 : t Ακόμα και το επόμενο επιτρέπεται (η ML καταλαβαίνει ότι η έκφραση t * t δεν αναφέρεται σε κάποιο τύπο): - fun f t = t * t; val f = fn : t -> t - f 7-7; val it = 42 : t Ονόματα και Εμβέλεια 23 Ονόματα και Εμβέλεια 24
7 Πρωτογενείς τόποι ονομάτων Η σύνταξη της ML κρατάει ξεχωριστούς τους τύπους και τις εκφράσεις Η ML πάντα ξέρει αν ένα όνομα είναι τύπος ή κάτι άλλο, διότι υπάρχει ξεχωριστός τόπος ονομάτων για τους τύπους fun f(t:t) = (t:t)*(t:t); Τόπος ονομάτων των μεταβλητών Τόπος ονομάτων των τύπων Πρωτογενείς τόποι ονομάτων Είναι τόποι ονομάτων που δε μπορούν να δημιουργηθούν με χρήση της γλώσσας (όπως οι πρωτογενείς τύποι) Είναι μέρος του ορισμού της γλώσσας Κάποιες γλώσσες έχουν αρκετούς διαφορετικούς μεταξύ τους πρωτογενείς τόπους ονομάτων Π.χ. η Java: τα πακέτα (packages), οι τύποι, οι μέθοδοι, τα πεδία, και οι ετικέτες των εντολών βρίσκονται σε διαφορετικούς τόπους ονομάτων Ονόματα και Εμβέλεια 25 Ονόματα και Εμβέλεια 26 Πότε επιλύεται η εμβέλεια; Στατική και Δυναμική εμβέλεια Όλες οι μέθοδοι εμβέλειας που είδαμε μέχρι στιγμής είναι στατικές Απαντούν κατά το χρόνο μεταγλώττισης στην ερώτηση του κατά πόσο μια εμφάνιση κάποιου ονόματος είναι στην εμβέλεια κάποιου ορισμού Κάποιες γλώσσες καθυστερούν την παραπάνω απόφαση μέχρι το χρόνο εκτέλεσης: λέμε ότι οι γλώσσες αυτές υποστηρίζουν δυναμική εμβέλεια Ονόματα και Εμβέλεια 27 Ονόματα και Εμβέλεια 28
8 Δυναμική εμβέλεια Κάθε συνάρτηση έχει ένα περιβάλλον από ορισμούς Εάν ο ορισμός ενός ονόματος που βρίσκεται σε μια συνάρτηση f δε βρίσκεται στο περιβάλλον της συνάρτησης, τότε ψάχνουμε στο περιβάλλον της συνάρτησης που κάλεσε την f Εάν ο ορισμός δε βρεθεί ούτε εκεί, τότε η αναζήτηση συνεχίζεται ακολουθώντας την αλυσίδα των κλήσεων των συναρτήσεων Στη δυναμική εμβέλεια ο κανόνας είναι κάπως περίεργος Κλασικός κανόνας δυναμικής εμβέλειας Η εμβέλεια ενός ορισμού είναι η συνάρτηση που περιέχει τον ορισμό, από το σημείο του ορισμού μέχρι το τέλος της συνάρτησης, μαζί με όλες τις συναρτήσεις που καλούνται (άμεσα ή έμμεσα) από την εμβέλεια εκτός της εμβέλειας οποιωνδήποτε νέων ορισμών των ίδιων ονομάτων στις καλούμενες συναρτήσεις Ονόματα και Εμβέλεια 29 Ονόματα και Εμβέλεια 30 Στατική εμβέλεια έναντι δυναμικής Παράδειγμα Οι κανόνες εμβέλειας είναι παρόμοιοι Και οι δύο μιλάνε για τρύπες εμβέλειας μέρη στα οποία η εμβέλεια διακόπτεται εξαιτίας νέων ορισμών Αλλά ο κανόνας της στατικής εμβέλειας αναφέρεται μόνο σε κομμάτια του κειμένου του προγράμματος, και κατά συνέπεια μπορεί να προσδιοριστεί κατά το χρόνο μεταγλώττισης του προγράμματος Ο κανόνας της δυναμικής εμβέλειας αναφέρεται σε γεγονότα χρόνου εκτέλεσης, συγκεκριμένα σε ακολουθίες κλήσεων συναρτήσεων fun g x = val c = 1 fun f y = y + c fun h z = val c = 2 f z h x ; Ποια θα ήταν η τιμή της κλήσης g 5 αν η γλώσσα χρησιμοποιούσε α) στατική εμβέλεια; β) δυναμική εμβέλεια; Ονόματα και Εμβέλεια 31 Ονόματα και Εμβέλεια 32
9 Στατική εμβέλεια (εμβέλεια μπλοκ) Δυναμική εμβέλεια fun g x = val c = 1 fun f y = y + c fun h z = val c = 2 f z h x ; Στη στατική εμβέλεια, η μεταβλητή c δένεται με τον προηγούμενο ορισμό στο ίδιο μπλοκ. Ο ορισμός της c στο περιβάλλον κλήσης της f είναι μη προσπελάσιμος. g 5 = 6 σε αυτήν την περίπτωση (όπως και στην ML) fun g x = val c = 1 fun f y = y + c fun h z = val c = 2 f z h x ; Στη δυναμική εμβέλεια, η μεταβλητή c δένεται με τον χρονικά πιο πρόσφατο ορισμό στο περιβάλλον κλήσης της f. g 5 = 7 σε αυτήν την περίπτωση Ονόματα και Εμβέλεια 33 Ονόματα και Εμβέλεια 34 Πού χρησιμοποιείται η δυναμική εμβέλεια Σε λίγες μόνο γλώσσες Σε κάποιες διαλέκτους της Lisp και της APL Υπάρχει διαθέσιμη ως επιλογή στην Common Lisp Μειονεκτήματα: Δυσκολία αποδοτικής υλοποίησης Δημιουργεί μεγάλες και περίπλοκες εμβέλειες (οι εμβέλειες επεκτείνονται στις καλούμενες συναρτήσεις) Η επιλογή του ονόματος κάποιας μεταβλητής στη συνάρτηση κλήσης μπορεί να επηρεάσει τη συμπεριφορά της καλούμενης συνάρτησης Πλεονέκτημα: Δυνατότητα αλλαγής/επιλογής του περιβάλλοντος εκτέλεσης Ονόματα και Εμβέλεια 35 Πιθανή χρήση της δυναμικής εμβέλειας program messages; var message : strg; procedure compla; beg writeln(message); ; procedure out_of_mem; var message : strg; beg message := "Out of memory"; compla; ; procedure timeout; var message : strg; beg message := "Timeout"; compla; ; Ονόματα και Εμβέλεια 36
10 Αμοιβαία αναδρομή μέσω δηλώσεων forward Αμοιβαία αναδρομικές συναρτήσεις στην ML Γλώσσες όπως η C, C++ και η Pascal χρειάζονται δηλώσεις forward για αμοιβαία αναδρομικούς ορισμούς t foo(); t bar() {... foo();... } t foo() {... bar();... } Εν μέρει, το παραπάνω είναι παρενέργεια της διαδικασίας που ακολουθείται από το μεταγλωττιστή: επιτρέπει τη μετάφραση του προγράμματος με ένα μόνο πέρασμα Οι αμοιβαία αναδρομικές συναρτήσεις στην ML πρέπει να γραφούν μαζί, με χρήση ενός συνδετικού and: - fun even x = = if (x <= 0) then true else odd (x-1) = and odd x = = if (x <= 0) then false else even (x-1); val even = fn : t -> bool val odd = fn : t -> bool - even 42; val it = true : bool - odd 42; val it = false : bool Ονόματα και Εμβέλεια 37 Ονόματα και Εμβέλεια 38 Ξεχωριστή μεταγλώττιση Η προσέγγιση της C: η μεριά του μεταγλωττιστή Μέρη του προγράμματος μεταγλωττίζονται ξεχωριστά, και στη συνέχεια συνδέονται (lked) μαζί Τα θέματα εμβέλειας επεκτείνονται από το μεταγλωττιστή (compiler) στο συνδέτη (lker) ο οποίος χρειάζεται να συνδέσει αναφορές σε ορισμούς που έχουν προκύψει από ξεχωριστή μεταγλώττιση Οι περισσότερες γλώσσες έχουν κάποια ειδική υποστήριξη για το πώς γίνεται η σύνδεση των κομματιών του προγράμματος που έχουν μεταγλωττιστεί ξεχωριστά Δύο διαφορετικά είδη ορισμών ονομάτων: Πλήρης ορισμός (defition) Όνομα και τύπος μόνο: μια δήλωση (declaration) κατά τη C Εάν πολλές διαφορετικές μεταγλωττίσεις/αρχεία θέλουν να χρησιμοποιήσουμε την ίδια ακέραια μεταβλητή x: Μόνο ένα αρχείο θα έχει τον ορισμό: t x = 42; Όλα τα άλλα αρχεία θα έχουν τη δήλωση: extern t x; Ονόματα και Εμβέλεια 39 Ονόματα και Εμβέλεια 40
11 Η προσέγγιση της C: η μεριά του συνδέτη Τάσεις ξεχωριστής μεταγλώττισης Όταν τρέχει ο συνδέτης, θεωρεί κάθε δήλωση ως μια αναφορά σε ένα όνομα που ορίζεται σε κάποιο άλλο αρχείο Περιμένει να βρει ακριβώς έναν πλήρη ορισμό του κάθε ονόματος (σε κάποιο αρχείο) Προσέξτε ότι οι δηλώσεις δεν αναφέρουν σε ποιο σημείο βρίσκεται ο πλήρης ορισμός και πώς αυτός θα βρεθεί αντίθετα, απλώς αξιώνουν από το συνδέτη να ψάξει να τον βρει κάπου Στις σύγχρονες γλώσσες, η ξεχωριστή μεταγλώττιση είναι λιγότερο ξεχωριστή από ό,τι ήταν πριν από κάποια χρόνια Οι κλάσεις της Java μπορεί να εξαρτώνται κυκλικά μεταξύ τους, και ο μεταγλωττιστής της Java πρέπει να είναι σε θέση να μεταφράσει πολλές ξεχωριστές κλάσεις ταυτόχρονα Η ML δεν προσφέρεται καθόλου για ξεχωριστή μεταγλώττιση, αλλά υπάρχει ο CM (Compilation Manager, ένα ξεχωριστό εργαλείο του συστήματος SML/NJ) που μπορεί να το κάνει για τα περισσότερα προγράμματα σε ML Ονόματα και Εμβέλεια 41 Ονόματα και Εμβέλεια 42 Συμπερασματικά Τέσσερεις διαφορετικές προσεγγίσεις για εμβέλεια Υπάρχουν πολλές διαφοροποιήσεις στις προσεγγίσεις Οι περισσότερες γλώσσες χρησιμοποιούν τουλάχιστον κάποιες από αυτές Ονόματα και Εμβέλεια 43
Ονόματα και Εμβέλεια 6
Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΟνόματα και Εμβέλεια 4
Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΟνόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913
Ονόματα και Εμβέλεια Wassily Kandinsky, Black lines, 1913 Κωστής Σαγώνας Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα Αλλά στις μοντέρνες
Διαβάστε περισσότεραΟνόµατα και Εµβέλεια 4
Ονόµατα και Εµβέλεια Ανακύκλωση ονοµάτων Η κατανόηση της εµβέλειας είναι άµεση εάν το κάθε τι έχει το δικό του όνοµα fun square a = a * a; fun double b = b + b; Αλλά στις µοντέρνες γλώσσες προγραµµατισµού,
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#
Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)
Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με
Διαβάστε περισσότεραprocedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΒασικά Στοιχεία της Java
Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά
Διαβάστε περισσότεραΚλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΚλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΒασικά Στοιχεία της Java
Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της
Διαβάστε περισσότεραΤι είναι; Ο Πίνακας Συμβόλων είναι όπως ένα λεξικό:
ΠΙΝΑΚΑΣ ΣΥΜΒΟΛΩΝ Τι είναι; Ο Πίνακας Συμβόλων είναι όπως ένα λεξικό: πρέπει να υποστηρίζει την εισαγωγή, αναζήτηση και εγγραφή ονομάτων με τις ιδιότητές τους να αναπαριστά τις συνδέσεις τους στις δηλώσεις.
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΟρισμός Συναρτήσεων στην ΜL
Ορισμός Συναρτήσεων στην ΜL Ονόματα και δεσμεύσεις: ησυνάρτησηval Τα ονόματα σταθερών δεσμεύονται με τιμές σταθερών μέσω ορισμών της συνάρτησης val. val codeof0 = ord 0 val codeof9 = codeof0 + 9 Τα ονόματα
Διαβάστε περισσότεραΜεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι
Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότερα8. Μέθοδοι (Methods)
8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και
Διαβάστε περισσότερα1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Διαβάστε περισσότεραΕγγραφές ραστηριοποίησης
Εγγραφές ραστηριοποίησης Ερώτηση για δέσιµο Κατά την εκτέλεση του προγράµµατος, οι µεταβλητές δένονται (δυναµικά) µε τιµές Οι τιµές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι µεταβλητές πρέπει
Διαβάστε περισσότεραΚάποιες γενικές παρατηρήσεις:
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΜεταγλωττιστές Βελτιστοποίηση
Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780
Διαβάστε περισσότερα3 Αλληλεπίδραση Αντικειμένων
Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή
Διαβάστε περισσότεραΑποτελέσματα προόδου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://courses.softlab.ntua.gr/progintro/ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Δημήτρης Φωτάκης (fotakis@cs.ntua.gr)
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 8 ο Μετάφραση Οδηγούμενη από τη Σύνταξη Ο ΣΑ καλεί τις ρουτίνες που εκτελούν τη σημασιολογική ανάλυση και παράγουν τον ενδιάμεσο κώδικα Σημασιολογικές πληροφορίες μπορούν να μεταφέρονται
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότεραΛογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
Διαβάστε περισσότεραΚεφάλαιο 7: Υπορουτίνες
Κεφάλαιο 7: Υπορουτίνες Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων που μπορεί
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων
ΕΠΑΛ ΧΡΥΣΟΥΠΟΛΗΣ Γ Πληροφορική- 2015-2016 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων 1 Εισαγωγή Η εντολή Στο 4 ο κεφάλαιο γνωρίσαµε την δοµή πολλαπλής επιλογής στην οποία
Διαβάστε περισσότερα- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)
Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο
Διαβάστε περισσότερα2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
Διαβάστε περισσότεραΜεταγλωττιστές Βελτιστοποίηση
Βελτιστοποίηση (i) Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη,
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)
ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης) Τι είναι οι εντολές Ελέγχου και Επιλογής στην Pascal; Ποιες είναι οι εντολές Ελέγχου και Επιλογής στην Pascal;
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Διαβάστε περισσότεραΜέρος 2 Κατασκευή Συντακτικού Αναλυτή
Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο
Διαβάστε περισσότεραΒασικά της γλώσσας JAVA
17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΕργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C
Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια
Διαβάστε περισσότεραΚεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων
Διαβάστε περισσότεραΤο πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.
Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Πέμπτη (5 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/
Διαβάστε περισσότεραΕισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός
Διαβάστε περισσότεραΜαλούτα Θεανώ Σελίδα 1
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες
Διαβάστε περισσότεραΑφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός
Αφαίρεση στον FP Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός Πολυμορφισμός Θα χρησιμοποιήσουμε σαν παράδειγμα τη συνάρτηση ταυτότητας Ι, που ορίζεται ως: fun I x = x Ο ορισμός
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 6: Εμβέλεια, Δέσμευση Μνήμης Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμοί (1) Εμβέλεια ενός ονόματος (Scope),
Διαβάστε περισσότεραΕργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
Διαβάστε περισσότεραΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA
Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 7: Υπορουτίνες Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction)
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
Διαβάστε περισσότερα1o Φροντιστήριο ΗΥ240
1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Συναρτήσεις - Μεταβλητές ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Συναρτήσεις / Μεταβλητές
Διαβάστε περισσότεραΔιάλεξη 04: Παραδείγματα Ανάλυσης
Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΑλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου
Διαβάστε περισσότεραΕργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access
Διαβάστε περισσότεραI (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
Διαβάστε περισσότεραΠληροφορική 2. Γλώσσες Προγραμματισμού
Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση
Διαβάστε περισσότεραΔιάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων
Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα
Διαβάστε περισσότεραΓλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ http://courses.softlab.ntua.gr/softeng/ ιδάσκοντες: (nickie@softlab.ntua.gr) Βασίλης Βεσκούκης (bxb@softlab.ntua.gr) Γλώσσες Προγραµµατισµού και Ανάπτυξη Συστηµάτων Λογισµικού ΤΛ
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό με C++
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 9: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Κωνσταντίνος Κουκουλέτσος Τμήμα
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 Τμήμα θεωρίας: Κάθε Τρίτη, 11πμ-2μμ, ΑΜΦ22. Διδάσκων: Ντίνος Φερεντίνος email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό εργαστήριο (5-6 2ωρα εργαστήρια το εξάμηνο,
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότερα2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
Διαβάστε περισσότεραΑντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»
Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33
ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL
8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to
Διαβάστε περισσότεραΔομές ελέγχου ροής προγράμματος
Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση
Διαβάστε περισσότερα10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.
1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο
Διαβάστε περισσότεραΠρογραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Διαβάστε περισσότεραΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ
ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ
Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019
Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.
Διαβάστε περισσότεραTO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ
Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός
ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons.
Διαβάστε περισσότεραΔεδομένα, τελεστές, είσοδος/έξοδος
2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java
Διαβάστε περισσότερα