1 / 37

Ανασκόπηση της C (+μέθοδος ανάλυσης )

Ανασκόπηση της C (+μέθοδος ανάλυσης ). Μοντελα Προγραμματισμου Ιστορια Δομη και Στοιχεια C προγραμματος Συνταξη και Σημμασιολογια Αναλυση συμπεριφορας με Trace Table. Μοντέλα Προγραμματισμού. Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2

avel
Download Presentation

Ανασκόπηση της C (+μέθοδος ανάλυσης )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ανασκόπηση της C (+μέθοδος ανάλυσης) • Μοντελα Προγραμματισμου • Ιστορια • Δομη και Στοιχεια C προγραμματος • Συνταξη και Σημμασιολογια • Αναλυση συμπεριφορας με Trace Table epl-131

  2. Μοντέλα Προγραμματισμού • Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2 • Αντικειμενοστρεφές αντικείμενο/ενδοπερίβλημα-κληρονομικότητα, π.χ. C++, Smalltalk, Java • Συναρτησιακό – συνάρτηση/αποτίμηση εκφράσεων, π.χ. Miranda, ML • Λογικό – σχέση/μηχανισμός συνεπαγωγής, π.χ. Prolog epl-131

  3. Προστακτικές έναντι Δηλωτικές Γλώσσες • Δηλωτικές γλώσσες έχουν υψηλότερη αφαιρετικότητα. Δεν υπάρχει η έννοια της αποθήκευσης σε σχέση με αυτές τις γλώσσες και επομένως του τελεστή ανάθεσης τιμών (assignment operator). • Θα χρησιμοποιησουμε C (διαδικασιακη) epl-131

  4. Διαδικασιακό Μοντέλο • Κεντρική έννοια η εντολή ή προσταγή • Η έννοια της διαδικασίας παρέχει το βασικό μηχανισμό για αφαιρετικότητα • Η ροή ελέγχου (control flow) είναι ακολουθιακής μορφής • Υπάρχει η έννοια της αποθήκευσης • Μεταβλητέςέχουν διεύθυνση (χώρο μνήμης), τύποκαι τιμή π.χ. int x = 123456; epl-131

  5. Ιστορία C • Αναπτυχθηκε αρχες 1970 • Kernighan and Ritchie “The C Programming Language”, 1978 • Για Systems: OS και μεταγλωτιστες • πολυ πιο ευρειας χρησης σημερα • Προτυπο ANSI C (1988) epl-131

  6. Παράδειγμα Πρόγραμμα /* paradeigma programma */ #include <stdio.h> void main() { printf(“First C Program\n”); } Eξαγωγη Προγραμματος: First C Program > epl-131

  7. Σημασιολογια (semantics) Σχολια /* paradeigma programma */ Οδηγιες προς προεπεξεργαστη για συμπεριληψη βιβλιοθηκης #include <stdio.h> void main() { } Ορισμος συναρτησης main καθε προγραμμα εχει main Αγκυλες περιεχουν (σωμα) εντολες της συναρτησης main printf(“First C Program\n”); Εντολη καλει συναρτηση βιβλιοθηκης για εξαγωγη - παραμετρος ακολουθια χαρακτηρων epl-131

  8. /* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */ #include <stdio.h> void main() { int numbera, numberb; /* inputs*/ int sum; printf(“Enter two numbers: “); scanf(“%d%d”,&numbera, &numberb); sum = numbera + numberb; printf(“The sum of %d and %d is %d\n”, numbera, numberb, sum); } epl-131

  9. Εξαγωγη Enter two numbers: 34 -12 The sum of 34 and -12 is 22 > foo Enter two numbers: 3 0 The sum of 3 and 0 is 3 > epl-131

  10. /* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */ Σχολια Βιβλιοθηκη για Ι/Ο #include <stdio.h> void main() { } Συναρτηση main Δηλωσεις: ακεραιες μεταβλητες int numbera, numberb; /* inputs*/ int sum; printf(“Enter two numbers: ”); scanf(“%d%d”,&numbera, &numberb); Εντολες με συναρτησεις stdio Εισοδος δεδομενων μεταβλητες επονται απο τον τελεστη διευθυνσης & sum = numbera + numberb; εντολη + τελεστης (operator) προσθεσης δυαδικος τελεστης: δυο τελεσταιους (operands) = τελεστης αναθεσης printf(“The sum of %d and %d is %d\n”, numbera, numberb, sum); Εντολη με συναρτηση stdio Εξαγωγη δεδομενων epl-131

  11. Γενικες Παρατηρησεις • Kατανοητα ;) • Και τα δυο εχουν main • ολες οι εντολες και δηλωσεις τελειωνουν με ; • χρηση συναρτησεων stdio (printf, scanf) • printf εκτυπωνει • \n κινει τον δρομεα (cursor) στην επομενη γραμμη • scanf διαβαζει απο τον χρηστη • & παιρνει διευθυνση μεταβλητης, * παιρνει τιμη epl-131

  12. Δομή προγραμματος C /* σχολια */ /* οδηγιες στον προεπεξεργαστη */ /* δηλωσεις σταθερων, μεταβλητων*/ /* ορισμος συναρτησεων */ /* ορισμος συναρτησης main */ epl-131

  13. Δομή προγραμματος C (συν.) • Το προγραμμα μπορει να αποτελειται απο ενα ή περισσοτερα αρχεια • C ειναι διαδικασιακη γλωσσα • συναρτησεις (functions) • μεταβλητες (variables) epl-131

  14. Σχόλια • Συνταξη: ξεκινουν με /*και τελειωνουν με*/ • Καμμια σημασια αλλα πολυ σημαντικο μερος ενος προγραμματος (τεκμηριωση) /* auto einai ena syntaktika ortho sxolio*/ /* kai auto * einai * syntaktika * ortho */ epl-131

  15. Σχολια (συν.) /* auto * ti* einai */ /***********auto??? ***************/ /* lathos sxolio */ giati */ */ einai lathos??? /* epl-131

  16. #include • Οδηγια στον προεπεξεργαστη για ενσωματωση βιβλιοθηκων • Μία βιβλιοθήκη (library ή header file) είναι μία συλλογή χρήσιμων συναρτήσεων και σταθερων • Συνταξη: #include <header file> πχ: #include <stdio.h> epl-131

  17. #include (συν.) • Ενσωματωση επιτρεπει την χρηση συναρτησεων και σταθερων μιας βιβλιοθηκης • πχ η βιβλιοθήκη stdio περιέχει, ανάμεσα σε άλλα, τις συναρτήσεις printf, για εκτύπωση πληροφοριών, και scanf, για εισδοχή πληροφοριών • Αλλες διαταγες στον προεξεργαστη: • define, ifdef, if, else, endif, undef epl-131

  18. Ονοματα στην C • Για σταθερες, μεταβλητες, συναρτησεις • Η C ειναι CASE SENSITIVE, κεφαλαια και μικρα γραμματα ειναι διαφορετικα • foo και FOO ειναι δυο διαφορετικα ονοματα • Χρησιμοποιαται αυτοεπεξηγηματικα ονοματα • Ονοματα δεν πρεπει να χρησιμοποιουν δεσμευμενες λεξεις epl-131

  19. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Δευμεσμένες Λέξεις(Reserved Words) • Λεξεις με ειδικη σημμασια για την C. Δεν πρεπει να οριζονται ξανα σαν ονοματα epl-131

  20. L ονομα L _ N _ Συνταξη Ονοματος πχ metavliti rectangle_area _index_123 1variable %super^ se tria meroi L: letters a-z A-Z N: numbers 0-9 _ : underscore epl-131

  21. Σημμασια Μεταβλητής • Αποθηκευση και αναγνωση τιμων • Καθε μεταβλητη εχει: • τυπο • βασικοι: int, char, float, double • μεγεθος: 4Β, 1Β, 4Β, 8Β (καθε κυψελιδα 1 Byte) • (συμβολικο) ονομα • το ονομα αντιστοιχει σε συγκεκριμενη διευθυνση στην μνημη • τιμη Εξαρταται απο το λειτουργικο συστημα epl-131

  22. 137 279 Σημασια Μεταβλητης ονομα (διευθυνση) τυπος τιμη int count; 0 … … ... … … … … ... count = 137; 98760060 count = count + 142; foo(&count); Διευθυνση του count τυπος διευθυνσης ονομαζεται δεικτης (pointer) πχ int *deikths; epl-131

  23. Σημασια Μεταβλητης (συν.) • Πρεπει να δηλωνεται πριν χρησιμοποιηθει • Εαν βρισκεται στα αριστερα τελεστη αναθεσης = η τιμη του αποτελεσματος της εκφρασης (expression) στα δεξια του = αποθηκευεται στην διευθυνση της μεταβλητης Αλλιως χρησιμοποιειται η τιμη της μεταβλητης epl-131

  24. char double ; Δηλωση μεταβλητης με βασικο τυπο ονομα , int float Δηλωση Μεταβλητης (variable) char letter; int count, sum; float area, double volume; int index; cost; double charge; float angle, income; epl-131

  25. Δηλωση Σταθερας (constant) Δηλωση σταθερας #define ονομα τιμη #define PI 3.1453 #define YES 1 #define NO 1 #define TRUE 1 #define PISQUARE PI*PI #define ERROR_SPACE_MESSAGE “error:run out of space” epl-131

  26. Σημασια Σταθερας • Σταθερες εχουν: • τιμη • ονομα οχι ομως διευθυνση • μεταγλωτιστης αντικαθιστα το ονομα με την τιμη • Διευκολυνει: • τροποποιησεις • διαβασμα ενος προγραμματος (PI ή 3.1453) epl-131

  27. Τύποι Δεδομένων • Ένας τύπος δεδομένων είναι ένα σύνολο τιμών και ένα σύνολο λειτουργιών (πράξεων) που μπορούν να εφαρμοστούν σε αυτές τις τιμές • βασικοι (char , int , float, double) • συνθετοι (arrays, unions, structs) epl-131

  28. char (χαρακτηρας) • Αναπαριστά ατομικούς χαρακτήρες – A-Z, a-z, 0-9, !@#$%^&, ειδικά σύμβολα \n, κτλ • Μεγεθος 1 byte. Ποσες μοναδικες τιμες? • Κυριολεκτικές τιμές εσωκλείονται σε αποστρόφους, π.χ. Α, a, 9, , , *, \n, \, κτλ • Οι απόστροφοι δεν χρειάζονται όταν εισάγονται χαρακτήρες epl-131

  29. int (ακέραιος) • Αναπαριστά ακεραίους αριθμούς • Μεγεθος 4 bytes, πεδίο τιμών -231-1.. +231-1 • Παραδείγματα κυριολεκτικών τιμών: -2189456 0 50 +24562 –3245 13576313 • Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασμός (*), διαίρεση (/), υπόλοιπο (%), κτλ epl-131

  30. float(κινητης υποδιαστολης μονης ακριβειας) • Αναπαριστά τους πραγματικούς αριθμούς • Μεγεθος: 4 bytes, 1x1037,1x10-37 • Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασμός (*), διαίρεση (/) • Σημειογραφία για κυριολεκτικές τιμές: • 1.258  106 = 1258000.0 = 1.258e6 = 1.258E6 • 8.9 x 10-4 = 0.00089 = 8.9e-4 = 8.9e-4 = .00089 epl-131

  31. double(κινητης υποδιαστολης διπλης ακριβειας) • Ιδιος τυπος με float αλλα με μεγαλυτερη ακριβεια • Μεγεθος 8 bytes epl-131

  32. Συναρτήσεις (functions) • Καθε C προγραμμα αποτελειται απο μια ή περισοτερες συναρτησεις • Καθε προγραμμα εχει μια συναρτηση main • Εκτελεσης ξεκινα απο την συναρτηση main • Συναρτησεις καλουνται (called) και επιστρεφουν (return) • Οταν καλουνται παιρνουνπαραμετρους epl-131

  33. Συνταξη <τυπος επιστροφης> <Ονομα_Συναρτησης>(<λιστα παραμετρων>) { /* αρχη της συναρτησης */ /* δηλωσεις μεταβλητων */ /* εντολες */ return <εκφραση>; } /* τελος της συναρτησης */ epl-131

  34. Συναρτήσεις (συν.) int display() { printf(“First C Program\n”); return(0); } Συναρτηση δεν παιρνει παραμετρους Επιστρεφει την τιμη 0 0 ειναι int epl-131

  35. Συναρτήσεις (συν.) Συναρτηση παιρνει δυο παραμετρους int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } Επιστρεφει την τιμη sum που ειναι int epl-131

  36. #include <stdio.h> int compute_sum(int a, int b) { int sum; sum = a + b; return sum; } void main() { int numbera, numberb; /* inputs*/ int sum; printf(“Enter two numbers: “); scanf(“%d%d”,&numbera, &numberb); sum = compute_sum(numbera, numberb); printf(“The sum of %d and %d is %d\n”, numbera, numberb, sum); } epl-131

  37. 1η Ασκηση • Αλλαξτε το προγραμμα που υπολογιζει εμβαδο κυκλου να υπολογιζει ογκο ενος κυλινδρου. • Ημερ. Παραδ. 15/2 epl-131

More Related