ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Διαφάνειες παρουσίασης #1 4 Ιστορία και γενικά χαρακτηριστικά της C 4 Hello world! 4 Εκτέλεση προγραμμάτων 4 Απλοί τύποι δεδομένων 4 Ορισμός μεταβλητών, αρχικοποίηση, σταθερές
2Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Η ιστορία της C AT&T Bell Labs, Dennis Ritchie 1978 “The C Programming Language” K&R: Kernighan & Ritchie 1983Σύσταση ANSI Standardization Committee X3J Αποδοχή ANSI/ISO Standard ANSI C 1990-Αναθεώρηση του standard υπό εξέλιξη. C9X.
3Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Χαρακτηριστικά της C(i) u Γλώσσα προστακτικού προγραμματισμού u Γλώσσα μετρίου επιπέδου u Οικονομία στην έκφραση (λιτή και περιεκτική) u Σχετικά χαλαρό σύστημα τύπων u Φιλοσοφία: ο προγραμματιστής έχει πλήρη έλεγχο και ευθύνεται για τα σφάλματά του
4Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Χαρακτηριστικά της C(ii) u Ιδιαίτερα δημοφιλής στην πράξη u Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέως φάσματος συστημάτων και εφαρμογών u Έχει χρησιμοποιηθεί ως βάση για πληθώρα άλλων γλωσσών: C++, Java
5Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Hello world! #include void main () { printf("Hello world!\n"); } u Παρατηρήσεις l Η επικοινωνία με τον «έξω» κόσμο γίνεται μέσω της βιβλιοθήκης συναρτήσεων l Το σημείο έναρξης του προγράμματος είναι η «κύρια» συνάρτηση main.
6Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εκτέλεση προγραμμάτων Πηγαίος κώδικας (source) Μεταγλωττιστής C (compiler) Συνδέτης (linker) Βιβλιοθήκη (library) Αρχεία επικεφαλίδας (header files) Object code Εκτελέσιμο πρόγραμμα (executable) hello.c hello.o hello printf stdio.h
7Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Τύποι δεδομένων (απλοί) u Ακέραιοι αριθμοί intchar u Καθορισμός προσήμανσης signedunsigned u Καθορισμός μεγέθους shortlong u Αριθμοί κινητής υποδιαστολής floatdouble
8Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Πίνακας απλών τύπων δεδομένων char, signed char, unsigned char signed short int, unsigned short int signed int, unsigned int signed long int, unsigned long int float double long double u Με κόκκινο χρώμα όσα μπορούν να παραλειφθούν.
9Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ορισμός μεταβλητών int x; int x, y, z; double r; unsigned long abc; Αρχικοποίηση int x = 1; int x, y = 0, z = 2; double r = 1.87; unsigned long abc = ;
10Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Σταθερές(i) u Ακέραιες δεκαδικές 037 οκταδικές 0x1f δεκαεξαδικές 42U42L42UL unsigned & long u Κινητής υποδιαστολής δεκαδικές 2.99e8 με δύναμη του F42.0L float & long double
11Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Σταθερές(ii) u Χαρακτήρα 'a''0''$' u Ειδικοί χαρακτήρες \n αλλαγή γραμμής \' απόστροφος \\ χαρακτήρας \ (backslash) \t αλλαγή στήλης (tab) \" εισαγωγικό \0 χαρακτήρας με ASCII = 0 (null) \037 » με ASCII = 37 (οκταδικό) \0x1f » με ASCII = 1f (δεκαεξαδικό)
12Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Σταθερές(iii) u Συμβολοσειρές "abc""Hello world!\n""a\"51\"" u Δηλώσεις σταθερών const int size = 10, num = 5; const double pi = ; const char newline = '\n'