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

Σχετικά έγγραφα
Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (HY120)

CE 120. Φροντιστήριο 14/10/2011

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Pascal, απλοί τύποι, τελεστές και εκφράσεις

5 &6. Τύποι δεδομένων, τελεστές και

Τύποι δεδομένων, τελεστές, μεταβλητές

Βασικά στοιχεία της Java

Στοιχειώδης προγραμματισμός σε C++

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

ΗΥ-150. Προγραμματισμός

Εισαγωγή στη γλώσσα προγραμματισμού C++

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

ΗΥ-150. Προγραμματισμός

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

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

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage(

Ανασκόπηση στα ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

8. Συνθήκες ελέγχου, λογικοί τελεστές

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Εισαγωγή στην Επιστήμη των Υπολογιστών

Προγραμματισμός Ι. Θεματική ενότητα 3: Tελεστές. εκφράσεις

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

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

3. Εκφράσεις και έλεγχος ροής

οµές Επιλογής Εντολές if και switch

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

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

Δεδομένα, τελεστές, είσοδος/έξοδος

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στην γλώσσα προγραμματισμού C

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

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

Δυαδικό Σύστημα Αρίθμησης

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

Προγραμματισμός Ι (HY120)

Εισαγωγή στον Προγ/μό Υπολογιστών

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Transcript:

Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές

Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι: <όνομα> = <έκφραση> 1. Αποτιμάται η έκφραση στο δεξί μέρος. 2. Η τιμή που παράγεται αποθηκεύεται στην μεταβλητή το όνομα της οποίας δίνεται στο αριστερό μέρος. Η έκφραση μπορεί να συμπεριλαμβάνει μεταβλητές, στην οποία περίπτωση επιστρέφεται η τιμή που έχει αποθηκευτεί στην μνήμη τους. Στο δεξί μέρος μπορεί να εμφανίζεται η ίδια μεταβλητή που εμφανίζεται και το αριστερό.

Η 2πλή Προσωπικότητα του Τελεστή Ανάθεσης 3 Η ανάθεση αποτελεί ταυτόχρονα μια έκφραση αποτίμησης που επιστρέφει την τιμή που ανατίθεται! Μια έκφραση ανάθεσης μπορεί να χρησιμοποιηθεί ως τμήμα άλλων, πιο πολύπλοκων εκφράσεων. Π.χ. επιτρέπονται εκφράσεις «αλυσιδωτής» ανάθεσης τιμών (από δεξιά προς τα αριστερά), όπου όλες οι μεταβλητές παίρνουν την τιμή που εμφανίζεται στο δεξί μέρος.

4 int i,j,k; i = 1; j = 1+1; k = i+j; i = k = j; j = (i=3) + k; i = i+1; /* i γίνεται 1 */ /* j γίνεται 2 */ /* k γίνεται 3 */ /* i,k γίνονται 2 */ /* i γίνεται 3, j γίνεται 5 */ /* i γίνεται 4 */

Τελεστής Ανάθεσης: Λίγοι Ιδιωματισμοί 5 Πολλές φορές χρησιμοποιούμε την ανάθεση για να αλλάξουμε την τιμή μιας μεταβλητής σε σχέση με την παλιά τιμή της (ίδιας μεταβλητής). Για το πετύχουμε αυτό, γράφουμε: <όνομα> = <όνομα><op><έκφραση> όπου <op> ένας τελεστής. Το ίδιο αποτέλεσμα μπορεί να επιτευχθεί με χρήση της «σχετικής» ανάθεσης <op>=, ως εξής: <όνομα> <op>= <έκφραση> Προσοχή στις προτεραιότητες η έκφραση που εμφανίζεται στα δεξιά αποτιμάται πριν εφαρμοστεί ο τελεστής <op>

Δηλαδή; 6 int i,j,k; i = 1; j = 2; i += 2; j *= i+1; k = (i+=j) + 1; /* i γίνεται 3 */ /* j γίνεται 8 */ /* i γίνεται 11, k γίνεται 12 */

Κι άλλη Ειδική Περίπτωση: Τελεστές Αυξομείωσης Μια ειδική περίπτωση ανάθεσης είναι η αύξηση ή μείωση της τιμής μιας μεταβλητής κατά 1: <όνομα> = <όνομα><op>1 <όνομα> <op>= 1 όπου <op> ο τελεστής + ή - Παρόμοιο αποτέλεσμα μπορεί να επιτευχθεί με χρήση των τελεστών ++ ή -- : <όνομα>++ ή <όνομα>-- ++<όνομα> ή --<όνομα> Όταν ο τελεστής εμφανίζεται πριν το όνομα της μεταβλητής, τότε ως αποτέλεσμα της έκφρασης επιστρέφεται η νέα τιμή της μεταβλητής. Όταν εμφανίζεται μετά, ως αποτέλεσμα της έκφρασης επιστρέφεται η παλιά τιμή της μεταβλητής 7

int i,j,k; i = 0; 8 i++; j = i++; k = --j; i = (k++) + 1; i = (++k) + 1; /* i γίνεται 1 */ /* j γίνεται 1, i γίνεται 2 */ /* k γίνεται 0, j γίνεται 0 */ /* i γίνεται 1, k γίνεται 1 */ /* i γίνεται 3, k γίνεται 2 */

Προσοχή, προσοχή, προσοχή!!! Καμιά φορά τα φαινόμενα απατούν 9 Φροντίστε να ξέρετε τι ακριβώς κάνετε int i; i = 0; i = (i++); i = 0; i = (++i); i = 0; i = (i=i+1); i = 0; i = (i++) + (i++); i = 0; i = (++i) + (++i); i = 0; i = (i=i+1) + (i=i+1); gcc 4.1.2 (SUSE) /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 2 */ /* i γίνεται 4 */ /* i γίνεται 4 */ gcc 3.4.2 (mingw32) /* i γίνεται 0 */ /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 2 */ /* i γίνεται 4 */ /* i γίνεται 3 */

Αριθμητικοί Τελεστές για int / float / double + πρόσθεση δύο τιμών - αφαίρεση δύο τιμών * πολλαπλασιασμός δύο τιμών / διαίρεση δύο τιμών % υπόλοιπο διαίρεσης δύο τιμών x = y*(x/y) + x%y, όμως δεν ισχύει πάντα η «μαθηματική» ιδιότητα του υπολοίπου (>=0), π.χ. όταν ο αριθμητής είναι αρνητικός. Π.χ. -5%4 ή -5%-4. 10 Η αποτίμηση γίνεται από αριστερά προς τα δεξιά. Τα / και % έχουν μεγαλύτερη προτεραιότητα αποτίμησης σε σχέση με τα + και -.

Πράξεις & Τελεστές σε Επίπεδο Bits & δυαδικό «and» δυαδικό «or» ^ δυαδικό «xor» ~ δυαδικό «not» << αριστερή ολίσθηση (LSB (least significant bit) -> MSB (most significant bit)) Στην αριστερή ολίσθηση τα «λιγότερο σημαντικά» bits παίρνουν πάντα την τιμή 0 >> δεξιά ολίσθηση (MSB (most significant bit) -> LSB (least significant bit)) Στη δεξιά ολίσθηση τα «περισσότερο σημαντικά» bits παίρνουν την τιμή Του περισσότερο σημαντικού bit (arithmetic shift) αν το όρισμα ερμηνεύεται ως signed 0 (logical shift), αν το όρισμα ερμηνεύεται ως unsigned. 11

char a,b,c; unsigned char d; 12 a = 0x61; b = 0x62; c = a b; c = a&b; c = a^b; d = c = ~a; d = d>>3; c = c>>3; /* a γίνεται 01100001 */ /* b γίνεται 01100010 */ /* c γίνεται 01100011 */ /* c γίνεται 01100000 */ /* c γίνεται 00000011 */ /* d,c γίνεται 10011110 */ /* d γίνεται 00010011 */ /* c γίνεται 11110011 */

Γρήγορος Πολλαπλασιασμός / Διαίρεση 13 Με τον τελεστή ολίσθησης bits μπορούμε να υλοποιήσουμε γρήγορες πράξεις πολλαπλασιασμού και διαίρεσης με τιμές που είναι δυνάμεις του 2: v = v<<i; /* v = v*2 i */ v = v>>i; /* v = v/2 i */ Και φυσικά μπορούμε να υπολογίσουμε εύκολα τις δυνάμεις του 2: v = 1<<i; /* v = 2 i */

14 short int i; i = 5; i = i<<4; i = i>>2; i = 1<<3; i = 1<<8; /* i γίνεται 00000000 00000101 */ /* i γίνεται 00000000 01010000 */ /* i γίνεται 00000000 00010100 */ /* i γίνεται 00000000 00001000 */ /* i γίνεται 00000001 00000000 */

Σχεσιακοί και Λογικοί Τελεστές 15 ==,!= >,>= <,<=! ισότητα, ανισότητα μεγαλύτερο, μεγαλύτερο ίσο μικρότερο, μικρότερο ίσο λογική άρνηση Οι σχεσιακοί και λογικοί τελεστές χρησιμοποιούνται για την κατασκευή λογικών εκφράσεων (συνθηκών). Δεν υπάρχει λογικός τύπος (boolean). Το αποτέλεσμα μιας λογικής έκφρασης είναι 0 ή 1 (για ψευδές ή αληθές), και μπορεί να χρησιμοποιηθεί και ως ακέραιος Κλασική πηγή λαθών στην C. Η τιμή 0 ερμηνεύεται ως «ψευδές» (false) Οποιαδήποτε τιμή διάφορη του 0 ως «αληθές» (true).

16 int a=1, b=2, c; c = (a == b); c = (a!= b); c = (a <= b); c = ((c + a)!= b); c = (!a ==!b); c = (a!= b) +!(a == b) c =!( (a!= b) +!(a == b) ); /* c γίνεται 0 */ /* c γίνεται 1 */ /* c γίνεται 1 */ /* c γίνεται 0 */ /* c γίνεται 1 */ /* c γίνεται 2 */ /* c γίνεται 0 */

Λογικοί Τελεστές λογικό «ή» && λογικό «και» Οι λογικοί σύνδεσμοι χρησιμοποιούνται για την κατασκευή σύνθετων λογικών εκφράσεων. Η αποτίμηση των λογικών εκφράσεων γίνεται από «τα αριστερά προς τα δεξιά» και μόνο όσο χρειάζεται για να διαπιστωθεί το τελικό αποτέλεσμα της έκφρασης (conditional evaluation). Για το η αποτίμηση σταματά μόλις η ενδιάμεση τιμή γίνει διάφορη του 0 Για το && η αποτίμηση σταματά μόλις η ενδιάμεση τιμή γίνει 0. Προσοχή στις παρενέργειες! 17

int a=1, b=0, c; 18 c = a&&b; c = (a==1) (b==1); c = (a++>1); c = b && (a++); c = (b++) && (a++); c = (--b) (a++); /* c γίνεται 0 */ /* c γίνεται 1 */ /* c γίνεται 0, a γίνεται 2 */ /* c γίνεται 0, a παραμένει 2 */ /* c γίνεται 0, b γίνεται 1, a παραμένει 2 */ /* c γίνεται 1, b γίνεται 0, a γίνεται 3 */

Παρενέργειες 19 Παρενέργεια: αλλαγή τιμής μιας μεταβλητής χωρίς αυτό να είναι εύκολα ορατό από τον κώδικα. Η τεχνική αποτίμησης λογικών εκφράσεων μπορεί να οδηγήσει σε κώδικα με παρενέργειες, π.χ. <lexpr> && (a++) οδηγεί σε αλλαγή της τιμής της μεταβλητής a μόνο όταν η <lexpr> αποτιμάται ως αληθής Δεν είναι εύκολο να εκτιμηθεί διαβάζοντας τον (υπόλοιπο) κώδικα. Ο προγραμματισμός με παρενέργειες θεωρείται κακό στυλ Οδηγεί σε κώδικα που είναι αρκετά δύσκολο να κατανοηθεί.

Λοιποί Τελεστές 20 <lexpr>?<expr1>:<expr2> αποτιμά την έκφραση lexpr και εφόσον η τιμή της είναι διάφορη του 0 αποτιμά και επιστρέφει το αποτέλεσμα της έκφρασης expr1, διαφορετικά αποτιμά και επιστρέφει το αποτέλεσμα της έκφρασης expr2. expr1,expr2,,exprn αποτιμά τις εκφράσεις expr1, expr2 μέχρι και exprn, «από αριστερά προς τα δεξιά», και επιστρέφει το αποτέλεσμα της τελευταίας. Π.χ.: int a = 1, b = 2, c, d; c = (a<b)? a : b; d = (c=a,a=b,b=c,c=0); /* c == 1 */ /* a,b,c,d == 2,1,0,0 */

Προτεραιότητα Τελεστών 21 μέγιστη ελάχιστη Σειρά αποτίμησης () []. ->! ~ ++ -- + - * & (cast) (ατομικοί) * / % + - << >> > >= < <= ==,!= & ^ &&? : = += -= *= /= %= &= = <<= >>=,

Πίσω στην printf Προσδιοριστές τύπου printf %c : char %d : int %x : hex %f : float %lf : double %s : συμβολοσειρά %p : διεύθυνση Πηγή: http://en.cppreference.com/w/cpp/io/c/printf 22

Επιπλέον λειτουργίες printf Εκτύπωση αριθμού κινητής υποδιαστολής με 2 δεκαδικά ψηφία: 23 double x = 1.2345; printf("%.2lf", x); Εκτυπώνει: 1.23 Εκτύπωση αριθμού κινητής υποδιαστολής με 2 δεκαδικά ψηφία και συνολικό πλάτος 6 θέσεις: double x = 12.345; printf("%6.2lf", x); Εκτυπώνει: 12.34 1 κενό + 2 ακέραια ψηφία + τελεία + 2 δεκαδικά 6 θέσεις

Επιπλέον λειτουργίες printf Εκτύπωση ακέραιου αριθμού με συνολικό πλάτος 4 θέσεις: 24 int x = 12; printf("%4d", x); Εκτυπώνει: 12 2 κενά + 2 ακέραια ψηφία 4 θέσεις Εκτύπωση ακέραιου αριθμού με συνολικό πλάτος 4 θέσεις και "γέμισμα" με μηδενικά: int x = 12; printf("%04d", x); Εκτυπώνει: 0012

scanf format specifiers %c : char %d : int %x : hex %g : float %lf : double %s : συμβολοσειρά %p : διεύθυνση Πηγή: http://en.cppreference.com/w/cpp/io/c/scanf 25

scanf παραδείγματα Ανάγνωση χαρακτήρα: char letter; scanf(" %c", &letter); 26 βάζετε πάντα ένα κενό ανάμεσα στο " και στο % Ανάγνωση τιμών όταν η είσοδος έχει τη μορφή 10/2011: int month, year; scanf("%d/%d", &month, &year); Ανάγνωση τιμών όταν η είσοδος έχει τη μορφή PRICE: 3.75 euro double price; scanf("price: %lf euro", &price);