Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3 Η συνάρτηση scanf()...3 Παραδείγματα...4 Ασκήσεις...6 1/6
Θεωρία εργαστηρίου Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές με είσοδο και έξοδο δεδομένων σε ένα πρόγραμμα. Συγκεκριμένα οι συναρτήσεις που θα μας απασχολήσουν είναι η printf() και η scanf(). Τύποι δεδομένων Η C έχει πέντε βασικούς τύπους δεδομένων: char (character), int (integer), float (floating point), double (double floating point), void (no value). Όλοι οι άλλοι τύποι της C βασίζονται σ' αυτούς. Όλοι οι βασικοί τύποι εκτός από τον τύπο void μπορεί ν' αλλάξουν γράφοντας πριν από τον τύπο τον κατάλληλο μετασχηματισμό. Οι μετασχηματισμοί αυτοί είναι οι: signed, unsigned, long, και short. Το μέγεθος και τα διαστήματα τιμών των τύπων της C εξαρτάται από τον επεξεργαστή. Στον πίνακα δίνουμε τους τύπους δεδομένων όπως ορίζονται από το πρότυπο ANSI. Tύπος μέγεθος σε bits διάστημα τιμών Char Unsigned char Signed char Int Unsigned int Signed int Short int Unsigned short int Signed short int Long int Signed long int Unsigned long int Float Double Long double Δηλώσεις μεταβλητών 64 12-12..127 0..255-127..127-767..767 0..65535-767..767-767..767 0..65535-767..767-214743647..214743647 0..4294967295 Τα αναγνωριστικά στη C μπορούν να έχουν όσους χαρακτήρες θέλουμε. Αν το αναγνωριστικό είναι εξωτερικό όνομα (όνομα συνάρτησης η καθολική μεταβλητή) τότε μόνο οι έξι πρώτοι χαρακτήρες 2/6
είναι σημαντικοί διαφορετικά για εσωτερικά ονόματα οι πρώτοι 31 χαρακτήρες είναι σημαντικοί. Τα κεφαλαία γράμματα στην C είναι διαφορετικά από τα μικρά. Η δήλωση μιας μεταβλητής έχει την γενική μορφή: <τύπος> Παραδείγματα int i=0,j; char q='?'; short int si; float f,g; <λίστα μεταβλητών> Η συνάρτηση printf() Η printf(), χρησιμοποιείται για την εκτύπωση δεδομένων στην έξοδο του προγράμματος. Συγκεκριμένα, δέχεται ως όρισμα ένα αλφαριθμητικό π.χ. Hello, world\n. Η γενική μορφή της printf() είναι printf( αλφαριθμητικό ελέγχου, λίστα ορισμάτων) Στη συνάρτηση printf(), το αλφαριθμητικό ελέγχου περιέχει ή χαρακτήρες που θα εμφανιστούν στην οθόνη, ή διαταγές φόρμας που λένε στην printf() πως να εμφανίσει τα ορίσματα, ή και τα δύο. Οι κωδικοί φόρμας φαίνονται στο 1ο παράδειγμα. Παραδείγματα 1. printf( %s %d, Να ένα αλφαριθμητικό, 100); 2. printf( Να ένα αλφαριθμητικό %d, 100) 3. printf( ο αριθμός %d είναι int και ο %f είναι float, 10, 110.79) Η συνάρτηση scanf() Η scanf(), χρησιμοποιείται για την εισαγωγή δεδομένων από το πληκτρολόγιο σε μεταβλητές του προγράμματος.. Η γενική μορφή της scanf() είναι scanf( αλφαριθμητικό ελέγχου, λίστα ορισμάτων) Η λίστα ορισμάτων πρέπει να περιέχει τόσα ακριβώς ορίσματα όσοι και οι κωδικοί φόρμας που περιέχονται στο αλφαριθμητικό ελέγχου. Στη λίστα ορισμάτων πρέπει να υπάρχει ένα & πριν από τις μεταβλητές που θα δεχτούν τις τιμές που διαβάζονται από πληκτρολόγιο. Παραδείγματα 1. scanf( %d, &number); 2. scanf( %f, &number); 3/6
Παραδείγματα Στα παρακάτω παραδείγματα βλέπουμε την λειτουργία των συναρήσεων printf() και scanf() καθώς επίσης και τους διακόπτες που έχουμε στην διάθεση μας για να χειριστούμε τα διάφορα είδη μεταβλητών. /******************* printf() ***********************************/ //Header file: //Ορισμός: int printf(const char *format,...); //Επιστρέφει: τον αριθμό των χαρακτήρων που τυπώνονται στην οθόνη. Αρνητική τιμή σημαίνει σφάλμα. // Τα ορίσματα της printf() //Φορμά ανάλογα με την προς εκτύπωση μεταβλητή //%c: Χαρακτήρας. //%d: Προσημασμένοι ακέραιοι. //%i: Προσημασμένοι ακέραιοι. //%e: Επιστημονική γραφή αριθμών (μικρό e). //%E: Επιστημονική γραφή αριθμών (κεφαλαίο Ε). //%f: Δεκαδικός αριθμός με υποδιαστολή. //%o: Οκταδικός χωρίς πρόσημο. //%s: Συμβολοσειρά. //%u: Μη προσημασμένοι ακέραιοι. //%x: Μη προσημασμένοι δεκαεξαδικοί (μικρά γράμματα). //%X: Μη προσημασμένοι δεκαεξαδικοί (Κεφαλαία γράμματα). //%p: Εμφάνιση δείκτη. //%%: Εκτύπωση του συμβόλου επί τοις 100 (%). int main(void) printf("hi %c %d %s", 'c', 10, "there!"); /* Hi c 10 there!*/ /******************* scanf() ***********************************/ //Header file: //Declaration: int scanf(const char *format,...); // Τα ορίσματα της scanf() //Φορμά ανάλογα με την προς ανάγνωση μεταβλητή //%c: Ανάγνωση ενός χαρακτήρα //%d: Ανάγνωση ενός δεκαδικού ακέραιου //%i: Ανάγνωση ενός ακέραιου σε δεκαδική ή οκταδική ή δεκαεξαδική μορφή //%e: Ανάγνωση ενός αριθμού κινητής υποδιαστολής //%E: Το ίδιο με το %e 4/6
//%f: Ανάγνωση ενός αριθμού κινητής υποδιαστολής //%g: Ανάγνωση ενός αριθμού κινητής υποδιαστολής //%G: Το ίδιο με %g //%o: Ανάγνωση ενός οκταδικού αριθμού //%s: Ανάγνωση μιας συμβολοσειράς //%x: Ανάγνωση ενός δεκαεξαδικού αριθμού //%X: Το ίδιο με %x //%p: Ανάγνωση ενός δείκτη //%n: Αποδοχή μιας ακέραιας τιμής ίσης με το πλήθος τον χαρακτήρων που έχουν αναγνωστεί μέχρι στιγμής //%u: Ανάγνωση ενός μη προσημασμένου δεκαδικού ακέραιου //%[ ]: Αναγνώριση συνόλου χαρακτήρων //%%: Ανάγνωση του συμβόλου επί τοις εκατό (%) int main(void) char str[0], str2[0]; int i; scanf("%79s", str); //scanf μέχρι 79 χαρακτήρες μέσα στην μεταβλητή str return 0; Στο παρακάτω πρόγραμμα βλέπουμε πως μπορούμε να τυπώσουμε στην οθόνη του ΗΥ το περιεχόμενο μιας μεταβλητής τύπου ακεραίου (int). main() int number=42; printf("the answer is %i\n", number); Το ίδιο πρόγραμμα με το παραπάνω με την διαφορά ότι πλέον κάνοντας χρήση της scanf() μπορούμε στην ακέραια μεταβλητή να αποθηκεύσουμε οποιαδήποτε τιμή κατά την εκτέλεση του προγράμματος (και όχι πριν την μεταγλώττιση όπως γίνεται παραπάνω). main() int number; scanf( %d, &number); printf("the answer is %i\n", number); 5/6
Φτιάξτε ένα πρόγραμμα το οποίο να μετατρέπει μια δοθείσα θερμοκρασία σε κλίμακα Κελσίου σε Φαρενάιτ. void main () int celcius; double farenheit; printf("give the temperature (C): "); scanf("%d", &celcius); farenheit = 9.0 * celcius / 5.0 +.0; printf("%d degrees Celcius "is %lf degrees Farenheit", celcius, farenheit); Ασκήσεις 1. Να δίνονται από το πληκτρολόγιο το ΑΜ του σπουδαστή, η ηλικία του και το εξάμηνο του. Να τυπώνονται με κατάλληλα μηνύματα. 2. Να γίνεται ο μέσος όρος τριών πραγματικών αριθμών (οι αριθμοί αυτοί μπορούν να εισάγονται από το πληκτρολόγιο. 3. Να εμφανίζεται η προπαίδεια πχ. εισάγουμε το 6 και να εμφανίζεται το εξής: 1x6=6 2x6=12 3x6=1 6/6