While 루프(Crystal 구문)
While 루프는 문의 고정된 블록을 무한정 실행하는 데 사용합니다.
While 루프의 두 가지 유형
루프 유형
|
설명
|
예제
|
---|---|---|
While ... Do
|
While ... Do 루프는 해당 조건을 평가하고 조건이 true일 경우 Do 뒤에 나오는 식을 평가합니다.
이 작업이 끝나면 다시 조건을 평가하고 조건이 true일 경우 Do 다음에 나오는 식을 다시 평가합니다. 조건이 false일 때까지 이 과정을 계속 반복합니다. |
|
Do ... While
|
Do ... While 루프는 무조건 한 번은 식을 평가합니다.
그런 다음 조건을 평가하고 조건이 true일 경우 다시 식을 평가합니다. 이 과정은 조건이 false일 때까지 계속됩니다. |
|
![]() |
---|
While 루프는 루프를 즉시 끝낼 수 있는 Exit While 문을 지원합니다. 그 사용 방식은 For 루프에서 Exit For를 사용하는 것과 비슷합니다. While 루프는 For 루프에서처럼 식으로 간주되고 항상 부울 값 True를 반환합니다. |
While ... Do 루프 예제
다음 예에서는 입력 문자열에서 숫자가 처음으로 나오는 경우를 검색합니다. 이 수식은 숫자를 찾으면 해당 위치를 반환하고 그렇지 않으면 -1을 반환합니다. 이 경우 입력 문자열은 명시적으로 문자열 상수로 설정되지만 문자열 형식 데이터베이스 필드와 동일하게 설정할 수도 있습니다.
예를 들어, 입력 문자열 "The 7 Dwarves"에 대해 수식은 숫자 7의 위치인 5를 반환합니다.
Local StringVar inString := "The 7 Dwarves";
Local NumberVar strLen := Length (inString);
Local NumberVar result := -1;
Local NumberVar i := 1;
While i <= strLen And result = -1 Do
(
Local StringVar c := inString [i];
If NumericText (c) Then
result := i;
i := i + 1;
);
result