printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

Σχετικά έγγραφα
CE 120. Φροντιστήριο 14/10/2011

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Τύποι Δεδομένων Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

scanf() scanf() stdin scanf() printf() int float double %lf float

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Διαδικασιακός Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Ι (ΗΥ120)

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός (ΤΛ1006)

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Προγραμματισμό για ΗΜΥ

Ανάπτυξη και Σχεδίαση Λογισμικού

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Εισαγωγή στην πληροφορική

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

- Σωστή χρήση του προσδιοριστή const για την σταθερά pi. Καλό θα ήταν επιλέξετε κεφαλαία γράµµατα για το όνοµα της σταθεράς.

Η γλώσσα προγραμματισμού C

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Μεθόδων Επίλυσης Προβλημάτων

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Ανάπτυξη και Σχεδίαση Λογισμικού

Διορθώσεις Συμπληρώσεις επί της επανεκτύπωσης 2003 της 2 ης έκδοσης του βιβλίου «Διαδικαστικός Προγραμματισμός C»

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Διαδικασιακός Προγραμματισμός

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Λύσεις για τις ασκήσεις του lab5

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

Η γλώσσα προγραμματισμού C

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Δομημένος Προγραμματισμός (ΤΛ1006)

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Προγραμματισμός I (Θ)

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Ι (ΗΥ120)

ΑΕΜ ή username. Sheet2

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Διαδικασιακός Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η γλώσσα προγραμματισμού C

Πρόβληµα : Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά?

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. -

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι (ΗΥ120)

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Ασκήσεις & παραδείγματα για επανάληψη

lab5 -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο

lab4grades Παράδοση ασκήσεων: -Όλα καλά Άσκηση 1η: -Σωστή 357 PASS

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Εισαγωγή στον Προγραμματισμό

Transcript:

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι: %d για ακεραίους (int) %lf για κινητής υποδιαστολής διπλής ακρίβειας (double) %f για κινητής υποδιαστολής απλής ακρίβειας (float) %c για χαρακτήρες (char) %s για συµβολοσειρές

printf printf ( "Value = %d\n", num ); Τι θέλουµε να εµφανιστεί στην οθόνη: η λέξη Value ένα κενό ένα = ένα κενό ένας ακέραιος ένας χαρακτήρας αλλαγής γραµµής Η τιµή που θα εµφανιστεί στη θέση του ακεραίου που προσδιορίσαµε µε το %d. Εδώ µπορεί να τοποθετηθεί οποιαδήποτε έκφραση αρκεί το αποτέλεσµα να έχει ακέραια τιµή

printf Με τη χρήση ειδικών κωδικών (format modifiers) µπορούµε να προσδιορίσουµε ακριβώς πώς θέλουµε να εµφανιστεί ένας αριθµός %6d : Το πλάτος του ακεραίου είναι 6 θέσεις. Αν ο ακέραιος έχει λιγότερα από έξι ψηφία, τότε οι επιπλέον θέσεις γεµίζουν µε κενά. Αν θέλουµε οι επιπλέον θέσεις να γεµίσουν µε µηδενικά, τότε γράφουµε %06d

printf παράδειγµα #include<stdio.h> int num = 46; printf ("num=%5d\n", num); printf ("num=%05d\n", num); Έξοδος: >num= 46 >num=00046 >

printf %6.2f : Το πλάτος του αριθµού κινητής υποδιαστολής είναι 6 θέσεις και τα δεκαδικά ψηφία είναι 2. Προσοχή: 6 είναι το πλάτος ΟΛΟΥ του αριθµού (ακέραιο µέρος + µια θέση για την υποδιαστολή + δεκαδικό µέρος)

printf παράδειγµα #include<stdio.h> double num = 1.234567; double longnum = 1234567.5; printf ("num=%6.2lf\n", num); printf ("num=%6.2lf\n", longnum); Έξοδος: >num= 1.23 >num=1234567.50 > Το πλάτος που προσδιορίσαµε δεν ήταν αρκετό. Το ακέραιο µέρος εκτυπώθηκε σε όσες θέσεις χρειαζόταν, όχι όσες ζητήσαµε.

#include<stdio.h> printf παράδειγµα Θέλουµε να εµφανιστεί στην οθόνη το µήνυµα: The tax rate is 9.5%. όπου το 9.5 είναι αποθηκευµένο σε µια σταθερά. const double taxrate = 9.5; printf ("The tax rate is %.1lf%%.\n", taxrate); Ο χαρακτήρας % έχει συγκεκριµένο νόηµα για το printf: χρησιµοποιείται µαζί µε έναν κωδικό (πχ. d, lf) για να δηλώσει ότι σε αυτό το σηµείο πρέπει να εµφανιστεί η τιµή µιας έκφρασης. Αν θέλουµε απλά να εκτυπώσουµε το "επι τοις εκατό" τότε χρησιµοποιούµε δύο %

