1. Τύποι Μεταβλητών - ηλώσεις Μορφής ΗΕντολήΕξόδουPrintf

Σχετικά έγγραφα
2. Εντολές Εισόδου - Ο Επαναληπτικός Βρόγχος for - Χαρακτήρες διαφυγής

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

επιµέλεια Θοδωρής Πιερράτος

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

char name[5]; /* define a string of characters */

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

είκτες. Προσπέλαση Μνήµης

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

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

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

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

Κεφάλαιο 5ο: Εντολές Επανάληψης

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Πρόβλημα 29 / σελίδα 28

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Γλώσσα Προγραμματισμού C

Ηλεκτρονικοί Υπολογιστές

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

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

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

2.2.3 Η εντολή Εκτύπωσε

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

Βασικές Αρχές Προγραμματισμού

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

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

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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


Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

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

for for for for( . */

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

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Συναρτήσεις. Εισαγωγή

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Εισαγωγή στον Προγραµµατισµό «C»

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

Transcript:

1. Τύποι Μεταβλητών - ηλώσεις Μορφής ΗΕντολήΕξόδουPrintf Εισαγωγή Ενα πρόγραµµα είναι µία ακολουθία εντολών που δίδονται στον υπολογιστή προκειµένου να εκτελέσει ορισµένες εργασίες. Οι εργασίες αυτές µπορούν να αφορούν: α) την εισαγωγή ορισµένων δεδοµένωναπότοχρήστηστονυπολογιστήµε τηβοήθειαµιας µονάδας εισόδου (π.χ. από το πληκτρολόγιο, το ποντίκι, διάβασµα αρχείου από το σκληρό κ.λ.π.) β) την επεξεργασία των δεδοµένων αυτών από τον υπολογιστή (π.χ. την εκτέλεση αριθµητικών πράξεων ή µία πιο σύνθετη εργασία όπως ταξινόµηση, σύγκριση, µετατροπή δεδοµένων κ.λ.π.), και γ) την εξαγωγή των αποτελεσµάτων της επεξεργασίας των δεδοµένων σε κατάλληλη µονάδα εξόδου (π.χ. εκτύπωση των αποτελεσµάτων στην οθόνη, στον εκτυπωτή, εξαγωγή στην κάρτα ήχου, εγγραφή σε αρχείο κ.λ.π.). Παραδείγµατος χάριν, έστω ότι σε µία στατιστική έρευνα αναζητούµε το µέσο όρο των υψών ενός συνόλου ατόµων ορισµένης ηλικίας. Εχουµε επιλέξει ένα αντιπροσωπευτικό δείγµα, π.χ. απο µαθητές µιας συγκεκριµένης σχολικής τάξης. Καταγράφουµε τα ύψη των µαθητών. Προκειµένου να βρεθεί ο µέσος όρος αθροίζουµε όλα τα ύψη και διαιρούµε δια του πλήθους των µαθητών. Εχουµε δηλαδή: Μεσος όρος = Αθροισµα υψών/ πλήθος των µαθητών Εαν το δείγµα µας είναι µεγάλο (π.χ. χιλιάδες µαθητές) η εργασία της πρόσθεσης των υψών µε το χέρι είναι επίπονη διότι απαιτούνται τόσες προσθέσεις όσος και ο πληθικός αριθµός του δείγµατος. Στην περίπτωση αυτή µπορούµε να καταφύγουµε στον υπολογιστή ωστε να διευκολυνθούµε στην εκτέλεση των πράξεων. Για να µπορέσει να εκτελέσει ο υπολογιστής τις πράξεις, απαιτείται να τον εφοδιάσουµε µε κατάλληλες οδηγίες. Οι οδηγίες αυτές συµπεριλαµβάνονται σε ένα πρόγραµµα. Οι οδηγίες αφορούν: α) τον τρόπο µε τον οποίο θα εισάγουµε στον υπολογιστή τα δεδοµένα µας (στην συγκεκριµένη περίπτωση τα ύψη) ώστε να µπορεί στη συνέχεια να τα επεξεργασθεί. Π.χ. µπορεί να θέλουµε να εισάγουµε ταύψηέναένααπότοπληκτρολόγιο, ήναζητούµε τοπρόγραµµα ναταδιαβάσει από κατάλληλο αρχείο που έχουµε δηµιουργήσει στο σκληρό δίσκο. β) το είδος της επεξεργασίας (π.χ. πρόσθεσητωνυψώνκαιδιαίρεσηµε τονπληθικόαριθµό) και γ) τον τρόπο µε τον οποίο θα µας επιστραφεί το αποτέλεσµα (π.χ. εκτύπωση του αποτελέσµατος στην οθόνη, στον εκτυπωτή, σε αρχείο κ.λ.π.). Σε όλη την παραπάνω διαδικασία αναδεικνύεται ο σηµαντικός ρόλος των δεδοµένων. Αρκετές γλώσσες προγραµµατισµού απαιτούν να έχουµε καθορίσει εκ των προτέρων τον τύπο των δεδοµένων που θα χρησιµοποιηθούν από κάποιο πρόγραµµα. Π.χ. τα ύψη των µαθητών είναι πραγµατικοί αριθµοί. Εαν ενδιαφερόµασταν για βαθµολογίες µαθητών τότε τα δεδοµένα µας θα ήταν ακέραιοι αριθµοί (από 0 ως 20), αλλά ο µέσος όρος τους θα µπορούσε να είναι πραγµατικός αριθµός (π.χ. µέση βαθµολογία = 18.3). Πολλές φορές θα χρειαστεί να εισάγουµε ως δεδοµένα χαρακτήρες. Π.χ. σε ένα πρόγραµµα πελατών θα χρειαστεί να εισάγουµε τα ονοµατεπώνυµα των πελατών, δηλ. ένα σύνολο χαρακτήρων. Η C++ απαιτεί να έχουµε ορίσει τον τύπο όχι µόνο των δεδοµένων αλλά και κάθε είδους βοηθητικής µεταβλητής που θα χρησιµοποιηθεί µέσα σε κάποιο πρόγραµµα. 1

