Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 6: Εντολές επανάληψης Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και την Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Σκοπός της ενότητας είναι να κατανοήσει ο φοιτητής τις εντολές επανάληψης της C, οι οποίες επιτρέπουν την επαναληπτική εκτέλεση του ίδιου τμήματος ενός προγράμματος. 4
Περιεχόμενα ενότητας Εντολή for. Ένθετοι βρόχοι for. Εντολή goto. Ετικέτα (label). Εντολή break. Εντολή continue. 5
Εντολές επανάληψης Σε κάποιες περιπτώσεις υπάρχουν ενέργειες οι οποίες επαναλαμβάνονται περισσότερες από μία φορές. Για παράδειγμα, υπάρχουν ενέργειες οι οποίες μπορεί να επαναλαμβάνονται έπ άπειρο, άλλες που μπορεί να επαναλαμβάνονται συγκεκριμένο αριθμό φορών ή άλλες που μπορεί να επαναλαμβάνονται συνεχώς για ακαθόριστο αριθμό φορών. Στη C υπάρχουν τρεις εντολές επανάληψης: a. εντολή for b. εντολή while c. εντολή do-while 6
Εντολή for (1) Η εντολή for χρησιμοποιείται όταν ένας αριθμός εντολών θέλουμε να επαναληφθεί συγκεκριμένες φορές και είναι γνωστός ο αριθμός των επαναλήψεων. θεωρείται σαν η πιο ευέλικτη μορφή βρόχου της γλώσσας C. Η εντολή for ελέγχεται συνήθως μέσω μιας μεταβλητής από την τιμή της οποίας εξαρτάται η επαναληπτική εκτέλεση του βρόγχου. Παίρνει μια αρχική τιμή και μετά από κάθε εκτέλεση αυξάνεται ή μειώνεται. 7
Γενικός τύπος (1) for(αρχική_έκφραση; συνθήκη; τελική_έκφραση) { (ομάδα εντολών όσο η συνθήκη είναι αληθής) Όταν η ομάδα εντολών αποτελείται από μία εντολή οι αγκύλες { μπορούν να παραλειφθούν. 8
Γενικός τύπος (2) 1. Η αρχική έκφραση χρησιµοποιείται για την παροχή µιας αρχικής τιµής στον µετρητή του βρόχου και εκτελείται µόνο µία φορά κατά την εισαγωγή στο βρόχο. 2. Η συνθήκη ελέγχει τον µετρητή έναντι µίας τιµής προορισµού. Αν είναι αληθής, εκτελείται η ομάδα εντολών, διαφορετικά τερματίζεται ο βρόχος for. 3. Η τελική έκφραση µεταβάλει την τιµή του µετρητή έτσι ώστε να φτάσει ο µετρητής στην τιµή προορισµού. 4. Τα βήματα (2) και (3) επαναλαμβάνονται μέχρι η τιμή της συνθήκης να γίνει ψευδής. 9
1 ο Παράδειγμα #include <stdio.h> #include <stdlib.h> /*To πρόγραμμα τυπώνει τις τιμές 1 έως 10 σε δέκα γραμμές*/ int main(void) { int i; for(i=1;i<=10;i++) printf( i=%d\n", i); system( pause ); return 0; 10
2 ο Παράδειγμα (1) #include <stdio.h> #include <stdlib.h> /*Το πρόγραμμα διαβάζει δέκα αριθμούς και υπολογίζει και εμφανίζει το άθροισμά τους*/ int main(void) { int i, sum, x; sum=0; for(i=1;i<=10;i++) { 11
2 ο Παράδειγμα (2) printf("dose arithmo\n"); scanf("%d", &x); sum=sum+x; printf("to athrisma tοn deka arithmοn einai: %d\n", sum); system("pause"); return 0; 12
Αρχική έκφραση-συνθήκη- Τελική έκφραση Σε μια εντολή for η αρχική έκφραση, η συνθήκη και η τελική έκφραση δεν είναι απαραίτητο να έχουν κάποια σχέση μεταξύ τους. Παραδείγματα: for (i=1;i<=1000;i++);// δημιουργεί απλώς μια καθυστέρηση. for (a=1;a=<1000;printf( %d\n,a++)); // εμφανίζει τους αριθμούς από το 1 έως το 1000. 13
Ένθετοι βρόχοι for Ένας βρόγχος for μπορεί να περιέχει και έναν άλλο βρόχο for. Στην περίπτωση αυτή θα πρέπει να εκτελεστεί πρώτα ο εσωτερικός βρόγχος και μετά ο εξωτερικός βρόγχος. 14
Παράδειγμα ένθετου βρόγχου #include <stdio.h> #include <stdlib.h> int main(void) {int i,j; for (i=1;i<=5;i++) { for (j=1;j<=3;j++){ printf("%d %d\n",i,j); printf("--------\n"); system("pause"); return 0; 15
Εντολή goto Mε την εντολή goto μεταφέρουμε τον έλεγχο του προγράμματος σε ένα διαφορετικό σημείο. Επειδή στη C οι προτάσεις δεν αριθμούνται, χρησιμοποιούνται ετικέτες (labels) για να σηματοδοτήσουν τα διάφορα σημεία μέσα σε ένα πρόγραμμα. 16
Ετικέτα (label) H ετικέτα είναι ένα αναγνωριστικό που ακολουθείται από μια άνω και κάτω τελεία (:). Γενικός τύπος: goto ετικέτα; Στο παρακάτω πρόγραμμα εμφανίζονται συνεχώς αριθμοί. { int a; a=0; pali: printf( %d\n,++a); goto pali; return 0; 17
Εντολή break Όταν η εντολή break βρεθεί μέσα σε μία εντολή επανάληψης for, while ή do-while, την τερματίζει πριν αυτή προλάβει να ολοκληρωθεί κανονικά. Μια εντολή επανάληψης τερματίζεται κανονικά, όταν η συνθήκη πάψει να ισχύει. Όταν όμως χρησιμοποιείται η εντολή break, η εντολή τερματίζεται απότομα ανεξάρτητα από την τιμή της συνθήκης. 18
Παράδειγμα με τη χρήση break #include <stdio.h> #include <stdlib.h> int main(void) { int x, max, i; max=-32678; for(i=1;i<=5;i++) { printf(" Δώσε ακέραιο\n"); scanf("%d",&x); if(x==-1) (1) 19
Παράδειγμα με τη χρήση break (2) { printf("h επανάληψη θα τερματιστεί απότομα"); break; if(x>max) { max=x; printf("\n"); printf("o μεγαλύτερος αριθμός που δόθηκε είναι= %d\n", max); system("pause"); return 0; 20
Εντολή continue Όταν η εντολή continue βρεθεί μέσα σε μία εντολή επανάληψης for, while ή do-while επιβάλλει την εκτέλεση της επόμενης επανάληψης παραλείποντας τις ενδιάμεσες εντολές. Ακόμη και αν υπάρχουν και άλλες εντολές μετά την continue, δε θα εκτελεστούν. Η επόμενη επανάληψη θα ξεκινήσει μόνο εφόσον ισχύει η συνθήκη. Σε περίπτωση που η συνθήκη δεν ισχύει, τότε οι επαναλήψεις τερματίζονται. 21
Βιβλιογραφία μαθήματος Kernighan, B. & Ritchie D. (1990). H Γλώσσα Προγραμματισμού C, Κλειδάριθμος, Αθήνα. Καρολίδης Δ. (2013). Μαθαίνετε εύκολα C. ISBN 978-960- 93-5034-1. Τσελίκης Γ. & Τσελίκας, Ν. (2012).C Από τη θεωρία στην Εφαρμογή (β Έκδοση). ISBN: 978-960-93-1961-4. Χατζηγιαννάκης, Ν. (2012). Η γλώσσα C σε βάθος. Κλειδάριθμος, Αθήνα. 22
Τέλος Ενότητας