23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος
I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include <stdio.h> Η συνάρτηση εξόδου printf printf("συμβολοσειρά μορφής εξόδου", <λίστα προς εκτύπωση μεταβλητών>); π.χ. int a = 5; Έξοδος: Το a ισούται με 5 και το b ισούται με 3.2. float b = 3.2; printf("το a ισούται με %d και το b ισούται με %2.1f.\n", a, b); Η συνάρτηση εισόδου scanf scanf("συμβολοσειρά μορφής εισόδου", <λίστα μεταβλητών εισόδου>); π.χ. int a; float b; printf("δώσε τιμές για το a και το b:\n"); scanf("%d %f", &a, &b);
25 Οι βασικότεροι τελεστές μορφοποίησης της εξόδου %c εκτύπωση χαρακτήρα %s εκτύπωση συμβολοσειράς %d εκτύπωση ακέραιου αριθμού %f εκτύπωση πραγματικού αριθμού (κινητής υποδιαστολής) τύπου float %lf εκτύπωση πραγματικού αριθμού (κινητής υποδιαστολής) τύπου double %6.2f εκτύπωση πραγματικού σε 6 θέσεις, εκ των οποίων οι 2 για το δεκαδικό μέρος %.2f εκτύπωση πραγματικού με 2 θέσεις για το δεκαδικό μέρος ειδικοί χαρακτήρες: \n αλλαγή γραμμής, \t tab (μετατόπιση 5 θέσεων), \" εμφάνιση εισαγωγικών, \' εμφάνιση μονών εισαγωγικών, \\ εμφάνιση του backslash ( \ )
26 Παράδειγμα εισόδου/εξόδου πρόγραμμα που ζητά από το χρήστη θερμοκρασία σε F και την εμφανίζει στην οθόνη σε C τύπος μετατροπής: C = 5/9 (F-32) #include <stdio.h> void main() { float cel, far; printf("δώσε τη θερμοκρασία σε βαθμούς Fahrenheit:"); scanf("%f", &far); cel = (5.0/9.0)*(far-32); printf("οι %2.1f βαθμοί F ισοδυναμούν με %2.1f βαθμούς C", far, cel); }
27 Τελεστής εκχώρησης ή ανάθεσης ( = ) (assignment operator) <μεταβλητή> = <τιμή>; ή <μεταβλητή> = <έκφραση>; έκφραση: εντολή ή πράξη που το αποτέλεσμά της είναι κάποια τιμή. π.χ. int a = 10; a = a + 5; int x = 1; int y = 2; x = y;
Ειδικοί τελεστές εκχώρησης 28 a += x; a = a + x; a -= x; a = a - x; a *= x; a = a * x; a /= x; a = a / x; a++; a = a + 1; ++a; a--; --a; a = a - 1;
Διαφορά μεταξύ a++ και ++a 29 int a, b, c; a=2; a+=6; a=8 a-=3; a=5 a*=2; a=10 b = 2 * a++; a=11, b=20 c = 2 * ++a; a=12, c=24
Σταθερές 30 Μεταβλητές των οποίων οι τιμή δεν αλλάζει. Δήλωση σταθερών με δύο τρόπους: I. Με την εντολή #define #define <ΟΝΟΜΑ> <τιμή> II. Με την εντολή const: const <τύπος> <ΟΝΟΜΑ> = <τιμή>;
31 Αριθμητικοί τελεστές και αυτόματη μετατροπή τύπου (1) Πράξεις: +, -, *, /, % (υπόλοιπο διαίρεσης) Το αποτέλεσμα μιας πράξης μεταξύ 2 μεταβλητών του ίδιου τύπου, είναι προφανώς του ίδιου τύπου με αυτόν των μεταβλητών Όταν 2 μεταβλητές είναι διαφορετικού τύπου, το αποτέλεσμα είναι του πιο "σύνθετου" τύπου (δηλ., του τύπου με τη μεγαλύτερη ακρίβεια): short int int float double long double π.χ., 3*4 12, 3%4 3, 11%3 2, 3/4 0 (ακέραιοι!), 3.2*2 6.4
32 Αριθμητικοί τελεστές και αυτόματη μετατροπή τύπου (2) Οι μεγαλύτερες εκφράσεις (πράξεις μεταξύ περισσότερων από 2 μεταβλητών) μπορούν πάντα να αναλυθούν σε βήματα με πράξεις 2 μεταβλητών, άρα το αποτέλεσμά τους είναι του πιο σύνθετου τύπου μεταξύ των τύπων όλων των μεταβλητών της έκφρασης. Επιτρέπεται η μετατροπή ενός τύπου σε τύπο πιο σύνθετης μορφής (π.χ., int σε float) Επιτρέπεται η μετατροπή αντίθετης φοράς, αλλά με προειδοποίηση από τον compiler Απαγορεύονται οι μετατροπές που δεν έχουν νόημα (π.χ. δείκτης πίνακα σε float)
Μετατροπή τύπου (type casting) 33 ή π.χ. (τύπος)μεταβλητή; (τύπος)έκφραση; int a; float b = 5.2, c; a = (int)b; a=5 3/4 0, (float)3/4 0.75 ή 3/(float)4 0.75 αλλιώς 3.0 / 4 0.75 ή 3 / 4.0 0.75
Μαθηματικές συναρτήσεις 34 #include <math.h> sqrt(x) Τετραγωνική ρίζα του x (x>=0) exp(x) Εκθετική συνάρτηση e x log(x) ln x (φυσικός λογάριθμος, x>0) log10(x) log x (x>0) pow(x,y) Ύψωση σε δύναμη x y abs(x) Απόλυτη τιμή του x (δέχεται και επιστρέφει int) cos(x) Συνημίτονο του x sin(x) Ημίτονο του x tan(x) Εφαπτομένη του x
Τελεστές σύγκρισης 35 Χρησιμοποιούνται στις λογικές σχέσεις <, <=, >, >=, ==,!= Το αποτέλεσμα είναι είτε αληθές (1) είτε ψευδές (0). π.χ. int a=1, b=2, c; c = (a==b); Το c γίνεται 0 c = (a!=b); Το c γίνεται 1 c = ((a+c)!=b) Το c γίνεται 0 (το 2 δεν είναι του 2) c = (a!=b) +!(a==b) Το c γίνεται 2 (1+1) c =!c Το c γίνεται 0 (η άρνηση οποιουδήποτε θετικού είναι το 0)
Λογικές εκφράσεις 36 Σύζευξη (AND): && Διάζευξη (OR): Άρνηση (NOT):! Το αποτέλεσμα είναι είτε αληθές (1) είτε ψευδές (0). p q p&&q p q!p true true true true false true false false true false true false true true false false false false Ο υπολογισμός των λογικών εκφράσεων σταματάει τη στιγμή που μπορεί να προσδιοριστεί η τιμή τους. Με & και οι εκφράσεις υπολογίζονται ολόκληρες
Παραδείγματα 37 int a=1, b=0, c; c = a&&b; Το c γίνεται 0 c = (a==0) (b==0); Το c γίνεται 1 c = a++>1; Το c γίνεται 0 και το a γίνεται 2 (έχει χρησιμοποιηθεί ως 1) c = b&&(a--); Το c γίνεται 0 και το a παραμένει 2 (το a-- δεν εκτελείται) c = b&(a--); Το c γίνεται 0 και το a γίνεται 1 (έχει χρησιμοποιηθεί ως 0) c = b (a--); Το c γίνεται 1 και το a γίνεται 0 (έχει χρησιμοποιηθεί ως 1) c =!b&&(++a); Το c γίνεται 1 και το a γίνεται 1 (χρησιμοποιήθηκε με αυτή την τιμή)
Προτεραιότητα πράξεων 38 1. Παρενθέσεις 2. Μονομελείς τελεστές (π.χ., ++, --, -) 3. Αριθμητικοί τελεστές (πρώτα *, /, % και μετά +, - ) 4. Τελεστές σύγκρισης (πρώτα <, <=, >, >= και μετά == και =! 5. Λογικοί τελεστές σύζευξης και διάζευξης && και 6. Τελεστές εκχώρησης, π.χ. =, +=, *= κτλ.