Δομημένος Προγραμματισμός

Σχετικά έγγραφα
Διοικητική Λογιστική

Δομημένος Προγραμματισμός

Διοικητική Λογιστική

Βάσεις Περιβαλλοντικών Δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

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

Τεχνικό Σχέδιο - CAD

Τεχνικό Σχέδιο - CAD

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική Πληροφορικής

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

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική Πληροφορικής

Διαχείριση Πολιτισμικών Δεδομένων

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

Διδακτική Πληροφορικής

Εισαγωγή στην Πληροφορική

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Διδακτική Πληροφορικής

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

Διοικητική Λογιστική

Βάσεις Περιβαλλοντικών Δεδομένων

Δομημένος Προγραμματισμός

Διοικητική Λογιστική

Εισαγωγή στην Πληροφορική

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Δομημένος Προγραμματισμός

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Εισαγωγή στην Πληροφορική

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διδακτική Πληροφορικής

Εισαγωγή στην Πληροφορική

Διδακτική Πληροφορικής

Πληροφορική ΙΙ Θεματική Ενότητα 5

Εισαγωγή στην Πληροφορική

ΠΕΡΙΒΑΛΛΟΝΤΙΚΗ ΠΟΛΙΤΙΚΗ & ΝΟΜΟΘΕΣΙΑ ΜΑΘΗΜΑ 1

Τεχνολογία Πολιτισμικού Λογισμικού

Βάσεις Περιβαλλοντικών Δεδομένων

Δομημένος Προγραμματισμός

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνολογία Πολιτισμικού Λογισμικού

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στην Πληροφορική

Ασφάλεια Πληροφοριακών Συστημάτων

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

ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΗ ΛΟΓΙΣΤΙΚΗ

Εισαγωγή στην Πληροφορική

Δομημένος Προγραμματισμός

Τεχνικό Σχέδιο - CAD

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Τεχνικό Σχέδιο - CAD

Εισαγωγή στην Πληροφορική

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνικό Σχέδιο - CAD

Πληροφορική ΙΙ Θεματική Ενότητα 12

Δομημένος Προγραμματισμός

ΔΙΟΙΚΗΣΗ ΔΙΕΘΝΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

Ασφάλεια Πληροφοριακών Συστημάτων

Εισαγωγή στους Αλγορίθμους

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στην Πληροφορική

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

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

Διδακτική Πληροφορικής

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Ασφάλεια Πληροφοριακών Συστημάτων

Προγραμματισμός Η/Υ. 8 η ενότητα: Περιβαλλοντικά και μαθηματικά προβλήματα. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων

Οργάνωση και Λειτουργία Ταξιδιωτικής Βιομηχανίας Ι

Τεχνολογία Πολιτισμικού Λογισμικού

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΔΙΟΙΚΗΣΗ ΠΑΡΑΓΩΓΗΣ Ενότητα 5

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

Διοικητική Λογιστική

Προγραμματισμός Η/Υ. 3 η ενότητα. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική

Βάσεις Περιβαλλοντικών Δεδομένων

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

Τεχνικό Σχέδιο - CAD

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

Πληροφορική ΙΙ Ενότητα 1

Μηχανές Πλοίου ΙΙ (Ε)

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Ασφάλεια Πληροφοριακών Συστημάτων

Transcript:

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 8: Δείκτες Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Δομημένος Προγραμματισμός DR. Α Θ Α Ν Α Σ Ι Ο Σ Κ Α Κ Α Ρ Ο Υ Ν Τ Α Σ

Περιεχόμενα Δείκτες Διαχείριση Μνήμης

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

Δείκτες ορισμένες γλώσσες υψηλού επιπέδου, θέλοντας να δώσουν στον προγραμματιστή τη δυνατότητα δημιουργίας πολύ αποδοτικού κώδικα, εισήγαγαν την έννοια του δείκτη. Ο δείκτης δεν είναι τίποτε παραπάνω παρά μία μεταβλητή η οποία χρησιμοποιείται για την αποθήκευση μιας διεύθυνσης της κύριας μνήμης του υπολογιστή.

