Χαροκόπειο Πανεπιστήμιο Τμήμα Πληροφορικής και Τηλεματικής Εισαγωγή στον Προγραμματισμό Εργαστήριο 1 Διδάσκοντες: Δημήτρης Μιχαήλ, Ουρανία Χατζή Ακ. Έτος 2010-2011 1 Το πρώτο πρόγραμμα σε C Γράψτε, μεταγλωττίστε και εκτελέστε το παρακάτω πρόγραμμα σε C: 1 #include < s t d i o . h> 2 3 4 5 int main ( ) { printf ( "Hello,␣world!\n" ) ; 6 return 0 ; 7 8 } Εκτελώντας το πρόγραμμα το παράθυρο ανοίγει και κλείνει πολύ γρήγορα. Προσθέστε την γραμμή #include < s t d l i b . h> αμέσως μετά την πρώτη γραμμή και την system ( "PAUSE" ) ; μετά την 6η γραμμή για να παραμείνει ανοικτό το παράθυρο μέχρι να πατήσουμε κάποιο πλήκτρο. Προσοχή, η συνάρτηση system καλεί κάποια συνάρτηση του λειτουργικού συστήματος. Για αυτό το λόγο η εντολή system("PAUSE") δουλεύει μόνο σε λειτουργικό σύστημα Windows. 2 Μορφοποίηση Εξόδου με την printf Η γενική μορφή της printf() φαίνεται παρακάτω: int printf ( const char * format , ... ); Το αλφαριθμητικό format περιέχει το κείμενο που θα εκτυπωθεί μαζί με ειδικές ακολουθίες χαρακτήρων που βοηθούν στην εκτύπωση των μεταβλητών που ακολουθούν. Οι ειδικές αυτές ακολουθίες έχουν την εξής γενική μορφή: %[flags][width][.precision][length]specifier όπου οι περισσότεροι specifiers φαίνονται στον παρακάτω πίνακα: 1 specifier c dήi e E f o s u x X Έξοδος χαρακτήρας δεκαδικός αριθμός με πρόσημο επιστημονικός συμβολισμός με e επιστημονικός συμβολισμός με E δεκαδικός αριθμός κινητής υποδιαστολής οκταδικός με πρόσημο αλφαριθμητικό δεκαδικός ακέραιος χωρίς πρόσημο δεκαεξαδικός αριθμός χωρίς πρόσημο δεκαεξαδικός αριθμός χωρίς πρόσημο με κεφαλαία Παράδειγμα a 392 3.9265e+2 3.9265E+2 392.65 610 sample 7235 7fa 7FA όλα τα άλλα στοιχεία είναι προαιρετικά. 2.1 Άσκηση Γράψτε ένα πρόγραμμα που να δηλώνει μία μεταβλητή τύπου float, να της δίνει την τιμή 3.141592 και να τυπώνει στην έξοδο: PI is approximately 3.141592 χρησιμοποιώντας αυτήν την μεταβλητή. 2.2 Άσκηση Γράψτε ένα πρόγραμμα που να δηλώνει μία μεταβλητή τύπου int να της δίνει την τιμή 325 και μετά να την εκτυπώνει 2 φορές, μία σε δεκαδικό και μία σε δεκαεξαδικό. 2.3 Ειδικοί Χαρακτήρες Οι ειδικοί χαρακτήρες στην C φαίνονται παρακάτω: χαρακτήρας newline tab carriage return backspace form feed backslash single quotation mark double quotation mark null character κωδικός ASCII 10 9 13 8 12 92 39 34 0 ειδικός χαρακτήρας στην C '\n' '\t' '\r' '\b' '\f' '\\' '\'' '\"' '\0' Γράψτε ένα πρόγραμμα σε C που να εκτυπώνει: Hello, world Hello, world Hello, world Hello, world 3 Χαρακτήρες και Κωδικοποίηση Η γλώσσα C παρέχει τον τύπο char για την αποθήκευση χαρακτήρων. Οι χαρακτήρες αυτοί είναι ουσιαστικά αριθμοί οι οποίοι μετατρέπονται σε χαρακτήρες χρησιμοποιώντας την κωδικοποίηση ASCII. Αυτό μας επιτρέπει να κάνουμε αριθμητική με τους χαρακτήρες. Γράψτε και εκτελέστε τον παρακάτω κώδικα: 2 Figure 1: Οι 92 εκτυπώσιμοι χαρακτήρες από 32 έως 126. Οι χαρακτήρες από 0 έως 31 είναι ειδικοί χαρακτήρες για τον έλεγχο των συσκευών εξόδου, πχ το 8 είναι το BACKSPACE, το 10 είναι ο χαρακτήρας newline (νέα γραμμή), το 13 είναι το ENTER και το 27 το ESC. 1 2 #include < s t d i o . h> #include < s t d l i b . h> 3 4 5 6 int main ( ) { char c = 'a' ; 7 printf ( "letter␣%c␣is␣represented␣as␣%d␣in␣ASCII␣code\n" , c , c ) ; printf ( "letter␣%c␣is␣represented␣as␣%d␣in␣ASCII␣code\n" , c+25 , c + 2 5 ) ; 8 9 10 system ( "PAUSE" ) ; return 0 ; 11 12 13 } Ποια είναι η κωδικοποίηση του χαρακτήρα a; Του χαρακτήρα z; Ανάμεσα στις γραμμές 8 και 9 βάλτε ένα printf ακόμη που να τυπώνει τον χαρακτήρα c+1. Ποιός είναι αυτός ο χαρακτήρας; Στην συνέχεια αλλάξτε την τιμή της μεταβλητής c σε 'A'. Ποια είναι η κωδικοποίηση του 'B' με βάση το ASCII; 4 Περισσότερη Μορφοποίηση Εξόδου με την printf 4.1 Padding Το width είναι ένας αριθμός που λέει στην printf πόσα κενά να προσθέσει στην έξοδο ώστε το αποτέλεσμα να έχει τόσους πολλούς χαρακτήρες. Γράψτε και εκτελέστε τον κώδικα που ακολουθεί: 1 2 #include < s t d i o . h> #include < s t d l i b . h> 3 4 5 6 7 8 9 int main ( ) { int a = int b = int c = int d = 100; 1000; 10000; 1000000; 10 11 printf ( "%7d\n" , a ) ; 3 printf ( "%7d\n" , b ) ; printf ( "%7d\n" , c ) ; printf ( "%*d\n" , 7 , d ) ; 12 13 14 15 system ( "PAUSE" ) ; return 0 ; 16 17 18 } 4.2 Precision Το precision έχει διαφορετική έννοια για κάθε τύπο: • για ακέραιους τύπους υποδηλώνει τον ελάχιστο αριθμό ψηφίων που πρέπει να εκτυπωθούν (πιθανώς με μηδενικά στην αρχή) • για αριθμούς κινητής υποδιαστολής υποδηλώνει τον αριθμό των ψηφίων μετά την υποδιαστολή • για αλφαριθμητικά υποδηλώνει τον μέγιστο αριθμό χαρακτήρων που θα εκτυπωθούν Εκτελέστε το παρακάτω πρόγραμμα: 1 2 #include < s t d i o . h> #include < s t d l i b . h> 3 4 5 6 7 8 9 int main ( ) { int a = 1 0 0 ; int c = 1 0 0 0 0 ; int d = 1 0 0 0 0 0 0 ; float pi = 3 . 1 4 1 5 9 2 6 5 ; 10 printf ( "%7.7d\n" , a ) ; printf ( "%7d\n" , d ) ; printf ( "%*.*d\n" , 7 , 7 , c ) ; 11 12 13 14 printf ( "%.3f\n" , pi ) ; printf ( "%.10f\n" , pi ) ; printf ( "%.f\n" , pi ) ; 15 16 17 18 system ( "PAUSE" ) ; return 0 ; 19 20 21 } 4
© Copyright 2024 Paperzz