나무 숲

프로그래밍언어론 key8 Sequence Control 본문

Career

프로그래밍언어론 key8 Sequence Control

wood.forest 2016. 6. 12. 17:30

Sequence Control (Flow Control)

순서


Control 분류

Sequence control : 수행 순서 제어

Data control : 서브프로그램 사이의 데이터 흐름 제어


제어 대상(크기)에 따른 sequence control 분류

expression, statement, subprogram


표현 여부에 따른 sequence control 분류

Implicit : 기본적으로 정해져 있는 흐름 제어 (순차적으로 수행)

Explicit : 기본 흐름을 변경하기 위한 제어 (goto문)




Tree representation

연산자를 서브트리의 루트에, 피연산자를 하위 노드에 나타냄




PostFix

a + b : infix

+ a b : prefix (함수같은 모습)

a b +: postfix


postfix가 stack을 이용한 계산에 적합하기 때문에 많이 쓰인다. 컴파일러의 코드 생성에도 유리.





Precedence & Associativity

infix의 모호성 제거 + 괄호를 생략할 수 있도록 한다

Precedence우선순위 : 인접한 다른 연산자 사이의 피연산자가 어느 연산자의 피연산자인지 결정하기 위한 순위

Associativity결합방향 : 인접한 같은 우선순위의 연산자 사이의 피연산자가 어느 연산자의 피연산자인 결정하기 위한 순위




Evaluation Order

Eager Evaluation

피연산자의 값을 먼저 구하고 함수 적용 =~pass by value

Lazy Evaluation

함수의 정의에 따라 필요한 경우에만 피연산자의 값을 구함 =~pass by name




Side Effect

인수를 이용하여 결과 값을 계산하는 것 외에 수행하는 다른 연산computation


피연산자를 계산할 때 side effect가 발생하면 결과 값을 예측할 수 없다

해결 1: side effect를 허용하지 못하도록 강제함

해결 2: 피연산자 계산 순서 정확히




Short-Circuit Evaluation

일부 논리 연산자의 경우 좌측 피연산자의 계산 결과에 따라 우측 피연산자의 계산 여부를 결정할 수 있다

lazy evaluation의 특수 형태. (eager evaluation에 어긋남)




Statement Sequence Control

Explicit sequence control 기계어로부터. 

조건적/비조건적 goto

loop 반복 제어하는 break, continue


structured sequence control

Composition(Sequence) 놓인순서대로 수행

Alternation(selection) 둘 이상의 문장에 대해 하나 선택

Iteration(repetition) 특정문장 0회 이상 반복




Structured Programming

Goto를 사용하면..

프로그램 계층 구조 알아보기 힘들고 문장 순서가 수행 순서와 무관하여 스파게티 코드를 유발한다. 특정 문장 그룹이 여러 용도로 사용되어 이해하기 어렵다.

따라서,


Structured Programming

프로그램 설계를 계층적으로, 3가지 구조적 제어구조만 사용하며, 문장 순서=수행 순서가 되도록 하고, 어떤 문장 그룹은 하나의 목적으로만 사용되도록 한다.




Selection Structure

Single Branch

if ~ then ..!

Two Branch

if ~ then ...! else ...!!

Dangling else problem

if ~ then if ~~ then ...! else ...!!

누구의 else?

해결1: 가장 가까운, 앞, 짝 없는 if

해결2: end-if를 강제




Proper Program

제어 흐름이,

입구 하나, 출구 하나, 입구로부터 모든 노드로 경로가 있고 모든 노드에서 출구로 경로가 있는 제어흐름을 가진 프로그램


Prime Program: 두 개 이상의 노드로 이루어진 proper program을 포함하고 있지 않은 proper program

Composite Program: prime program이 아닌 proper program


728x90
반응형

'Career' 카테고리의 다른 글

[파이썬] 설치 + 간단한 사용  (0) 2016.07.19
[코로나 SDK] 소개+환경구축  (0) 2016.07.09
프로그래밍언어론 key7 Inheritance  (0) 2016.06.12
프로그래밍언어론 key6 Encapsulation  (0) 2016.06.12
Control Unit Operation  (0) 2016.06.11
Comments