Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

14/2/2000epl-1311 Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις Top-Down Design –αφαιρετικοτητα/αρθρωση Συναρτησεις: Χρηση, Συνταξη και Σημασια –Παραμετροι.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "14/2/2000epl-1311 Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις Top-Down Design –αφαιρετικοτητα/αρθρωση Συναρτησεις: Χρηση, Συνταξη και Σημασια –Παραμετροι."— Μεταγράφημα παρουσίασης:

1 14/2/2000epl-1311 Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις Top-Down Design –αφαιρετικοτητα/αρθρωση Συναρτησεις: Χρηση, Συνταξη και Σημασια –Παραμετροι –Επιστροφη τιμης –Εμβελεια Μεταβλητων

2 14/2/2000epl-1312 Πανω προς Κατω Σχεδιασμος διευκολυνει διασπαση σε υποπροβληματα –Αφαιρετικότητα (abstraction): διαχωρισμός ανάμεσα στο τι και το πως –Aρθρωτός σχεδιασμός(modular design) –Επαναχρησιμοποίηση (reuse) –... Συναρτήσεις –Μηχανισμος που επιτρεπει στον προγραμματιστη να υλοποιησει την διασπαση σε υποπροβληματα

3 14/2/2000epl-1313 Προγραμμα που διαβαζει ενα πραγματικο αριθμο, υπολογιζει την τετραγωνικη δυναμη του και την τυπωνει Πανω προς Κατω Σχεδιασμος

4 14/2/2000epl-1314 main() { /* get input number */ /* compute squαre power */ /* display input and its square power */ } Διασπαση: ορισμος του τι πρεπει να γινει οχι πως Πανω-Προς Κατω Σχεδιασμος

5 14/2/2000epl-1315 #include void main() { double number, square_power; printf(“Enter a real number: ”); scanf(“%d”, &number); square_power = pow(number,2); printf(“The square power of %e is %e\n”, number, square_power); } Εκλεπτυνση/Υλοποιηση

6 14/2/2000epl-1316 #include void main() { double number, square_power; printf(“Enter a real number: ”); scanf(“%d”, &number); square_power = pow(number,2); printf(“The square power of %e is %e\n”, number, square_power); } printf, scanf, pow ξερουμε τι κανουν οχι πως Αφαιρετικότητα Συνάρτησης

7 14/2/2000epl-1317 Συναρτησεις Συναρτησεις Βιβλιοθηκης –δεν οριζονται απο τον χρηστη –πχ printf, scanf, pow –ενσωματωση με το include Συναρτησεις που οριζονται απο τον προγραμματιστη (user defined functions)

8 14/2/2000epl-1318 Συνταξη Καθε C προγραμμα αποτελειται απο μια ή περισοτερες συναρτησεις Καθε προγραμμα εχει μια συναρτηση main Καθε συναρτηση πρεπει να οριζεται ορισθειδηλωθειΜια συναρτηση πριν αναφερθει πρεπει να ορισθει (defined) ή δηλωθει (declared) Δεν επιτρεπεται να γραψεται μια συναρτηση μεσα σε αλλη συναρτηση

9 14/2/2000epl-1319 Συνταξη Ορισμου Συναρτησης ( ) { αρχη της συναρτησης [ δηλωσεις μεταβλητων] [ εντολες] [return ;] } τελος της συναρτησης Σωμα συναρτησηςΔιεπαφη

10 14/2/2000epl Σύνταξη : int, char, float, double, void, συνθετος… : συντακτικο ορθο ονομα : αδεια ή τυπος μεταβλητη, τυπος μεταβλητη, ….

11 14/2/2000epl Συνάρτηση main χωρις παραμετρους void main() { printf(“Hello out there!\n”); }

12 14/2/2000epl Συνάρτηση χωρις παραμετρους void display_six_stars() { printf(“******\n”); } void display_six_stars() { printf(“******\n”); return; }

13 14/2/2000epl int main() { display_six_stars(); return 0; } #include void display_six_stars() { printf(“******\n”); } επιστροφη κληση

14 14/2/2000epl Πλευρικο Φαινομενο(side-effect) Το φαινομενο που προκαλει η εκτελεση μιας εντολης, συναρτησης, προγραμματος... Καλος προγραμματισμος: περιγραφεται με σχολια τα side-effects καθε συναρτησης π.χ. –εκτυπωση μυνηματων –αλλαγη της μεταβλητης foo (εμβελεια αργοτερα) –κτλ

15 14/2/2000epl Συναρτήσεις με Μια Παραμετρο χωρις τιμη εξοδου void display_area(float area) { printf(“The area is %f square meters\n”,area); }

16 14/2/2000epl Συναρτήσεις με Μια Παραμετρο χωρις τιμη εξοδου void compute_and_display_mod3(int number) { printf(“%dmod3 is %d\n”,number, number%3); } void compute_and_display_mod3(int number) { int mod3; mod3 = number%3; printf(“%dmod3 is %d\n”, number, mod3); }

17 14/2/2000epl Συνάρτηση με πολλαπλές παραμέτρους χωρίς τιμή εξοδου void display_area(float length, float width, float area) { printf(“The area of a rectangle with length %f m and width %f m is %f sq. m\n”, length, width,area); }

18 14/2/2000epl Συναρτήσεις με παραμετρους και τιμη εξοδου float compute_area(float a, float b) { float area; area = a * b; return area; } Επιστρεφει την τιμη της area που ειναι τυπου float Συναρτηση παιρνει δυο παραμετρους