Κατά την εκτέλεση ενός προγράµµατος είναι δυνατόν ένας αλγόριθµος να πρέπει να επαναληφθεί ένα πλήθος φορών προκειµένου να δώσει το τελικό αποτέλεσµα. Χρειαζόµαστε εποµένως εντολές που ελέγχουν τη ροή ενός προγράµµατος, αν δηλαδή κάποιες εντολές θα επαναληφθούν, θα παρακαµφθούν ή θα αγνοηθούν κάτω από ορισµένες συνθήκες κ.λ.π.. Επίσης, σε αρκετές περιπτώσεις θα χρειαστεί ο έλεγχος αν ικανοποιείται µία συνθήκη προκειµένου το πρόγραµµα να εκτελέσει ορισµένες εντολές. Π.χ. σ' έναν αλγόριθµο υπολογισµού των ριζών µιας δευτεροβάθµιας εξίσωσης, θα χρειαστεί να ελεγχθεί αν η διακρίνουσα είναι αρνητική ή µηδέν ή θετική, οπότε το πρόγραµµα κατευθύνεται αντίστοιχα προς διαφορετική διεργασία. Εποµένως, συνοπτικά θα µπορούσε κανείς να θεωρήσει ότι ένα πρόγραµµα περιλαµβάνει: ηλώσεις µεταβλητών, δηλαδή εντολές καθορισµού του τύπου των χρησιµοποιούµενων δεδοµένων ή βοηθητικών µεταβλητών (ακέραιος, πραγµατικός, πίνακας, χαρακτήρας κ.λ.π.) εντολές εισόδου και εξόδου των δεδοµένων εντολές επεξεργασίας των δεδοµένων (π.χ. πράξεις µεταξύ αριθµών) εντολές ελέγχου της ροής του προγράµµατος (π.χ. έναρξη ή λήξη προγράµµατος, επαναληπτικός βρόγχος, κλήση συνάρτησης κ.λ.π.) εντολές ελέγχου της εκπλήρωσης ή µη ορισµένης συνθήκης Στις επόµενες παραγράφους θα επιχειρήσουµε µία εισαγωγή σε ορισµένες βασικές εντολές της C και της C++ που αφορούν κάθε µία από τις παραπάνω διαδικασίες. Η προσέγγισή µας θα γίνει µέσα από παραδείγµατα µικρών σχετικά προγραµµάτων που παρουσιάζουν µία µία τις εντολές και επισηµαίνουν ορισµένες ιδιαιτερότητες κάθε εντολής. Σηµαντική παρατήρηση: για να κατανοήσει κανείς ένα, έστω και µικρό, πρόγραµµα, είναι αναγκαίο να µάθει να το διαβάζει γραµµή προς γραµµή. Στην πραγµατικότητα, ακριβώς έτσι θα το µεταφράσει και θα το εκτελέσει ο υπολογιστής. Στον σχολιασµό των προγραµµάτων που ακολουθούν θα ακολουθήσουµε ακριβώς αυτή τη µέθοδο. Θα εξηγούµε δηλαδή, γραµµή προς γραµµή τι πρόκειται να συµβεί καθώς τρέχει το πρόγραµµα. Με τη βοήθεια της πρακτικής εξάσκησης, ο αναγνώστης θα συνηθίσει να σκέπτεται αλγοριθµικά, όπως ακριβώς απαιτείται για να µπορείνασυντάξειταδικάτουπρογράµµατα. Ηακριβήςσηµασία της έννοιας του αλγόριθµου, και η στενή της διασύνδεση µε τον προγραµµατισµό αποτελούν αντικείµενο χωριστής ενότητας των σηµειώσεων αυτών που τιτλοφορείται "αλγόριθµοι". Η εντολή printf (εξόδου). ηλώσεις µεταβλητών. Το πρώτο πρόγραµµα που θα εξετάσουµε είναι το κλάσσικο πρόγραµµα "Καληµέρα", ή hello world. Το πρόγραµµα αυτό, µόλις τρέξει τυπώνει στην οθόνη τη λέξη "Καληµέρα" και µετά τερµατίζει. Το πρόγραµµα έχειωςεξής: 1ο Πρόγραµµα Γραµµή #include<stdio.h> 1 int main() 2 { 3 printf("kalimera"); 4 return 0; 5 } 6 2

