Ćwiczenie — tworzenie i konfiguracja pętli iteracyjnych
- {liczbaMinut} minut
Pozornie instrukcja for jest inną instrukcją iteracji, która pozwala iterować przez blok kodu i tym samym zmieniać przepływ wykonywania kodu. Jednak po przeanalizowaniu sposobu działania poszczególnych elementów możemy lepiej zidentyfikować niuanse każdej instrukcji iteracji i kiedy ich używać.
Co to jest for instrukcja?
Instrukcja for iteruje przez blok kodu określoną liczbę razy. Ten poziom kontroli sprawia, że for instrukcja jest unikatowa wśród innych instrukcji iteracji. Instrukcja foreach iteruje blok kodu raz dla każdego elementu w sekwencji danych, takich jak tablica lub kolekcja. Instrukcja while iteruje blok kodu do momentu spełnienia warunku.
Ponadto for instrukcja zapewnia znacznie większą kontrolę nad procesem iteracji, ujawniając warunki iteracji.
W tym ćwiczeniu użyjesz for instrukcji, aby nauczyć się, jak kontrolować warunek wstępny iteracji, warunek zakończenia, wzorzec iteracji oraz inne aspekty. Poznasz również typowe przypadki użycia instrukcji for .
Teraz przygotujemy nasze środowisko kodowania i rozpocznijmy badanie przykładów kodu, które implementują instrukcję for .
Przygotowywanie środowiska kodowania
Ten moduł zawiera praktyczne działania, które prowadzą Cię przez proces tworzenia i uruchamiania kodu demonstracyjnego. Zachęcamy do wykonania tych działań przy użyciu programu Visual Studio Code jako środowiska programistycznego. Korzystanie z programu Visual Studio Code dla tych działań pomoże Ci lepiej pisać i uruchamiać kod w środowisku deweloperów używanym przez specjalistów na całym świecie.
Otwórz program Visual Studio Code.
Aby otworzyć program Visual Studio Code, możesz użyć menu Start systemu Windows (lub równoważnego zasobu dla innego systemu operacyjnego).
W menu Plik programu Visual Studio Code wybierz pozycję Otwórz folder.
W oknie dialogowym Otwórz folder przejdź do folderu Pulpit systemu Windows.
Jeśli masz inną lokalizację folderu, w której są utrzymywane projekty kodu, możesz zamiast tego użyć tej lokalizacji folderu. Na potrzeby tego szkolenia ważne jest, aby mieć lokalizację, która jest łatwa do zlokalizowania i zapamiętania.
W oknie dialogowym Otwieranie folderu wybierz pozycję Wybierz folder.
Jeśli zostanie wyświetlone okno dialogowe zabezpieczeń z pytaniem, czy ufasz autorom, wybierz pozycję Tak.
W menu Terminal programu Visual Studio Code wybierz pozycję Nowy terminal.
Zwróć uwagę, że wiersz polecenia w panelu Terminal wyświetla ścieżkę folderu dla bieżącego folderu. Przykład:
C:\Users\someuser\Desktop>Uwaga / Notatka
Jeśli pracujesz na własnym komputerze, a nie w piaskownicy lub w środowisku hostowanym i ukończono inne moduły Microsoft Learn w tej serii języka C#, być może utworzono już folder projektu dla przykładów kodu. Jeśli tak jest, możesz pominąć następny krok, który służy do tworzenia aplikacji konsolowej w folderze TestProject.
W wierszu polecenia terminalu, aby utworzyć nową aplikację konsolową w określonym folderze, wprowadź następujący monit:
dotnet new console -o ./CsharpProjects/TestProjectTo polecenie interfejsu wiersza polecenia platformy .NET używa szablonu programu .NET do utworzenia nowego projektu aplikacji konsolowej języka C# w określonej lokalizacji folderu. Polecenie tworzy foldery CsharpProjects i TestProject i używa elementu TestProject jako nazwy
.csprojpliku.Jeśli zostanie wyświetlony komunikat informujący o tym, że pliki już istnieją, przejdź do następnych kroków. Użyjesz ponownie istniejących plików projektu.
W widoku EKSPLORATOR rozwiń folder CsharpProjects .
Powinien zostać wyświetlony folder TestProject i dwa pliki, plik programu C# o nazwie Program.cs i plik projektu C# o nazwie TestProject.csproj.
W menu Plik programu Visual Studio Code wybierz pozycję Otwórz folder.
W oknie dialogowym Otwieranie folderu wybierz folder CsharpProjects , a następnie wybierz pozycję Wybierz folder.
W widoku EKSPLORATOR rozwiń folder TestProject, a następnie wybierz pozycję Program.cs.
Usuń istniejące wiersze kodu.
Ten projekt konsoli języka C# będzie używany do tworzenia, kompilowania i uruchamiania przykładów kodu w tym module.
Zamknij panel Terminal.
Napisz podstawową instrukcję for
Upewnij się, że program Visual Studio Code jest otwarty, a plik Program.cs wyświetlany w panelu Edytora.
Uwaga / Notatka
Program.cs powinny być puste. Jeżeli nie jest to prawdą, wybierz i usuń wszystkie wiersze kodu.
Wpisz następujący kod w edytorze programu Visual Studio Code.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }Ten kod przedstawia prostą
forinstrukcję, która wykonuje pętlę 10 razy, wyświetlając bieżącą wartośći.W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.
Przed utworzeniem lub uruchomieniem kodu należy zapisać plik Program.cs.
W panelu EKSPLORATOR, aby otworzyć terminal w lokalizacji folderu TestProject, kliknij prawym przyciskiem myszy pozycję TestProject, a następnie wybierz polecenie Otwórz w zintegrowanym terminalu.
Zostanie otwarty panel terminalu. Terminal powinien zawierać wiersz polecenia pokazujący, że terminal jest otwarty w lokalizacji folderu TestProject.
W wierszu polecenia terminalu, aby uruchomić kod, wpisz dotnet run , a następnie naciśnij Enter.
Uwaga / Notatka
Jeśli zostanie wyświetlony komunikat "Nie można odnaleźć projektu do uruchomienia", upewnij się, że w wierszu polecenia terminalu zostanie wyświetlona oczekiwana lokalizacja folderu TestProject. Przykład:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Powinny zostać wyświetlone następujące dane wyjściowe.
0 1 2 3 4 5 6 7 8 9Poświęć minutę, aby zidentyfikować sześć części stwierdzenia
for.Instrukcja
forzawiera następujące sześć części:- Słowo kluczowe
for. - Zestaw nawiasów definiujący warunki
foriteracji. Nawiasy zawierają trzy odrębne części oddzielone operatorem końca instrukcji średnikiem. - Pierwsza część definiuje i inicjuje zmienną iteratora. W tym przykładzie:
int i = 0. Ta sekcja jest określana jako inicjator. - Druga część definiuje warunek ukończenia. W tym przykładzie:
i < 10. Innymi słowy, środowisko uruchomieniowe będzie nadal przeprowadzać iterację w bloku kodu poniżej instrukcjifor, dopóki wartośćijest mniejsza od10. Gdyistanie się równe10, środowisko uruchomieniowe przestaje wykonywać blok kodu instrukcjifor. Dokumenty odwołują się do tej sekcji jako warunku. - Trzecia część definiuje akcję do wykonania po każdej iteracji. W takim przypadku po każdej iteracji
i++zwiększy wartośćio 1. Dokumenty nazywają tę sekcję iteratorem. - Na koniec blok kodu. Blok kodu zawiera kod, który zostanie wykonany dla każdej iteracji. Zwróć uwagę, że wartość elementu
ijest przywołynięta wewnątrz bloku kodu. Dokumenty odnoszą się do tej sekcji jako treści.
Biorąc pod uwagę nasze reguły nazewnictwa zmiennych, możesz się zastanawiać, czy
ijest prawidłową nazwą zmiennej, która zawiera bieżącą iterację. W tym przypadkuijest uważane przez większość za ważne. Inne popularne opcje toxicounter. Nazwajjest również używana w tych sytuacjach, gdy masz zewnętrzną instrukcjęfor, która używai, i należy utworzyć zmienną iteracji dla wewnętrznej instrukcjifor.Uwaga / Notatka
Wszystkie trzy sekcje (inicjator, warunek i iterator) są opcjonalne. Jednak w praktyce używane są zazwyczaj wszystkie trzy sekcje.
- Słowo kluczowe
Zmienianie warunków iteracji
Jak stwierdziliśmy na początku, for instrukcja ma dwie jedyne w swoim rodzaju cechy wśród instrukcji iteracyjnych.
- Instrukcja
forpowinna być używana, gdy z góry wiadomo, ile razy trzeba iterować przez blok kodu. - Instrukcja
forumożliwia kontrolowanie sposobu obsługi każdej iteracji.
Co zrobić, jeśli potrzebujemy iterować przez blok kodu, ale chcemy odliczać w dół zamiast w górę?
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }Pośmiń chwilę na przejrzenie zaktualizowanego kodu.
Zmieniając trzy części instrukcji
for, zmieniamy jego zachowanie.- Inicjujemy zmienną iteracji na 10.
- Zmieniamy warunek zakończenia, aby opuścić instrukcję
for, gdyijest mniejsza niż0. - Zmieniamy wzorzec iteratora, aby każdorazowo odejmować
1odipo ukończeniu iteracji.
Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę, że dane wyjściowe uległy zmianie.
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe.
10 9 8 7 6 5 4 3 2 1 0
Eksperymentowanie ze wzorcem iteratora
Co zrobić, jeśli chcemy pominąć niektóre wartości przy iteracji zmiennej iteratora?
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }Pośmiń chwilę na przejrzenie zaktualizowanego kodu.
Zamiast zwiększać lub zmniejszać wartość zmiennej iteracyjnej poprzez
1, używamyi += 3do pominięcia dwóch wartości po każdej iteracji.Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę, że dane wyjściowe uległy zmianie.
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe.
0 3 6 9Co prawda, nie zrobisz tego rodzaju rzeczy często, ale miejmy nadzieję, że możesz docenić, że masz precyzyjny poziom kontroli nad iteracjami, jeśli kiedykolwiek tego potrzebujesz.
Użyj słowa kluczowego break, aby przerwać instrukcję iteracji
Co zrobić, jeśli musimy przerwać instrukcję iteracji przedwcześnie na podstawie jakiegoś warunku? Możemy użyć słowa kluczowego break .
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }Pośmiń chwilę, aby przejrzeć użycie słowa kluczowego
breakw zaktualizowanym kodzie.Najpierw zobaczyliśmy słowo kluczowe
breakw module "Rozgałęzianie przepływu kodu przy użyciu konstrukcji switch-case w języku C#". Jak się okazuje, możemy również użyć słowa kluczowegobreak, aby wyjść z instrukcji iteracji.Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę, że dane wyjściowe uległy zmianie.
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe.
0 1 2 3 4 5 6 7
Iteruj przez każdy element tablicy
Typowym zastosowaniem for instrukcji jest iteracja przez tablicę elementów, zwłaszcza jeśli potrzebujesz kontroli nad sposobem, w jaki iteracja ma miejsce. Podczas gdy foreach iteruje przez każdy element tablicy, instrukcję for można dostosować, aby umożliwić większe możliwości personalizacji.
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }Pośmiń chwilę na przejrzenie zaktualizowanego kodu.
Najpierw zwróć uwagę, że zainicjowaliśmy tablicę ciągów o nazwie
nameszawierającą cztery nazwy.Następnie zwróć uwagę, że używamy
Array.Lengthwłaściwości , aby uzyskać liczbę elementów w tablicy i że używamy tej wartości do zainicjowania zmiennej iteratora (int i = names.Length - 1). Odejmujemy wartość 1 od wartości, ponieważ liczba indeksów dla elementów tablicy jest oparta na zera (liczby indeksów czterech elementów to 0–3).Na koniec zwróć uwagę, że wybraliśmy iterację przez tablicę od tyłu — coś, czego z instrukcją
foreachnie możemy zrobić. Używamy wartości zmiennej iteracji wewnątrz bloku kodu, aby określić liczbę indeksów elementów tablicy (names[i]).Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę, że elementy tablicy są wymienione w odwrotnej kolejności (zgodnie z oczekiwaniami).
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe.
Michael David Eddie AlexUwaga / Notatka
Możemy iterować do przodu przez elementy tablicy, tworząc instrukcję
forw następujący sposób:for (int i = 0; i < names.Length; i++).
Zbadaj ograniczenia instrukcji foreach
Co zrobić, jeśli chcesz zaktualizować wartość w tablicy podczas foreach iteracji?
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę na wyświetlany komunikat o błędzie.
Jeśli spróbujesz skompilować i uruchomić ten kod, zostanie wyświetlony wyjątek.
Cannot assign to name because it is a 'foreach iteration variable'Innymi słowy, nie można przypisać ponownie wartości
name, ponieważ jest to część wewnętrznej implementacji iteracjiforeach.
Pokonywanie ograniczenia instrukcji foreach poprzez użycie instrukcji for
Spróbujmy użyć for instrukcji , aby zmodyfikować zawartość tablicy wewnątrz bloku kodu iteracji.
Użyj edytora programu Visual Studio Code, aby zaktualizować kod w następujący sposób:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) if (names[i] == "David") names[i] = "Sammy"; foreach (var name in names) Console.WriteLine(name);Pośmiń chwilę na przejrzenie zaktualizowanego kodu.
Zwróć uwagę, że usunęliśmy nawiasy klamrowe z bloków kodu, które zawierały tylko jeden wiersz kodu. Ta poprawka używa tej samej techniki, którą omówiliśmy w module "Kontrolowanie zakresu zmiennej i logiki przy użyciu bloków kodu w języku C#". Wielu deweloperów uważa ten styl za trudny do odczytania, podczas gdy inni wolą ten skrócony styl, ponieważ pomaga im pisać bardziej zwięźle i bardziej wyraźnie. Jeśli ten kod jest trudny do odczytania lub jeśli po prostu nie preferujesz tego stylu, upewnij się, że nawiasy klamrowe mogą być zawsze używane w blokach kodu. Jeśli chcesz, zaktualizuj kod w panelu Edytor przy użyciu następującego kodu:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) { if (names[i] == "David") { names[i] = "Sammy"; } } foreach (var name in names) { Console.WriteLine(name); }Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Zwróć uwagę, że kod jest uruchamiany bez błędu i generuje żądane dane wyjściowe.
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe.
Alex Eddie Sammy MichaelPonieważ tablica nie jest bezpośrednio częścią implementacji instrukcji iteracji, można zmienić wartości wewnątrz tablicy.
Podsumowanie
Oto kilka z wniosków z tej jednostki.
- Instrukcja
foriteracji umożliwia iterację przez blok kodu określoną liczbę razy. - Instrukcja
foriteracji pozwala kontrolować każdy aspekt mechaniki iteracji, zmieniając trzy warunki wewnątrz nawiasów: inicjator, warunek i iterator. - Często używa się instrukcji
for, gdy trzeba kontrolować sposób iteracji poszczególnych elementów w tablicy. - Jeśli blok kodu ma tylko jeden wiersz kodu, możesz wyeliminować nawiasy klamrowe i białe znaki, jeśli chcesz.