printf παράδειγµα Θέλουµε να εµφανιστεί στην οθόνη το µήνυµα: My name is "John". #include<stdio.h> printf ("My name is \"John\".\n"); Ο χαρακτήρας " έχει συγκεκριµένο νόηµα για το printf: περικλείει το κείµενο που εκτυπώνεται στην οθόνη. Αν θέλουµε απλά να εκτυπώσουµε ένα " τότε χρησιµοποιούµε ένα \ πριν το "

scanf Οι κωδικοί (format specifiers) του scanf για διάφορους τύπους δεδοµένων είναι: %d για ακεραίους (int) %lf για κινητής υποδιαστολής διπλής ακρίβειας (double) %f για κινητής υποδιαστολής απλής ακρίβειας (float) %c για χαρακτήρες (char) Προσοχή: Σε αυτή την περίπτωση πρέπει πάντα να παρεµβάλεται ένα κενό µεταξύ " και %

scanf παραδείγµατα #include<stdio.h> double base; scanf("%lf", &base); printf("%lf\n", base); Είσοδος 2.17 Έξοδος 2.17

scanf παραδείγµατα #include<stdio.h> double num; scanf("num = %lf", &num); printf("%lf\n", num); Είσοδος num = 2.17 Έξοδος 2.17

scanf Πώς λειτουργεί το scanf? Ό,τι γράφετε στο πληκτρολόγιο αποθηκεύεται πρώτα σε µια περιοχή προσωρινής αποθήκευσης (buffer) και από εκεί διαβάζει το scanf. πληκτρολόγιο scanf

scanf Αν ο buffer είναι άδειος, τότε το scanf περιµένει µέχρι να µπουν χαρακτήρες σε αυτόν. Οταν ο χρήστης γράψει κάτι στο πληκτρολόγιο, τότε αυτό αποθηκεύεται στο buffer και το scanf αρχίζει να διαβάζει. Αν ο buffer περιέχει κάτι αλλά είναι λάθος τύπος, τότε το scanf αποτυγχάνει στην ανάγνωση και "επιστρέφει" χωρίς να έχει διαβάσει κάτι. Αν το scanf συνεχίσει να προσπαθεί να διαβάσει το ίδιο πράγµα (πχ. σε µια επανάληψη), τότε το πρόγραµµα θα "κολήσει"

scanf παραδείγµατα #include<stdio.h> int num; scanf("%d", &num); printf("num = %d\n", num); Είσοδος: d Έξοδος: num = -1208857696 Το scanf περίµενε ακέραιο και του δώσαµε χαρακτήρα. Δε διαβάστηκε τίποτα µέσα στο num, οπότε εκτυπώθηκαν σκουπίδια.

scanf παραδείγµατα #include<stdio.h> int num; scanf("%d", &num); printf("num = %d\n", num); Είσοδος: 34.7 Έξοδος: num = 34 Το scanf περίµενε ακέραιο και του δώσαµε δεκαδικό. Το scanf διάβασε µόνο το ακέραιο κοµµάτι και το.7 έµεινε στο buffer.

#include<stdio.h> scanf παραδείγµατα int aem; char grade; float score; scanf("%d%c%f", &aem, &grade, &score); printf("%d: %c, %.1f\n", aem, grade, score); Είσοδος: 123C6.5 Έξοδος: 123: C, 6.5

#include<stdio.h> scanf παραδείγµατα int aem; char grade; float score; scanf("%d %c %f", &aem, &grade, &score); printf("%d: %c, %.1f\n", aem, grade, score); Είσοδος: 123CD6.5 Έξοδος: 123: C, 0.0

scanf παραδείγµατα #include<stdio.h> int num; char grade; scanf("%d", &num); scanf("%c",&grade); printf("**%c**\n", grade); Έξοδος: ** ** Είσοδος: >15 >A Τι συνέβη? Αντί να εκτυπώσει Α όπως περιµέναµε, τύπωσε ένα χαρακτήρα αλλαγής γραµµής! 'Οταν εισάγαµε το 15, µπήκαν δύο πράγµατα στο buffer: το 15 και το Enter που πατήσαµε. Το πρώτο scanf διάβασε το 15, και το enter έµεινε στο buffer. Το δεύτερο scanf διάβασε το enter.

scanf παραδείγµατα Για να αποφύγουµε το πρόβληµα που περιγράφεται στην προηγούµενη διαφάνεια, γράφουµε scanf(" %c", &grade); (δηλαδή βάζουµε ένα κενό ανάµεσα στο " και στο %) Αυτό λέει στο scanf ότι θέλουµε να διαβάσει "white space" και µετά ένα χαρακτήρα. Θα διαβάσει το enter (το οποίο είναι white space) και µετά το Α κανονικά.

scanf παραδείγµατα Γιατί δεν παρουσιάζεται το ίδιο πρόβληµα όταν διαβάζουµε αριθµούς? Διότι όταν το scanf πρόκειται να διαβάσει ένα αριθµό, αγνοεί το white space που µπορεί να περιέχει ο buffer πριν από τον αριθµό. Αλλά δεν αγνοεί άλλους χαρακτήρες white space είναι τα κενά, enter, tab.