Expressions Statements 1 Assignment statement gAssignment statement 6

  • Slides: 51
Download presentation
Expressions, Statements 1

Expressions, Statements 1

배정문(Assignment statement) g배정문(Assignment statement) - 변수 내용을 변경시키는 기본 연산 6

배정문(Assignment statement) g배정문(Assignment statement) - 변수 내용을 변경시키는 기본 연산 6

배정문(Assignment statement)(2) • 각종 배정 연산자 – C, Java, Fortran – Algol, Pascal –

배정문(Assignment statement)(2) • 각종 배정 연산자 – C, Java, Fortran – Algol, Pascal – APL – Basic – Cobol A=B A : = B A B LET A = B MOVE B TO A • l-values와 r-values – 배정 연산자의 왼쪽(l-value)과 오른쪽(r-value)을 의미 – 예) A : = B r-value l-value 7

ADA의 수식에 대한 EBNF <expression> : : = <relation>{and<relation>} | <relation>{or<relation>} | <relation>{xor<relation>} <relation>

ADA의 수식에 대한 EBNF <expression> : : = <relation>{and<relation>} | <relation>{or<relation>} | <relation>{xor<relation>} <relation> : : = <simpleexpression> [ <relationalop> <simpleexpression> ] <simpleexpression> : : = [ <unaryop> ] <term> { <addop> <term> } <term> : : = <factor> { <mulop> <factor> } <factor> : : = <primary>[<exponenop><primary. ] <primary> : : = <literal> | <aggregate> | <name> | <allocator> | <functioncall> | <qualifiedexpression> | (<expression>) <relationalop> : : = = | /= | <= | >= <addop> : : = +| - | & <unaryop> : : = + | - | not <mulop> : : = * | / | mod | rem <exponenop> : : = ** 27

ADA의 임의 수식 parse tree 예 수식 : not A ** B * C

ADA의 임의 수식 parse tree 예 수식 : not A ** B * C / D > - E + F and G mod H >= I 28

조건문(Conditional Statements) g 조건문 • FORTRAN IF (BCOND) L 1 , L 2 IF

조건문(Conditional Statements) g 조건문 • FORTRAN IF (BCOND) L 1 , L 2 IF (BCOND) <STMT> IF (ACOND) L 1 , L 2 , L 3 GOTO문 요구 판독성 저하 30

조건문(Conditional Statements)(2) • Algol 60 if cond then S 1 else S 2 택일문

조건문(Conditional Statements)(2) • Algol 60 if cond then S 1 else S 2 택일문 처리, dangling else Fortran 77에서는 dangling else의 해결로 ENDIF 사용 31

조건문(Conditional Statements)(3) • 중첨 if문 개선 표 5. 5 nested if문 구조 if C

조건문(Conditional Statements)(3) • 중첨 if문 개선 표 5. 5 nested if문 구조 if C 1 then S 1 else if C 2 then S 2 else if C 3 then S 3. . . . else if Cn then Sn else Sn+1 end if. . . . end if 32

조건문(Conditional Statements) (4) • 다수의 endif 사용을 줄이고 판독성을 증가시키기 위해 새 구문 형태

조건문(Conditional Statements) (4) • 다수의 endif 사용을 줄이고 판독성을 증가시키기 위해 새 구문 형태 도입 예) Algol 68의 elif (최초 시도), Ada의 elsif • Ada의 elsif 사용한 표 5. 6 개선 예 if C 1 then S 1 elsif C 2 then S 2 elsif C 3 then S 3. . . elsif Cn then Sn else Sn+1 endif; 33

조건문(Conditional Statements) (5) g CASE 문 - if-then-else를 확장한 택일문 34

조건문(Conditional Statements) (5) g CASE 문 - if-then-else를 확장한 택일문 34

조건문(Conditional Statements) (6) • Algol-w(Hoare, Wirth) case <integer expression > of begin S 1;S

조건문(Conditional Statements) (6) • Algol-w(Hoare, Wirth) case <integer expression > of begin S 1;S 2;. . . ;Sn end • Pascal case < expr > of <case label list>:<stmt>. . . <case label list>:<stmt> end <integer expression > : (1 ~ n) 정수 임의 i 이면 Si 실행 열거형 도입 <case label list>는 <expr>의 상수 35

조건문(Conditional Statements) (7) • Pascal case문 사용 예 case thismonth of Feb, Apr, Jun,

조건문(Conditional Statements) (7) • Pascal case문 사용 예 case thismonth of Feb, Apr, Jun, Jul, Aug : birthday : = 4; Sep : birthday : = 1; Jan, Mar, May, Oct, Nov, Dec : birthday : = 0; end; 다음 문장이 정의되었다고 가정 type months = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); var thismonth : months; • Ada – others절 도입 – 열거형과 부분범위(range)형 – 예 case thismonth is when Feb|Apr|Jun. . Aug ⇒ birthday : = 4; when Sep ⇒ birthday : = 1; when others ⇒ birthday : = 0; endcase; 36

반복문(Iterative Statements)(2) • 종류 ① 가장 간결한 형태 (괄호 사용 개념) – loop-repeat 문

반복문(Iterative Statements)(2) • 종류 ① 가장 간결한 형태 (괄호 사용 개념) – loop-repeat 문 (구현 예) – 탈출 방법(조건/무조건 분기문 이용) goto(비구조적) -> exit(제한적 goto) – Bliss-10 (다양한 exit 제공) <loop-until 예> loop if not <조건> then exit <statement> repeat - exit, exitblock, exitcase, exitcommand, exitselect, exitloop, exitset 사용 – Bliss II (label을 사용하므로써 중첩된 scope을 한번에 탈출 가능) - exit<label> : label은 scope 이름 반복문 몸체, 복합문, case 문 등 40

GOTO 문 (3) 50

GOTO 문 (3) 50