연습 - do 및 while 반복 루프 만들기
- 10분
표면에서 do-while 및 while 문은 코드 블록을 반복하여 코드 실행 흐름을 변경할 수 있는 또 다른 반복 문입니다. 그러나 각 반복 문의 작동 방식을 검토한 후에는 각 반복 문의 뉘앙스와 사용 시기를 더 잘 식별할 수 있습니다.
do-while 문이란?
do-while 문은 문 또는 문 블록을 실행하는 반면 지정된 부울 식은 true로 계산합니다. 해당 식은 루프를 실행할 때마다 평가되므로 do-while 루프는 하나 이상 실행됩니다.
do
{
// This code executes at least one time
} while (true);
실행 흐름은 중괄호 내부에서 시작됩니다. 코드가 한 번 이상 실행되면 while 키워드 옆의 부울 식이 계산됩니다. 부울 식이 true를 반환하면 코드 블록이 다시 실행됩니다.
부울 식을 true로 하드 코딩하여 현재 상태에서는 종료되지 않는, 무한 루프를 만들었습니다. 코드 블록 내의 루프를 중단하는 방법이 필요합니다. 잠시 후 do-while의 종료 조건에 대해 설명합니다.
이제 코딩 환경을 준비하고 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# 콘솔 프로젝트를 사용하여 코드 샘플을 만들고, 빌드하고, 실행합니다.
터미널 패널을 닫습니다.
특정한 임의의 수를 생성하는 경우 중단하는 do-while 문 작성
숫자 7을 생성할 때까지 1에서 10 사이의 난수를 계속 생성하는 코드를 작성해 보겠습니다. 7을 가져오는 데 한 번의 반복만 걸리거나 수십 번의 반복이 걸릴 수 있습니다.
Visual Studio Code가 열려 있고 편집기 패널에 Program.cs가 표시되는지 확인합니다.
비고
Program.cs는 비어 있어야 합니다. 그렇지 않은 경우 모든 코드 줄을 선택하고 삭제합니다.
Visual Studio Code 편집기에 다음 코드를 입력합니다.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
코드를 빌드하거나 실행하기 전에 Program.cs 파일을 저장해야 합니다.
탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 패널이 열립니다. 터미널에는 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트가 포함되어야 합니다.
터미널 명령 프롬프트에서 코드를 실행하려면 dotnet run을 입력한 다음, Enter 키를 누릅니다.
비고
“실행할 프로젝트를 찾을 수 없습니다.”라는 메시지가 표시되면 터미널 명령 프롬프트에 예상되는 TestProject 폴더 위치가 표시되는지 확인합니다. 예:
C:\Users\someuser\Desktop\csharpprojects\TestProject>출력을 검토합니다.
생성된 숫자는 임의이므로 결과가 달라집니다. 그러나 값
7이 마지막으로 출력되는 것은 7이 생성되어 불리언 식이false로 평가되고 실행 흐름이 코드 블록을 종료할 때입니다.2 5 8 2 7이 코드를 검토하는 데 몇 분 정도가 걸립니다.
이 첫 번째 작업의 핵심 학습은 루프의
do-while코드 블록이 한 번 이상 실행된다는 것입니다. 그것은 많은 번 반복될 수 있으며, 우리가 미리 반복 횟수를 알 가능성은 낮습니다.코드 블록 내의 코드가 코드 블록을 계속 반복할지 여부에 영향을 주는 것도 중요합니다. 종료 기준에 영향을 미치는 코드 블록은 다른 반복 문 중 하나가 아닌
do-while또는while문을 선택하는 주된 이유입니다.foreachfor둘 다 코드 블록 외부에 있는 요소에 의존하여 코드 블록 반복 수를 확인합니다.
난수가 일부 값보다 큰 경우에만 반복하는 while 문을 작성합니다.
이번에는 while 문을 살펴보겠습니다.
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
Random random = new Random(); int current = random.Next(1, 11); /* do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7); */ while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}");비고
이 경우
while키워드와 부울 표현식을 코드 블록 앞에 배치합니다. 이렇게 하면 코드의 의미가 변경되고 부울 식이 true로 평가되는 경우에만 실행 흐름이 입력되도록 하는 "게이트" 역할을 합니다.코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.나열된 출력 값을 검토합니다.
숫자는 임의이므로 코드에서 다른 시퀀스를 생성합니다.
9 7 5 Last number: 1이 코드를 검토하는 데 몇 분 정도가 걸립니다.
코드의 최상단에서
random를 사용하여int라는current변수를 초기화합니다. 우리의 다음 활성 코드 줄은while문입니다.while문은 부울 식(current >= 3)에 따라 반복됩니다. 어떤 값이current에 할당될지는 알 수 없지만,while루프에 영향을 줄 수 있는 여러 가능성이 있습니다.-
current가3보다 크거나 같은 값으로 초기화되면, 부울 식은true를 반환하고, 실행 흐름은 코드 블록으로 들어갑니다. 코드 블록 내에서 가장 먼저 수행하는 작업은 콘솔에 값을current쓰는 것입니다. 다음으로, 코드 블록 내에서 새 임의current값으로 값을 업데이트합니다. 이 시점에서 컨트롤은 부울 식이 계산되는while문의 맨 위로 돌아갑니다. 이 프로세스는 부울 식이false을 반환하고, 실행 흐름이 코드 블록에서 중단될 때까지 계속됩니다. - 코드의 맨 위에서
current을3보다 작은 값으로 초기화하면, 부울 표현식이false을 반환하게 되고, 코드 블록은 결코 실행되지 않습니다.
마지막 코드 줄은 콘솔에 값을
current씁니다. 이 코드는 반복 코드 블록이 실행되었는지 여부에 관계없이 실행되며 콘솔에 최종 값을current쓸 수 있습니다.-
continue 문을 사용하여 부울 식으로 직접 한 단계씩 실행
경우에 따라 코드 블록에서 코드의 나머지 부분을 단락하고 다음 반복을 계속하려고 합니다.
continue 구문을 사용하여 이를 수행할 수 있습니다.
Visual Studio Code 편집기를 사용하여 다음과 같이 코드를 업데이트합니다.
Random random = new Random(); int current = random.Next(1, 11); do { current = random.Next(1, 11); if (current >= 8) continue; Console.WriteLine(current); } while (current != 7); /* while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}"); */이 코드를 검토하는 데 몇 분 정도가 걸립니다.
전환된 것을 주목하세요. 우리는 다시
do-while로 바꿨습니다. Ado-while는 루프가 한 번 이상 반복되도록 합니다.코드 블록 내에서 가장 먼저 수행하는 작업은 새 임의 값을 에 할당하는 것입니다
current. 다음으로,current가8보다 크거나 같은지 확인합니다. 이 표현이true을(를) 반환하면continue키워드가 코드 블록의 끝으로 제어를 넘긴 후에while을(를)(current != 7)가 평가합니다. 따라서 값current이7와 같지 않은 한, 루프는 계속 반복됩니다.이 연습 단계의 핵심은 키워드를 포함하는
continue코드 줄입니다.if (current >= 8) continue;우리 코드에서
current값을 콘솔에 쓰는 부분이if (current >= 8) continue;뒤에 위치해 있기 때문에,current값이8보다 크거나 같은 경우는 결코 출력 창에 쓰이지 않도록 합니다.사용해 보겠습니다.
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다.
터미널 명령 프롬프트에서
dotnet run을 입력하여 코드를 실행합니다.나열된 출력 값을 검토합니다.
5 1 6 7아래에 표시된 것과 다른 결과가 표시될 수 있습니다. 그러나 코드 실행이 값
8으로 끝나기 전에는 출력 창에 값7이상이 표시되지 않습니다.continue문장과break문장의 차이점을 고려합니다.이 마지막 단계에서 보았듯이,
continue구문은 현재 반복의 끝부분으로 실행을 이동시킵니다. 이 동작은 이전에break문에서 본 동작과는 다릅니다. 이 문은break반복(또는switch)을 종료하고 종료된 문 뒤에 있는 문으로 제어를 전송합니다. 종료된 문 다음에 문이 없으면 컨트롤이 파일 또는 메서드의 끝으로 전송됩니다.
요약
이 단원에서 제거해야 하는 몇 가지 중요한 아이디어가 있습니다.
-
do-while문은 코드 블록을 통해 한 번 이상 반복되며, 부울 식에 따라 계속 반복할 수 있습니다. 부울 식의 평가는 일반적으로 코드 블록 내에서 생성되거나 검색된 일부 값에 따라 달라집니다. - 명령문은
while부울 식을 먼저 평가한 다음, 부울 식이true로 평가되는 동안 코드 블록을 계속 반복합니다. - 부울 식으로 즉시 한 단계씩 실행하는
continue키워드입니다.