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



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

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

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

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

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

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

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

for for for for( . */

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

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

Ψευδοκώδικας. November 7, 2011

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

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

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

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

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

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

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

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

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

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

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

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

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

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

3. Να γραφεί πρόγραμμα που θα διαβάζει 100 ακεραίους αριθμούς από το πληκτρολόγιο και θα υπολογίζει το άθροισμά τους.

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Διάγραμμα Ροής. Σελίδα 1 από 10

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

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

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

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

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

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

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

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

Α. Ερωτήσεις Ανάπτυξης

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

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

Transcript:

2. Εντολές Εισόδου - Ο Επαναληπτικός Βρόγχος for - Χαρακτήρες διαφυγής Εισαγωγή Αφού είδαµε γραµµή - γραµµή πως θα εκτελεσθεί το πρόγραµµα 2, θα δούµε τώρατοπρόγραµµα στην ολότητά του, τί ακριβώς κάνει όταν εκτελείται και πως µπορούµε να το τροποποιήσουµε ώστε να γίνει ένα πιο χρήσιµο πρόγραµµα. Επαναδιατυπώνουµε το πρόβληµά µας το οποίο είναι: να γραφεί ένα πρόγραµµα το οποίο υπολογίζει το µέσο όρο ορισµένων δεδοµένων αριθµών. Προηγουµένως εξετάσαµε τοπρόγραµµα 2 το οποίο παραθέτουµε ξανά: #include <stdio.h> void main() { float sum,a1,a2,a3,a4,a5,av; sum=0; a1=1.65; a2=1.80; a3=1.76; a4=1.73; a5=1.63; sum=a1+a2+a3+a4+a5; av=sum/5.0; printf("average = %f",av); Ας δούµε τίθασυµβεί µόλις ενεργοποιήσουµε τη µεταγλώτιση του προγράµµατος. Καταρχήν, το πρόγραµµά µας πρέπει να είναι γραµµένο σε ένα αρχείο κειµένου που ονοµάζεται πηγαίο αρχείο. Συνήθως το πηγαίο αρχείο πρέπει να έχει ως όνοµα ένατυχαίοόνοµα ακολουθούµενο από την επέκταση.cpp. Π.χ. θα µπορούσαµε ναονοµάσουµε τοαρχείο µας average.cpp. Το όνοµα average.cpp είναι τυχαίο αλλά µας βοηθά µνηµονικάνααναγνωρίζουµε ότι πρόκειται για ένα πρόγραµµα υπολογισµού µέσου όρου. Αν όµως δεν µας ενδιαφέρει να υπάρχει µία µνηµονική διασύνδεση ονόµατος αρχείου και περιεχόµενου του προγράµµατος, θα µπορούσαµε εξίσουκαλά να του δώσουµε οποιοδήποτε άλλο όνοµα, όπως π.χ. george.cpp ή samos.cpp (πάντα όµως µετην επέκταση.cpp). Το πηγαίο αρχείο περιέχει το κείµενο του προγράµµατος. Παρ' όλα αυτά ο υπολογιστής δεν µπορεί να αντιληφθεί το αρχείο αυτό ως εκτελέσιµο πρόγραµµα. Η παραγωγή ενός αρχείου εκτελέσιµου από το λειτουργικό επιτυγχάνεται µε τη µεσολάβηση του µεταγλωτιστή (compiler) και του διασυνδετή (linker). Π.χ. το περιβάλλον της visual c++ θα µας ζητήσει, αφού πληκτρολογήσουµε και σώσουµε τοπηγαίοαρχείοµε ένα όνοµα που να τελειώνει ως.cpp, να µεταγλωτίσουµε (compile) το πηγαίο αρχείο και στη συνέχεια να παράγουµε ένα εκτελέσιµοαρχείο(build.exe). Κατά τη διάρκεια της µεταγλώτισης ελέγχονται τυχόν συντακτικά ή άλλου τύπου σφάλµατα στο πηγαίο αρχείο του προγράµµατος. Οταν αυτός ο έλεγχος αποβεί επιτυχής, είναι δυνατή η παραγωγή ενός εκτελέσιµου αρχείου µε τη χρήση της εντολής build. Το εκτελέσιµο αρχείο είναι ένα δυαδικό αρχείο που έχει το ίδιο όνοµα µε τοπηγαίοαρχείοαλλάεπέκταση.exe. Π.χ. µε αφετηρίατο πηγαίο αρχείο average.cpp θα παραχθεί το εκτελέσιµο αρχείοaverage.exe. Αυτό το τελευταίο είναι που αναγνωρίζεται από το λειτουργικό και "τρέχει" αν ενεργοποιήσουµε την κλήση του. 10

Εφόσον δηµιουργήθηκε, το εκτελέσιµο αρχείο average.exe είναι ένα αυτόνοµο πρόγραµµα που τρέχει χωρίς να έχει πια ανάγκη το πηγαίο αρχείο average.cpp ή ακόµη και τον ίδιο το µεταγλωτιστή. Το εκτελέσιµο αρχείο average.exe θα µπορούσαµε να το κάνουµε εικονίδιο στη γραµµή εργασίαςµας, να το αντιγράψουµε σεµια δισκέτα και να το διανείµουµεωςέναπρόγραµµα που τρέχει, ανεξάρτητα από τη γλώσσα προγραµµατισµού που χρησιµοποιήθηκε για να το δηµιουργήσει. Οταν κληθεί το εκτελέσιµο αρχείο average.exe, θα εκτελέσει τις διεργασίες που έχουµε ορίσει στο πρόγραµµα average.cpp. Οι εντολές εκχώρησης των τιµών των πέντε υψών στις µεταβλητές a1 ως a5, καθώς και οι εντολές που αφορούν την εκχώρηση τιµών στις µεταβλητές sum και av, θαεκτελεστούνστηνκεντρική µονάδα επεξεργασίας του υπολογιστή. Ο χρήστης δεν έχει κάποιο τρόπο να δει το αποτέλεσµατων διεργασιών αυτών, ούτε πρόκειται να τυπωθεί κάτι στην οθόνη που να τον ενηµερώνει για την πορεία εκτέλεσης των εντολών εκχώρησης, ή για τις συγκεκριµένες τιµές των υψών που εκχωρούνται σε κάθε µεταβλητή. Η πρώτη φορά που ο χρήστης θα µάθει κάτι για το πρόγραµµα είναι µόλις το πρόγραµµα φτάσει στη γραµµή printf("average = %f",av); οπότε το πρόγραµµα θα τυπώσει ένα κείµενο στην οθόνη. ηλαδή, οχρήστηςενηµερώνεται για τα αποτελέσµατα του προγράµµατος µόνο αν έχει προνοήσει να συµπεριλάβει στο πρόγραµµα µία εντολή εξόδου (εδώ συγκεκριµένα, την printf). Ταυτόχρονα όµως, το συγκεκριµένο πρόγραµµα έχει ένα σοβαρό µειονέκτηµα. Τα πέντε ύψη των οποίων υπολογίζεται ο µέσος όρος έχουν ήδη προκαθοριστεί µέσα στο πρόγραµµα, µιας και οι τιµές τους έχουν εκχωρηθεί εκ των προτέρων στις µεταβλητές a1 ως a5. Αυτό µας περιορίζει πολύ, διότι αν ο χρήστης ήθελε να υπολογίσει το µέσο όρο µιας διαφορετικής πεντάδας υψών, θα έπρεπε να ξαναµπεί στο πηγαίο πρόγραµµα average.cpp και να αλλάξει τις τιµές των υψών στις εντολές εκχώρησης. Αφού αλλάξουν οι τιµές των µεταβλητών, θα πρέπει το πηγαίο αρχείο να µεταγλωτιστεί εκ νέου και να προκύψει ένα καινούργιο εκτελέσιµο αρχείο το οποίο θα πραγµατοποιήσει το νέο υπολογισµό. Αυτή η διαδικασία είναι πολύπλοκη, αλλά είναι συχνά και ανέφικτη, διότι ο χρήστης του προγράµµατος είναι πιθανόν διαφορετικό πρόσωπο από τον προγραµµατιστή και εποµένως δεν έχει πρόσβαση στο πηγαίο αρχείο average.cpp. Χρειαζόµαστε ένα πιο "έξυπνο" πρόγραµµα, στο οποίο ο χρήστης να έχει τη δυνατότητα να εισάγει οίδιοςαπότοπληκτρολόγιοτις τιµές των πέντε υψών κατά τη διάρκεια της ροής του εκτελέσιµου αρχείου average.exe. Θέλουµε δηλαδήναδώσουµε στο χρήστη τη δυνατότητα να επικοινωνήσει µε τον υπολογιστή όχι µόνο διαβάζοντας µηνύµατα από την οθόνη (έξοδος) αλλά και εισάγοντας δεδοµένα απότοπληκτρολόγιο(είσοδος). Η εντολή εισόδου scanf Η εισαγωγή δεδοµένων γίνεται µε τη χρήση της εντολής scanf. Ο τρόπος που συντάσσεται η εντολή scanf φαίνεται στο εξής "βελτιωµένο" πρόγραµµα υπολογισµού του µέσου όρου 5 αριθµών. 3ο Πρόγραµµα Γραµµή #include <stdio.h> 1 int main() 2 { 3 float sum,a1,a2,a3,a4,a5,av; 4 sum=0.0; 5 scanf("%f",&a1); 6 sum=sum+a1; 7 scanf("%f",&a2); 8 sum=sum+a2; 9 11

scanf("%f",&a3); 10 sum=sum+a3; 11 scanf("%f",&a4); 12 sum=sum+a4; 13 scanf("%f",&a5); 14 sum=sum+a5; 15 av=sum/5.0; 16 printf("average = %f",av); 17 return 0; 18 19 Μετά τις 4 πρώτες γραµµές, στην πέµπτη γραµµή ηµεταβλητή sum παίρνει αρχικά την τιµή µηδέν. Η sum θα χρησιµοποιηθεί ως µια µεταβλητή στην οποία προστίθενται συνεχώς κάποιες τιµές. Ας σηµειωθεί ότι το όνοµα sum είναι τυχαίο και δεν έχει καµµία σχέση µε το γεγονός ότι η sum θα χρησιµοποιηθεί ως µεταβλητή άθροισης (πέρα από ένα µνηµονικό ρόλο). Η διαφορά του προγράµµατος αυτού από το προηγούµενο είναι ότι, αντί να γράφουµε τις τιµές των 5 µεταβλητών a1 ως a5 µέσα στο πρόγραµµα, γράφουµε πέντε διαδοχικές εντολές εισόδου της τιµής των µεταβλητών a1 ως a5 απότοπληκτρολόγιο. Γραµµή 6 scanf("%f",&a1); Ησηµασία της εντολής scanf("%f",&a1)είναι η εξής: "σταµάτησε τη ροή του προγράµµατος και περίµενε µε τον κέρσορα να αναβοσβήνει στην οθόνη µέχρι ο χρήστης να πληκτρολογήσει κάποια τιµή µεταβλητής στη µορφή που ορίζεται µέσα στα διπλά εισαγωγικά (%f). Μόλις ο χρήστης πληκτρολογήσει την τιµή της µεταβλητής και πατήσει Enter, να µεταφερθεί η τιµή που πληκτρολόγησε στη θέση µνήµης που αντιστοιχεί στην µεταβλητή a1". Αυτό πρακτικά σηµαίνει ότι, αφού ο χρήστης πληκτρολογήσει µια τιµή και πατήσει Enter, η τιµή αυτή θα εκχωρηθεί στην µεταβλητή a1. Οι δήλωση µορφής που δίνεται ανάµεσα στα διπλά εισαγωγικά είναι πανοµοιότυπη µε τη δήλωση µορφήςόπωςτηνπεριγράψαµε στοπροηγούµενο κεφάλαιο σε σχέση µε την εντολή εξόδου printf. Γραµµή 7 sum=sum+a1; Στη γραµµή 7 βλέπουµε µία απροσδόκητη σύνταξη στην εντολή εκχώρησης µιας τιµής στη µεταβλητή sum. Παρατηρούµε ότιηsum εµφανίζεται και στο δεξί µέλος (όπως αναµενόταν) αλλά και στο αριστερό µέλος της εντολής εκχώρησης. Αυτήησύνταξη, που αλγεβρικά δηµιουργεί προβλήµατα, στις περισσότερες γλώσσες προγραµµατισµού γίνεται αποδεκτή. Η σηµασία της γραµµής sum=sum+a1; είναι: "Να εκχωρηθεί ως νέα τιµή της µεταβλητής sum η τρέχουσα τιµή της αυξηµένη κατά την τιµή της a1" Στη C, η ίδια εντολή είναι δυνατόν να συνταχθεί µε ένα πιο σύντοµο τρόπο που δεν απαντάται στις περισσότερες άλλες γλώσσες προγραµµατισµού. Ηεντολή sum+=a1; έχει ακριβώς την ίδια σηµασία µε τηνεντολήsum=sum+a1; 12

Στην περίπτωσή µας, δεδοµένου ότι η µεταβλητή sum είχε αρχικά την τιµή 0(γραµµή 5), στην οποία προστίθεται τώρα η τιµή της a1, η νέα τιµή της sum µετά την εκτέλεση της εντολής θα είναι 0+a1 δηλαδή ίση µε a1. Γραµµές 8 ως 15 Στις γραµµές 8 ως 15 επαναλαµβάνεται η ίδια ακριβώς διαδικασία όπως και στις γραµµές 6 και 7, για τις άλλες τέσσερεις µεταβλητές a2 ως a5. Η εντολή scanf("%f",&a2)στη γραµµή 8 σταµατάει τη ροή του προγράµµατος και περιµένει µε τον κέρσορα να αναβοσβήνει στην οθόνη µέχρι ο χρήστης να πληκτρολογήσει µια δεύτερη πραγµατική τιµή, η οποία, µετά το Enter, εκχωρείται στη µεταβλητή a2. Η εντολή sum=sum+a2; στη γραµµή 9 προκαλεί την εκχώρηση, ως νέα τιµή της µεταβλητής sum, την τιµή που είχε ως τότε αυξηµένη κατά a2. εδοµένου ότι η τρέχουσα τιµή της sum ήταν a1, η νέα τιµή της sum θα είναι a1+a2. Η διαδικασία αυτή επαναλαµβάνεται κατά πανοµοιότυπο τρόπο µέχρι να φορτωθούν διαδοχικά οι τιµές και των πέντε µεταβλητών και να αυξάνεται επίσης διαδοχικά η τιµή της sum κατά την εκχωρούµενη κάθε φορά τιµή τηςεπόµενης µεταβλητής a3, a4, a5. Στο τέλος της διαδικασίας αυτής (γραµµή 15) ητρέχουσα τιµή τηςsum είναι a1+a2+a3+a4+a5. Γραµµή 16 και 17 av=sum/5.0; printf("average = %f",av); Στη γραµµή 16 εκχωρείται στη µεταβλητή av τιµή ίση µε την τιµή της sum διαιρεµένη δια 5. Αυτή η εκχώρηση αντιστοιχεί στην τιµή τουµέσου όρου των πέντε τιµών a1 ως a2 µια και η sum έχει τιµή ίσηµε a1+a2+a3+a4+a5. Τέλος, η εντολή printf στη γραµµή 17 θα τυπώσει στην οθόνη το κείµενο Average = ακολουθούµενο από την τρέχουσα τιµή της µεταβλητής av τυπωµένη σε µορφή πραγµατικού αριθµού απλής ακρίβειας. Η εντολή αυτή είναι δηλαδή η απαραίτητη εντολή εξόδου του αποτελέσµατος στην οθόνη. Παρατηρούµε ότι το πρόγραµµα 3 έχει τώρα µια τυπική µορφή προγράµµατος που θα µπορούσε να αποδοθεί σχηµατικά: Είσοδος δεδοµένων -----> επεξεργασία δεδοµένων -----> έξοδος αποτελεσµάτων Παρατήρηση ως προς τη σκοπιµότητα της γραµµής 5 sum=0.0; Στη γραµµή 5 εκχωρείται στη µεταβλητή sum ηαρχικήτιµή µηδέν. Τι θα συνέβαινε αν δεν είχε εκχωρηθεί η τιµή αυτή στην αρχή του προγράµµατος; Στην περίπτωση αυτή, η πρώτη γραµµή στην οποία θα είχαµε εκχώρησητιµής στην sum θα ήταν η γραµµή 7 sum=sum+a1;αλλά, ηεντολή αυτή προϋποθέτει ήδη ότι η sum έχει κάποια αρχική τιµή η οποία θα χρησιµοποιηθεί στο δεξιό µέλος της εντολής εκχώρησης προκειµένου να γίνει η εκχώρηση µιας νέας τιµής της sum στο αριστερό µέλος. Αν έχουµε παραλήψει να δώσουµε κάποια αρχική τιµήστηsum τότε κατά την εκτέλεση του προγράµµατος η sum παίρνει ανεξέλεγκτα µια τυχαία τιµή από το πρόγραµµα. Αυτή είναι µία βασική διαφορά της C σε σχέση µε άλλες γλώσσες, όπου αν παραλείψουµε την εκχώρηση αρχικής τιµής σε µια µεταβλητή αυτή παίρνει αυτόµατα την τιµή µηδέν. Τονίζεται ότι στη C οι µεταβλητές δεν θεωρούνται ότι έχουν αρχικά τιµή µηδέν. Εποµένως, η εκχώρηση µιας τιµής σε µια µεταβλητή πρέπει υποχρεωτικά να γίνεται προτού να χρησιµοποιηθεί η µεταβλητή αυτή στο δεξιό µέλος κάποιας άλλης εντολής εκχώρησης του προγράµµατος. Επαναληπτική διαδικασία - Οβρόγχοςfor Το 3ο πρόγραµµα είναι σίγουρα καλύτερο από το 2ο πρόγραµµα στο ότι επιτρέπει την εισαγωγή των πέντε αριθµών από το πληκτρολόγιο και όχι ως µέρος του προγράµµατος. Παρ' όλα αυτά και το 13

πρόγραµµα αυτό έχει σοβαρούς περιορισµούς. Ο σηµαντικότερος περιορισµός είναι ότι το πλήθος των δεδοµένων είναι αναγκαστικά πέντε. Είναι όµως δυνατό να θέλουµε να βρούµε το µέσο όρο πολύ περισσότερων δεδοµένων από 5. Εστω π.χ. ότι θέλαµε το µέσο όρο 100 αριθµών. Είναι σαφές ότι δεν θα ήταν καθόλου πρακτικό να γράψουµε έναν κώδικα µε εκατό ζευγάρια εντολών του τύπου scanf("%f",a1), και sum+=a1 και οµοίως για το a2, a3,...,a100. εδοµένου ότι και τα εκατό ζεύγη εντολών θα εκτελούσαν την ίδια επαναληπτική διαδικασία (δηλαδή την εισαγωγή από το πληκτρολόγιο ενός αριθµού και την πρόσθεση του αριθµού αυτού στην τρέχουσα τιµή της sum), θα ήταν σκόπιµο να υπάρχει µία εντολή που να υλοποιεί αυτόµατα την επαναληπτική αυτή διαδικασία. Η εντολή που υλοποιεί µια επαναληπτική διαδικασία είναι η εντολή βρόγχου for. Η σύνταξη της εντολής for φαίνεται από το εξής "βελτιωµένο"4οπρόγραµµα: 4ο Πρόγραµµα Γραµµή #include <stdio.h> 1 int main() 2 { 3 float sum=0,a,av; 4 int i; 5 for (i=1; i<=100; i+=1) 6 { 7 scanf("%f",&a); 8 sum+=a; 9 10 av=sum/100.0; 11 printf("average value = %f",av); 12 return 0; 13 14 Γραµµή 4 float sum=0,a,av; Στη γραµµή 4 βλέπουµε ήδη µια µικρή αλλαγή σε σχέση µε το προηγούµενο πρόγραµµα. Παρατηρούµε ότι υπάρχει όχι µόνο η δήλωση της µεταβλητής sum ως πραγµατική, αλλά ταυτόχρονα και η εκχώρηση της τιµής µηδέν στη sum. Αυτήησύνταξηείναιµια διευκόλυνση της C. Μας επιτρέπει δηλαδή να δηλώνουµε και να ορίζουµε ταυτόχρονα την αρχική εκχώρηση τιµής σε µια µεταβλητή. Γραµµή 5 και 6 int i; for (i=1; i<=100; i+=1) { εντολές στο εσωτερικό του βρόγχου Η καρδιά του προγράµµατος είναι ο επαναληπτικός βρόγχος που ορίζεται στη γραµµή 6. Η γραµµή 6 for(i=1; i<=100; i+=1) έχει την εξής σηµασία: "Η ακέραιη µεταβλητή i να ξεκινήσει από την τιµή 1. Να εκτελεστούν οι εντολές που βρίσκονται στο εσωτερικό του βρόγχου ανάµεσα στις δύο αγκύλες του βρόγχου. Μόλις εκτελεσθεί και η τελευταία εντολή στο εσωτερικό του βρόγχου να επιστρέψει η ροή του προγράµµατος στη γραµµή 6 που περιέχει τη εντολή for. Η ακέραιη µεταβλητή i να αυξηθεί κατά ένα. Να ελεγχθεί αν είναι αληθής η συνθήκη i µικρότερο ή ίσο του 100. Αν αυτό ισχύει να εκτελεστεί µία ακόµη επανάληψητουβρόγχου." 14

Αυτό σηµαίνει ότι η ακέραιη µεταβλητή i θα πάρει αρχικά την τιµή 1. Στη συνέχεια θα εκτελεσθούν οι εντολές στο εσωτερικό του βρόγχου. Στη συνέχεια η i θα αυξηθεί κατά ένα (δηλαδή θα γίνει ίση µε 2) και θα εκτελεσθούν ξανά οι εντολές στο εσωτερικό του βρόγχου. Στη συνέχεια η i θα αυξηθεί κατά ένα (δηλαδή θα γίνει ίση µε 3) και θα εκτελεσθούν ξανά οι εντολές στο εσωτερικό του βρόγχου, κ.ο.κ., µέχρι η i να γίνει ίση µε 101. Τότε η συνθήκη που έχουµε θέσει στο δεύτερο σκέλος της εντολής for (δηλ. το i να είναι µικρότερο ή ίσο του 100) δεν είναι πλέον αληθής. Αυτό σηµαίνει ότι το πρόγραµµα θα ξεφύγει τελείως από το βρόγχο και θα εκτελέσει την αµέσως επόµενη εντολή µετά την αγκύλη η οποία κλείνει το βρόγχο. Παρατηρήσεις σχετικά µε τη σύνταξη του for Σε αντίθεση µε άλλες γλώσσες, στη C υπάρχει πολύ µεγάλη ευελιξία ως προς την αποδεκτή σύνταξη των τριών σκελών στο εσωτερικό της παρένθεσης της εντολής for. Εδώ δώσαµε τη σύνταξη που είναι πλησιέστερα προς την αντίστοιχη σύνταξη των εντολών βρόγχου σε άλλες γλώσσες προγραµµατισµού. Εστω και µ' αυτή την οπτική γωνία, αξίζει να σηµειωθεί ότι 1) Η µεταβλητή i δεν είναι υποχρεωτικά ακέραιη ούτε οφείλει να ξεκινάει από την τιµή 1(πρέπει όµως να είναι δηλωµένη όπως εδώ στη γραµµή 5 του προγράµµατος) 2) Η περάτωση του βρόγχου γίνεται όταν πάψει να ισχύει η συνθήκη στο µεσαίο σκέλος της εντολής for. Μπορούµε να έχουµε πολύ γενικότερες συνθήκες απ 'οτι η απλή συνθήκη i<= ενός αριθµού. 3) Το βήµα της προόδου της i µπορεί να είναι διάφορο του 1. Π.χ. µπορούµε ναέχουµε i+=3 που σηµαίνει η µεταβλητή i να αυξάνεται µε βήµα 3. 4) Στην περίπτωση του βήµατος 1, υπάρχει και µία συντοµευµένη γραφή της εντολής i+=1. Η εντολή i++ αυξάνει την µεταβλητή i κατά 1, όπως και η εντολή i+=1. Αυτήησυντοµευµένη γραφή είναι γενικότερα επιτρεπτή και όχι µόνο ως τµήµα τηςεντολήςfor. 5) Αν στο εσωτερικό του βρόγχου εκτελείται µόνο µία εντολή, τότε επιτρέπεται να παραληφθούν οι αγκύλες και να γραφεί η µοναδική εντολή αµέσως µετά το κλείσιµο της παρένθεσης της for, ακολουθούµενη από ερωτηµατικό. Π.χ. οι γραµµές κώδικα for(i=1; i<=5; i++) { sum+=a; µπορούν να αποδοθούν τελείως ισοδύναµα ως for(i=1; i<=5; i++) sum+=a; παραλείποντας τις αγκύλες. Ως ακραίο παράδειγµα, ηεντολή for(i=1; i<=5; i++); σηµαίνει να εκτελεσθεί ο βρόγχος που προβλέπεται χωρίς να υπάρχει καµµία εντολή στο εσωτερικό του βρόγχου. Εδω δηλαδή απλά το i σε κάθε βήµα θα αυξάνει κατά ένα, µέχρι να γίνει ίσο µε 6 οπότε το πρόγραµµα θαεξέλθειαπότηνεκτέλεσητουβρόγχου. Τέτοιοι βρόγχοι δίνονται καµµιά φορά για να καθυστερεί"τεχνητά" η ροή ενός προγράµµατος, µια και χρειάζεται λίγος χρόνος για να εκτελεστεί έστω και ένας βρόγχος κενός εσωτερικών εντολών. 15

Γραµµή 6 ως 10 for (i=1; i<=100; i+=1) { scanf("%f",&a); sum+=a; Επιστρέφουµε στην επεξήγηση του προγράµµατος 4. Λόγω του επαναληπτικού βρόγχου που ορίζεται στη γραµµή 6, θα εκτελεσθεί 100 φορές το ζεύγος των εντολών στο εσωτερικό του βρόχου. Σε κάθε επανάληψη, λόγω της scanf("%f",&a); στη γραµµή 8 θα σταµατάει η ροή του προγράµµατος µέχρι ο χρήστης να δώσει ένα πραγµατικό αριθµό από το πληκτρολόγιο, ο οποίος θα εκχωρείται ως τρέχουσα τιµή τηςµεταβλητής a. Στη συνέχεια, στη γραµµή 9 sum+=a; η µεταβλητή sum θα προσαυξάνεται κατά την τρέχουσα τιµή της a, ακριβώς δηλαδή κατά την τιµή που εισήγαγε αµέσως προηγουµένως ο χρήστης από το πληκτρολόγιο. Στην επόµενη επανάληψη θα ανανεώνονται οι τιµές τόσο της a όσο και της sum. Στο τέλος του επαναληπτικού βρόγχου στην sum θα έχουν προστεθεί διαδοχικά εκατό τιµές που εισήχθησαν από το πληκτρολόγιο. Γραµµή 11 ως 13 av=sum/100.0; printf("average value = %f",av); Οι γραµµές 11 και 13 είναι οι ίδιες µε τοπροηγούµενο πρόγραµµα. Στην γραµµή 11 εκχωρείται στην av ητιµή που αντιστοιχεί στο µέσο όρο των 100 εισαχθέντων τιµών και στη γραµµή 12 τυπώνεται το αποτέλεσµα (τιµή της µεταβλητής av) στην οθόνη σε µορφή πραγµατικού δεξιά από το συνοδευτικό κείµενο Average value =. Κάνοντας το πρόγραµµα "Φιλικό προς το χρήστη" Το πρόγραµµα 4 είναι ήδη πολύ πιο αποτελεσµατικό από το πρόγραµµα 3, αλλά έχει και αυτό ανεπιθύµητους περιορισµούς. Ο κυριότερος περιορισµός είναι ότι η συνθήκη i<=100 στο µεσαίο σκέλος του βρόγχου επιβάλλει να γίνονται 100 επαναλήψεις του βρόγχου. Αυτό σηµαίνει ότι ο χρήστης θα πρέπει να εισαγάγει υποχρεωτικά 100 αριθµούς και το πρόγραµµα τουείναιάχρηστοαν επιθυµεί να βρεί το µέσο όρο άλλου πλήθους αριθµών π.χ. 10, 20 ή 99 αριθµών. Εποµένως µια πρώτη αλλαγή είναι να επιτρέψουµε στον χρήστη να καθορίζει εκείνος από το πληκτρολόγιο πόσους αριθµούς θέλει να εισάγει και να υπολογίζεται ο µέσος όρος αυτών. Το επόµενο πρόγραµµα 5 υλοποιεί την τροποποίηση αυτή. Πρόγραµµα 5 Γραµµή #include <stdio.h> 1 int main() 2 { 3 float sum=0,a,av; 4 int i,num; 5 scanf("%d",&num); 6 for (i=1; i<=num; i++) { 7 scanf("%f",&a); 8 sum+=a; 9 10 av=sum/num; 11 printf("average value = %f",av); 12 return 0; 18 19 16

Παρατηρούµε ότι οι αλλαγές είναι στις γραµµές 5 ως 7 και στη γραµµή 11. Στη γραµµή 5 έχει δηλωθεί µία επιπλέον ακέραιη µεταβλητή µε όνοµα num. Η µεταβλητή αυτή θα προσδιορίζει το πλήθος των επιθυµητών επαναλήψεων του βρόγχου for της γραµµής 7. Η τιµή της num επιθυµούµε να εισάγεται από τον ίδιο το χρήστη µέσω του πληκτρολογίου. Αυτό γίνεται µε την εντολή scanf στη γραµµή 6. H scanf στη γραµµή 6 θα ζητήσει την εισαγωγή µίας ακέραιης τιµής (λόγω της δήλωσης µορφής "%d") από το πληκτρολόγιο, και µετά το Enter του χρήστη θα εκχωρήσει την τιµή αυτή στη µεταβλητή num. Προσέξτε επίσης την αλλαγή στη γραµµή 11. Ο µέσος όρος είναι η τιµή που εκχωρείται στη µεταβλητή av και είναι ίσος µε το άθροισµα δια του πλήθους των δεδοµένων, δηλ. sum/num. Πράξεις ανάµεσα σε µεταβλητές διαφορετικού τύπου. Εδώ υπάρχει µία λεπτοµέρεια που δε γίνεται αµέσως αντιληπτή, αλλά πρέπει να της δώσουµε µεγάλη σηµασία. Η αιτούµενη πράξη sum/num είναι µια πράξη ανάµεσα στην τιµή της µεταβλητής sum, που έχει δηλωθεί ως πραγµατική απλής ακρίβειας, και στην τιµή της µεταβλητής num που έχει δηλωθεί ως ακέραιη. Εποµένως τίθεται το ερώτηµα αν είναι δυνατή µια τέτοια πράξη ανάµεσα σε δύο διαφορετικούς τύπους µεταβλητών, και αν ναι, τότε τί τύπου θα είναι το εξαγόµενο (δηλ. πραγµατικός ή ακέραιος). Εδώ η C έχει µεγαλύτερη ευελιξία απ' ότι άλλες γλώσσες, όπως π.χ. η fortran. Ισχύει ο κανόνας ότι "ο τύπος µεγαλύτερης ακρίβειας υπερισχύει του τύπου µικρότερηςακρίβειας". Εποµένως στην πράξη µεταξύ µεταβλητής int και µεταβλητής float, η τιµή της µεταβλητής int θα µετατραπεί προσωρινά σε τύπου float και η πράξη θα δώσει εξαγόµενο τύπου float. Οµοίως, αν είχαµε τη µία µεταβλητή float και την άλλη double, η τιµή της float θα µετατρεπόταν προσωρινά σε τύπου double και το εξαγόµενο θα ήταν τύπου double. Εκτύπωση µηνυµάτων στην οθόνη Το πρόγραµµα 5 είναι τώρα ουσιαστικά πλήρες µε την έννοια ότι επιλύει το πρόβληµα πουτέθηκε αρχικά, δηλ: να γραφεί ένα πρόγραµµα το οποίο υπολογίζει το µέσο όρο ορισµένων δεδοµένων αριθµών. Ωστόσο χρειάζεται ακόµη µία βελτίωση η οποία, αν και όχι ουσιώδης για τη ροή του προγράµµατος, είναι ουσιώδης για το χρήστη. Η απαιτούµενη βελτίωση αφορά την εκτύπωση ορισµένων ενηµερωτικών µηνυµάτων τα οποία θα καταστήσουν το πρόγραµµα φιλικό προς το χρήστη την ώρα που ο χρήστης αλληλεπιδρά µε τηροήτουπρογράµµατος. Για να γίνει αυτό αντιληπτό, ας δούµε τί θα συµβεί στην οθόνη του υπολογιστή µόλις κληθεί το εκτελέσιµοαρχείοπουθαπαραχθείαπότηµεταγλώτιση και διασύνδεση του προγράµµατος 5. Οι πρώτες πέντε γραµµές του προγράµµατος (έναρξη, δηλώσεις µεταβλητών) δεν προκαλούν κάποιο "ορατό" φαινόµενο στην οθόνη. Το πρώτο ορατό φαινόµενο στην οθόνη προκαλείται από την εντολή scanf στη γραµµή 6. Λόγω της scanf, θα εµφανιστεί στην οθόνη ένας κέρσορας ο οποίος θα αναβοσβήνει περιµένοντας από το χρήστη να εισαγάγει µία ακέραιη τιµή από το πληκτρολόγιο. Ο προγραµµατιστής γνωρίζει ότι στο σηµείο αυτό ο χρήστης θα πρέπει να εισαγάγει τον πληθικό αριθµό των δεδοµένων του. Οχρήστηςόµως, ειδικά αν δεν είναι ενήµερος για τη δοµή τουπηγαίου κώδικα, δεν έχει ιδέα τί πρέπει να κάνει! Θα κοιτάει εποµένως µε απορία τον κέρσορα που αναβοσβήνει και θα διερωτάται ως προς το τί πρέπει να κάνει. Μια ιδέα θα ήταν να έχουµε τυπώσει και ένα"εγχειρίδιο οδηγιών" του προγράµµατος, το οποίο να εξηγεί στο χρήστη τί πρέπει να κάνει αµέσως µόλις τρέξει το πρόγραµµα. Μια καλύτερη, ωστόσο, ιδέα είναι νατυπώνειτοίδιοτοπρόγραµµα έναενηµερωτικό µήνυµα ώστε να κατευθύνει το χρήστη. Με την εκτύπωση ενηµερωτικών µηνυµάτων και την παροχή άλλων διευκολύνσεων ένα πρόγραµµα γίνεται φιλικό προς το χρήστη. Οι διεργασίες αυτές δεν προσθέτουν τίποτα στην ουσία του αλγόριθµου που επιλύει ένα πρόβληµα, βοηθούν όµως πολύ στην αλληλεπίδραση του χρήστη µε το πρόγραµµα. 17

Το ακόλουθο πρόγραµµα 6 είναι το ίδιο µε τοπρόγραµµα 5, έχουν όµως προστεθεί και τρεις εντολές printf που προσφέρουν ενηµερωτικά µηνύµατα προς το χρήστη: 6ο Πρόγραµµα #include <stdio.h> int main() { float sum=0,a,av; int i,num; printf("program calculates the average value of N numbers\n"); printf("how many numbers do you want? \n"); scanf("%d",&num); for (i=1; i<=num; i++) { printf("give the value of number %d\n",i); scanf("%f",&a); sum+=a; av=sum/num; printf("average value = %f",av); return 0; Η πρώτη εντολή printf("this Program calculates the average value of N numbers\n"); στην αρχή του προγράµµατος τυπώνει ένα ενηµερωτικό µήνυµα στα αγγλικά που µεταφράζεται στα ελληνικά "Αυτό το πρόγραµµα υπολογίζειτη µέση τιµήναριθµών". Αυτό το µήνυµα είναιένα"καλωσόρισµα" στο πρόγραµµα που προηγείται οποιασδήποτε διαδικασίας. Η επόµενη εντολή printf("how many numbers do you want? \n"); βοηθάει το χρήστη σηµαντικά. Το αγγλικό µήνυµα που θα εκτυπωθεί µεταφράζεται "Πόσους αριθµούς θέλεις?". Αµέσως µετά την εκτέλεση της printf, ακολουθεί η εντολή scanf("%d",&num);η οποία κάνει τον κέρσορα να αναβοσβήνει στην οθόνη περιµένοντας την εισαγωγή κάποιου αριθµού. Ο χρήστης, έχοντας διαβάσει από την οθόνη το µήνυµα "Πόσους αριθµούς θέλεις?" αντιλαµβάνεται ότι εδώ θα πρέπει να εισαγάγει από το πληκτρολόγιο τον πληθικό αριθµό των δεδοµένων του. Στη συνέχεια το πρόγραµµα προκαλεί την εισαγωγή των δεδοµένων και την άθροισή τους. Πριν από την εντολή scanf("%f",&a);υπάρχει ακόµη έναµήνυµα που κατευθύνει το χρήστη. Η εντολή printf("give the value of number %d\n",i); θα τυπώσει ένα µήνυµα που µεταφράζεται στα ελληνικά "δώσε την τιµή του αριθµού...". Προσέξτε πώς έχει ενταχθεί η εντολή λειτουργικά µέσα στο βρόγχο. Η εντολή printf("give the value of number %d \n",i) θα εκτελεσθεί τόσες φορές όσες και οι επαναλήψεις του βρόγχου. Η ακριβής σηµασία της εντολής είναι :"τύπωσε στην οθόνη το κείµενο Give the value of number και δίπλα στο κείµενο αυτό τύπωσε την τρέχουσα τιµή της µεταβλητής i µε µορφή ακεραίου. Στη συνέχεια άλλαξε γραµµή εκτύπωσης στην οθόνη". Καθώς το i προχωράει µε βήµα 1 σε κάθε επανάληψη του βρόγχου, στη πρώτη επανάληψη του βρόγχου η εκτέλεση της εντολής θα τυπώσει στην οθόνη το µήνυµα Give the value of number 1 Στη συνέχεια θα εκτελεστούν κανονικά οι επόµενες δύο εντολές κάτω από την printf. Στη συνέχεια ο βρόγχος θα έχει µια δεύτερη επανάληψη όπου το i θα αυξηθεί κατά 1 και θα γίνει ίσο µε 2. 18

Εποµένως, η επανάληψη της εκτέλεσης της printf("give the value of number %d \n",i) θα δώσει τώρα: Give the value of number 2 Οµοίως, στην τρίτη επανάληψη θα έχουµε τηνεκτύπωσητουµηνύµατος Give the value of number 3 και ούτω καθεξής. Παρατηρούµε εδώ ότι έχουµε τη δυνατότητα να χρησιµοποιήσουµε την τιµή της µεταβλητής i(ή οποία µεταβάλλεται κατά τη διάρκεια εκτέλεσης του βρόγχου) σε εντολές που βρίσκονται στο εσωτερικό του βρόγχου. Αυτό είναι µία σηµαντική διευκόλυνση. Χαρακτήρες διαφυγής Αφήσαµε µία λεπτοµέρεια για το τέλος. Μέσα στο κείµενο ανάµεσα στα διπλά εισαγωγικά της printf υπάρχουν και δύο χαρακτήρες \n οι οποίοι δεν εκτυπώνονται στην οθόνη µε τη µορφή τους (δηλ. ανάποδη κάθετος ακολουθούµενη από το γράµµα n). Οι χαρακτήρες αυτοί αντιστοιχούν σε ουσιαστικά σε ένα χαρακτήρα, ο οποίος ονοµάζεται χαρακτήρας διαφυγής και προκαλεί ορισµένο αποτέλεσµα στη µονάδα εξόδου. Ο χαρακτήρας διαφυγής \n σηµαίνει "αλλαγή γραµµής στην οθόνη". Είναι απαραίτητο να βάζουµε το χαρακτήρα αυτό µέσα στα διπλά εισαγωγικά της printf αν θέλουµε τα µηνύµατα να τυπώνονται το ένα κάτω από το άλλο και όχι δίπλα στο άλλο. Αλλοι χαρακτήρες διαφυγής είναι: Χαρακτήρας διαφυγής Νέα Γραµµή \n Οριζόντιος στηλογνώµονας (tab) \t Κατακόρυφος στηλογνώµονας \v Οπισθοχώρηση \b Αλλαγή σελίδας \f Ακουστικό σήµα \a Ανάποδη κάθετος \\ Εισαγωγικό \ ιπλό εισαγωγικό \ 19