Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Σχετικά έγγραφα
Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Μεθόδων Επίλυσης Προβλημάτων

Η βασική συνάρτηση προγράμματος main()

Μεθόδων Επίλυσης Προβλημάτων

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Ηβασικήσυνάρτηση προγράμματος main()

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ.

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

12. Συναρτήσεις (Μέρος ΙI)

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραμματισμό

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Ανάπτυξη και Σχεδίαση Λογισμικού

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Προγραμματισμό για ΗΜΥ

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Μεθόδων Επίλυσης Προβλημάτων

Διάλεξη 11η: Δείκτες, μέρος 1

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Εισαγωγή στον Προγραμματισμό

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Συναρτήσεις. Εισαγωγή

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

Γλώσσα Προγραμματισμού C

Διάλεξη 9η: Πίνακες (arrays)

Εισαγωγή στον Προγραμματισμό

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

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6)

8. Συνθήκες ελέγχου, λογικοί τελεστές

Προγραμματισμός Υπολογιστών με C++

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

Εισαγωγή στη γλώσσα προγραμματισμού C++

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

5 &6. Τύποι δεδομένων, τελεστές και

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

Transcript:

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός (Διάλεξη 14) 14-1 Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά ΛΑΘΟΣ τρόπος να αυξήσουμε το κατά 1 #include <stdio.h> void AddOne (int); void AddOne (int ) { main () ++; { rintf ( In AddOne: ); int = ; rintf ( = %d\n, ); AddOne (); } rintf ( In main: ); rintf ( = %d\n, ); } 6 To πρόγραμμα εκτυπώνει: In AddOne: =6 In main: = 14-2

Παράδειγμα (συνέχεια): Αλλαγή τιμής μεταβλητής με επιστροφή τιμής ΣΩΣΤΟΣ τρόπος να αυξήσουμε το κατά 1 #include <stdio.h> int AddOne (int); int AddOne (int ) { main () ++; { rintf ( In AddOne: ); int = ; rintf ( = %d\n, ); return ; = AddOne (); } rintf ( In main: ); rintf ( = %d\n, ); } 6 6 To πρόγραμμα εκτυπώνει: In AddOne: =6 In main: = 6 14-3 Συναρτήσεις Σήμερα θα δούμε σε περισσότερο βάθος τις συναρτήσεις. Α) Συναρτήσεις με Παραμέτρους Με Επιστροφή Πολλών Τιμών Β) Εισαγωγή στους δείκτες Γ) Η έννοια και η χρήση του * Δ) Αποσφαλμάτωση - έλεγχος 14-4

Χρήση δεικτών ΝΕΟΣ ΣΩΣΤΟΣ τρόπος να αυξήσουμε το κατά 1 #include <stdio.h> void AddOne (int*); void AddOne (int *) { main () * = *+1; { rintf ( In AddOne: ); int = ; rintf ( = %d\n, *); AddOne (&); } rintf ( In main: ); rintf ( = %d\n, ); } 6 6 To πρόγραμμα εκτυπώνει: In AddOne: =6 In main: = 6 14- int = ; AddOne (&); Διευθύνσεις ως παράμετροι είναι μία μεταβλητή τύπου int & είναι η διεύθυνσή του στη μνήμη 364347 14-6

Εισαγωγή στους δείκτες Συμβολίζονται με * Ένα μέρος της μνήμης του οποίου το περιεχόμενο είναι διεύθυνση μνήμης 364347 364347 To δείχνει δηλαδή στη μεταβλητή 14-7 Χρήση * στις τυπικές μεταβλητές void AddOne (int *) To είναι ένας δείκτης σε μεταβλητές τύπου int. O τύπος εξόδου παραμένει void AΛΛΑ, το int * είναι παράμετρος όχι μόνο εισόδου αλλά και εξόδου ΔΕΔΟΜΕΝΟΥ ότι η συνάρτηση γνωρίζει την διεύθυνση που είναι αποθηκευμένη η μεταβλητή, ώστε να αλλάξει την τιμή της. 14-

Χρήση * στο σώμα συναρτήσεων * = *+1; 364347 * 364347 Ερμηνεία: Ακολούθησε τον δείκτη και βρες την τιμή της μεταβλητής στην οποία δείχνει. : 364347 : * == 14-9 * : Ανακεφαλαίωση 3 χρήσεις/ερμηνείες: Πολλαπλασιασμός (δυαδικός τελεστής) 2 * a Τυπική Παράμετρος int * Σημαίνει «δείκτης σε» Μοναδιαίος (unary) τελεστής * = / Σημαίνει «ακολούθησε τον δείκτη» 14-10

scanf με δείκτες int ber; int *ber; scanf( %d %d, &ber, ber); ΠΡΟΣΟΧΗ: Δεν βάζουμε το σύμβολο & καθώς η μεταβλητή ber ήδη αναφέρεται σε διεύθυνση. 14-11 Παράδειγμα συνάρτησης που υπολογίζει πολλαπλές τιμές Δημιουργήστε μία συνάρτηση που διαχωρίζει έναν αριθμό σε ακέραιο και δεκαδικό μέρος void searate (double, int *int, double *frac) { *int = (int); *frac = (*int); } int main () { double value, fractional_art; int integer_art; searate(value, &integer_art, & fractional_art); rintf( The integer art of %.4f is %d and the fractional art is %.4f, value, integer_art, fractional_art); } 14-12

*=; *=; =; λάθος σωστό 14-13 *=; *=; *=*; σωστό λάθος 14-14

Έλεγχος προγράμματος με πολλές συναρτήσεις Ο έλεγχος πρέπει να αρχίσει πολύ πριν ολοκληρωθεί η ανάπτυξη όλων των συναρτήσεων. Χρήση σκελετών (stubs) Εκτυπώνουν προειδοποιητικά μηνύματα Εκτυπώνουν μηνύματα με τις τιμές εισόδου Δίνουν (ψεύτικες) τιμές στις παραμέτρου εξόδου 14-1 Π.χ., Σκελετός συνάρτησης που βρίσκει τον ΜΚΔ δύο ακεραίων int mkd(int a, int b) { rintf( WARNING: THIS FUNCTION IS INCOMPLETE! ) rintf( a= %d, b= %d, a,b); return a*b; } 14-16

Αποσφαλμάτωση Συμβουλές Σχόλια για κάθε συνάρτηση, τις παραμέτρους της και τις τοπικές μεταβλητές Εκτύπωση ενδείξεων για τη ροή του προγράμματος Όνομα συνάρτησης που καλείται Τιμή παραμέτρων κατά την κλίση Τιμή παραμέτρων εξόδου μετά την ολοκλήρωση 14-17