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

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

Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις

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


Παρουσίαση με θέμα: "Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις"— Μεταγράφημα παρουσίασης:

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

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

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

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

5 Εκλεπτυνση/Υλοποιηση
#include <stdio.h> #include <math.h> 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); } Εκλεπτυνση/Υλοποιηση 14/2/2000 epl-131

6 Αφαιρετικότητα Συνάρτησης
#include <stdio.h> #include <math.h> 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 ξερουμε τι κανουν οχι πως 14/2/2000 epl-131

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

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

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

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

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

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

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

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

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

16 Συναρτήσεις με Μια Παραμετρο χωρις τιμη εξοδου
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); } 14/2/2000 epl-131

17 Συνάρτηση με πολλαπλές παραμέτρους χωρίς τιμή εξοδου
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); } 14/2/2000 epl-131

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

19 Συναρτήσεις float compute_area(float a, float b) { return a * b; }
14/2/2000 epl-131

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

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

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

23 πρωτοτυπο συναρτησης τυπικοι παραμετροι ορισμος συναρτησης ορισματα/
#include <stdio.h> 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); πρωτοτυπο συναρτησης τυπικοι παραμετροι ορισμος συναρτησης ορισματα/ πραγματικοι παραμετροι κληση συναρτησης 14/2/2000 epl-131

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

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

26 πρωτοτυπο συναρτησης τυπικοι παραμετροι ορισμος συναρτησης Ορισματα/
#include <stdio.h> 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); πρωτοτυπο συναρτησης τυπικοι παραμετροι ορισμος συναρτησης Ορισματα/ πραγματικοι παραμετροι κληση συναρτησης 14/2/2000 epl-131

27 #include <stdio.h> 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); 14/2/2000 epl-131

28 9 5 4 9 sum a b sum #include <stdio.h>
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); sum 9 a 5 b 4 sum 9 14/2/2000 epl-131

29 9 sum #include <stdio.h> 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); sum 9 14/2/2000 epl-131

30 4 6 4 6 sum a c a b sum #include <stdio.h>
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 sum c 4 6 a b sum 4 6 14/2/2000 epl-131

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

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

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 "Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις"

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


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