Δήλωση Δείκτη Για τη δήλωση μιας μεταβλητής δείκτη πρέπει να γνωστοποιήσουμε στον μεταγλωττιστή ότι η μεταβλητή είναι τύπου δείκτη, καθώς και τον τύπο του αντικειμένου που μπορεί να δείχνει η μεταβλητή. Η δήλωση μιας μεταβλητής δείκτη για τη γλώσσα C έχει την παρακάτω μορφή: <όνομα τύπου> *<όνομα δείκτη>;

Δήλωση Δείκτη Προσδιορίζει τη num_ptr σαν μεταβλητή δείκτη Προσδιορίζει τον τύπο του στοιχείου που δείχνει ο δείκτης int *num_ptr; Προσδιορίζει το όνομα του δείκτη

Δήλωση Δείκτη Το σύμβολο * είναι ο τελεστής περιεχομένου και μπορεί να ερμηνευτεί στη δήλωση int *num_ptr; Κατά δύο τρόπους: α) η μεταβλητή num_ptr είναι δείκτης σε int ή β) το περιεχόμενο της θέσης μνήμης που δείχνει ο num_ptr είναι int. Παρατηρήστε τη χρήση του αναγνωριστικού _ptr στο τέλος του ονόματος της μεταβλητής δείκτη. Δεν είναι υποχρεωτικό ωστόσο βελτιώνει την αναγνωσιμότητα του κώδικα. Ο προγραμματιστής δεν χρειάζεται να ανατρέξει στη δήλωση της μεταβλητής για να δει αν αυτή είναι δείκτης ι όχι.

Αρχικοποίηση Δείκτη Μετά τη δήλωση του, ένας δείκτης πρέπει να δείχνει σε μια θέση μνήμης που ανήκει στο πρόγραμμα. Για το λόγο αυτό δίνουμε συνήθως τιμή στο δείκτη ταυτόχρονα με τη δήλωση του. Στην περίπτωση αυτή, η δήλωση δείκτη παίρνει τη μορφή: <όνομα τύπου> *<όνομα δείκτη> = <διεύθυνση>;

Αρχικοποίηση Δείκτη όπου <διεύθυνση> μπορεί να είναι: α) μία άμεση διεύθυνση Παράδειγμα: int *num_ptr = 1000; β) η διεύθυνση μιας μεταβλητής ακέραιου τύπου την οποία παίρνουμε εφαρμόζοντας μπροστά από μια μεταβλητή τον τελεστή διεύθυνσης & Παράδειγμα: int *num_ptr = &num;

Ανάθεση Τιμής σε Δείκτη Αν ένας δείκτης δεν αρχικοποιηθεί, θα πρέπει σύντομα και οπωσδήποτε πριν από τη χρήση του, να του ανατεθεί τιμή με μια πρόταση ανάθεσης της μορφής <όνομα δείκτη> = <διεύθυνση>; Παράδειγμα: num_ptr = 1000; ι num_ptr = &num; Αποφεύγετε αρχικοποιήσεις με άμεση διεύθυνση. Είναι πολύ επικίνδυνες και χρησιμοποιούνται, συνήθως, μόνο για άμεση πρόσβαση στο υλικό.

Τελεστές Δεικτών Τελεστής Ερμηνεία = ο τελεστής ανάθεσης χρησιμοποιείται για ανάθεση τιμής σε δείκτη * ο τελεστής περιεχομένου εφαρμόζεται μόνο σε δείκτη και έχει σαν αποτέλεσμα το περιεχόμενο της διεύθυνσης που δείχνει ο δείκτης & ο τελεστής διεύθυνσης δίνει τη διεύθυνση της μεταβλητής στην οποία εφαρμόζεται

