플밍언어8. 제어문

ttomy·2022년 6월 7일
0

프로그래밍 언어

목록 보기
10/11

intro

8.1

배정문: 오른쪽의 식을 계산해 왼쪽에 assign
이것만으로는 부족하다. 흐름제어 필요

go to문? -> 어셈블리의 jump 하지만 많이 쓰면 스파게티 처럼
흐름이 얽힌다.-> wild go to
그래서 go to를 빼버린다.
대신 break,continue등이 생김 -> structured go to

8.2 selection statement

if-then-else
algol에서는 then이란 키워드가 있었지만 c에서 뺴버림.

  • nesting
    파이썬,F#은 인덴트로 구분할수 있음.
    ruby,lua는 then,end 예약어로 statement의 범위를 구분할 수 있음.

  • multiple selection
    ex)switch

363p c#
명시적으로 끝을 내줘야 한다. break...go to...
기본적으로는 case하나만 수행해야 함.

case-when하는 언어들도 있다. -> 루비

367p
COND 가 switch와 같은 기능.

8.3 iterative statement

loop를 말한다.
크게 3가지

  • for(카운터)

  • while(조건) logical-controlled loops

  • 데이터 스트럭쳐에 의한 loop-> 데이터 다 돌면 끝

8.3.1

8.3.2

while, do-while문

user-located loop control

375p continue, break

8.3.4 iteration based in data stucture

iterator- 반복자

477p 두번재 단락

376-377p java의 arraylist를 iterable하게 된다.
iterable 인터페이스 상속한 자료구조들

8.4 unconditional branching

go-to문을 말함.
pointer는 어느 것이든 가리킬 수 있는 것이고, go-to문은 어디든 갈 수 있는 것.-> 제한이 필요함.
위험해도 c언어네는 go-to문이 존재함.
c는 운영체제를 위해 만들었기 떄문에 편리하긴 함.

8.5 guarded commands

switch문처럼 if에 조건이 여러개
if문 이 끝났다는 표시-> fi

9

subprogram

  • procedure(c에서는 void형 함수)
  • function(결과값이 명확히 있음)

함수의 input-output-> domain-range

intro

process abstract(subprogram), data abstract
subprogram3가지 이점

  • 추상화
  • 재사용
  • 지역변수(information hiding)

9.2

함수는 쓰레드와 다르게 동시실행이 아니다. 호출자에게 값을 반환하며 한 흐름으로 수행된다.
subprogram이 active되었다는 것-> 호출되고 아직 실행이 끝나지 않은 것. -> 함수 안에서 함수를 호출하면 호출자도, 호출된 것도 active상태임. 이 동안 할당되는 메모리는 activation record라 함.

함수의parameter profile 은 formal 파라미터의 개수,순서,타입 등을 포함한다. 함수의 protocol은 함수의 파라미터 profile과 return 타입이다.

9.2.4 prodecure와 functions

procedure가 한 일은 (call by reference)주소로 받은 변수나,전역변수를 바꾸기에 태생적으로 커플링,side-effect를 발생시킴. 함수언어에서는 procedure라는 개념이 없다.

0개의 댓글