ΑΣΚΗΣΗ 4: ΟΜΕΣ ΒΑΣΙΚΩΝ ΒΡΟΧΩΝ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η χρήση των βασικών βρόχων της Γλώσσας Προγραµµατισµού C οι οποίοι χρησιµοποιούνται για την εκτέλεση µιας ή περισσότερων προτάσεων για ένα ορισµένο αριθµό επαναλήψεων. Η εργαστηριακή άσκηση έχει σαν σκοπό να κατανοήσει ο φοιτητής τις ακόλουθες δοµές ελέγχου: τον βρόχο for, τον βρόχο while, τον βρόχο do..while, την πρόταση break και την πρόταση switch. 1. Η ΕΝΝΟΙΑ ΤΩΝ ΒΡΟΧΩΝ Οι δυνατότητες επανάληψης των υπολογιστών τους κάνουν χρήσιµα εργαλεία για επεξεργασία µεγάλων ποσοτήτων πληροφοριών. Οι επόµενοι παράγραφοι παρουσιάζουν τις δοµές βρόχων της C. Οι δοµές αυτές περιλαµβάνουν ισχυρές, συνοπτικές και αποδοτικές εντολές ελέγχου, παρόµοιες µε αυτές άλλων γλωσσών προγραµµατισµού. Η εργαστηριακή άσκηση καλύπτει τις παρακάτω βρόχους επανάληψης της C : Ο βρόχος for Ο βρόχος while Ο βρόχος do while H πρόταση break H πρόταση switch 1.1 Ο βρόχος for 1.1.1 Περιγραφή Ο βρόχος for είναι µια δοµή προγραµµατισµού της C η οποία εκτελεί έναν αριθµό µιας ή περισσότερων προτάσεων για ένα ορισµένο αριθµό επαναλήψεων. Μερικές φορές ονοµάζεται βρόχος for, επειδή τυπικά η εκτέλεση του προγράµµατος επαναλαµβάνεται µέσω αυτής της πρότασης περισσότερες από µια φορές. Ο βρόχος for έχει την ακόλουθη δοµή: for (αρχικοποίηση;συνθήκη;αύξηση) µία ή περισσότερες προτάσεις της C; Όπου αρχικοποίηση, συνθήκη και αύξηση είναι εκφράσεις της C και στην συνέχεια ακολουθούν µία ή περισσότερες προτάσεις της C. /* Ektipwsi twn aritmwn 5-10 stin othoni toy ypologisti */ int count; for(count=5;count<=10;count++) 1/7
printf("%d\n",count); 5 6 7 8 9 10 1.1.2 Ένθετοι βρόχοι for Οποιαδήποτε πρόταση C µπορεί να γραφεί µέσα στο σώµα ενός βρόγχου for -ακόµα και µέσα σε έναν άλλο βρόγχο for. Όταν γράφετε ένα βρόχο µέσα σε ένα βρόχο, δηµιουργείτε ένθετους βρόχους. /* Parousiazei toys arithmoys 1-4 me entheto broxo 4 fores */ int times,num; for(times=1;times<=4;times++) for(num=1;num<=3;num++) printf("%d ",num); printf("\n"); 2/7
1.2 Ο βρόχος while 1.2.1 Περιγραφή Ο βρόχος while είναι µια πρόταση διακλάδωσης που ελέγχει την εκτέλεση µία ακολουθία προτάσεων της C. O βρόχος while είναι παρόµοιος µε τον βρόχο for προκαλούν την κατ επανάληψη εκτέλεση ενοτήτων του προγράµµατος όσο ισχύει µια ορισµένη συνθήκη. Η σύνταξη της πρότασης είναι η ακόλουθη: while (συνθήκη) µία ή περισσότερες προτάσεις της C; /* Parousiazei toys arithmoys 8-15 me tin xrisi toy while */ int times; times=8; while(times<16) printf("%d\n",times); times++; Στην οθόνη του υπολογιστή εµφανίζεται το παρακάτω αποτέλεσµα 8 9 10 11 12 13 14 15 1.2.2 Οι διαφορές µεταξύ των προτάσεων if και while Πολλοί αρχάριοι προγραµµατιστές συγχέουν τις προτάσεις if µε τις δοµές ελέγχου while. Οι βρόχοι while και do..while επαναλαµβάνουν µια ενότητα κώδικα µια ή περισσότερες φορές, ανάλογα µε τη συνθήκη που ελέγχεται. Η πρόταση if εκτελεί ή όχι µια ενότητα κώδικα, και αν ναι, µόνο µια φορά. 1.3 O βρόχος do-while H τρίτη δοµή βρόχου είναι ο βρόχος do while που εκτελεί µια σειρά προτάσεων, εφ όσον είναι αληθής µια καθορισµένη συνθήκη. Ο βρόχος do while ελέγχει την συνθήκη στο τέλος κάθε βρόγχου και όχι στην αρχή όπως κάνουν οι βρόγχοι for και while. H δοµή του βρόχου είναι η ακόλουθη: do ενότητα µίας ή περισσότερες προτάσεις της C; 3/7
while (συνθήκη); Οι προτάσεις που σχετίζονται µε ένα βρόχο do while εκτελούνται πάντοτε τουλάχιστον µια φορά. Αυτό συµβαίνει επειδή η συνθήκη ελέγχου εκτιµάται στο τέλος και όχι στην αρχή του βρόχου. Αντιθέτως οι βρόχοι for και while εκτιµούν την συνθήκη ελέγχου στην αρχή του βρόχου. int selection; selection=0; do printf("\n"); printf("\n 1-Add a Record"); printf("\n 2-Change a Record"); printf("\n 3-Delete a Record"); printf("\n 4-Quit"); printf("\n Enter a selection:"); scanf("%d",&selection); while(selection<1 selection > 4); printf("%\n You have chosen option %d\n",selection); 1-Add a Record 2-Change a Record 3-Delete a Record 4-Quit Enter a selection:7 1-Add a Record 2-Change a Record 3-Delete a Record 4-Quit Enter a selection:3 You have chosen option 3 1.4 H πρόταση break H πρόταση break χρησιµοποιείται για να τερµατίσετε ένα βρόχο. Η σύνταξη της break είναι η ακόλουθη: H πρόταση break γράφεται οπουδήποτε σε ένα πρόγραµµα C, αλλά συνήθως στο σώµα ενός βρόχου while ή do..while ώστε να τερµατίσει το βρόχο νωρίτερα. 4/7
int selection; char ans; printf("here are the numbers from 1 to 15\n"); selection=1; while(selection<=20) printf("%d\n",selection ); printf("\n Do you want to see another (Y/N)"); scanf("%c",&ans); if((ans== N ) (ans== n )) break ; scanf("%d",&selection); printf("\n That s all"); Here are the numbers from 1 to 15 1 Do you want see another (Y/N)?Y 2 Do you want see another (Y/N)?Y 3 Do you want see another (Y/N)?Y 4 Do you want see another (Y/N)?N That s all 1.5 Η πρόταση switch H πρόταση switch καλείται συχνά πρόταση πολλαπλών επιλογών, επειδή επιτρέπει την επιλογή από πολλές εναλλακτικές λύσεις. H σύνταξη της πρότασης switch είναι η ακόλουθη: switch (παράσταση) case παράσταση 1: µία ή περισσότερες προτάσεις της C; case παράσταση2: µία ή περισσότερες προτάσεις της C; case παράσταση3: µία ή περισσότερες προτάσεις της C; default: µία ή περισσότερες προτάσεις της C; 5/7
H παράσταση µπορεί να είναι ακέραια παράσταση, ένας χαρακτήρας, µια σταθερά ή µια µεταβλητή. Οι υποπαραστάσεις (παραστάσεις 1, παραστάσεις 2, κ.λ.π.) µπορεί να είναι ακέραια παράσταση, ένας χαρακτήρας, µια σταθερά ή µια µεταβλητή. Ο αριθµός των παραστάσεων case µετά την switch καθορίζεται από την εφαρµογή. Οι (µια ή περισσότερες προτάσεις C) µπορεί να είναι οποιαδήποτε ενότητα κώδικα C. H γραµµή default είναι προαιρετική. int selection; printf("enter a number between 1 and 3\n"); scanf("%d",&selection); switch(selection) case 1: printf("you entered 1"); case 2: printf("you entered 2"); case 3: printf("you entered 3"); default: printf("out of range, Try again"); Enter a number from 1 to 3 1 You entered 1 6/7
2. ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ 1. Να γράψετε κώδικα σε C που να εκτυπώνει στην οθόνη του υπολογιστή 20 φορές το µήνυµα Computers are fun!. Το πρόγραµµα που θα γράψετε θα πρέπει να χρησιµοποιεί το βρόχο while. 2. Nα γραφεί ένα πρόγραµµα που να ελέγχει το password ενός χρήστη όταν κάνει log in σε ένα υπολογιστή. O χρήστης πρέπει να γράψει σωστά σύνθηµα σε τρεις προσπάθειες. Αν δε γράψει σωστά το σωστό σύνθηµα, το πρόγραµµα τερµατίζεται. Να θεωρήσετε οτι οι µεταβλητές password και log_in είναι ακέραιες µεταβλητές 3. Να εκτελέσετε τα ακόλουθα: Να υπολογίσετε το παραγοντικό ενός αριθµού n (Σηµείωση: Το παραγοντικό ενός αριθµού γράφεται ως n! και ορίζεται ως εξής; n!=n(n-1)(n-2) Να γραφεί ένα πρόγραµµα που να εκτιµά την τιµή της µαθηµατικής σταθεράς e χρησιµοποιώντας τον µαθηµατικό τύπο e = 1 + % %! + % '! + % (! + % )! Να γραφεί ένα πρόγραµµα που να εκτιµά την τιµή της ακόλουθης µαθηµατικής έκφρασης e + = 1 + + %! + + '! + + (! + + )!. Για τον υπολογισµό του ex να χρησιµοποιηθεί ο βρόχος while. 4. Να γράψετε πρόγραµµα που να αθροίζει µια σειρά ακεραίων που πληκτρολογεί ο χρήστης. Υποθέστε ότι ο πρώτος ακέραιος που δίνει ο χρήστης καθορίζει το πλήθος των αριθμών που αποµένουν να εισαχθούν. Να υπολογίσετε το µέσο όρο των αριθµών που θα εισαχθούν. 5. Να γραφεί ένα πρόγραμμα, το οποίο να ζητά από το χρήστη 5 ακεραίους αριθμούς με δομή επανάληψης. Στη συνέχεια το πρόγραμμα να υπολογίζει το άθροισµα των άρτιων αριθµών, να υπολογίζει το άθροισµα των περιττών αριθµών και να τυπώνει τα αντίστοιχα αποτελέσματα. 6. Να γραφεί πρόγραμμα που να υπολογίζει την τιµή του π µε βάση την ακόλουθη σχέση π = 4 ) ( + ) / ) 0 + ) 1 7. Να γραφεί πρόγραµµα που µέσω ενός µενού επιλογών να υπολογίζει το άθροισμα, τη διαφορά, το γινόμενο ή το πηλίκο 2 πραγματικών αριθμών που εισάγει ο χρήστης, χρησιµοποιώντας την εντολή switch. 8. Να γραφεί πρόγραµµα που υπολογίζει το ενοίκιο στάθµευσης σε ένα σταθµό µε πολλούς ορόφους. Ρωτήστε το χρήστη αν οδηγεί Ι.Χ. ή φορτηγό. Να φροντίσετε, ώστε να υπάρχει έλεγχος της απάντησης του χρήστη προκειμένου να επαναλάβει την επιλογή αν εισάγει λανθασμένο χαρακτήρα. Η χρέωση να γίνει ως εξής: 2 για την πρώτη ώρα, 3 για τη δεύτερη και 4 για περισσότερες από 2 ώρες. Αν το όχηµα είναι φορτηγό προσθέστε 1 στη συνολική χρέωση. 7/7