View
61
Download
0
Category
Preview:
DESCRIPTION
Ανασκόπηση της C (+μέθοδος ανάλυσης ). Μοντελα Προγραμματισμου Ιστορια Δομη και Στοιχεια C προγραμματος Συνταξη και Σημμασιολογια Αναλυση συμπεριφορας με Trace Table. Μοντέλα Προγραμματισμού. Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2 - PowerPoint PPT Presentation
Citation preview
3/2/2000 epl-131 1
Ανασκόπηση της C (+μέθοδος ανάλυσης)
• Μοντελα Προγραμματισμου
• Ιστορια
• Δομη και Στοιχεια C προγραμματος
• Συνταξη και Σημμασιολογια
• Αναλυση συμπεριφορας με Trace Table
3/2/2000 epl-131 2
Μοντέλα Προγραμματισμού
– Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2
– Αντικειμενοστρεφές αντικείμενο/ενδοπερίβλημα-κληρονομικότητα, π.χ. C++, Smalltalk, Java
– Συναρτησιακό – συνάρτηση/αποτίμηση εκφράσεων, π.χ. Miranda, ML
– Λογικό – σχέση/μηχανισμός συνεπαγωγής, π.χ. Prolog
3/2/2000 epl-131 3
Προστακτικές έναντι Δηλωτικές Γλώσσες• Δηλωτικές γλώσσες έχουν υψηλότερη
αφαιρετικότητα. Δεν υπάρχει η έννοια της αποθήκευσης σε σχέση με αυτές τις γλώσσες και επομένως του τελεστή ανάθεσης τιμών (assignment operator).
• Θα χρησιμοποιησουμε C (διαδικασιακη)
3/2/2000 epl-131 4
Διαδικασιακό Μοντέλο
Κεντρική έννοια η εντολή ή προσταγή Η έννοια της διαδικασίας παρέχει το βασικό
μηχανισμό για αφαιρετικότητα Η ροή ελέγχου (control flow) είναι
ακολουθιακής μορφής Υπάρχει η έννοια της αποθήκευσης
Μεταβλητές έχουν διεύθυνση (χώρο μνήμης), τύπο και τιμή π.χ. int x = 123456;
3/2/2000 epl-131 5
Ιστορία C
• Αναπτυχθηκε αρχες 1970– Kernighan and Ritchie “The C Programming
Language”, 1978
• Για Systems: OS και μεταγλωτιστες– πολυ πιο ευρειας χρησης σημερα
• Προτυπο ANSI C (1988)
3/2/2000 epl-131 6
Παράδειγμα Πρόγραμμα
/* paradeigma programma */#include <stdio.h>
voidmain(){
printf(“First C Program\n”);}
Eξαγωγη Προγραμματος:
First C Program>
3/2/2000 epl-131 7
Σημασιολογια (semantics)
#include <stdio.h>/* paradeigma programma */
voidmain(){
}printf(“First C Program\n”);
Σχολια
Οδηγιες προς προεπεξεργαστηγια συμπεριληψη βιβλιοθηκης
Ορισμος συναρτησης mainκαθε προγραμμα εχει main
Εντοληκαλει συναρτησηβιβλιοθηκης για εξαγωγη - παραμετροςακολουθια χαρακτηρων
Αγκυλες περιεχουν (σωμα)εντολες της συναρτησης main
3/2/2000 epl-131 8
/* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */#include <stdio.h>
voidmain(){
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);
}
3/2/2000 epl-131 9
Εξαγωγη
Enter two numbers: 34 -12
The sum of 34 and -12 is 22
> fooEnter two numbers: 3 0
The sum of 3 and 0 is 3>
3/2/2000 epl-131 10
/* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */
#include <stdio.h>
voidmain(){
}
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);
Συναρτηση main
Δηλωσεις: ακεραιες μεταβλητες
Βιβλιοθηκη για Ι/Ο
Εντολες με συναρτησεις stdioΕισοδος δεδομενωνμεταβλητες επονται αποτον τελεστη διευθυνσης &
Σχολια
Εντολη με συναρτηση stdioΕξαγωγη δεδομενων
εντολη+ τελεστης (operator) προσθεσηςδυαδικος τελεστης: δυο τελεσταιους (operands)= τελεστης αναθεσης
3/2/2000 epl-131 11
Γενικες Παρατηρησεις
• Kατανοητα ;)
• Και τα δυο εχουν main
• ολες οι εντολες και δηλωσεις τελειωνουν με ;• χρηση συναρτησεων stdio (printf, scanf)
– printf εκτυπωνει• \n κινει τον δρομεα (cursor) στην επομενη γραμμη
– scanf διαβαζει απο τον χρηστη• & παιρνει διευθυνση μεταβλητης, * παιρνει τιμη
3/2/2000 epl-131 12
Δομή προγραμματος C
/* σχολια */
/* οδηγιες στον προεπεξεργαστη */
/* δηλωσεις σταθερων, μεταβλητων*/
/* ορισμος συναρτησεων */
/* ορισμος συναρτησης main */
3/2/2000 epl-131 13
Δομή προγραμματος C (συν.)
• Το προγραμμα μπορει να αποτελειται απο ενα ή περισσοτερα αρχεια
• C ειναι διαδικασιακη γλωσσα– συναρτησεις (functions)– μεταβλητες (variables)
3/2/2000 epl-131 14
Σχόλια
• Συνταξη: ξεκινουν με /* και τελειωνουν με */
• Καμμια σημασια αλλα πολυ σημαντικο μερος ενος προγραμματος (τεκμηριωση)
/* auto einai ena syntaktika ortho sxolio*/
/* kai auto * einai * syntaktika * ortho */
3/2/2000 epl-131 15
Σχολια (συν.)
/* auto * ti* einai */
/***********auto??? ***************/
/* lathos sxolio */ giati */
*/ einai lathos??? /*
3/2/2000 epl-131 16
#include
• Οδηγια στον προεπεξεργαστη για ενσωματωση βιβλιοθηκων
• Μία βιβλιοθήκη (library ή header file) είναι μία συλλογή χρήσιμων συναρτήσεων και σταθερων
• Συνταξη: #include <header file>πχ: #include <stdio.h>
3/2/2000 epl-131 17
#include (συν.)
• Ενσωματωση επιτρεπει την χρηση συναρτησεων και σταθερων μιας βιβλιοθηκης – πχ η βιβλιοθήκη stdio περιέχει, ανάμεσα σε άλλα,
τις συναρτήσεις printf, για εκτύπωση πληροφοριών, και scanf, για εισδοχή πληροφοριών
• Αλλες διαταγες στον προεξεργαστη:– define, ifdef, if, else, endif, undef
3/2/2000 epl-131 18
Ονοματα στην C
• Για σταθερες, μεταβλητες, συναρτησεις
• Η C ειναι CASE SENSITIVE, κεφαλαια και μικρα γραμματα ειναι διαφορετικα– foo και FOO ειναι δυο διαφορετικα ονοματα
• Χρησιμοποιαται αυτοεπεξηγηματικα ονοματα
• Ονοματα δεν πρεπει να χρησιμοποιουν δεσμευμενες λεξεις
3/2/2000 epl-131 19
Δευμεσμένες Λέξεις(Reserved Words)
• Λεξεις με ειδικη σημμασια για την C. Δεν πρεπει να οριζονται ξανα σαν ονοματα
autobreakcasecharconstcontinuedefaultdo
doubleelseenumexternfloatforgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedvoidvolatilewhile
3/2/2000 epl-131 20
Συνταξη Ονοματος
ονομα
_
L
N
L: letters a-z A-ZN: numbers 0-9_ : underscore
πχ metavliti rectangle_area _index_123 1variable %super^ se tria meroi
L
_
3/2/2000 epl-131 21
Σημμασια Μεταβλητής
• Αποθηκευση και αναγνωση τιμων
• Καθε μεταβλητη εχει: – τυπο
• βασικοι: int, char, float, double
• μεγεθος: 4Β, 1Β, 4Β, 8Β (καθε κυψελιδα 1 Byte)
– (συμβολικο) ονομα • το ονομα αντιστοιχει σε συγκεκριμενη διευθυνση στην
μνημη
– τιμη
Εξαρταται αποτο λειτουργικοσυστημα
3/2/2000 epl-131 22
Σημασια Μεταβλητηςτυπος ονομα
(διευθυνση)τιμη
0……...…
………...
int count;
137279
count = 137;
count = count + 142;
foo(&count); Διευθυνση του count
98760060
τυπος διευθυνσης ονομαζεται δεικτης (pointer) πχint *deikths;
3/2/2000 epl-131 23
Σημασια Μεταβλητης (συν.)
• Πρεπει να δηλωνεται πριν χρησιμοποιηθει
• Εαν βρισκεται στα αριστερα τελεστη αναθεσης = η τιμη του αποτελεσματος της εκφρασης (expression) στα δεξια του = αποθηκευεται στην διευθυνση της μεταβλητης Αλλιως χρησιμοποιειται η τιμη της μεταβλητης
3/2/2000 epl-131 24
Δηλωση Μεταβλητης (variable)
Δηλωσημεταβλητηςμε βασικοτυπο
float
char
int
double
ονομα,
;
char letter;int count, sum;float area, double volume;int index; cost; double charge; float angle, income;
3/2/2000 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”
3/2/2000 epl-131 26
Σημασια Σταθερας
• Σταθερες εχουν:– τιμη– ονομα οχι ομως διευθυνση– μεταγλωτιστης αντικαθιστα το ονομα με την τιμη
• Διευκολυνει:– τροποποιησεις– διαβασμα ενος προγραμματος (PI ή 3.1453)
3/2/2000 epl-131 27
Τύποι Δεδομένων
• Ένας τύπος δεδομένων είναι ένα σύνολο τιμών και ένα σύνολο λειτουργιών (πράξεων) που μπορούν να εφαρμοστούν σε αυτές τις τιμές– βασικοι (char , int , float, double)– συνθετοι (arrays, unions, structs)
3/2/2000 epl-131 28
char (χαρακτηρας)
• Αναπαριστά ατομικούς χαρακτήρες – A-Z, a-z, 0-9, !@#$%^&, ειδικά σύμβολα \n, κτλ
• Μεγεθος 1 byte. Ποσες μοναδικες τιμες?
• Κυριολεκτικές τιμές εσωκλείονται σε αποστρόφους, π.χ. Α, a, 9, , , *, \n, \, κτλ
• Οι απόστροφοι δεν χρειάζονται όταν εισάγονται χαρακτήρες
3/2/2000 epl-131 29
int (ακέραιος)
• Αναπαριστά ακεραίους αριθμούς
• Μεγεθος 4 bytes, πεδίο τιμών -231-1.. +231-1
• Παραδείγματα κυριολεκτικών τιμών: -2189456 0 50 +24562 –3245 13576313
• Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασμός (*), διαίρεση (/), υπόλοιπο (%), κτλ
3/2/2000 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
3/2/2000 epl-131 31
double (κινητης υποδιαστολης διπλης ακριβειας)
• Ιδιος τυπος με float αλλα με μεγαλυτερη ακριβεια
• Μεγεθος 8 bytes
3/2/2000 epl-131 32
Συναρτήσεις (functions)
• Καθε C προγραμμα αποτελειται απο μια ή περισοτερες συναρτησεις
• Καθε προγραμμα εχει μια συναρτηση main
• Εκτελεσης ξεκινα απο την συναρτηση main
• Συναρτησεις καλουνται (called) και επιστρεφουν (return)
• Οταν καλουνται παιρνουν παραμετρους
3/2/2000 epl-131 33
Συνταξη<τυπος επιστροφης> <Ονομα_Συναρτησης>(<λιστα παραμετρων>){ /* αρχη της συναρτησης */
/* δηλωσεις μεταβλητων */
/* εντολες */
return <εκφραση>;
} /* τελος της συναρτησης */
3/2/2000 epl-131 34
Συναρτήσεις (συν.)
intdisplay(){
printf(“First C Program\n”);
return(0);}
Συναρτηση δεν παιρνει παραμετρους
Επιστρεφει την τιμη 00 ειναι int
3/2/2000 epl-131 35
Συναρτήσεις (συν.)
intcompute_sum(int a, int b){
int sum;
sum = a + b;
return sum;}
Συναρτηση παιρνει δυο παραμετρους
Επιστρεφει την τιμη sumπου ειναι int
3/2/2000 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);
}
3/2/2000 epl-131 37
1η Ασκηση
• Αλλαξτε το προγραμμα που υπολογιζει εμβαδο κυκλου να υπολογιζει ογκο ενος κυλινδρου.
• Ημερ. Παραδ. 15/2
Recommended