W tym artykule nauczymy się pętli for w języku C # i różnych sposobów ich wykorzystania w programie.
W programowaniu często pożądane jest wykonanie określonego bloku instrukcji określoną liczbę razy. Możliwym rozwiązaniem będzie wpisanie tych instrukcji wymaganą liczbę razy. Jednak liczba powtórzeń może nie być znana z góry (w czasie kompilacji) lub może być wystarczająco duża (powiedzmy 10000).
Najlepszym rozwiązaniem tego problemu jest pętla. Pętle są używane w programowaniu do wielokrotnego wykonywania określonego bloku instrukcji, dopóki nie zostanie spełniony jakiś warunek.
W tym artykule przyjrzymy się pętli for w języku C #.
C # for loop
Słowo kluczowe for służy do tworzenia pętli for w języku C #. Składnia pętli for to:
for (inicjalizacja; warunek; iterator) (// treść pętli for)
Jak działa pętla for?
- C # pętli ma trzy oświadczenia:
initialization
,condition
iiterator
. initialization
Instrukcja wykonywana jest na pierwszy i jedyny raz. Tutaj zmienna jest zwykle deklarowana i inicjalizowana.- Następnie
condition
jest oceniany. Jestcondition
to wyrażenie boolowskie, tzn. Zwraca albotrue
albofalse
. - Jeśli
condition
jest oceniany jakotrue
:- Wykonywane są instrukcje wewnątrz pętli for.
- Następnie
iterator
wykonywana jest instrukcja, która zwykle zmienia wartość zainicjalizowanej zmiennej. - Ponownie
condition
jest oceniany. - Proces jest kontynuowany do momentu
condition
ocenyfalse
.
- Jeśli wartość
condition
jest szacowana nafalse
, pętla for kończy działanie.
dla schematu blokowego pętli
Przykład 1: C # dla pętli
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1; i<=5; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
Kiedy uruchomimy program, wynik będzie:
C # For Loop: Iteracja 1 C # For Loop: Iteracja 2 C # For Loop: Iteracja 3 C # For Loop: Iteracja 4 C # For Loop: Iteracja 5
W tym programie
initialization
oświadczenie jestint i=1
condition
oświadczenie jesti<=5
iterator
oświadczenie jesti++
Po uruchomieniu programu
- Najpierw deklarowana jest zmienna i i inicjowana na 1.
- Następnie
i<=5
sprawdzany jest warunek ( ). - Ponieważ warunek powraca
true
, program wykonuje treść pętli for. Wyświetla podany wiersz z Iteracją 1 (Iteracja oznacza po prostu powtórzenie). - Teraz
i++
oceniany jest iterator ( ). Zwiększa to wartość i do 2. - Warunek (
i<=5
) jest oceniany ponownie, a na końcu wartość i jest zwiększana o 1. Warunek zostanie ocenionytrue
na pierwsze 5 razy. - Kiedy wartość i będzie równa 6, a warunek będzie taki
false
, pętla się zakończy.
Przykład 2: pętla for do obliczenia sumy pierwszych n liczb naturalnych
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int n = 5,sum = 0; for (int i=1; i<=n; i++) ( // sum = sum + i; sum += i; ) Console.WriteLine("Sum of first (0) natural numbers = (1)", n, sum); ) ) )
Kiedy uruchomimy program, wynik będzie:
Suma pierwszych 5 liczb naturalnych = 15
Tutaj wartość sum i n jest inicjalizowana odpowiednio na 0 i 5. Zmienna iteracji i jest inicjowana na 1 i zwiększana przy każdej iteracji.
Wewnątrz pętli for wartość sum jest zwiększana o i tj sum = sum + i
. Pętla for trwa do momentu, gdy i jest mniejsze lub równe n (dane wejściowe użytkownika).
Zobaczmy, co dzieje się w danym programie w każdej iteracji.
Początkowo i = 1, suma = 0 i n = 3
Dla kroków wykonywania pętliIteracja | Wartość i | i <= 5 | Wartość sumy |
---|---|---|---|
1 | 1 | prawdziwe | 0 + 1 = 1 |
2 | 2 | prawdziwe | 1 + 2 = 3 |
3 | 3 | prawdziwe | 3 + 3 = 6 |
4 | 4 | prawdziwe | 6 + 4 = 10 |
5 | 5 | prawdziwe | 10 + 5 = 15 |
6 | 6 | fałszywy | Pętla się kończy |
Tak więc ostateczna wartość sumy wyniesie 15, gdy n = 5.
Wiele wyrażeń w pętli for
Możemy również użyć wielu wyrażeń wewnątrz pętli for. Oznacza to, że w pętli for możemy mieć więcej niż jedną instrukcję inicjalizacji i / lub iteratora. Zobaczmy poniższy przykład.
Przykład 3: pętla for z wieloma wyrażeniami inicjalizacyjnymi i iteratorowymi
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=0, j=0; i+j<=5; i++, j++) ( Console.WriteLine("i = (0) and j = (1)", i,j); ) ) ) )
Kiedy uruchomimy program, wynik będzie:
i = 0 oraz j = 0 i = 1 oraz j = 1 i = 2 i j = 2
W tym programie zadeklarowaliśmy i zainicjowaliśmy dwie zmienne: i i jw instrukcji inicjalizacji.
W części iteracyjnej mamy również dwa wyrażenia. Oznacza to, że zarówno i, jak i j są zwiększane o 1 w każdej iteracji.
Pętla For bez instrukcji inicjalizacji i iteratorów
The initialization, condition and the iterator statement are optional in a for loop. It means we can run a for loop without these statements as well.
In such cases, for loop acts as a while loop. Let's see the example below.
Example 4: for loop without initialization and iterator statement
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int i = 1; for ( ; i<=5; ) ( Console.WriteLine("C# For Loop: Iteration (0)", i); i++; ) ) ) )
When we run the program, the output will be:
C# For Loop: Iteration 1 C# For Loop: Iteration 2 C# For Loop: Iteration 3 C# For Loop: Iteration 4 C# For Loop: Iteration 5
In this example, we haven't used the initialization and iterator statement.
The variable i is initialized above the for loop and its value is incremented inside the body of loop. This program is same as the one in Example 1.
Podobnie warunek jest również opcjonalną instrukcją. Jeśli jednak nie użyjemy wyrażenia testowego, pętla for nie przetestuje żadnego warunku i będzie działać wiecznie (nieskończona pętla).
Nieskończona pętla for
Jeśli warunek w pętli for jest zawsze prawdziwy, pętla for będzie działać wiecznie. Nazywa się to nieskończoną pętlą for.
Przykład 5: nieskończona pętla for
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1 ; i>0; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
W tym przypadku i jest inicjowane na 1, a warunek to i>0
. W każdej iteracji zwiększamy wartość i o 1, więc warunek nigdy nie będzie false
. Spowoduje to nieskończone wykonywanie pętli.
Możemy również stworzyć nieskończoną pętlę, zastępując warunek spacją. Na przykład,
for (;;) (// treść pętli for)
lub
for (inicjalizacja;; iterator) (// treść pętli for)