Οι αριθµοί των γραµµών που εµφανίζονται δεξιά δεν αποτελούν µέρος του προγράµµατος και δεν πληκτρολογούνται. Απλά αναγράφονται εδώ για να διευκολυνθούµε στην περιγραφή του προγράµµατος. Παρά το µικρό του µέγεθος, το πρόγραµµα αυτό µας δείχνει πως να ξεκινήσουµε να γράφουµε ένα πρόγραµµα σε γλώσσα C. 1η γραµµή: #include<stdio.h> Ηεντολή#include<stdio.h>, στην γραµµή 1 δίνει την οδηγία να συµπεριληφθεί στο πρόγραµµα τοαρχείο κεφαλίδας stdio.h το οποίο προϋπάρχει και βρίσκεται ήδη εγκατεστηµένο στον σκληρό µας δίσκο µαζί µε άλλα αρχεία του µεταγλωτιστή της C. Ενα αρχείο κεφαλίδας περιέχει βοηθητικές συναρτήσεις που είναι απαραίτητες για να γίνει αντιληπτό το πρόγραµµα από τον µεταγλωτιστή. Ηεντολή#include<stdio.h> πρέπει να τίθεται οπωσδήποτε στην πρώτη γραµµή κάθεπρογράµµατός µας. Το συγκεκριµένο αρχείο stdio.h περιέχει συναρτήσεις που αφορούν τις εντολές εισόδου και εξόδου δεδοµένων που θα δούµε παρακάτω. Αν ξεχάσουµε να βάλουµε τη1η γραµµή #include<stdio.h> στο πρόγραµµα µας, τότε οι εντολές εισόδουεξόδου δεν θα γίνονται αντιληπτές από το µεταγλωτιστή και κατά τη φάση της µεταγλώτισης του προγράµµατος θα πάρουµε έναµήνυµα λάθους. Προσοχή: κατά την συγγραφή του προγράµµατος, οι εντολές πρέπει να πληκτρολογούνται µε την ορθογραφία και τη σύνταξη ακριβώς όπως φαίνονται παραπάνω. Π.χ. αν αντί του #include<stdio.h> πληκτρολογήσουµε #inclοude<stdio.h>, ή #include<stdi.h> ήξεχάσουµε τοσύµβολο της δίεσης #, ήβάλουµε παρένθεση) αντί για >, ο µεταγλωτιστής θα µας επιστρέψει ένα µήνυµα συντακτικού λάθους. Το ίδιο ισχύει αν παραλείψουµε ή γράψουµε διαφορετικά ένα από τα σηµεία στίξης (π.χ. ερωτηµατικό ; ή κόµµα, ή διπλά εισαγωγικά ") που χρησιµοποιεί κάθε εντολή του προγράµµατος. 2η γραµµή: int main() Η δεύτερη γραµµή int main() πρέπει επίσης να τίθεται απαραίτητα σε κάθε πρόγραµµα. Η γραµµή αυτή δηλώνει την έναρξη καθορισµού της συνάρτησης main που είναι τύπου int. Με τον όρο συνάρτηση εννοούµε χονδρικά ένα αυτοτελές σύνολο κώδικα που εκτελεί µια συγκεκριµένη εργασία. Θα αναφερθούµε λεπτοµερώς στις συναρτήσεις παρακάτω, οπότε και θα γίνει κατανοητή η σύνταξη της γραµµής 2. Προς το παρόν, αρκεί να ξέρουµε ότι η συνάρτηση main έχει ιδιαίτερη σηµασία, διότι είναι η συνάρτηση εκείνη από την οποία θα ξεκινάει πάντα να τρέχει το πρόγραµµα. Ουσιαστικά η 2η γραµµή ισοδυναµεί µε τηδήλωση έναρξης του προγράµµατος. Στην τρίτη γραµµή, αµέσως κάτω από τη δήλωση της συνάρτησης main, υπάρχει µία ανοικτή αγκύλη. Αυτή συνδυάζεται µε την εντολή return 0; της 5ης γραµµής και την κλειστή αγκύλη της 6ης γραµµής. Η main περιέχει ότι περιλαµβάνεται ανάµεσα στις δύο αγκύλες. Οκώδικας ανάµεσα στις δύο αγκύλες είναι ο κώδικας του κυρίου προγράµµατος. Το κύριο πρόγραµµα περιλαµβάνει εδώ µόνο µία γραµµή, τη γραµµή 4. Συµπερασµατικά, η συγγραφή ενός απλού προγράµµατος έχει πάντα την εξής µορφή: #include<stdio.h> int main() {... γραµµές κώδικα κυρίου προγράµµατος... return 0; } 3