Δείκτες Τι ασθμαίνουν οι παρακάτω συμβολισμοί: *a_ptr a_ptr &a_ptr Περιεχόμενο που δείχνει ο δείκτης Περιεχόμενο του δείκτη Διεύθυνση του δείκτη

Δείκτες και Πίνακες Οποιαδήποτε λειτουργία στη C γίνεται με πίνακες μπορεί να γίνει και με δείκτες Γιατί; το όνομα του πίνακα είναι η διεύθυνση του πρώτου στοιχείου του Πώς; Δύο τρόποι

Δείκτες και Πίνακες αν arr είναι πίνακας δέκα ακεραίων int arr[10]; και ο p δείκτης σε ακέραιο int *p; μπορούμε να αναθέσουμε στον p να δείχνει στο πρώτο στοιχείο του arr με την πρόταση p = &arr[0]; εκμεταλλευόμενοι το γεγονός ότι το όνομα του πίνακα είναι η διεύθυνση του πρώτου στοιχείου του, μπορούμε να γράψουμε p = arr;

Δείκτες και Πίνακες Αν εφαρμόσω τον τελεστή ++ στο δείκτη p αυτός θα δείχνει, μετά την εφαρμογή, στο επόμενο στοιχείο του πίνακα. Προσέξτε ότι δεν μπορώ να γράψω arr++ γιατί το arr είναι σταθερά διεύθυνση arr[0] arr[1] arr[2] arr[3] p+1 p+2 p+3 p

Δείκτες και Πίνακες μπορούμε να αναφερθούμε στο στοιχείο arr[n]χρησιμοποιώντας την έκφραση *(arr+n). Ισχύουν δηλαδή οι ισοδυναμίες: *(arr+ n) < > arr[n] arr+ n < > &arr[n]

Κλήση με Αναφορά Έχουμε δει πως γίνεται η μεταβίβαση παραμέτρων με τιμή όπου στην συνάρτηση μεταβιβάζονταν η τιμή μιας παραμέτρου και όχι η ίδια η παράμετρος Η μεταβίβαση με αναφορά δουλεύει πάνω στις πραγματικές παραμέτρους και ως ορίσματα στην συνάρτηση δε μεταβιβάζονται οι τιμές των παραμέτρων αλλά οι διευθύνσεις των παραμέτρων

Παράδειγμα swap Είδαμε, σε προηγούμενο μάθημα, την συνάρτηση swap η οποία είχε ως σκοπό την ανταλλαγή των τιμών μεταξύ 2 μεταβλητών Ωστόσο, κάνοντας χρήση της τεχνικής μεταβίβαση με τιμή παρατηρήσαμε ότι η ανταλλαγή των τιμών δε έγινε. Αυτό έγινε γιατί η μεταβίβαση με τιμή δημιουργεί αντίγραφα των πραγματικών τιμών.

Παράδειγμα swap Δήλωση: void swap(int*a, int*b); Ορισμός συνάρτησης: void swap(int*a, int*b) { int temp; temp = *a; *a = *b; *b = temp; } Κλήση: swap(&num1,&num2);

Παράδειγμα swap Οι διευθύνσεις των num1 και num2 είναι αντίστοιχα 1000 και 1002. Με την κλήση της swap δημιουργούνται δύο νέα κελιά στη μνήμη για τις μεταβλητές δείκτη a και b. Τα κελιά αυτά παίρνουν σαν τιμές τις διευθύνσεις των μεταβλητών num1 και num2, δηλαδή τα 1000 και 1002. Έτσι, η συνάρτηση swap έχοντας τις διευθύνσεις των num1 και num2 αλλάξει τις τιμές του.

Δομημένος Προγραμματισμός DR. Α Θ Α Ν Α Σ Ι Ο Σ Κ Α Κ Α Ρ Ο Υ Ν Τ Α Σ

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/από-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Επεξήγηση όρων χρήσης έργων τρίτων διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-ND διαθέσιμο με άδεια CC-BY-NC διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.