연습 - 반복 루프 만들기 및 구성
- 14분
표면에서 문 for 은 코드 블록을 반복하여 코드 실행 흐름을 변경할 수 있는 또 다른 반복 문입니다. 그러나 각 반복 문의 작동 방식을 검토한 후에는 각 반복 문의 뉘앙스와 사용 시기를 더 잘 식별할 수 있습니다.
for 구문은 무엇인가요?
이 문은 for 코드 블록을 통해 특정 횟수를 반복합니다. 이 제어 수준은 for 문을 다른 반복 문 중에서 고유하게 만듭니다. 이 문은 foreach 배열 또는 컬렉션과 같은 데이터 시퀀스의 각 항목에 대해 코드 블록을 한 번 반복합니다. while 명령문은 조건이 될 때까지 코드 블록을 반복 실행합니다.
또한 이 for 문을 사용하면 반복 조건을 노출하여 반복 프로세스를 훨씬 더 쉽게 제어할 수 있습니다.
이 연습에서는 for 문을 사용하여 반복의 사전 조건, 완료 조건, 반복 패턴 등 제어하는 방법을 학습합니다. 또한 for 명령문에 대한 일반적인 사용 사례를 알아봅니다.
이제 코딩 환경을 준비하고 c0 문을 구현하는 코드 샘플 검사를 시작하겠습니다.
코딩 환경 준비
이 모듈에는 데모 코드를 빌드하고 실행하는 프로세스를 안내하는 실습 활동이 포함되어 있습니다. Visual Studio Code를 개발 환경으로 사용하여 이러한 활동을 완료하는 것이 좋습니다. 이러한 활동에 Visual Studio Code를 사용하면 전 세계 전문가가 사용하는 개발자 환경에서 코드를 더 편안하게 작성하고 실행하는 데 도움이 됩니다.
Visual Studio Code를 엽니다.
Windows 시작 메뉴(또는 다른 OS의 해당 리소스)를 사용하여 Visual Studio Code를 열 수 있습니다.
Visual Studio Code 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 Windows 데스크톱 폴더로 이동합니다.
코드 프로젝트를 유지하는 다른 폴더 위치가 있는 경우 해당 폴더 위치를 대신 사용할 수 있습니다. 이 학습에서는 쉽게 기억하고 찾을 수 있는 위치를 사용하는 것이 중요합니다.
폴더 열기 대화 상자에서 폴더 선택을 선택합니다.
작성자를 신뢰할 수 있는지 묻는 보안 대화 상자가 표시되면 예를 선택합니다.
Visual Studio Code 터미널 메뉴에서 새 터미널을 선택합니다.
터미널 패널의 명령 프롬프트에 현재 폴더의 폴더 경로가 표시됩니다. 다음은 그 예입니다.
C:\Users\someuser\Desktop>비고
샌드박스 또는 호스트된 환경이 아닌 자체 PC에서 작업하고 이 C# 시리즈에서 다른 Microsoft Learn 모듈을 완료한 경우 이미 코드 샘플용 프로젝트 폴더를 만들었을 수 있습니다. 이 경우 TestProject 폴더에 콘솔 앱을 만드는 데 사용되는 다음 단계를 건너뛸 수 있습니다.
터미널 명령 프롬프트에서 지정된 폴더에 새 콘솔 애플리케이션을 만들려면 다음 프롬프트를 입력합니다.
dotnet new console -o ./CsharpProjects/TestProject이 .NET CLI 명령은 .NET 프로그램 템플릿을 사용하여 지정된 폴더 위치에 새 C# 콘솔 애플리케이션 프로젝트를 만듭니다. 이 명령은 CsharpProjects 및 TestProject 폴더를 만들고 TestProject를
.csproj파일의 이름으로 사용합니다.파일이 이미 있다는 메시지가 표시되면 다음 단계를 계속 진행합니다. 기존 프로젝트 파일을 다시 사용합니다.
탐색기 보기에서 CsharpProjects 폴더를 확장합니다 .
TestProject 폴더와 두 개의 파일, 즉 Program.cs C# 프로그램 파일과 TestProject.csproj라는 C# 프로젝트 파일이 표시됩니다.
Visual Studio Code 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 CsharpProjects 폴더를 선택한 다음 폴더 선택을 선택합니다.
탐색기 보기에서 TestProject 폴더를 확장한 다음 , Program.cs 선택합니다.
기존 코드 줄을 삭제합니다.
이 모듈 중에 이 C# 콘솔 프로젝트를 사용하여 코드 샘플을 만들고, 빌드하고, 실행합니다.
터미널 패널을 닫습니다.
기본 for 문 작성
Visual Studio Code가 열려 있고 편집기 패널에 Program.cs가 표시되는지 확인합니다.
비고
Program.cs는 비어 있어야 합니다. 그렇지 않은 경우 모든 코드 줄을 선택하고 삭제합니다.
Visual Studio Code 편집기에 다음 코드를 입력합니다.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }이 코드는
for문을 단순하게 구현하여 코드 블록을 10번 반복하면서 현재 값i을 출력합니다.Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
코드를 빌드하거나 실행하기 전에 Program.cs 파일을 저장해야 합니다.
탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 패널이 열립니다. 터미널에는 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트가 포함되어야 합니다.
터미널 명령 프롬프트에서 코드를 실행하려면 dotnet run 을 입력한 다음 Enter 키를 누릅니다.
비고
“실행할 프로젝트를 찾을 수 없습니다.”라는 메시지가 표시되면 터미널 명령 프롬프트에 예상되는 TestProject 폴더 위치가 표시되는지 확인합니다. 예:
C:\Users\someuser\Desktop\csharpprojects\TestProject>다음 출력이 표시되어야 합니다.
0 1 2 3 4 5 6 7 8 9문장의 6개 부분을 식별하는 데 1분을 할애하세요
for.for문은 다음의 6개 부분을 포함합니다.for키워드.- 반복 조건을
for정의하는 괄호 집합입니다. 괄호에는 문 연산자 끝( 세미콜론)으로 구분된 세 개의 고유 부분이 포함됩니다. - 첫 번째 부분은 반복기 변수를 정의하고 초기화합니다. 이 예제에서는
int i = 0입니다. 이 섹션을 이 니셜라이저라고 합니다. - 두 번째 부분은 완료 조건을 정의합니다. 이 예제에서는
i < 10입니다. 즉, 런타임은for이i보다 작은 동안 아래10문 아래의 코드 블록의 코드를 계속 반복합니다.i와10가 같아지면, 런타임은for문의 코드 블록의 실행을 중지합니다. 문서는 이 섹션을 조건으로 참조합니다. - 세 번째 부분은 각 반복 후에 수행할 작업을 정의합니다. 이 경우 각 반복 후
i++는i의 값을 1씩 증가시킵니다. 문서는 이 섹션을 반복기로 참조합니다. - 마지막으로 코드 블록입니다. 코드 블록에는 각 반복에 대해 실행될 코드가 포함됩니다. 값
i은 코드 블록 내에서 참조됩니다. 문서에서는 이 섹션을 본문이라고 합니다.
변수 이름 지정에 대한 규칙을 고려할 때 현재 반복을 보유하는 변수의 유효한 이름인지
i궁금할 수 있습니다. 이 경우i대부분의 경우 유효한 것으로 간주됩니다. 다른 인기있는 선택은 다음과x같습니다counter.j이름은for를 사용하는 외부i문이 있고 내부for문에 대한 반복 변수를 만들어야 하는 경우에도 사용됩니다.비고
세 섹션(이니셜라이저, 조건 및 반복기)은 모두 선택 사항입니다. 그러나 실제로는 일반적으로 세 섹션이 모두 사용됩니다.
반복 조건 변경
처음에 설명한 것처럼 이 for 문은 반복 문 중 두 가지 고유한 자질을 가지고 있습니다.
- 이 문은
for코드 블록을 미리 반복해야 하는 횟수를 알고 있을 때 사용해야 합니다. - 이
for문을 사용하면 각 반복이 처리되는 방식을 제어할 수 있습니다.
코드 블록을 반복하는 데 필요하지만 카운트업 대신 카운트다운을 하려면 어떻게 하나요?
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }잠시 시간을 내어 업데이트된 코드를 검토합니다.
명령문의 세 부분을
for로 변경하여 그 동작을 변경합니다.- 반복 변수를 10으로 초기화합니다.
for이i보다 작을 때0문을 종료하도록 완료 조건을 변경합니다.- 반복을 완료할 때마다
1를i에서 빼는 방식으로 반복자의 패턴을 변경합니다.
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.출력이 변경되었습니다.
코드를 실행하면 다음 출력이 표시됩니다.
10 9 8 7 6 5 4 3 2 1 0
반복기의 패턴 실험
반복기 변수의 특정 값을 건너뛰려면 어떻게 해야 할까요?
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }잠시 시간을 내어 업데이트된 코드를 검토합니다.
반복기 변수
1값을 증분하거나 감소시키는 대신 각 반복 후 두 값을 건너뛰는 데 사용합니다i += 3.코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.출력이 어떻게 변경되었는지 확인합니다.
코드를 실행하면 다음 출력이 표시됩니다.
0 3 6 9솔직히 말해서, 당신은 자주 이런 종류의 일을 하진 않겠지만, 필요할 경우 반복의 세부 조정을 할 수 있다는 점을 감사할 수 있을 것입니다.
break 키워드를 사용하여 반복 문 중단
일부 조건에 따라 반복 문을 조기에 종료해야 하는 경우 어떻게 해야 할까요? 키워드를 break 사용할 수 있습니다.
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }업데이트된 코드에서 키워드의
break사용을 검토하려면 잠시 시간을 내세요."C#의 switch-case 구문을 사용하여 코드 흐름을 분기하는" 모듈에서 우리는 처음으로
break키워드를 보았습니다. 알고 보니 키워드를break사용하여 반복 문을 종료할 수도 있습니다.코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.출력이 어떻게 변경되었는지 확인합니다.
코드를 실행하면 다음 출력이 표시됩니다.
0 1 2 3 4 5 6 7
배열의 각 요소 반복
문에 for 대한 일반적인 사용법은 특히 반복이 발생하는 방식을 제어해야 하는 경우 요소 배열을 반복하는 것입니다. 배열의 각 요소를 foreach가 반복하는 동안 for 문을 수정하여 더 많은 사용자 지정이 가능하도록 할 수 있습니다.
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }잠시 시간을 내어 업데이트된 코드를 검토합니다.
먼저 네 개의 이름을 포함하는 문자열
names배열을 인스턴스화했습니다.다음으로, 이 속성을 사용하여
Array.Length배열의 요소 수를 가져오는데 이 값을 사용하여 반복기 변수(int i = names.Length - 1)를 초기화합니다. 배열 요소의 인덱스 번호가 0부터 시작하므로 값에서 1을 뺍니다(4개 요소의 인덱스 번호는 0-3).마지막으로, 우리는
foreach명령문으로는 수행할 수 없는 배열을 역방향으로 순회하도록 선택했습니다. 코드 블록 내의 반복 변수 값을 사용하여 배열 요소(names[i])의 인덱스 번호를 지정합니다.코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.배열 요소는 의도한 대로 역순으로 나열됩니다.
코드를 실행하면 다음 출력이 표시됩니다.
Michael David Eddie Alex비고
배열 요소를 앞으로 반복할 수 있도록
for문을 다음과 같이 생성했을 수 있습니다:for (int i = 0; i < names.Length; i++).
foreach 문의 제한 사항
반복하는 동안 foreach 배열의 값을 업데이트하려면 어떻게 해야 할까요?
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.표시되는 오류 메시지를 확인합니다.
이 코드를 컴파일하고 실행하려고 하면 예외가 표시됩니다.
Cannot assign to name because it is a 'foreach iteration variable'즉,
name반복의 내부 구현에 포함되어 있기 때문에foreach의 값을 다시 할당할 수 없습니다.
for 문을 사용하여 foreach 문의 제한 사항 극복하기
문을 사용하여 for 반복 코드 블록 내의 배열 내용을 수정해 보겠습니다.
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
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);잠시 시간을 내어 업데이트된 코드를 검토합니다.
한 줄의 코드만 포함된 코드 블록에서 중괄호를 제거했습니다. 이 수정 버전은 "C#의 코드 블록을 사용하여 변수 범위 및 논리 제어" 모듈에서 설명한 것과 동일한 기술을 사용합니다. 많은 개발자가 이 스타일을 읽기 어려운 반면, 다른 개발자는 보다 간결하고 표현적으로 작성하는 데 도움이 되므로 이 약어 스타일을 선호합니다. 이 코드를 읽기 어렵거나 이 스타일을 선호하지 않는 경우 코드 블록에서 중괄호를 항상 사용할 수 있습니다. 원하는 경우 다음 코드로 편집기 패널에서 코드를 업데이트합니다.
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); }코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.코드는 오류 없이 실행되고 원하는 출력을 생성합니다.
코드를 실행하면 다음 출력이 표시됩니다.
Alex Eddie Sammy Michael배열은 반복 문의 구현에 직접 포함되지 않으므로 배열 내에서 값을 변경할 수 있습니다.
요약
다음은 이 단원의 몇 가지 내용입니다.
for반복 문을 사용하면 코드 블록을 특정 횟수만큼 반복할 수 있습니다.- 반복 문을 사용하면 괄호 안의 세 가지 조건인 이
for니셜라이저, 조건 및 반복기를 변경하여 반복 메커니즘의 모든 측면을 제어할 수 있습니다. - 배열의 각 항목을 반복하는 방법을 제어해야 하는 경우 문을 사용하는
for것이 일반적입니다. - 코드 블록에 코드 줄이 하나만 있는 경우 원하는 경우 중괄호와 공백을 제거할 수 있습니다.