Στο παλαιότερο πρότυπο ANSI της C, η συνάρτηση main είχε προτυποποιηθεί ως τύπου void, µία έννοια την οποία επίσης θα συζητήσουµε πολύ αργότερα. Ως αποτέλεσµα, σε παλαιότερα προγράµµατα σε C ησυγγραφήτουκυρίωςπρογράµµατος ξεκινούσε και τελείωνε σύµφωνα µε τη µορφή #include<stdio.h> void main() {... γραµµές κώδικα κυρίου προγράµµατος... } Ο τρόπος αυτός γραφής του προγράµµατος γίνεται δεκτός στη visual C++, ωστόσο δεν συνιστάται. 4η γραµµή: printf("kalimera"); Στην τέταρτη γραµµή βλέπουµε τη βασικη εντολή εξόδου printf(...). Η εντολή αυτή δίνει την οδηγία να τυπώσει ο υπολογιστής στην οθόνη τα περιεχόµενα που βρίσκονται µέσα στην παρένθεση. Εαν θέλουµε να τυπωθεί κάποιο λεκτικό µήνυµα, πρέπει να βάλουµε το µήνυµα µέσα σε διπλά εισαγωγικά. Τα διπλά εισαγωγικά δεν πρόκειται να τυπωθούν. Προσοχή χρειάζεται επίσης στο ερωτηµατικό που υπάρχει µετά την κλειστή παρένθεση στο τέλος της εντολής printf. Είναι δυνατόν να χρησιµοποιηθεί η printf για να τυπωθούν στην οθόνη καιάλλα δεδοµένα εκτός του λεκτικού µηνύµατος. Παραδείγµατος χάριν µπορούµε να τυπώσουµε τις τιµές κάποιων µεταβλητών τύπου ακέραιου, πραγµατικού ή χαρακτήρα. Για να χρησιµοποιηθεί η printf µ' αυτό τον τρόπο, θα πρέπει να έχει δοθεί µέσα στην παρένθεση µία φόρµα εκτύπωσης(format) για κάθε µεταβλητή που πρόκειται να τυπωθεί. Εξηγούµε πώς γίνεται αυτό στο ακόλουθο πρόγραµµα. 2ο Πρόγραµµα. Υπολογισµός του µέσου όρου 5 υψών. Το πρόγραµµα "Καληµέρα" δεν είναι ιδιαίτερα χρήσιµο. Τώρα θα κατασκευάσουµε ένα κάπως χρήσιµο πρόγραµµα το οποίο επιλύει το εξής πρόβληµα: έστω ότι έχουµε τα ύψη πέντε µαθητών που είναι 1.65, 1.80, 1.76, 1.73, 1.63. Μα βρεθεί ο µέσος όρος των πέντε υψών. Γραµµή #include <stdio.h> 1 int main() 2 { 3 float sum,a1,a2,a3,a4,a5,av; 4 sum=0; 5 a1=1.65; 6 a2=1.80; 7 a3=1.76; 8 a4=1.73; 9 a5=1.63; 10 sum=a1+a2+a3+a4+a5; 11 av=sum/5.0; 12 printf("average = %f",av); 13 return 0; 14 } 15 4

