Εγγραφές ραστηριοποίησης
|
|
- Ἑλένη Μακρή
- 6 χρόνια πριν
- Προβολές:
Transcript
1 Εγγραφές ραστηριοποίησης Ερώτηση για δέσιµο Κατά την εκτέλεση του προγράµµατος, οι µεταβλητές δένονται (δυναµικά) µε τιµές Οι τιµές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι µεταβλητές πρέπει κάπως να δεθούν µε θέσεις µνήµης Πώς γίνεται αυτό; Jackson Pollock, The Key, 1946 (action patg) Κωστής Σαγώνας Εγγραφές δραστηριοποίησης 2 Συναρτησιακές γλώσσες συναντούν προστακτικές Οι προστακτικές γλώσσες κάνουν εµφανή την έννοια των θέσεων µνήµης: a := 0 Αποθήκευσε µηδέν στη θέση µνήµης της µεταβλητής a Οι συναρτησιακές γλώσσες τις κρύβουν: val a = 0 έσε το όνοµα a µε την τιµή µηδέν Και τα δύο είδη γλωσσών πρέπει να ενώσουν µεταβλητές µε τιµές που αναπαρίστανται στη µνήµη Άρα και οι δύο πρέπει να αντιµετωπίσουν την ίδια ερώτηση δεσίµατος Περιεχόµενα Εγγραφές δραστηριοποίησης (s) Στατική δέσµευση εγγραφών δραστηριοποίησης Στοίβες από εγγραφές δραστηριοποίησης Χειρισµός φωλιασµένων ορισµών συναρτήσεων Συναρτήσεις ως παράµετροι Μακρόβιες εγγραφές δραστηριοποίησης Εγγραφές δραστηριοποίησης 3 Εγγραφές δραστηριοποίησης 4
2 ραστηριοποιήσεις συναρτήσεων Ο χρόνος ζωής της εκτέλεσης µιας συνάρτησης, από την κλήση µέχρι την αντίστοιχη επιστροφή, ονοµάζεται δραστηριοποίηση (activation) της συνάρτησης Όταν κάθε δραστηριοποίηση έχει το δικό της δέσιµο µεταβλητών σε θέσεις µνήµης, λέµε ότι έχουµε µεταβλητές ειδικές για κάθε δραστηριοποίηση Οι µεταβλητές αυτές ονοµάζονται επίσης δυναµικές (dynamic dynamic) ή αυτόµατες (automatic) µεταβλητές Μεταβλητές ειδικές για κάθε δραστηριοποίηση Στις περισσότερες µοντέρνες γλώσσες προγραµµατισµού, οι πιο συνήθεις αυτόµατες µεταβλητές είναι αυτές που είναι βοηθητικές για κάθε δραστηριοποίηση συνάρτησης: fun days2ms days = val hours = days * 24.0 val mutes = hours * 60.0 val seconds = mutes * 60.0 seconds * Εγγραφές δραστηριοποίησης 5 Εγγραφές δραστηριοποίησης 6 ραστηριοποίηση των µπλοκ Για µπλοκ που περιέχουν κώδικα, µιλάµε για Τη δραστηριοποίηση του µπλοκ Το χρόνο ζωής µιας εκτέλεσης του µπλοκ Μια µεταβλητή µπορεί να είναι ειδική για κάποια µόνο δραστηριοποίηση ενός συγκεκριµένου µπλοκ µιας συνάρτησης: fun fact n = if n = 0 then 1 else val fac = fact (n-1) n*fac Χρόνοι ζωής για τις µεταβλητές Οι περισσότερες προστακτικές γλώσσες έχουν κάποιο τρόπο να δηλώσουν ότι κάποιες µεταβλητές δένονται µε µια συγκεκριµένη θέση µνήµης για όλη τη διάρκεια εκτέλεσης του προγράµµατος Προφανής λύση δέσµευσης: στατική δέσµευση (ο φορτωτής δεσµεύει χώρο για αυτές τις µεταβλητές) t count = 0; t nextcount() { count = count + 1; return count; Εγγραφές δραστηριοποίησης 7 Εγγραφές δραστηριοποίησης 8
3 Η εµβέλεια και ο χρόνος ζωής διαφέρουν Στις περισσότερες µοντέρνες γλώσσες, οι µεταβλητές µε τοπική εµβέλεια έχουν χρόνο ζωής που συνήθως ταυτίζεται µε τη δραστηριοποίηση του µπλοκ Όµως, οι δύο έννοιες είναι διαφορετικές µεταξύ τους, όπως π.χ. µπορεί να γίνει στη C µέσω του προσδιοριστή static: t nextcount() { static t count; count = count + 1; return count; Άλλοι χρόνοι ζωής για τις µεταβλητές Οι γλώσσες αντικειµενοστρεφούς προγραµµατισµού χρησιµοποιούν µεταβλητές των οποίων ο χρόνος ζωής είναι συσχετισµένος µε το χρόνο ζωής των αντίστοιχων αντικειµένων Κάποιες γλώσσες έχουν µεταβλητές των οποίων οι τιµές είναι επίµονες (persistent): µε άλλα λόγια διατηρούν την τιµή τους για πολλαπλές εκτελέσεις του ίδιου προγράµµατος Εγγραφές δραστηριοποίησης 9 Εγγραφές δραστηριοποίησης 10 Εγγραφές δραστηριοποίησης Οι υλοποιήσεις των γλωσσών συνήθως συσκευάζουν όλες τις µεταβλητές που αναφέρονται σε µια συγκεκριµένη δραστηριοποίηση της συνάρτησης σε µια εγγραφή δραστηριοποίησης () Οι εγγραφές δραστηριοποίησης περιέχουν επίσης και όλα τα άλλα δεδοµένα που σχετίζονται µε δραστηριοποιήσεις, όπως: Τη διεύθυνση επιστροφής () της δραστηριοποίησης: δείχνει σε ποιο σηµείο του προγράµµατος πρέπει να πάει ο έλεγχος όταν επιστρέψει η συγκεκριµένη δραστηριοποίηση Ένα σύνδεσµο πρόσβασης (access lk) που δείχνει την εγγραφή δραστηριοποίησης της καλούσας συνάρτησης (callg function) Εγγραφές δραστηριοποίησης 11 Εγγραφές δραστηριοποίησης για µπλοκ Όταν εκτελείται ένα µπλοκ κώδικα, χρειαζόµαστε χώρο για τις τοπικές µεταβλητές του συγκεκριµένου µπλοκ Υπάρχουν διάφοροι τρόποι δέσµευσης χώρου: εσµεύουµε από πριν χώρο στην εγγραφή δραστηριοποίησης της περικλείουσας συνάρτησης Επεκτείνουµε την εγγραφή δραστηριοποίησης της συνάρτησης όταν η εκτέλεση εισέλθει στο µπλοκ (και τη µειώνουµε ξανά όταν εξέλθουµε του µπλοκ) εσµεύουµε κάποια ξεχωριστή εγγραφή δραστηριοποίησης για το µπλοκ Θα δούµε τον πρώτο από αυτούς τους τρόπους Εγγραφές δραστηριοποίησης 12
4 Στατική δέσµευση (static allocation) Η απλούστερη προσέγγιση: δέσµευσε µία εγγραφή δραστηριοποίησης για κάθε µια συνάρτηση, στατικά Οι παλιές διάλεκτοι της Fortran και της Cobol χρησιµοποιούσαν (µόνο) αυτό το σύστηµα δέσµευσης Αποτελεί απλό και πολύ γρήγορο τρόπο υλοποίησης Παράδειγµα FUNCTION AVG (ARR, N) DIMENSION ARR(N) SUM = 0.0 DO 100 I = 1, N SUM = SUM + ARR(I) 100 CONTINUE AVG = SUM / FLOAT(N) RETURN END N address ARR address I SUM AVG Εγγραφές δραστηριοποίησης 13 Εγγραφές δραστηριοποίησης 14 Μειονέκτηµα στατικής δέσµευσης Κάθε συνάρτηση έχει µία εγγραφή δραστηριοποίησης Μπορεί να υπάρξει µία µόνο δραστηριοποίηση συνάρτησης ζωντανή κάθε χρονική στιγµή Οι µοντέρνες γλώσσες (συµπεριλαµβανοµένων των µοντέρνων διαλέκτων της Cobol και της Fortran) δεν υπακούν σε αυτόν τον περιορισµό λόγω: Αναδροµής Πολυνηµατικότητας (multithreadg) Στοίβες από εγγραφές δραστηριοποίησης (1) Για την υποστήριξη της αναδροµής, πρέπει να δεσµεύσουµε µια νέα εγγραφή δραστηριοποίησης για κάθε δραστηριοποίηση της συνάρτησης υναµική δέσµευση: η εγγραφή δραστηριοποίησης δεσµεύεται όταν η συνάρτηση καλείται Σε πολλές γλώσσες, όπως η C, η εγγραφή αυτή αποδεσµεύεται όταν η συνάρτηση επιστρέψει Εγγραφές δραστηριοποίησης 15 Εγγραφές δραστηριοποίησης 16
5 Στοίβες από εγγραφές δραστηριοποίησης (2) Με άλλα λόγια, η εκτέλεση δηµιουργεί µια στοίβα από εγγραφές δραστηριοποίησης, όπου πλαίσια (frames) σπρώχνονται στη στοίβα κατά την κλήση των συναρτήσεων, και αποµακρύνονται από τη στοίβα κατά την επιστροφή τους Τρέχουσα εγγραφή δραστηριοποίησης Στη στατική δέσµευση η θέση κάθε εγγραφής δραστηριοποίησης καθορίζεται πριν την έναρξη εκτέλεσης του προγράµµατος Στη δυναµική δέσµευση η θέση της τρέχουσας εγγραφής δραστηριοποίησης ( ) δεν είναι γνωστή παρά µόνο κατά το χρόνο εκτέλεσης Κάθε συνάρτηση πρέπει να ξέρει πως θα βρει τη διεύθυνση της τρέχουσας εγγραφής δραστηριοποίησης Συχνά, ένας καταχωρητής της µηχανής δεσµεύεται για να περιέχει/κρατάει τη συγκεκριµένη τιµή Εγγραφές δραστηριοποίησης 17 Εγγραφές δραστηριοποίησης 18 Παράδειγµα σε C Αποτιµούµε την κλήση fact(3). Η εικόνα δείχνει τα περιεχόµενα της στοίβας ακριβώς πριν την αναδροµική κλήση της fact(2) που θα δηµιουργήσει τη δεύτερη εγγραφή δραστηριοποίησης. t fact(t n) { t result; if (n < 2) result = 1; else result = n * fact(n-1); return result; activation record n: 3 Τα περιεχόµενα της µνήµης ακριβώς πριν την τρίτη δραστηριοποίηση. t fact(t n) { t result; if (n < 2) result = 1; else result = n * fact(n-1); return result; n: 2 n: 3 result:? result:? result:? Εγγραφές δραστηριοποίησης 19 Εγγραφές δραστηριοποίησης 20
6 Τα περιεχόµενα της µνήµης ακριβώς πριν επιστρέψει η τρίτη δραστηριοποίηση. t fact(t n) { t result; if (n < 2) result = 1; else result = n * fact(n-1); return result; Η δεύτερη δραστηριοποίηση ακριβώς πριν επιστρέψει. t fact(t n) { t result; if (n < 2) result = 1; else result = n * fact(n-1); return result; n: 1 n: 2 n: 3 n: 1 n: 2 n: 3 result: 1 result:? result:? result: 1 result: 2 result:? Εγγραφές δραστηριοποίησης 21 Εγγραφές δραστηριοποίησης 22 Η πρώτη δραστηριοποίηση ακριβώς πριν επιστρέψει µε το αποτέλεσµα fact(3) = 6. n: 1 result: 1 t fact(t n) { t result; if (n < 2) result = 1; else result = n * fact(n-1); return result; n: 2 result: 2 n: 3 result: 6 Παράδειγµα σε ML Αποτιµούµε την κλήση halve [1,2,3,4] Η εικόνα δείχνει τα περιεχόµενα της µνήµης ακριβώς πριν την αναδροµική κλήση που δηµιουργεί τη δεύτερη δραστηριοποίηση. fun halve nil = (nil, nil) halve [a] = ([a], nil) halve (a::b::cs) = val (x, y) = halve cs (a::x, b::y) Οι εικόνες περιλαμβάνουν μια μικρή απλοποίηση όσον αφορά στο τι πράγματι αποθηκεύεται στη στοίβα activation record [1,2,3,4] a: 1 b: 2 cs: [3,4] x:? y:? value to return:? Εγγραφές δραστηριοποίησης 23 Εγγραφές δραστηριοποίησης 24
7 Τα περιεχόµενα της µνήµης ακριβώς πριν την τρίτη δραστηριοποίηση. [3,4] [1,2,3,4] [] Τα περιεχόµενα της µνήµης ακριβώς πριν επιστρέψει η τρίτη δραστηριοποίηση. [3,4] [1,2,3,4] a: 3 a: 1 value to return: ([], []) a: 3 a: 1 fun halve nil = (nil, nil) halve [a] = ([a], nil) halve (a::b::cs) = val (x, y) = halve cs (a::x, b::y) b: 4 cs: [] x:? y:? b: 2 cs: [3,4] x:? y:? value to return:? value to return:? fun halve nil = (nil, nil) halve [a] = ([a], nil) halve (a::b::cs) = val (x, y) = halve cs (a::x, b::y) b: 4 cs: [] x:? y:? b: 2 cs: [3,4] x:? y:? value to return:? value to return:? Εγγραφές δραστηριοποίησης 25 Εγγραφές δραστηριοποίησης 26 Η δεύτερη δραστηριοποίηση ακριβώς πριν επιστρέψει. Η πρώτη δραστηριοποίηση ακριβώς πριν επιστρέψει µε το αποτέλεσµα halve [1,2,3,4] = ([1,3],[2,4]) [] value to return: ([], []) fun halve nil = (nil, nil) halve [a] = ([a], nil) halve (a::b::cs) = val (x, y) = halve cs (a::x, b::y) [3,4] a: 3 b: 4 cs: [] x: [] y: [] value to return: ([3], [4]) [1,2,3,4] a: 1 b: 2 cs: [3,4] x:? y:? value to return:? Εγγραφές δραστηριοποίησης 27 [] value to return: ([], []) fun halve nil = (nil, nil) halve [a] = ([a], nil) halve (a::b::cs) = val (x, y) = halve cs (a::x, b::y) [3,4] a: 3 b: 4 cs: [] x: [] y: [] value to return: ([3], [4]) [1,2,3,4] a: 1 b: 2 cs: [3,4] x: [3] y: [4] value to return: ([1,3],[2,4]) Εγγραφές δραστηριοποίησης 28
8 Φωλιασµένες συναρτήσεις Χειρισµός φωλιασµένων συναρτήσεων Ότι είδαµε µέχρι στιγµής επαρκεί για πολλές γλώσσες, συµπεριλαµβανοµένης της C Αλλά όχι για γλώσσες που επιτρέπουν το ακόλουθο τρικ: Οι ορισµοί των συναρτήσεων µπορεί να είναι φωλιασµένες µέσα σε άλλους ορισµούς συναρτήσεων Οι εσωτερικές συναρτήσεις µπορεί να αναφέρονται σε τοπικές µεταβλητές των εξωτερικών συναρτήσεων (ακολουθώντας τους συνήθεις κανόνες εµβέλειας όταν υπάρχουν µπλοκ) ηλαδή δεν επαρκεί για γλώσσες όπως η ML, η Ada, η Pascal, κ.α. Εγγραφές δραστηριοποίησης 29 Εγγραφές δραστηριοποίησης 30 Παράδειγµα fun quicksort nil = nil quicksort (pivot::rest) = fun split(nil) = (nil,nil) split(x::xs) = val (below, above) = split(xs) if x < pivot then (x::below, above) else (below, x::above) val (below, above) = split(rest) quicksort quicksort above Το πρόβληµα Πώς µπορεί η δραστηριοποίηση της εσωτερικής συνάρτησης (split) να βρει την εγγραφή δραστηριοποίησης της εξωτερικής συνάρτησης (quicksort); Παρατηρήστε ότι δεν είναι απαραίτητα η προηγούµενη εγγραφή δραστηριοποίησης, επειδή η συνάρτηση που κάλεσε την εσωτερική συνάρτηση: µπορεί να είναι µια άλλη εσωτερική συνάρτηση, ή µπορεί να είναι µια αναδροµική κλήση συνάρτησης, όπως συµβαίνει µε τη split Εγγραφές δραστηριοποίησης 31 Εγγραφές δραστηριοποίησης 32
9 Σύνδεσµος φωλιάσµατος (nestg lk) a split activation another split activation... first caller: a quicksort activation Μια εσωτερική συνάρτηση πρέπει να είναι σε θέση να βρει τη διεύθυνση της πιο πρόσφατης δραστηριοποίησης της αµέσως εξωτερικής της συνάρτησης Μπορούµε να κρατήσουµε αυτό το σύνδεσµο στην εγγραφή δραστηριοποίησης split s variables: x, xs, etc. split s variables: x, xs, etc. quicksort s variables: pivot, rest, etc. Εγγραφές δραστηριοποίησης 33 Εγγραφές δραστηριοποίησης 34 a split activation another split activation... first caller: a quicksort activation nestg lk nestg lk nestg lk: null split s variables: x, xs, etc. split s variables: x, xs, etc. quicksort s variables: pivot, rest, etc. Πως παίρνουν τιµές οι σύνδεσµοι φωλιάσµατος; Εύκολα αν υπάρχει µόνο ένα επίπεδο φωλιάσµατος: Όταν καλείται µια εξωτερική συνάρτηση: θέτουµε την τιµή null στο σύνδεσµο Όταν καλείται µια εσωτερική συνάρτηση από µία εξωτερική: ο σύνδεσµος φωλιάσµατος παίρνει ως τιµή την εγγραφή δραστηριοποίησης της καλούσας συνάρτησης Όταν καλείται µια εσωτερική συνάρτηση από µία εσωτερική: ο σύνδεσµος φωλιάσµατος παίρνει ως τιµή το σύνδεσµο φωλιάσµατος της καλούσας συνάρτησης Πιο πολύπλοκα από τον παραπάνω τρόπο εάν υπάρχουν πολλαπλά επίπεδα φωλιάσµατος Εγγραφές δραστηριοποίησης 35 Εγγραφές δραστηριοποίησης 36
10 Πολλαπλά επίπεδα φωλιάσµατος function f1 variable v1 function f2 variable v2 function f3 variable v3 Οι αναφορές στο ίδιο επίπεδο (π.χ. της f1 στη v1, της f2 στη v2, ) χρησιµοποιούν την τρέχουσα εγγραφή δραστηριοποίησης Οι αναφορές σε ονόµατα που βρίσκονται σε κ επίπεδα φωλιάσµατος διατρέχουν κ συνδέσµους της αλυσίδας Εγγραφές δραστηριοποίησης 37 Άλλες λύσεις Το πρόβληµα είναι οι αναφορές από εσωτερικές συναρτήσεις σε µεταβλητές κάποιας εξωτερικής Λύσεις του προβλήµατος αποτελούν οι: Σύνδεσµοι φωλιάσµατος των εγγραφών δραστηριοποίησης (όπως δείξαµε στις προηγούµενες διαφάνειες) Displays: οι σύνδεσµοι φωλιάσµατος δε βρίσκονται στις εγγραφές δραστηριοποίησης, αλλά συλλέγονται σε ένα στατικό πίνακα Λάµδα άρση (Lambda liftg): οι αναφορές του προγράµµατος αντικαθίστανται από αναφορές σε νέες, κρυφές παραµέτρους Εγγραφές δραστηριοποίησης 38 Συναρτήσεις ως παράµετροι Συναρτήσεις ως παράµετροι Όταν περνάµε µια συνάρτηση ως παράµετρο, τι ακριβώς είναι αυτό που πρέπει να µεταβιβαστεί; Ο κώδικας της συνάρτησης πρέπει να είναι µέρος αυτού που περνιέται: είτε σε µορφή πηγαίου κώδικα, είτε σε µορφή µεταγλωττισµένου κώδικα, δείκτη σε κώδικα, ή µέσω υλοποίησης κάποιας άλλης µορφής Κάποιες γλώσσες, χρειάζονται κάτι περισσότερο Εγγραφές δραστηριοποίησης 39 Εγγραφές δραστηριοποίησης 40
11 Παράδειγµα fun addxtoall (x,thelist) = fun addx y = y + x; map addx thelist Η παραπάνω συνάρτηση προσθέτει την τιµή του x σε κάθε στοιχείο της λίστας thelist Η addxtoall καλεί τη map, η map καλεί τη addx, και η addx αναφέρεται στη µεταβλητή x στην εγγραφή δραστηριοποίησης της συνάρτησης addxtoall Εγγραφές δραστηριοποίησης 41 Σύνδεσµοι φωλιάσµατος ξανά Όταν η map καλέσει την addx, τι σύνδεσµος φωλιάσµατος θα δοθεί στην addx; Όχι η εγγραφή δραστηριοποίησης της map διότι η addx δεν είναι φωλιασµένη µέσα στη map Όχι ο σύνδεσµος φωλιάσµατος της map διότι η map δεν είναι κάπου φωλιασµένη Για να δουλέψει η συνάρτηση addxtoall, η παράµετρος που περνά η addx στη map πρέπει να περιλαµβάνει το σύνδεσµο φωλιάσµατος που θα χρησιµοποιηθεί όταν κληθεί η addx fun addxtoall (x,thelist) = fun addx y = y + x; map addx thelist Εγγραφές δραστηριοποίησης 42 Όχι µόνο για τις παραµέτρους Πολλές γλώσσες επιτρέπουν σε συναρτήσεις να περαστούν ως παράµετροι Οι συναρτησιακές γλώσσες επιτρέπουν περισσότερα είδη λειτουργιών σε συναρτήσεις-τιµές: Πέρασµα συναρτήσεων ως παραµέτρους Επιστροφή συναρτήσεων από συναρτήσεις Κατασκευή συναρτήσεων από εκφράσεις Οι συναρτήσεις-τιµές περιλαµβάνουν τόσο τον κώδικα που θα εκτελεστεί όσο και το σύνδεσµο φωλιάσµατος που θα χρησιµοποιηθεί όταν κληθεί η συνάρτηση Εγγραφές δραστηριοποίησης 43 Παράδειγµα activation record nestg lk x thelist addx fun addxtoall (x,thelist) = fun addx y = y + x; map addx thelist y => y + x Τα περιεχόµενα της µνήµης ακριβώς πριν την κλήση της map. Η µεταβλητή addx είναι δεµένη µε µια συνάρτηση-τιµή η οποία περιλαµβάνει κώδικα και ένα σύνδεσµο φωλιάσµατος. Εγγραφές δραστηριοποίησης 44
12 Μια ακόµα περιπλοκή Μακρόβιες εγγραφές δραστηριοποίησης Τι συµβαίνει εάν µια συνάρτηση-τιµή χρησιµοποιείται από τη συνάρτηση που τη δηµιούργησε µετά την επιστροφή της συνάρτησης-δηµιουργού; val test = val f = funtoaddx 3; f 5 fun funtoaddx x = fun addx y = y + x; addx Εγγραφές δραστηριοποίησης 45 Εγγραφές δραστηριοποίησης 46 val test = val f = funtoaddx 3; f 5 fun funtoaddx x = fun addx y = addx y + x; activation record x: 3 nestg lk: null addx nestg lk: null f:? val test = val f = funtoaddx 3; f 5 fun funtoaddx x = fun addx y = addx y + x; x: 3 nestg lk: null addx activation record nestg lk: null f Τα περιεχόµενα της µνήµης ακριβώς πριν η funtoaddx επιστρέψει. y => y + x Μετά την επιστροφή της funtoaddx, η f δεσµεύεται µε τη νέα συνάρτηση-τιµή. y => y + x Εγγραφές δραστηριοποίησης 47 Εγγραφές δραστηριοποίησης 48
13 Το πρόβληµα Όταν η test καλέσει την f, η συνάρτηση θα χρησιµοποιήσει το σύνδεσµο φωλιάσµατος για να προσπελάσει το x Με άλλα λόγια, θα χρησιµοποιήσει ένα δείκτη σε µια εγγραφή δραστηριοποίησης για µια δραστηριοποίηση που έχει τερµατίσει Αυτό θα αποτύχει εάν η υλοποίηση της γλώσσας αποδεσµεύσει την εγγραφή δραστηριοποίησης τη στιγµή επιστροφής της συνάρτησης Εγγραφές δραστηριοποίησης 49 Η λύση του προβλήµατος Στην ML, και σε άλλες γλώσσες όπου υπάρχει η ίδια περιπλοκή, οι εγγραφές δραστηριοποίησης δε µπορούν πάντα να δεσµευθούν και να αποδεσµευθούν ακολουθώντας δοµή στοίβας Αυτό διότι ακόµα και όταν µια συνάρτηση επιστρέψει, µπορεί να υπάρχουν σύνδεσµοι στην εγγραφή δραστηριοποίησής της Οι εγγραφές δε µπορεί να αποδεσµευθούν παρά µόνο όταν καταστούν απροσπέλαστες Αυτό συνήθως συµβαίνει µε αυτόµατη διαχείριση µνήµης ή αλλιώς µε συλλογή σκουπιδιών (garbage collection) Εγγραφές δραστηριοποίησης 50 Συµπερασµατικά Όσο πιο σοφιστικέ είναι µια γλώσσα, τόσο πιο δύσκολο είναι να δεθούν οι µεταβλητές µε θέσεις µνήµης Στατική δέσµευση: δουλεύει σε γλώσσες που επιτρέπουν το πολύ µια δραστηριοποίηση κάθε συνάρτησης κάθε στιγµή (όπως σε πρώιµες διαλέκτους της Fortran και της Cobol) υναµική δέσµευση σε στοίβα: δουλεύει σε γλώσσες που δεν επιτρέπουν φωλιασµένες συναρτήσεις (όπως η C) Σύνδεσµοι φωλιάσµατος (ή κάτι αντίστοιχο): επιβάλλεται σε γλώσσες που επιτρέπουν φωλιασµένες συναρτήσεις (όπως η ML, η Ada και η Pascal). Οι συναρτήσεις τιµές πρέπει να περιλαµβάνουν τόσο κώδικα όσο και σύνδεσµο φωλιάσµατος Κάποιες γλώσσες (όπως η ML) επιτρέπουν αναφορές σε εγγραφές δραστηριοποιήσεων συναρτήσεων που έχουν περατώσει την εκτέλεσή τους. Κατά συνέπεια, οι εγγραφές δραστηριοποίησης δε µπορούν να αποδεσµευθούν αµέσως µετά την επιστροφή τους και η χρήση στοίβας δεν επαρκεί. Εγγραφές δραστηριοποίησης 51
Εγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)
Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019
Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια
Διαβάστε περισσότεραΛογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός
Διαβάστε περισσότεραΑναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 6 Αναδρομή Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Υπολογισμός Παραγοντικού n! n! = 1*2..(n-1)*n = if n
Διαβάστε περισσότεραΕμβέλεια. Παραδείγματα. Παραδείγματα. Μπλοκ (blocks)
Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΟνόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913
Ονόματα και Εμβέλεια Wassily Kandinsky, Black lines, 1913 Κωστής Σαγώνας Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα Αλλά στις μοντέρνες
Διαβάστε περισσότεραΕισαγωγή στη Γλώσσα ML. Juan Miró
Εισαγωγή στη Γλώσσα ML Juan Miró Κωστής Σαγώνας Συναρτησιακός και Προστακτικός Προγραμματισμός Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πώς θα υλοποιήσουμε
Διαβάστε περισσότεραΕισαγωγή στη Γλώσσα ML
Συναρτησιακός και Προστακτικός Προγραμματισμός Εισαγωγή στη Γλώσσα ML Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πως θα υλοποιήσουμε τα συστατικά του προγράμματός μας Ο συναρτησιακός
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραprocedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΟνόµατα και Εµβέλεια 4
Ονόµατα και Εµβέλεια Ανακύκλωση ονοµάτων Η κατανόηση της εµβέλειας είναι άµεση εάν το κάθε τι έχει το δικό του όνοµα fun square a = a * a; fun double b = b + b; Αλλά στις µοντέρνες γλώσσες προγραµµατισµού,
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Διαβάστε περισσότεραΟνόματα και Εμβέλεια 6
Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΗ Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Διαβάστε περισσότεραΕισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕυφυής Προγραμματισμός
Ευφυής Προγραμματισμός Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Συναρτήσεις-Δομές Ελέγχου : 1. Συναρτήσεις Χρήστη 2. Έλεγχος Ροής Προγράμματος 3.
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΚεφάλαιο 10 ο Υποπρογράµµατα
Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,
Διαβάστε περισσότεραΕισαγωγή στη Γλώσσα ML
Εισαγωγή στη Γλώσσα ML Συναρτησιακός και Προστακτικός Προγραµµατισµός Ένας τρόπος διαχωρισµού Ο προστακτικός προγραµµατισµός επικεντρώνει στο πως θα υλοποιήσουµε τα συστατικά του πρόγραµµατός µας Ο συναρτησιακός
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότεραΟνόματα και Εμβέλεια 4
Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών
Διαβάστε περισσότερα- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.
Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για
Διαβάστε περισσότεραΚεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο
Διαβάστε περισσότεραΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναδροµικές Συναρτήσεις Χειµερινό Εξάµηνο 2014
ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Αναδροµικές Συναρτήσεις Χειµερινό Εξάµηνο 2014 Ορισµός και ιδιότητες Μια συνάρτηση είναι αναδροµική αν καλεί τον εαυτό της Οι περισσότερες γλώσσες προγραµµατισµού υποστηρίζουν
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση
Διαβάστε περισσότεραΔιάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1
Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,
Διαβάστε περισσότεραΚεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Συναρτήσεις ΣΥΝΑΡΤΗΣΕΙΣ 1.1. Ο λόγος ύπαρξης των συναρτήσεων Όπως είδαµε µία διαδικασία µπορεί να υπολογίζει περισσότερα από ένα αποτελέσµατα τα
Διαβάστε περισσότερα{ int a = 5; { int b = 7; a = b + 3;
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 1: Γλώσσες με δομή block Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΒασικά Στοιχεία της Java
Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά
Διαβάστε περισσότεραΠρογραµµατισµός. Αναδροµή (1/2)
Προγραµµατισµός Αναδροµή (1/2) Προγραµµατισµός Κλήσεις Συναρτήσεων Όταν καλείται µια συνάρτηση, πρέπει Να θυµάται σε ποιο σηµείο του προγράµµατος θα επιστρέψει Να δεσµεύσει χώρο για την τιµή που θα επιστρέψει
Διαβάστε περισσότεραPascal. 15 Νοεμβρίου 2011
Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΟι δείκτες στη γλώσσα C
Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς
Διαβάστε περισσότερα2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
Διαβάστε περισσότεραΚεφάλαιο 7: Υπορουτίνες
Κεφάλαιο 7: Υπορουτίνες Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων που μπορεί
Διαβάστε περισσότεραSheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την
AEM ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1413. Σκέψου πώς θα µπορούσες να την 1417 κάνεις χωρίς χρήση της βοηθητικής µεταβλητής curr - Πρώτη άσκηση οκ - Στη δεύτερη άσκηση το free(head) δεν έπρεπε να είναι στο else, αλλά να
Διαβάστε περισσότεραfor for for for( . */
Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό (με. τη C)
Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr
Διαβάστε περισσότεραΠρογραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Συναρτήσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Συναρτήσεις - Εισαγωγή Μία συνάρτηση είναι ένα ανεξάρτητο τμήμα κώδικα, που εκτελεί μία
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές
Γλώσσες Προγραμματισμού Μεταγλωττιστές Παραγωγή Τελικού Κώδικα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Παραγωγή Τελικού κώδικα. Οργάνωση μνήμης Εγγραφήματα Δραστηριοποίησης
Διαβάστε περισσότεραΣυναρτήσεις-Διαδικασίες
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 4 Συναρτήσεις-Διαδικασίες Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Διαδικασίες (procedures) Γνωστές και σαν υπορουτίνες (subroutines)
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότεραΣε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.
58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο
Διαβάστε περισσότεραΠροηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος
Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραFAIL PASS PASS οριακά
AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως
Διαβάστε περισσότεραΠρογραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις
Προγραμματισμός Η/Υ Ενότητα 7: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση του ορισμού και της κλήση
Διαβάστε περισσότεραFORTRAN και Αντικειμενοστραφής Προγραμματισμός
FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών
Διαβάστε περισσότεραΦροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα Από τον ενδιάμεσο κώδικα στον τελικό (1/2) Τα ορίσματα των εντολών ενδιάμεσου κώδικα είναι του τύπου expr*. Αυτές οι εκφράσεις θα πρέπει
Διαβάστε περισσότεραΕισαγωγή στον δομημένο προγραμματισμό
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.
Διαβάστε περισσότεραΔομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι
Διαβάστε περισσότεραSheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.
Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Δεν κάνει compile και το λάθος είναι σηµαντικό: Το head1 είναι δείκτης σε struct, εποµένως η προσπέλαση πεδίου γίνεται 321 FAIL µε head1->next και όχι head1.next. Επιπλέον, έχετε λάθος
Διαβάστε περισσότεραΤεχνολογία Λογισµικού Ι Κεφάλαιο 5
ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό «C»
Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 8 η Δείκτες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Διαβάστε περισσότεραΠαράμετροι 19/9/2007. Πέρασμα παραμέτρων. Περιεχόμενα. Θέσεις και ονόματα στο ταίριασμα παραμέτρων. Ταίριασμα παραμέτρων μέσω ονομάτων
Παράμετροι Πέρασμα παραμέτρων Τυπικές παράμετροι int plus(int a, int b) { return a+b; Σώμα μεθόδου Πραγματικές int x = plus(1, 2); παράμετροι Κλήση μεθόδου Κωστής Σαγώνας Claude Monet, Poppies, 1873
Διαβάστε περισσότεραΔιάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΓιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΕργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C
Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια
Διαβάστε περισσότεραΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Διαδικασίες και συναρτήσεις 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1 Βασικές έννοιες Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα
Διαβάστε περισσότεραείκτες και Πίνακες (2)
είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι
Διαβάστε περισσότεραlab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1
ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 7: Διαχείριση Μνήμης,Δυναμικές Δομές Δεδομένων, Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Δυναμικές Δομές Δεδομένων Γενικά - Δυναμική Δέσμευση/Αποδέσμευση
Διαβάστε περισσότεραΒασικά Στοιχεία της Java
Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 6: Εμβέλεια, Δέσμευση Μνήμης Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμοί (1) Εμβέλεια ενός ονόματος (Scope),
Διαβάστε περισσότεραΚεφάλαιο 5ο: Εντολές Επανάληψης
Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες
Διαβάστε περισσότεραΑναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής
Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.
Διαβάστε περισσότεραΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 27 Κύρια προγραμματιστικά μοντέλα (1) Προστακτικός προγραμματισμός (imperative programming) FORTRAN, Algol, COBOL, BASIC, C, Pascal, Modula-2, Ada Συναρτησιακός προγραμματισμός
Διαβάστε περισσότεραΚεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές
Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων
Διαβάστε περισσότεραΔιαδικαστικός Προγραμματισμός
ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Διαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 7 ο : Δείκτες Στόχοι μαθήματος Να κατανοήσετε τη δυνατότητα χρήσης διευθύνσεων ως τιμών δεδομένων. Να μπορείτε να χρησιμοποιείτε
Διαβάστε περισσότεραΕισαγωγή στον δομημένο προγραμματισμό
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 9 η : Συναρτήσεις Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Διαβάστε περισσότεραυναµικές οµές εδοµένων
υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων
ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές
Διαβάστε περισσότεραΚεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων
Διαβάστε περισσότεραΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ Εμβέλεια Μεταβλητών Εμβέλεια Μεταβλητής Οι μεταβλητές που έχουμε δει μέχρι τώρα είναι
Διαβάστε περισσότερα3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις
3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 4: Μεταβλητές, Εκφράσεις, Εντολές Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μεταβλητές (1) Μεταβλητή: Αφαιρετική
Διαβάστε περισσότερα