Q&A

  • 한동안 비베를 하다가 다시 델피를 공부하는데..
안녕하세요? 정말 오랜만에 방문하는군여..

다름이 아니라 문법에 관한 질문입니다.

지금 제가 읽고 있는 책은 Continue 문을 For문, While문 Repeat~Until문의 반복중에 Continue 문을 만나면 조건을 판단한 후 다음 구문을 수행합니다라고 나와있습니다.

이 말도 잘 이해가 안가고 더욱이 이해가 안가는 것은 그 아래의 예문입니다.



procedure TForm1.Button1Click(Sender: TObject);

var

i, Count : integer;

Begin

// 초기값을 설정해 줍니다.

i:= 0;



while i < 10 do

begin

inc(i); //i:= i+1



if i = 5 then

begin

Continue;

label1.Caption := IntToStr(Count);

end;



end;



end;

//위와 같은 입력하면 label1에는 아무 값도 출력되지 않습니다.



이렇게 나와 있는데, 왜 아무 값도 출력안되는지 모르겠습니다.

구럼 답변 바랍니다.~~~



2  COMMENTS
  • Profile
    김지엽 2001.05.09 02:22
    혹시 이런거 아닐까요?

    begin

    i := 0;



    while i < 10 do begin

    inc(i);

    if i = 5 then continue;

    label1.Caption := label1.Caption + IntToStr(i);

    end;



    continue 구문의 의미는 위와 같이 코딩하고 돌려보면 쉽게 이해가 갈 것입니다.

    LOOP 안에서 CONTINUE 구문은, 이하의 절을 수행하지 않고 곧바로 다음 루프로 넘어가라는 뜻입니다.

    즉 위의 예에서라면 label1.Caption := 12346789 가 나올 겁니다.



  • Profile
    우찌리 2001.05.09 01:55
    김필립 wrote:

    > 안녕하세요? 정말 오랜만에 방문하는군여..

    > 다름이 아니라 문법에 관한 질문입니다.

    > 지금 제가 읽고 있는 책은 Continue 문을 For문, While문 Repeat~Until문의 반복중에 Continue 문을 만나면 조건을 판단한 후 다음 구문을 수행합니다라고 나와있습니다.

    > 이 말도 잘 이해가 안가고 더욱이 이해가 안가는 것은 그 아래의 예문입니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > i, Count : integer;

    > Begin

    > // 초기값을 설정해 줍니다.

    > i:= 0;

    >

    > while i < 10 do

    > begin

    > inc(i); //i:= i+1

    >

    > if i = 5 then

    > begin

    > Continue;

    > label1.Caption := IntToStr(Count);

    > end;

    >

    > end;

    >

    > end;

    > //위와 같은 입력하면 label1에는 아무 값도 출력되지 않습니다.

    >

    > 이렇게 나와 있는데, 왜 아무 값도 출력안되는지 모르겠습니다.

    > 구럼 답변 바랍니다.~~~

    >



    int 변수 Count는 초기화 되지도 않았고, 값이 setting 되지도 않았으므로

    label에 아무값도 출력되지 않는것은 당연한것 같고,

    IntToStr(Count)를 IntToStr(i)로 하더라도 아무것도 출력되자 않습니다

    i 가 0 부터 9 까지 while 문을 도는데 i 가 5일 때 if 문에 들어가지만,

    바로 continue를 만나므로 다음 루핑을 돌기 때문이다.