코딩 이야기/델파이 코딩

델파이 제어 구조

안개소리 2025. 4. 15. 07:54

 

델파이 제어 구조

1. 조건문

주어진 조건에 따라 다른 코드를 실행합니다.

1.1. IF 문

  • IF-THEN: 조건이 참이면 then 키워드 뒤의 코드를 실행합니다.
    
    var
      Number: Integer;
    begin
      Number := 10;
      if Number > 5 then
        ShowMessage('숫자가 5보다 큽니다.');
    end;
                        
  • IF-THEN-ELSE: 조건이 참이면 then 뒤, 거짓이면 else 뒤의 코드를 실행합니다.
    
    var
      Number: Integer;
    begin
      Number := 3;
      if Number > 5 then
        ShowMessage('숫자가 5보다 큽니다.')
      else
        ShowMessage('숫자가 5보다 작거나 같습니다.');
    end;
                        
  • IF-THEN-ELSE IF (else if): 여러 조건을 순차적으로 확인합니다.
    
    var
      Grade: Char;
    begin
      Grade := 'B';
      if Grade = 'A' then
        ShowMessage('최우수')
      else if Grade = 'B' then
        ShowMessage('우수')
      else if Grade = 'C' then
        ShowMessage('보통')
      else
        ShowMessage('노력 필요');
    end;
                        

1.2. CASE 문

  • 단순 CASE 문: 하나의 표현식 값을 여러 상수 값과 비교합니다.
    
    var
      Day: Integer;
      DayName: String;
    begin
      Day := 3;
      case Day of
        1: DayName := '월요일';
        2: DayName := '화요일';
        3: DayName := '수요일';
        4: DayName := '목요일';
        5: DayName := '금요일';
      else
        DayName := '주말';
      end;
      ShowMessage('오늘은 ' + DayName + '입니다.');
    end;
                        
  • 범위 CASE 문: 값의 범위를 지정하여 비교할 수 있습니다.
    
    var
      Score: Integer;
      Result: String;
    begin
      Score := 85;
      case Score of
        90..100: Result := '합격 (매우 잘함)';
        80..89:  Result := '합격 (잘함)';
        70..79:  Result := '합격 (보통)';
      else
        Result := '불합격';
      end;
      ShowMessage('결과: ' + Result);
    end;
                        

2. 반복문

특정 조건이 만족될 때까지 코드 블록을 반복적으로 실행합니다.

2.1. FOR 문

  • FOR TO DO: 지정된 범위의 값을 순차적으로 반복합니다.
    
    var
      i: Integer;
    begin
      for i := 1 to 5 do
        ShowMessage('카운터: ' + IntToStr(i));
    end;
                        
  • FOR DOWNTO DO: 지정된 범위의 값을 역순으로 반복합니다.
    
    var
      i: Integer;
    begin
      for i := 5 downto 1 do
        ShowMessage('카운터 (역순): ' + IntToStr(i));
    end;
                        

2.2. WHILE 문

주어진 조건이 참인 동안 코드를 반복합니다. 루프 시작 전에 조건을 평가합니다.


var
  Counter: Integer;
begin
  Counter := 1;
  while Counter <= 5 do
  begin
    ShowMessage('카운터 (WHILE): ' + IntToStr(Counter));
    Inc(Counter); // Counter := Counter + 1;
  end;
end;
            

2.3. REPEAT UNTIL 문

주어진 조건이 참이 될 때까지 코드를 반복합니다. 루프 본문이 최소 한 번 실행된 후 조건을 평가합니다.


var
  Counter: Integer;
begin
  Counter := 1;
  repeat
    ShowMessage('카운터 (REPEAT): ' + IntToStr(Counter));
    Inc(Counter); // Counter := Counter + 1;
  until Counter > 5;
end;
            

3. 기타 제어문

  • BREAK: for, while, repeat 루프를 즉시 종료합니다.
    
    var
      i: Integer;
    begin
      for i := 1 to 10 do
      begin
        ShowMessage('카운터: ' + IntToStr(i));
        if i = 5 then
          break;
      end;
      ShowMessage('루프 종료');
    end;
                        
  • CONTINUE: 현재 루프의 나머지 코드를 건너뛰고 다음 반복을 시작합니다.
    
    var
      i: Integer;
    begin
      for i := 1 to 5 do
      begin
        if i = 3 then
          continue;
        ShowMessage('카운터: ' + IntToStr(i));
      end;
    end; // 출력: 1, 2, 4, 5
                        
  • GOTO: 지정된 레이블로 프로그램 실행 흐름을 옮깁니다. 사용은 권장되지 않습니다.
    
    label
      StartPoint;
    var
      i: Integer;
    begin
      i := 1;
      StartPoint:
        ShowMessage('카운터: ' + IntToStr(i));
        Inc(i);
        if i <= 5 then
          goto StartPoint;
    end;
                        
  • EXIT: 현재 프로시저나 함수를 즉시 종료합니다.
    
    procedure DoSomething(Value: Integer);
    begin
      if Value = 0 then
        exit;
      ShowMessage('입력 값: ' + IntToStr(Value));
    end;
    
    begin
      DoSomething(10); // "입력 값: 10" 출력
      DoSomething(0);  // 즉시 종료
      ShowMessage('프로그램 계속');
    end;