Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και την Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Σκοπός της ενότητας είναι ο χειρισμός των δεδομένων ακέραιων, χαρακτήρων, float και double στη γλώσσα C λεπτομερειακά. Επίσης, η διδασκαλία των τελεστών. 4
Περιεχόμενα ενότητας Σταθερές και μεταβλητές τύπου int. Σταθερές και μεταβλητές τύπου char. Σταθερές και μεταβλητές τύπου και float double. Αριθμητικοί τελεστές Συγκριτικοί τελεστές Λογικοί τελεστές. 5
Τύποι δεδομένων Στη C συναντούμε τέσσερις βασικές κατηγορίες δεδομένων καθώς και πέντε βασικούς τύπους δεδομένων. Ακέραιοι (int). Κινητής Υποδιαστολής (double, float). Χαρακτήρες (char). Το κενό (void). 6
Σταθερές και μεταβλητές τύπου int Περιγράφονται με το πρόθεμα int και αναφέρονται σε μεταβλητές ή σταθερές οι οποίες μπορούν να διαχειρισθούν ακέραιους αριθμούς. Ένας ακέραιος έχει μέγεθος 32 bit (4 byte). short int έχει μήκος 16 bit (2 byte). long int έχει μήκος 32 bit (4 byte). 7
Ακέραιοι χωρίς πρόσημο (unsigned) Το προσδιοριστικό unsigned πριν από τον τύπο μιας μεταβλητής ορίζει ότι η μεταβλητή δεν θα περιέχει πρόσημο. unsigned int a; Unsigned long int a; unsigned short int a; Δεσμεύουν τα ίδια bytes, αλλά το πρώτο bit δεν χρησιμοποιείται για το πρόσημο. Σε τύπου unsigned μπορούν να αποθηκευτούν μόνο θετικοί αριθμοί. 8
Σταθερές τύπου char Περιγράφονται με το πρόθεμα char. Μια σταθερά char είναι ένας χαρακτήρας μέσα σε μονά εισαγωγικά. Π.χ. Α, Μ, *. Κάθε χαρακτήρας έχει μέγεθος 8 bit (1 byte) και αντιστοιχεί ένας αριθμός από 0 έως 255, ο οποίος ονομάζεται ASCII. Η C χειρίζεται τους χαρακτήρες ως αριθμούς και μπορούν να συμμετέχουν σε αριθμητικές πράξεις. Ο χαρακτήρας Α αντιστοιχεί στην τιμή 65, ο a στην τιμή 97. Παράδειγμα: 5+ * επιστρέφει 47(5+42 (ASCII του*). 9
Μεταβλητές τύπου char Οι μεταβλητές τύπου char δεσμεύουν 1 byte (8 bit) και αποθηκεύεται ένας ακέραιος αριθμός. Παράδειγμα: int a,b; char ch; ch= A ; a=ch+2; H μεταβλητή a θα έχει τον αριθμό 67(65+2) 10
Συμβολοσειρές (character strings) Η συμβολοσειρά ορίζεται στη C σαν σύνολο χαρακτήρων μέσα σε διπλά εισαγωγικά και αποθηκεύεται σε συνεχόμενες θέσεις μνήμης. ΤΕΙ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ 2345 ΟΚΤΩΒΡΗΣ 2012 11
Τύποι δεδομένων float και double Οι τύποι double και float αναφέρονται σε μεταβλητές ή σταθερές οι οποίες μπορούν να διαχειριστούν αριθμούς κινητής υποδιαστολής (με δεκαδικά ψηφία). Ο τύπος float έχει μέγεθος 32 bit(4 byte) ενώ ο τύπος double 64 bit (8 byte). double x; float y; x=3.14159; y=7.; 12
Αριθμητικοί Τελεστές (1) Σχήμα 1. Αριθμητικοί τελεστές, πηγή: Διδάσκων, 2014. 13
Αριθμητικοί Τελεστές (2) O τελεστής ++ αυξάνει το περιεχόμενο μιας μεταβλητής κατά 1, ο τελεστής -- μειώνει το περιεχόμενο μιας μεταβλητής κατά 1, ανεξάρτητα από τη θέση του τελεστή. Όταν ο τελεστής είναι πριν τη μεταβλητή, πρώτα γίνεται η πράξη (μείωση ή αύξηση) και μετά επιστρέφεται η νέα τιμή της μεταβλητής. 14
Παράδειγμα #include <stdio.h> int main(void) { int a,b; a=b=10; printf( ++a=%d\n,++a); printf( b++=%d\n,++b); printf( a=%d b=%d\n,a,b); return 0; } 15
Τελεστές σύντμησης Ο τελεστής = μπορεί να συνδυαστεί με άλλους αριθμητικούς τελεστές. Παράδειγμα x=x+5, γράφεται x+=5 x=x*5, γράφεται x*=5 x=x-5, γράφεται x-=5 x=x/5, γράφεται x/=5 x=x%5, γράφεται x%=5 16
Τελεστής υπολοίπου % Υπολογίζει το υπόλοιπο μιας ακεραίας διαίρεσης. Παράδειγμα 10%2 => 2 5%2 => 1 5%5 => 0 4%5 => 4 17
Παράδειγμα & περιγραφή προγράμματος σε C (1) #include <stdio.h> /*Πρόγραμμα με χρήση αριθμητικών τελεστών*/ void main() { int x=100; int y=200; int z, p, k; z=y-x; 18
Παράδειγμα & περιγραφή προγράμματος σε C (2) p=x+y; k=p-z; printf( Ta apotelesmata twn ypologismwn einai: \n ); printf( z = %d\n p = %d\n k = %d\n, z, p, k); } Τα αποτελέσματα των υπολογισμών είναι: z = 100 p = 300 k = 200 19
Συγκριτικοί τελεστές (1) Οι Συγκριτικοί τελεστές συγκρίνουν τις τιμές που έχουν δύο εκφράσεις. Σχήμα 2. Συγκριτικοί τελεστές, πηγή: Διδάσκων, 2014. 20
Συγκριτικοί τελεστές (2) Όταν οι τελεστές σύγκρισης χρησιμοποιούνται σε μία έκφραση που είναι αληθής το αποτέλεσμα που παράγουν είναι ένα (1). Όταν η έκφραση είναι ψευδής, το αποτέλεσμα είναι μηδέν (0). Ο τελεστής == χρησιμοποιείται για τον έλεγχο δύο εκφράσεων εάν έχουν την ίδια τιμή, ενώ ο τελεστής = για ανάθεση τιμής σε μία μεταβλητή. 21
Λογικές παραστάσεις Μια λογική παράσταση είναι ανάλογη µιας µαθηµατικής παράστασης, µε τη διαφορά ότι το αποτέλεσμα μπορεί να είναι µόνο αληθές (1) ή ψευδές (0). Οι λογικές παραστάσεις συνθέτονται χρησιμοποιώντας συγκριτικούς τελεστές. Δύο λογικές παραστάσεις µπορούν να συνδυαστούν µε ένα λογικό τελεστή. 22
Λογικοί τελεστές Με τους Λογικούς τελεστές μπορούμε να δημιουργήσουμε πολύπλοκες λογικές εκφράσεις. Σχήμα 3. Λογικοί τελεστές, πηγή: Διδάσκων, 2014. 23
H printf() με δεδομένα κινητής υποδιαστολής #include <stdio.h> int main() { float a,b; a=35.178; b=8945.1; printf( %f\n,a); => printf( %8.3f\n,a); (%n.mf) printf( %f\n,b); => printf( %8.3f\n,b); return 0; } 35.178 => 35.178 8945.1 8945.100 24
Συνάρτηση pow() Στη C η ύψωση σε δύναμη γίνεται μέσω της συνάρτησης βιβλιοθήκης pow(), η οποία έχει δύο παραμέτρους (τη βάση και τον εκθέτη) και επιστρέφει τιμή τύπου double. c=pow(3,6); a=pow(5,2); 25
Συνάρτηση sqrt() O υπολογισμός της τετραγωνικής ρίζας γίνεται με τη συνάρτηση sqrt(), η οποία έχει μία παράμετρο και επιστρέφει μία τιμή τύπου double. a=sqrt(230); b=sqrt(25); Για να χρησιμοποιηθούν οι συναρτήσεις pow() και sqrt() θα πρέπει να συμπεριληφθεί το αρχείο math.h στο πρόγραμμα με την οδηγία #include. 26
Βιβλιογραφία μαθήματος Kernighan, B. & Ritchie D. (1990). H Γλώσσα Προγραμματισμού C, Κλειδάριθμος, Αθήνα. Καρολίδης Δ. (2013). Μαθαίνετε εύκολα C. ISBN 978-960- 93-5034-1. Τσελίκης Γ. & Τσελίκας, Ν. (2012).C Από τη θεωρία στην Εφαρμογή (β Έκδοση). ISBN: 978-960-93-1961-4. Χατζηγιαννάκης, Ν. (2012). Η γλώσσα C σε βάθος. Κλειδάριθμος, Αθήνα. 27
Τέλος Ενότητας