프로그래밍 노트

델파이의 제어문 (if, case, while, repeat until, for) 본문

델파이

델파이의 제어문 (if, case, while, repeat until, for)

띠리 2007. 7. 11. 17:30

델파이의 제어문에 있어서 두 줄이상일 경우는 begin과 end를 사용한다.
C에서의 { }에 해당한다.
델파이에서 세미콜론(;)을 사용하는데 있어서 주의해야 될 점은 세미콜론은 항상 문장의 끝을 나타내지만은 않는다. 세미콜론은 문장을 구분하는 한가지 방법이다.
문장을 구분하는 방법에는 end나 else도 있다.

goto문도 있지만 goto문을 사용하면 프로그램을 이해하기 힘들어짐으로 그다지 사용되지 않는다.

조건문 if

if문의 일반형식

if 식
  then 문1
  else 문2

이다 문1, 문2는 한줄이나 두줄이상은 begin ... end로 묶일 수 있다.
if문에서 주의해야되는 것은 세미콜론 말고도 else나 end가 문장을 구분하게된다.

if nA > 10 then
  nB := 10;
else
  nB := 20;

C를 짜던 사람이라면 위 소서를 일반적으로 생각하면 문제가 없지만, 델파이에서는 문자게 생긴다.
델파이에서는   nB := 10;에서 if문이 끝나게 된다.
델파이에서의 소스는 아래와 같이 써야된다.

if nA > 10 then
  nB := 10
else
  nB := 20;

begin ... end로 묶인 경우는 아래 소스와 같이 else 위의 end에는 세미콜론을 붙여서는 안된다.

if nA > 10 then
begin
  nB := 10;
  nC := 11;
end
else
begin
  nB := 20;
  nC := 22;
end;

그리고 아래의 소스에서 nC := 11 뒤에 세미콜론이 붙지않아도 문제가 된지않는다.
이것은 end가 문을 구분하는 것으로 인식하기 때문에 세미콜론이 반드시 필요하지 않다.

if nA > 10 then
begin
  nB := 10;
  nC := 11
end

조건문 case

case문은 복수의 선택을 할때 필요한 문을 실행할 수 있다.
(C에서의 switch문에 해당한다.)

사용예

  case StrToInt(Edit1.Text) of
    3 :
      begin
        Label1.Caption := '3';
      end;
    4 :
      begin
        Label1.Caption := '4';
      end;
    else
      begin
        Label1.Caption := 'XX';
      end;
  end;

반복문 while

while문은 루프의 처음에서 조건이 오고 조건이 성립할 때 반복하는 문이다.
(C에서의 while문에 해당)

사용예

ni := 0;
while ni < 10 do
begin
  AA[i] := 0;
  ni := ni + 1;
end;

반복문 repeat until

repeat until문은 루프의 마지막에서 조건이 오고 조건이 성립할 때 까지 반복하는 문이다.
(C에서의 do while문과 비슷하지만 조금 틀리다.)

사용예

  ni := 0;
  repeat
    AA[ni] := 0;
    ni := ni + 1;
  until ni > 10;

반복문 for

for문은 인덱스가 되는 값을 1씩 증가시키거나 감소시켜가며 반복하는 문이다.
(C의 for보다 유연성이 떨어짐)

  for ni := 0 to 9 do
  begin
    AA[ni] := ni;
  end;

인덱스를 감소시킬 때는 to 대신 downto를 써야된다.

  for ni := 9 downto 0 do
  begin
    AA[ni] := ni;
  end;

Comments