19 14/2/2000epl Συναρτήσεις float compute_area(float a, float b) { return a * b; } Επιστρεφει την τιμη της εκφρασης a*b που ειναι τυπου float

20 14/2/2000epl Παραμέτροι Επιτρεπουν την επικοινωνια (διασυνδεση) μεταξυ συναρτησεων (εισοδο και εξοδο δεδομενων) Λιστα παραμετρων οριζει τον αριθμο, σειρα και τυπο τιμων που δεχεται μια συναρτηση –Για εισοδο: περασμα δια τιμης (τιμή) –Για εισοδο/εξοδο: περασμα δια αναφορας (διεύθυνση)- αργοτερα

21 14/2/2000epl Σημασία Κλήσης Δεσμευση μνημης για παραμετρους και τοπικες μεταβλητες της συναρτησης (εαν υπαρχουν) Αντιγραφη των τιμων των ορισματων στις παραμετρους (εαν υπαρχουν παραμετροι) –αριθμος, σειρα και τυποι ορισματων να ταιριαζουν με τον αριθμο, σειρα και τυπους τυπικων παραμετ. Ξεκινα εκτελεση απο την πρωτη εντολη της συναρτησης

22 14/2/2000epl Σημασία Επιστροφής Αποτιμηση της εκφρασης που ακολουθει το return και αντιγραφη της τιμης εξοδου στο σημειο κλησης (εαν επιστρεφεται τιμη) Συνεχιση εκτελεσης με την εντολη που ακολουθει την κληση Αποδεσμευση μνημης που δεσμευθηκε οταν εγινε κληση. Οι αντιστοιχες μεταβλητες δεν υφιστανται πλεον

23 14/2/2000epl #include float compute_area(float x, float y); float compute_area(float a, float b) { return (a * b); } int main() { float length, width; float area; printf(“Enter length and width: “); scanf(“%f%f”,&length, &width); area = compute_area(length, width); printf(“The area of a rectangle with dim %f by %f m is %f sq. m\n”, length, width, area); return(0); } πρωτοτυπο συναρτησης ορισμος συναρτησης κληση συναρτησης ορισματα/ πραγματικοι παραμετροι τυπικοι παραμετροι

24 14/2/2000epl Δηλωση Συναρτησης (function prototype) Συνταξη Προτωτυπου Συναρτησης: ( ); Σημασια: επιτρεπει χρηση μιας συναρτησης πριν ακομα ορισθει Καλος προγραμματισμος: λιστα με προτωτυπα ολων των συναρτησεων σε ενα προγραμμα

25 14/2/2000epl Προτώτυπα Συναρτήσεων /* σχολια */ /* #include */ /* προτωτυπα συναρτησεων */ /* σταθερες*/ /* ορισμος συναρτησεων - μια ειναι η main*/ float compute_area(float length, float width); void error_message_for_negative_input(); int get_grade(int student_id);

26 14/2/2000epl #include int compute_sum(int x, int y); int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } int main() { int sum=0; sum = compute_sum(5, 4); printf(“The sum of %d and %d is %d\n”,4, 5, sum); return(0); } πρωτοτυπο συναρτησης ορισμος συναρτησης κληση συναρτησης Ορισματα/ πραγματικοι παραμετροι τυπικοι παραμετροι

27 14/2/2000epl #include int compute_sum(int x, int y); int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } int main() { int sum=0; sum = compute_sum(5, 4); printf(“The sum of %d and %d is %d\n”,4, 5, sum); return(0); }

28 14/2/2000epl sum a b #include int compute_sum(int x, int y); int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } int main() { int sum=0; sum = compute_sum(5, 4); printf(“The sum of %d and %d is %d\n”,4, 5, sum); return(0); }

29 14/2/2000epl sum 9 #include int compute_sum(int x, int y); int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } int main() { int sum=0; sum = compute_sum(5, 4); printf(“The sum of %d and %d is %d\n”,4, 5, sum); return(0); }

30 14/2/2000epl #include int compute_sum(int x, int y); void compute_sum(int a, int b) { int sum; sum = a + b; return sum; } int main() { int sum=0; int a=4, c=6; sum = compute_sum(a, c); printf(“The sum of %d and %d is %d\n”,a, c, sum); return(0); } a b sum a c

31 14/2/2000epl Εμβέλεια Μεταβλητής (scope) Το τμημα του προγραμματος που μπορει μια μεταβλητη να χρησιμοποιηθει –local (τοπικες): δηλωνονται στην αρχη ενος programming block {..} οπουδηποτε μετα τον ορισμο μεσα στο block –global (καθολικες) - αργοτερα δηλωνονται εξω απο συναρτησεις οπουδηποτε μετα τον ορισμο

32 14/2/2000epl Παράδειγμα Γραψετε μια συναρτηση με την ακολουθη διεπαφη: Η διαδικασια παιρνει μια παραμετρο την ωρα (time) σε 24ωρη μορφη και τυπωνει την ωρα και τα λεπτα χωρισμενα με :. Π.χ. εαν η τιμη της παραμετρου ειναι 1256, η εξοδος θα ειναι The time is 12:56 void display_time(int time);

33 void display_time(int time) { /* compute hours */ /* compute minutes */ /* display hours:minutes } void display_time(int time) { int hours,minutes /* compute hours */ hours = time / 100; /* compute minutes */ minutes = time % 100; /* display hours:minutes printf(“The time is %02d:%02d\n”,hours, minutes); }


Κατέβασμα ppt "14/2/2000epl-1311 Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις Top-Down Design –αφαιρετικοτητα/αρθρωση Συναρτησεις: Χρηση, Συνταξη και Σημασια –Παραμετροι."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google