Γραµµές 1-3 Οι γραµµές 1 ως 3 είναι πανοµοιότυπες µε το1ο πρόγραµµα. Η αγκύλη έναρξης του κυρίου προγράµµατος (γραµµή 3) συνδυάζεται µε την αγκύλη τερµατισµού του κυρίου προγράµµατος (γραµµή 14). Οι γραµµές 4 ως 13 περιέχουν το κύριο πρόγραµµα. Γραµµή 4: float sum,a1,a2,a3,a4,a5,av; Στη γραµµή 4 γίνεται η δήλωση του τύπου επτά διαφορετικών µεταβλητών. Τα ονόµατα των επτά µεταβλητών είναι sum, a1, a2, a3, a4, a5, av. Οι µεταβλητές δηλώνονται ως τύπου float, δηλαδή πραγµατικού µε απλήακρίβεια(8 δεκαδικά ψηφία). Ηγραµµή 4 θα µπορούσε να αποδοθεί στα ελληνικά µε τηνέκφραση"έστω οι µεταβλητές sum, a1, a2, a3, a4, a5, av είναι πραγµατικοί αριθµοί µε ακρίβεια8 δεκαδικών ψηφίων". Γιανακατανοήσουµε πλήρωςτηδήλωσηαυτή θα διακόψουµε την περιγραφή του προγράµµατος 2 και θα πούµε λίγα περισσότερα για τις µεταβλητές. Μεταβλητές. Ονόµατα και τύποι. Ο όρος µεταβλητή έχει στη γλώσσα προγραµµατισµού την ίδια περίπου σηµασία που έχει και στα µαθηµατικά. Μία µεταβλητή µπορεί να παίρνει τιµές που αλλάζουν κατά τη διάρκεια της ροής του προγράµµατος. Σε κάθε µεταβλητή αντιστοιχεί µια θέση µνήµης του υπολογιστή. Στη συγκεκριµένη θέση µνήµης εγγράφεται η τρέχουσα τιµή της µεταβλητής. Αν κατά τη διάρκεια της ροής του προγράµµατος η τρέχουσα τιµή αλλάξει για οποιοδήποτε λόγο, τότε στην αντίστοιχη διεύθυνση µνήµης θα καταχωρηθεί η νέα τιµή, ενώ η παλαιά τιµή θασβησθείκαιθαχαθεί. Στα µαθηµατικά, συνηθισµένα ονόµατα µεταβλητών είναι π.χ. x,y,z, κ,λ,µ. Στη C το όνοµα µιας µεταβλητής δεν είναι υποχρεωτικό να έχει ένα χαρακτήρα, αλλά µπορεί να έχει αρκετούς χαρακτήρες. Στην πραγµατικότητα προτιµούµε ονόµατα που να περιέχουν κάποιους χαρακτήρες, διότι έτσι µπορούµε να δώσουµε ένα"µνηµονικό" όνοµα στη µεταβλητή που µας επιτρέπει να αναγνωρίσουµε σε ποιο δεδοµένο του πραγµατικού µας προβλήµατος αναφέρεται. Ετσι, στο πρόγραµµα 2 ονοµάσαµε sum µία µεταβλητή που θα παίξει το ρόλο αθροίσµατος κάποιων αριθµών. Το συγκεκριµένο όνοµα είναι θέµα προσωπικής επιλογής. Θα µπορούσε κάποιος να δώσει οποιοδήποτε όνοµα αντίγιαsum, π.χ. το όνοµα aa, bcc, q1 ή οποιοδήποτε άλλο. Ορισµένοι βασικοί τύποι µεταβλητών τους οποίους µπορούµε ναδηλώσουµε είναι: ήλωση int float double char Τύπος µεταβλητής ακέραιος πραγµατικός µε ακρίβεια8 δεκαδικών ψηφίων πραγµατικός µε ακρίβεια16 δεκαδικών ψηφίων χαρακτήρας Στα µαθηµατικά, όλοι οι ακέραιοι είναι και πραγµατικοί. Εποµένως, σε τί διαφέρει η δήλωση µιας µεταβλητήςωςακέραιηςαπ' ότι ως πραγµατικής; Εστω ότι σε µία µεταβλητή x έχει καταχωρηθεί κάποια στιγµή ητιµή 2. Αν η µεταβλητή έχει δηλωθεί αρχικά ως τύπου float, τότε ο υπολογιστής είναι υποχρεωµένος να συγκρατεί για τη µεταβλητή αυτή 8 δεκαδικά ψηφία, δηλαδή την καταχωρεί ως 2.0000000. Φυσικά τα µηδενικά είναιάχρησταδιότιη µεταβλητή στην πραγµατικότητα έχει ακέραιη τιµή. Αν είµαστε βέβαιοι ότι η µεταβλητή x θα διατηρεί πάντα µία ακέραιη τιµή, τότε συµφέρει να δηλώσουµε τη µεταβλητή αυτή ως τύπου int αντί για float, οπότε γλιτώνουµε το κόστος της αποθήκευσης στη µνήνη επιπλέον ψηφίων που είναι όλα µηδενικά, αλλά και το χρονικό κόστος της εκτέλεσης από τον επεξεργαστή 5

