Δομή της Επανάληψης

 

Όπως αναφέρθηκε στο άρθρο για τη δομή της επιλογής, ο έλεγχος της ροής ενός προγράμματος αποτελεί ένα από τα πιο θεμελιώδη στοιχεία στον προγραμματισμό. Εκτός από την επιλογή του τμήματος κώδικα που θα εκτελεστεί, έχουμε επίσης τη δυνατότητα να καθορίσουμε πόσες φορές θα επαναληφθεί η εκτέλεσή του. Αυτό επιτυγχάνεται μέσω των λεγόμενων δομών επανάληψης, και στη γλώσσα C υπάρχουν τρεις κύριες δομές:

Επανάληψη όσο η συνθήκη είναι αληθής.

while (this_is_true)
{
    /* Keep executing me */
}

Ίδιο με το παραπάνω, αλλά ο κώδικας εκτελείται τουλάχιστον μια φορά.

do
{
    /* Keep executing me */
}while (this_is_true);

Διαφορετικό από τα παραπάνω, αυτή η δομή συνήθως χρησιμοποιείται σαν "ΓΙΑ χ ΑΠΟ κάπου ΜΕΧΡΙ κάπου ΜΕ_ΒΗΜΑ κάτι", αλλά είναι πολύ ευέλικτη. To initialization είναι η ανάθεση αρχικής τιμής, το condition είναι η συνθήκη επανάληψης και το operation είναι κάποια πράξη, συνήθως το "βήμα".

for (initialization ; condition ; operation)
{
    /* Keep executing me */
}

Παρακάτω δίνονται 3 παραδείγματα, τα οποία είναι το ίδιο πρόβλημα( το άθροισμα 1+2+3+...+n ) λυμένο με τους 3 διαφορετικούς τρόπους:

#include <stdio.h>

int main(void)
{
    int N, i;
    int sum;
   
    printf("Give a positive integer: ");
    scanf("%d", &N);
   
    /* Εδώ μπορεί να πάει οποιοδήποτε από τα παρακάτω 3 παραδείγματα */
   
    printf("Adding all integers from 1 to %d gives %d.\n", N, sum);
   
    /* Μήπως αρχίζει να βγάζει νόημα αυτή η γραμμή? Μην απελπίζεστε, θα εξηγηθεί σε επόμενα άρθρα */
    while (getchar() != '\n');
    getchar();
   
    return 0;
}
    /* Παράδειγμα με while */
    i = 1;
    sum = 0;
    while (i <= N)
    {
        sum += i;
        ++i;
    }
    /* Παράδειγμα με do-while */
    i = 1;
    sum = 0;
    do
    {
        sum += i;
        ++i;
    }while (i <= N);
    /* Παράδειγμα με for */
    sum = 0;
    for (i = 1; i <= N; i++)
    {
        sum += i;
    }
}

Leave a Reply