Εντολές Επανάληψης

Η for:

Η γενικευμένη σύνταξη της εντολής είναι:

for (εντολή1; <ΣΥΝΘΗΚΗ>; εντολή2) ΕΝΟΤΗΤΑ  

Η ΕΝΟΤΗΤΑ μπορεί να είναι μία ή περισσότερες εντολές (block) μέσα σε άγκιστρα ({,}). Η εντολή1 μπορεί να είναι και περισσότερες από μία εντολές που συνήθως καθορίζουν κάποιες αρχικές τιμές. Η <ΣΥΝΘΗΚΗ> είναι συνήθως ο έλεγχος μιας έκφρασης συσχετισμού (ή και κάποιας λογικής πρόταση) ενώ η εντολή2 είναι συνήθως μια παράσταση που συνήθως αλλάζει τη τιμή μιας μεταβλητής που βρίσκεται στη <ΣΥΝΘΗΚΗ>. Μπορεί να είναι και πάνω από μία εντολή. Η ανάπτυξη της εντολής for είναι η εξής: 

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

Παράδειγμα:

for (i = 0; i < 10; i++)
       printf("%d\n", i);

Εκτελείται η εντολή1 (i=0) και συνεχίζει  να αυξάνει το i (εντολή2) και να τυπώνει το i (ΕΝΟΤΗΤΑ- η εντολή printf),  όσο η συνθήκη i<1,  είναι αληθής. 

Παρατηρήσεις για τη for:

Παραδείγματα:

Το παρακάτω πρόγραμμα ζητάει επαναληπτικά τους βαθμούς 10 σπουδαστών και υπολογίζει το άθροισμα των βαθμών (total) και τον μέσο όρο αυτών:

#include <stdio.h>

float bathmos;
float total = 0.0;
int counter;

main()
{
for (counter = 1; counter <= 10; counter++)
   {
      printf("Enter the score of student %d: ", counter);
      scanf("%f", &bathmos);
       /* Προσθέτω τον βαθμό στην μεταβλητή total */
       total += bathmos;
    }
printf("The total score is %lf", total);
printf("The average score is %lf", (total / 10));
}

Δείτε αυτό:

for (c='A', c <='Z' ++c)
               putchar(c);

Τυπώνονται τα κεφαλαία γράμματα της λατινικής αλφαβήτου. 

Δείτε και αυτό:

for ( ;  ; )
       { ENOTHTA }

Πρόκειται για βρόγχο που δεν σταματά ποτέ. Είναι άραγε χρήσιμοι στον προγραμματισμό;

Η εντολή while:

Σύνταξη της εντολής:

 

while (<ΣΥΝΘΗΚΗ>) 

            ΕΝΟΤΗΤΑ.


Η <ΣΥΝΘΗΚΗ> μπορεί να είναι λογική έκφραση, έκφραση συσχετισμού, αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή ή σταθερά. Η ΕΝΟΤΗΤΑ μπορεί να είναι μία ή περισσότερες εντολές (block) μέσα σε άγκιστρα ({,}). 
Η ανάπτυξη του while είναι:

Συνέχισε να εκτελείς τις εντολές της ΕΝΟΤΗΤΑΣ, όσο η <ΣΥΝΘΗΚΗ> είναι αληθής. 


Παρατηρήσεις για τη while:

Το προηγούμενο παράδειγμα με την εντολή while:

#include <stdio.h>

float bathmos;
float total = 0.0;
int counter;

main()
{
counter = 1;
while (counter < =10)
{
     printf("Enter the score of student %d: ", counter);
     scanf("%f", &bathmos);
     /* Add the current score to the total */
     total += bathmos;
     counter++;
}
printf("The total score is %lf", total);
printf("The average score is %lf", (total / 10));
}

Η do -while:

Σύνταξη της εντολής:

 

do 

     ΕΝΟΤΗΤΑ 

while (<ΣΥΝΘΗΚΗ>) 

 

Η <ΣΥΝΘΗΚΗ> μπορεί να είναι λογική έκφραση, έκφραση συσχετισμού, αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή ή και σταθερά. Η ΕΝΟΤΗΤΑ μπορεί να είναι μία ή περισσότερες εντολές (block) μέσα σε άγκιστρα ({,}). 
Η ανάπτυξη του do while είναι:

Εκτέλεση της ENOTHTAΣ μέχρι η ΣΥΝΘΗΚΗ να γίνει ψευδής.


Παρατηρήσεις για τη while:

Τo ίδιο παράδειγμα με την εντολή do-while

#include <stdio.h>

float bathmos;
float total = 0.0;
int counter;

main()
{
counter = 1;
do
{
    printf("Enter the score of student %d: ", counter);
    scanf("%f", &bathmos);
    /* Add the current score to the total */
    total += bathmos;
    counter++;
}
while (counter <= 10);
printf("The total score is %lf", total);
printf("The average score is %lf", (total / 10));
}

Η C επίσης υποστηρίζει τις παρακάτω εντολές ελέγχου, που χρησιμοποιούνται για τον τερματισμό ή την συνέχιση μιας επανάληψης: 

Την break:
Xρησιμοποιείται για  ηθελημένο τερματισμό ενός βρόχου (for, while ή do-while). Επίσης για το τερματισμό της switch.  (δείτε την προηγούμενη ενότητα - Εντολές Ελέγχου) Η εκτέλεση του break μέσα στο βρόγχο μεταφέρει τον έλεγχο του προγράμματος στην εντολή που ακολουθεί τον βρόγχο.

Παράδειγμα:

int i,N, sum;
printf("Please give N:");  scanf("%d", &N);
sum=0;
 for (i = 0; i<=N;i++) {
             if (i==5) break;
            sum=sum+i;
 }
printf("SUM=%d\n", sum);

Θα βρει το άθροισμα μόνο των 1+2+3+4.


Και την continue: 
Που σταματά την εκτέλεση των εντολών της επανάληψης και συνεχίζει την επανάληψη αν συνεχίζει να είναι αληθής η ΣΥΝΘΗΚΗ από την αρχή του βρόγχου. Δεν διακόπτεται ο βρόγχος αλλά η τρέχουσα επανάληψη.

int i,N, sum;
printf("Dwste N:");  scanf("%d", &N);
sum=0;
 for (i = 0; i<=N;i++) {
             if (i>=5) continue;
            sum=sum+i;
 }
printf("SUM=%d\n", sum);

Θα βρει το άθροισμα μόνο των 1+2+3+4.

 

 
Στην προηγούμενη ενότητα

Στην αρχική σελίδα

Στην επόμενη ενότητα





Κ.Βασιλάκης / ΤΕΙ Κρήτης