πράξεων µεταξύ µηδενικών που δεν έχουν καµµία σηµασία στο τελικό αποτέλεσµα µιας πράξης µεταξύ ακεραίων. Θα πρέπει, ωστόσο, να είµαστε προσεκτικοί έναντι δύο περιορισµών: Οι πράξεις µεταξύ ακέραιων αριθµών δίνουν ακέραιο αποτέλεσµα. Π.χ. αν έχουµε ορίσει δύο ακέραιες µεταβλητές a και b, και έχουµε δώσει τις τιµές a=2, b=5, τότε ως αποτέλεσµα της διαίρεσης b/a θα επιστραφεί από το πρόγραµµα ητιµη 2 αντί του ορθού 2.5. Αυτή η ιδιότητα µπορεί να οδηγήσει σε λάθη, αλλά είναι επίσης δυνατόν να είναι κάποτε χρήσιµη. Θα δούµε αργότερα παραδείγµατα όπου αξιοποιείται η δυνατότητα αυτή. Μια ακέραιη µεταβλητή στον υπολογιστή µπορεί να πάρει τιµές σ' ένα πιο περιορισµένο διάστηµα απ' ότι µια πραγµατική µεταβλητή. Σε παλαιότερους υπολογιστές των 16-bit, το επιτρεπτό διάστηµα τιµών µιας µεταβλητής τύπου int ήταν από -32768 ως 32767 (µε πρόσηµο) ή 0 ως 65535 χωρίς πρόσηµο. Στους σύγχρονους προσωπικούς υπολογιστές των 32-bit το επιτρεπτό διάστηµα τιµών είναι από -2147483648 ώς 2147483647. Αντίθετα, οι πραγµατικές µεταβλητές απλής και διπλής ακρίβειας µπορούν να παίρνουν τιµές σε ένα πολύ ευρύτερο διάστηµα. Εχουµε τονεξήςπίνακα: Τύπος µεταβλητής τρόπος δήλωσης διάστηµα επιτρεπτών τιµών στο πρόγραµµα ακέραιη int -2147483648 ως 2147483647 πραγµατική απλής ακρίβειας float 1.5x10-45 ως 3.4x10 38 πραγµατική διπλής ακρίβειας double 5.0x10-324 ως 1.7x10 308 Πράξεις µεταξύ αριθµητικών µεταβλητών. Προτεραιότητα ύο ή περισσότερες µεταβλητές είναι δυνατόν να συνδυασθούν µε οποιαδήποτε από τις τέσσερεις βασικές αριθµητικές πράξεις. Οι πράξεις γράφονται κατά µήκος µίας γραµµής µε τη χρήση των συµβόλων: πρόσθεση + αφαίρεση - πολλαπλασιασµός * διαίρεση / Ο πολλαπλασιασµός και η διαίρεση έχουν προτεραιότητα έναντι της πρόσθεσης και της αφαίρεσης όπως και στη συνήθη αλγεβρική γραφή. εποµένως µία γραµµή εντολήςτηςµορφής d=a*b+c; υποδηλώνει ότι στη µεταβλητή d θα καταχωρηθεί το αποτέλεσµα της αλγεβρικής πράξης ab + c. Εαν επιθυµούσαµε τηνπράξηa(b + c) θα έπρεπε να είχαµε δώσειτηνεντολή d=a*(b+c); Η χρήση των παρενθέσεων είναι επιτρεπτή και υποδηλώνει µια διαφορετική προτεραιότητα από την καθιερωµένη (ο πολλαπλασιασµός να προηγείται της πρόσθεσης). Κάθε παρένθεση που ανοίγειπρέπειναακολουθείταιαπό µία παρένθεση που κλίνει. Η χρήση πολλαπλών παρενθέσεων είναιεπιτρεπτήκαιέχειτηνίδιασηµασία που έχει στην άλγεβρα η χρήση της αγκύλης ή του άγκιστρου. Π.χ. µια αλγεβρική παράσταση της µορφής d=α[(b+c)(b-c)-h] θα γραφεί 6

d=a*((b+c)*(b-c)-h); Παρατηρείστε ότι το πλήθος των παρενθέσεων που ανοίγουν είναι το ίδιο µε τοπλήθοςτων παρενθέσεων που κλείνουν. Αυτό πρέπει να συµβαίνει πάντα, αλλιώς ο µεταγλωτιστής θα επιστρέψει ένα µήνυµα λάθους. Συνηθισµέναλάθηστηχρήσητωνµεταβλητών Το πιο βασικό ίσως λάθος του αρχάριου στον προγραµµατισµό σε ότι αφορά τις µεταβλητές είναι ότι δεν αντιλαµβάνεται το γεγονός ότι η διασύνδεση των συνήθων µεταβλητών ενός προγράµµατος είναι στατική (στιγµιαία) και όχι δυναµική (δηλαδή σχέση ορισµού που ισχύει πάντα). Για να γίνει αυτό σαφές, ας δούµε τιςεξήςδύογραµµές προγράµµατος: y=2*x; x=3.0; Το ερώτηµα που προκύπτει είναι ποιά είναι η τρέχουσα τιµή τουy µετά την εκτέλεση των δύο εντολών. Αρκετοί θα απαντήσουν εδώ ότι το y πρέπει να έχει την τιµή y=6 δεδοµένου ότι έχουµε ορίσει το y να είναι ίσο µε 2x και στη συνέχεια δώσαµε στοx την τιµή x=2. Αυτήηαντίληψηείναιένα συνηθισµένο λάθος. Ηεντολήy=2*x; δεν είναι µία εντολή ορισµού αλλά µία εντολή στιγµιαίας εκχώρησης. εν διαβάζεται δηλαδή "έστω y=2x", οπότε το y θα παρακολουθούσε ως µία συνάρτηση τις τιµές του x που δίνονται παρακάτω. Αντίθετα, ηεντολήy=2*x θα πρέπει να διαβαστεί "δώσε στη µεταβλητή y τιµή ίση µετηντρέχουσα(=τωρινή) τιµή της µεταβλητής x επί δύο". Μετά την εκτέλεση της εντολής αυτής παύει οποιαδήποτε εξάρτηση ανάµεσα στο x και στο y. Ητιµή που καταχωρήθηκε στην µεταβλητή y θα διατηρείται ανεξάρτητα από τις οποιεσδήποτε αλλαγές της τιµής της µεταβλητής x. Ο µόνος λόγος για τον οποίο θα µπορούσε να αλλάξει η τιµή της y θα ήταν µια νέα εντολή που να επαναπροσδιορίζει την τιµή της. Ενα άλλο λάθος είναι η προσπάθεια να ορίσουµε µια µεταβλητή χρησιµοποιόντας κάποιο σύµβολο το οποίο δεν αντιστοιχεί σε αναγνωρίσιµη πράξη ή συνάρτηση. Π.χ. αν κάποιος προσπαθήσει να ορίσει το άθροισµα των ν πρώτων φυσικών αριθµών s=1+2+...+ν µε την εντολή s=1+2+...+n; θα πάρει ένα µήνυµα λάθους κατά τη µεταγλώτιση, διότι η γλώσσα δεν αντιλαµβάνεται εκφράσεις όπως οι τρεις τελείες κ.λ.π.. Μόνο οι πράξεις της στοιχειώδους αριθµητικής, και ορισµένες άλλες συναρτήσεις τις οποίες θα δούµε παρακάτω γίνονται αποδεκτές και µεταγλωτίζονται ως πράξεις µεταξύ µεταβλητών. Γραµµή 5 sum=0; Στη γραµµή 5 εκχωρείται η τιµή 0 στην µεταβλητή sum. Γραµµές 6 ως 10 a1=1.65; a2=1.80; a3=1.76; a4=1.73; a5=1.63; Στις γραµµές 6 ως 10 εκχωρούνται στις µεταβλητές a1, a2, a3, a4, και a5 οι τιµές που αντιστοιχούν στα πέντε ύψη των οποίων θέλουµε ναβρούµε τοµέσο όρο. 7

