[PL] Ch08. Statement-Level Control Structures

dev-0eum·2023년 12월 16일
0

PL

목록 보기
4/4
post-thumbnail

08-1. Selection Statements

  • Two-way
    ㄴ if-else clause
  • Multiple-way
    ㄴ case clause
    ㄴ elif (using if)
    ㄴ COND

COND 부연설명

(COND
	(predicate_1 expression1) 
    ...
	(predicate_n expressionn)
	[(ELSE expressionn+1)] 
)

첫 #T(true)가 나올 때까지 평가
첫 번째 #T predicate의 expression 출력


08-2. Iterative Statements

Where do program detect to iterate?

pre-dection
"-------------"
|-- program --|
"-------------"
post-dection

  • Counter(계수기) Controlled Loops
for (int cnt = 0; cnt < 10; cnt++) // cnt가 계수기
	loop body
  • Logical-Controlled Loops
while (control expr) // 여기서 결정 with boolean value
	loop body 
  • User-Located Loop Control
break; // loop 전체 out
continue; // 이번 iteration만 out
  • Iteration Based on Data Structure
for (p = root; p == NULL; traverse(p)) // p는 tree의 node를 가리키는 ptr
	loop body

08-3. Unconditional Branching

goto


08-4. Guarded Commands

Dijkstra가 제안

if <Boolean expr> -> <statement> 
[] <Boolean expr> -> <statement>
	...
[] <Boolean expr> -> <statement> 
fi

모든 expr이 평가된다. 하나라도 #T이면 return true.
'non-true'만 return false

  • example
if x >= y -> max := x 
[] y >= x -> max := y 
fi // 같으면 임의의 stmt 출력

위는 다음과 같다.

if (x >= y) // 더 큰 값을 출력
	max = x;
else
	max = y;
profile
글을 쓰는 개발자

0개의 댓글