ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Στατική Συμβολική Παραγώγιση Λάμδα Εκφράσεων στην C++
Advertisements

ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
Δείκτες, Πίνακες και Δείκτες, Δείκτες σε Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Αντικειμενοστραφής Προγραμματισμός
ΜΑΘ 3122 (106) Γλώσσα προγραμματισμού
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΑΘ-3122/106 Προγραμματισμός
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Δείκτες, Πίνακες σε Δείκτες, Δείκτες σε Συναρτήσεις
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΣΥΝΑΡΤΗΣΕΙΣ.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμούΞενοφών Ζαμπούλης ΜΑΘ3122/106 Γλώσσα προγραμματισμού Συναρτήσεις.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
ΜΑΘ 3122/106 – Γλώσσα Προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ-3122/106 Γλώσσα Προγραμματισμού Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Δυναμική Διαχείριση Μνήμης (1/2)
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Τύ π οι Μεταβλητών Τελεστές Βασική Είσοδος / Έξοδος.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Πίνακες (Arrays)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τεχνολογία και Προγραμματισμός Υπολογιστών
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
Η Γλώσσα Pascal Υποπρογράμματα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 2 Συναρτήσεις Επικοινωνία με το υπόλοιπο πρόγραμμα – Δέχονται ορίσματα – Επιστρέφουν μια τιμή – Απομονώνουν την επίλυση του υποπροβλήματος Ιδανικά, δεν θέλουμε καμία άλλη επίδραση στο υπόλοιπο πρόγραμμα πέραν των παραπάνω Συναρτησιακός προγραμματισμός (functional programming) Ενδέχεται να επηρεάσουν κι αλλιώς το πρόγραμμά μας αν χρησιμοποιούμε καθολικές μεταβλητές, δείκτες, κτλ Παρενέργειες

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 3 Μεταβλητές … με λεπτομέρειες Ιδιότητες μεταβλητών – Εμβέλεια (scope) Ποια μέρη του προγράμματος αναγνωρίζουν την ίδια μεταβλητή (ίδια θέση μνήμης) με το ίδιο όνομα – Διάρκεια ύπαρξης στη μνήμη (storage duration) Πότε μια συγκεκριμένη διεύθυνση μνήμης λαμβάνει ένα συγκεκριμένο όνομα και πότε αποδεσμεύεται αυτή η αντιστοίχιση Προς το παρών θα αγνοήσουμε την περίπτωση να έχουμε χωρίσει το πρόγραμμα σε διαφορετικά αρχεία

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 4 Εμβέλεια Μια μεταβλητή μπορεί να έχει εμβέλεια: – Καθολική: σε όλο το πρόγραμμα ενός αρχείου – Τοπική: μέσα στον ορισμό μιας συνάρτησης – Τοπική: μέσα σε ένα block { … }

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 5 Καθολικές (global) μεταβλητές Δηλώνονται (συνήθως πριν και) έξω από κάθε συνάρτηση int global1, global2; int main(void) { global1 = 5; } Εμβέλεια: προσπελάσιμες από κάθε άλλη συνάρτηση μετά την δήλωσή τους Διάρκεια ύπαρξης: από την αρχή της εκτέλεσης μέχρι το τέλος όλου του προγράμματος

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 6 Καθολικές (global) μεταβλητές Χρήσιμες όταν: πολλές συναρτήσεις μοιράζονται κοινά δεδομένα και δεν είναι πρακτικό να τα περνάμε ως ορίσματα κάθε φορά Προβλήματα: η κλήση μιας συνάρτησης που χρησιμοποιεί καθολικές μεταβλητές αλλάζει την κατάσταση και για τις υπόλοιπες. Δύσκολο καμιά φορά να βεβαιώσουμε ότι οι αλλαγές θα γίνουν με σωστή σειρά Γίνεται ιδιαίτερα δύσκολη η επαναχρησιμοποίηση – τροποποίηση του προγράμματος ΑΠΟΦΥΓΕΤΕ τις καθολικές μεταβλητές αν δεν είναι απαραίτητες!

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 7 Τοπικές (local) Μεταβλητές Δηλώνονται μέσα σε μία συνάρτηση/block int main(void) { int local1, local2; local1 = 5; { int local3; local3 = 7; } Εμβέλεια: προσπελάσιμες μόνο μέσα στη ίδια συνάρτηση/block Διάρκεια ύπαρξης: από την αρχή της εκτέλεσης συνάρτησης/block μέχρι το τέλος της εκτέλεσης της συνάρτησης/block

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 8 Τοπικές (local) μεταβλητές Χρήσιμες για τις περισσότερες περιπτώσεις – Συνήθως θέλουμε μεταβλητές για αποθήκευση ενδιάμεσων αποτελεσμάτων. Οι «τελικοί» υπολογισμοί καταλήγουν συνήθως σε μία τιμή, αυτήν που επιστρέφει η συνάρτηση Προσπαθήστε να χρησιμοποιείτε μόνο τοπικές μεταβλητές και να σκέφτεστε λύσεις που δεν χρησιμοποιούν καθολικές μεταβλητές

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 9 Μεταβλητές Καθολικές (global) έναντι τοπικών μεταβλητών (local) double sum;//καθολικές int nextOfX(int x) { int y = x; //τοπική y = y + 1; sum = sum+1; return y; } main() { int x = 0; //τοπική sum = 0; x = nextOfX(0); x = nextOfX(x); } Υπάρχουν όσο «τρέχει η συνάρτηση» Υπάρχουν όσο «τρέχει το πρόγραμμα»

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 10 Στατικές (static) Μεταβλητές Δηλώνονται με το πρόθεμα static static int x=8; Διάρκεια ύπαρξης: από την αρχή της εκτέλεσης μέχρι το τέλος όλου του προγράμματος και για τις τοπικές – Διατηρούν την τιμή τους μεταξύ των διαφόρων κλήσεων της συνάρτησης Εμβέλεια τοπικών στατικών: στην ίδια συνάρτηση Εμβέλεια καθολικών στατικών: μόνο στο ίδιο αρχείο

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 11 Στατικές (static) Μεταβλητές Γιατί στατικές μεταβλητές – Τοπικές: μια μόνο συνάρτηση χρησιμοποιεί την μεταβλητή που πρέπει να την θυμάται μεταξύ διαφορετικών κλήσεων – Καθολικές: ένα μικρό σύνολο από συναρτήσεις χρησιμοποιεί την μεταβλητή, οπότε η μεταβλητή δηλώνεται σαν στατική και οι όλες αυτές οι συναρτήσεις μπαίνουν στο ίδιο αρχείο Αρχικοποίηση στην αρχή της εκτέλεσης του προγράμματος – static int x=8;

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 12 Static variables void a() { static int staticVariable = 0; /* mono thn prwth fora*/ staticVariable++; printf( “Number of calls : %d\n”, staticVariable); } Output ….

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 13 Call by value Αντίγραφο της τιμής του ορίσματος περνάει στη συνάρτηση Αλλαγές στο όρισμα (αντίγραφο) δεν επηρεάζουν το πρωτότυπο Χρήση: όταν η συνάρτηση ΔΕΝ χρειάζεται να αλλάξει το όρισμα – Αποφεύγουμε αλλαγές κατά λάθος /*Επιστρέφει το μέγιστο μεταξύ των x, y*/ int max(int x,int y) { int z = x; /*δηλώσεις μεταβλητών*/ if (y > x) /*λίστα εντολών*/ z = y; return z; }

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 14 Call by reference Θέλουμε να αλλάξουμε τιμή στα ορίσματα της συνάρτησης Χρήση δεικτών Περνάμε δείκτη στη θέση μνήμης Δουλεύουμε πάνω στα αρχικά δεδομένα και όχι αντίγραφα Πρέπει να προσέχουμε ιδιαίτερα την επίδραση των πράξεων μας

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 15 Παράδειγμα - Call by reference void swap( int *n1, int *n2) { int temp; temp = *n1; *n1 = *n2; *n2 = temp; }