Γραµµή 11 sum=a1+a2+a3+a4+a5; Στη γραµµή 11 εκχωρείται στη µεταβλητή sum τιµή ίση µε το άθροισµα των 5 τιµών των µεταβλητών a1 ως a5. Γραµµή 12 av=sum/5.0; Στη γραµµή 12 εκχωρείται στην µεταβλητή av τιµή ίσηµε τηντιµή τηςµεταβλητής sum διαιρεµένη µε 5. Μετά την εκτέλεση της εντολής εκχώρησης, η τρέχουσα τιµή της av είναι ίση µε το ζητούµενο µέσο όρο των 5 υψών. Γραµµή 13 printf("average = %f",av); Στη γραµµή 13 τυπώνεται στην οθόνη το αποτέλεσµα. Εδώ βλέπουµε µία διαφορετική σύνταξη της εντολής printf απ ότι στο προηγούµενο παράδειγµα του προγράµµατος «Καληµέρα». Όταν εκτελεσθεί η εντολή, θα εκτυπωθεί στην οθόνη το κείµενο που υπάρχει ανάµεσα στα διπλά εισαγωγικά εκτός από τους δύο τελευταίους χαρακτήρες %f. Οι χαρακτήρες αυτοί δεν τυπώνονται στην οθόνη όπως είναι (δηλ. σύµβολο του ποσοστού ακολουθούµενο από το γράµµα f). Αντίθετα αποτελούν µία δήλωση µορφής γιαναεκτυπωθείστηθέσητουςκάτιδιαφορετικό: η τρέχουσα τιµή της πρώτης µεταβλητής δεξιά από το κόµµα που ακολουθεί το κλείσιµο των εισαγωγικών, δηλ. στην περίπτωσή µας η τρέχουσα τιµή της µεταβλητής av. Ηγραµµή 13 δίνει σε ελεύθερη µετάφραση την εξής εντολή: «τύπωσε στην οθόνη το κείµενο Average = και δίπλα του ακριβώς τύπωσε την τιµή της µεταβλητής av σε µορφή πραγµατικού αριθµού (δηλ. το ακέραιο µέρος, ακολουθούµενο από την υποδιαστολή, ακολουθούµενο από το δεκαδικό µέρος).» ηλώσεις µορφής Γενικά, αν ανάµεσα στα διπλά εισαγωγικά της εντολής printf υπάρχει κάπου το σύµβολο του ποσοστού ακολουθούµενο από ένα γράµµα, π.χ. %f, %d, %c, %s, %e, τότε αυτοί οι δύο χαρακτήρες δεν θα τυπωθούν στην οθόνη ως κανονικό κείµενο, αλλά στη θέση τους θα τυπωθεί η τρέχουσα τιµή της πρώτης µεταβλητής της οποίας το όνοµα έχει δοθεί δεξιά από το κόµµα που ακολουθεί το κλείσιµο των εισαγωγικών. Αν στη συνέχεια, µέσα στα εισαγωγικά, υπάρχει και δεύτερη δήλωση µορφής, αυτή θα αντιστοιχεί στην µορφή µε την οποία θα τυπωθεί αντίστοιχη δεύτερη µεταβλητή της οποίας το όνοµα πρέπει επίσης να γραφεί µέσα στην printf, χωριζόµενο από το όνοµα της πρώτης µεταβλητής µε κόµµα. Μπορούµε να έχουµε, π.χ. printf("when x = %f then y= %f",x,y); Μία δήλωση µορφής είναι δυνατόν, εκτός του τύπου της µεταβλητής, να καθορίζει και άλλα επιθυµητά στοιχεία, όπως το επιθυµητό πλήθος δεκαδικών ψηφίων ή το σύνολο των ψηφίων που επιθυµούµε να τυπωθούν. Π.χ. η πιο γενική χρήση της δήλωσης µορφής τύπου πραγµατικού αριθµού %f είναι: %σύνολο ψηφίων.σύνολο δεκαδικών ψηφίωνf Π.χ. έστω ο αριθµός π=3.14159265359... Αν δώσουµε τιςεντολές float pi; pi=3.14159265; 8

