프로그래밍 언어론 6-5-5강. Logically Controlled Loops

[프로그래밍 언어론]

2019. 12. 1. 13:36

 

[Logically Controlled Loops]

: 루프의 내용이 종료 조건을 테스트 하는 방법.

: 각 반복문 시작전에 조건을 테스트 하는 방식이 가장 일반적 ( = while 문)

 

# Algol-W에서의 반복문

while condition do statement

 

 

 

[Post-test Loops]

: 반복문을 실행한뒤에 종료 조건을 확인하는 방식 ( = do while 문)

: 두방식의 차이는 루프문의 내용이 길어질수록 중요해진다.

 

# 일반적인 post-test loop 작성 예시

repeat

  readln(line)

until line[1] = '$';

# C에서의 post-test loop문

do {

  line = read_line(stdin);

} while (line[0] != $');

 

 

 

[Mid-test Loops]

: 루프문의 중간에서 "종료 조건문"을 테스트해보는 방법 ( = break, exit문)

: 이방법밖에 사용할 수 없는 언어들도 있다.

 

# C에서의 mid-test loop문(break)

while (True){

  line = read_line(stdin);

  if (all_blanks(line)) break;

  consume_line(line);

}

# Ada에서의 mid-test loop문(exit)

outer: loop

  get_line(line, lenght);

  for i in 1..length loop

    exit outer when line(i) = "$";

    consume_char(line(i));

  end loop;

end loop outer;

# Java에서의 mid-test loop문

  : C/C++의 break문의 확장 형태. (loop문에 label 붙일수 있다)

outer:                                     // 라벨

  for (int i = 0; i < 3; i++) {

    for (int j = 0; j < 3; j++) {

      if (j == 2)

        break outer;

      System.out.println("" + i + "," + j);

    }

  }