Η δομή επανάληψης do while στην C# είναι μια επανάληψη με έλεγχο συνθήκης, όπου ο μπλοκ κώδικα εκτελείται τουλάχιστον μία φορά πριν ελεγχθεί η συνθήκη. Αυτό την διαφοροποιεί από την while, όπου η συνθήκη ελέγχεται πριν την πρώτη εκτέλεση του μπλοκ κώδικα.

Τι είναι το do while

  • Δομή Επανάληψης: Η δομή do while είναι μια μορφή επανάληψης που εκτελεί έναν μπλοκ κώδικα και στη συνέχεια ελέγχει τη συνθήκη επανάληψης.
  • Εγγυημένη Εκτέλεση: Ο κώδικας μέσα στο do μπλοκ εκτελείται τουλάχιστον μία φορά, ανεξάρτητα από την αρχική κατάσταση της συνθήκης.

Τι αφορά το do while

  • Εκτέλεση τουλάχιστον μία φορά: Το μπλοκ κώδικα μέσα στο do εκτελείται πάντα τουλάχιστον μία φορά, αφού η συνθήκη ελέγχεται μετά την εκτέλεση του μπλοκ.
  • Αναγκαία Συνθήκη: Η συνθήκη ελέγχεται μόνο στο τέλος κάθε επανάληψης, πράγμα που επιτρέπει στον μπλοκ κώδικα να εκτελείται με βάση τουλάχιστον μια αρχική εισαγωγή ή επεξεργασία.

Που χρησιμεύει το do while

  • Αναγκαία Αρχική Εκτέλεση: Χρησιμοποιείται όταν η εκτέλεση του κώδικα πρέπει να πραγματοποιηθεί τουλάχιστον μία φορά πριν ελεγχθεί αν πρέπει να επαναληφθεί.
  • Διαδικασίες που απαιτούν ελάχιστη εκτέλεση: Ιδανικό για περιπτώσεις όπου η συνθήκη εξαρτάται από την είσοδο του χρήστη ή κάποια επεξεργασία που πρέπει να γίνει τουλάχιστον μία φορά.

Πως χρησιμοποιείται το do while

  • Σύνταξη: Η σύνταξη της δομής do while είναι η εξής:

do {

// Κώδικας προς εκτέλεση

}

while (συνθήκη);

Ο μπλοκ κώδικα εκτελείται και στη συνέχεια η συνθήκη ελέγχεται. Αν η συνθήκη είναι αληθής (true), ο μπλοκ κώδικα εκτελείται ξανά. Αν είναι ψευδής (false), η επανάληψη σταματά.

Παραδείγματα Χρήσης

Παράδειγμα 1: Εκτύπωση Αριθμών μέχρι το 5

Περιγραφή: Γράψτε ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 5 χρησιμοποιώντας τη δομή επανάληψης do while.

Λύση:

using System;

namespace DoWhileExample
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            do
            {
                Console.WriteLine(i);
                i++;
            } while (i <= 5);
        }
    }
}

Παράδειγμα 2: Είσοδος Χρήστη και Επαλήθευση

Περιγραφή: Γράψτε ένα πρόγραμμα που ζητά από τον χρήστη να εισάγει έναν αριθμό μεγαλύτερο από 0. Ο βρόχος do while θα συνεχίσει να ζητάει είσοδο μέχρι να εισαχθεί έγκυρος αριθμός.

Λύση:

using System;

namespace DoWhileExample
{
class Program
{
static void Main(string[] args)
{
int number;

do
{
Console.Write(“Εισάγετε έναν αριθμό μεγαλύτερο από 0: “);
number = int.Parse(Console.ReadLine());
} while (number <= 0);

Console.WriteLine($”Εισάγατε τον αριθμό: {number}”);
}
}

}

Παράδειγμα 3: Υπολογισμός Σαφήνειας Αριθμών

Περιγραφή: Γράψτε ένα πρόγραμμα που ζητά από τον χρήστη να εισάγει αριθμούς και υπολογίζει το άθροισμα και το μέσο όρο των αριθμών. Ο χρήστης εισάγει αριθμούς μέχρι να εισάγει τον αριθμό 0. Υπολογίστε και εκτυπώστε το άθροισμα και τον μέσο όρο.

Λύση:

using System;

namespace DoWhileExample
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
            int count = 0;
            int number;
            
            do
            {
                Console.Write("Εισάγετε έναν αριθμό (ή 0 για να τελειώσετε): ");
                number = int.Parse(Console.ReadLine());
                
                if (number != 0)
                {
                    sum += number;
                    count++;
                }
                
            } while (number != 0);
            
            if (count > 0)
            {
                double average = (double)sum / count;
                Console.WriteLine($"Το άθροισμα είναι: {sum}");
                Console.WriteLine($"Ο μέσος όρος είναι: {average}");
            }
            else
            {
                Console.WriteLine("Δεν εισήχθησαν αριθμοί.");
            }
        }
    }
}

Παράδειγμα 4: Αντίστροφη Εκτύπωση με Είσοδο

Περιγραφή: Γράψτε ένα πρόγραμμα που ζητά από τον χρήστη να εισάγει έναν αριθμό και να εκτυπώσει όλους τους αριθμούς από το αριθμό που εισήχθη μέχρι το 1 με αντίστροφη σειρά. Χρησιμοποιήστε τη δομή επανάληψης do while.

Λύση:

using System;

namespace DoWhileExample
{
    class Program
    {
        static void Main(string[] args)
        {
            int number;
            
            do
            {
                Console.Write("Εισάγετε έναν αριθμό: ");
                number = int.Parse(Console.ReadLine());
                
                if (number > 0)
                {
                    int i = number;
                    do
                    {
                        Console.WriteLine(i);
                        i--;
                    } while (i > 0);
                }
                
            } while (number <= 0);
        }
    }
}

Περιορισμοί του do while

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

Η δομή επανάληψης do while είναι χρήσιμη όταν θέλουμε να διασφαλίσουμε ότι ο μπλοκ κώδικα εκτελείται τουλάχιστον μία φορά και μετά συνεχίζει να επαναλαμβάνεται με βάση την συνθήκη.