배정문: 오른쪽의 식을 계산해 왼쪽에 assign
이것만으로는 부족하다. 흐름제어 필요
go to문? -> 어셈블리의 jump 하지만 많이 쓰면 스파게티 처럼
흐름이 얽힌다.-> wild go to
그래서 go to를 빼버린다.
대신 break,continue등이 생김 -> structured go to
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와 같은 기능.
loop를 말한다.
크게 3가지
for(카운터)
while(조건) logical-controlled loops
데이터 스트럭쳐에 의한 loop-> 데이터 다 돌면 끝
while, do-while문
user-located loop control
375p continue, break
iterator- 반복자
477p 두번재 단락
376-377p java의 arraylist를 iterable하게 된다.
iterable 인터페이스 상속한 자료구조들
go-to문을 말함.
pointer는 어느 것이든 가리킬 수 있는 것이고, go-to문은 어디든 갈 수 있는 것.-> 제한이 필요함.
위험해도 c언어네는 go-to문이 존재함.
c는 운영체제를 위해 만들었기 떄문에 편리하긴 함.
switch문처럼 if에 조건이 여러개
if문 이 끝났다는 표시-> fi
subprogram
함수의 input-output-> domain-range
process abstract(subprogram), data abstract
subprogram3가지 이점
함수는 쓰레드와 다르게 동시실행이 아니다. 호출자에게 값을 반환하며 한 흐름으로 수행된다.
subprogram이 active되었다는 것-> 호출되고 아직 실행이 끝나지 않은 것. -> 함수 안에서 함수를 호출하면 호출자도, 호출된 것도 active상태임. 이 동안 할당되는 메모리는 activation record라 함.
함수의parameter profile 은 formal 파라미터의 개수,순서,타입 등을 포함한다. 함수의 protocol은 함수의 파라미터 profile과 return 타입이다.
procedure가 한 일은 (call by reference)주소로 받은 변수나,전역변수를 바꾸기에 태생적으로 커플링,side-effect를 발생시킴. 함수언어에서는 procedure라는 개념이 없다.