printf( Pi is equal to %7.5f,pi); τότε η εντολή printf στην τρίτη γραµµή ζητάει να τυπωθεί στην οθόνη το κείµενο Pi is equal to και δίπλα του να τυπωθεί η τιµή τηςµεταβλητής pi µε 7 συνολικά ψηφία εκ των οποίων τα 5 να είναι δεκαδικά. Ας σηµειωθεί ότι η υποδιαστολή προσµετράται ως ένα από τα 7 συνολικά ψηφία. Εποµένως, το αποτέλεσµα τηςεντολήςprintf εδώ θα είναι να τυπωθεί στην οθόνη Pi is equal to 3.14159 Αν δώσουµε τηγενικήδήλωσηµορφής %f χωρίς να προσδιορίζεται συγκεκριµένο πλήθος ψηφίων, οι περισσότεροι µεταγλωτιστές θα τυπώσουν τον αριθµό µε όσα ψηφία απαιτούνται συνολικά ώστε τα δεκαδικά ψηφία να είναι έξι. Ας σηµειωθεί τέλος ότι και το πρόσηµο - για τους αρνητικούς αριθµούς, προσµετράται ως ένα από τα ψηφία. Ο πίνακας που ακολουθεί δείχνει τις κυριότερες δηλώσεις µορφής για διάφορους τύπους µεταβλητών. ήλωση Μορφής (Format) d,i αριθµός δεκαδικού συστήµατος c χαρακτήρας s αλφαριθµητική σταθερά (εµφανίζει όσους χαρακτήρες προσδιορίζει η ακρίβεια) f πραγµατικός αριθµός lf πραγµατικός αριθµός διπλής ακρίβειας e,e αριθµός διπλής ακρίβειας, παρουσιάζεται ως δύναµη του 10 Ο τελευταίος τύπος δήλωσης µορφής αντιστοιχεί στην εκτύπωση των αριθµών µε τη βοήθεια των δυνάµεων του 10, όπως π.χ. γράφουµε τοναριθµό τουavogadro Ν=6.023 x 10 23. Στο ακόλουθο παράδειγµα float a; a=5732452.23 printf( A is equal to %10.5e,a); ζητούµε, µε τηνεντολήprintf να τυπωθεί το κείµενο A is equal to και δίπλα του ακριβώς να τυπωθεί η τρέχουσα τιµή της πραγµατικής µεταβλητής a µε τη µορφή µιας δύναµης του 10 της οποίας θα προηγείται ένας αριθµός συνολικού µήκους 10 ψηφίων εκ των οποίων τα πέντε θα είναι δεκαδικά. Στην µεταβλητή a έχει εκχωρηθεί προηγουµένως η τιµή 5732452.23=5.73245223 x 10 6. Αυτή η µορφή θα τυπωθεί ως Α is equal to 5.73245e06 Παρατηρούµε ότι τυπώθηκαν µόνο 5 από τα 8 συνολικά δεκαδικά ψηφία της γραφής ως δύναµης του 10, ενώ το ακέραιο µέρος έχει µόνο ένα ψηφίο. Εποµένως θα τυπωθούν συνολικά 1 ακέραιο ψηφίο +1ψηφίο της υποδιαστολής +5δεκαδικά ψηφία =7συνολικά ψηφία. Πλην όµως στη δήλωση µορφής µέσα στην εντολή printf έχουµε ζητήσει 10 συνολικά ψηφία. Εποµένως, αριστερά του αριθµού τυπώνονται και τρία κενά (spaces) που το καθένα λαµβάνει τη θέση εκτύπωσης ενός ψηφίου που δεν υπάρχει. Αυτό κάνει τον αριθµό 5.73245ε06 να εµφανίζεται λίγο πιο δεξιά από το υπόλοιπο κείµενο. Τέλος, τα τρία ψηφία e06 στο τέλος του αριθµού δίνουν τη δύναµη του δέκα, δηλαδή σηµαίνουν δέκα στην έκτη δύναµη (10 6 ). 9