관리 메뉴

너와 나의 스토리

[프로그래밍 언어론] CH7 Expressions and Assignment Statements 본문

Programming Language

[프로그래밍 언어론] CH7 Expressions and Assignment Statements

노는게제일좋아! 2019. 12. 4. 21:15
반응형

연산자 평가 순서

  1. 변수: 메모리에서 값을 가져옴
  2. 상수: 메모리에서 가져오거나 때로는 상수가 기계어 명령에 있다.
  3. 괄호로 묶은 표현식: 모든 피연산자와 연산자를 먼저 평가
  4. 피연산자가 함수 호출

 

 

 

Referential Transparency (참조 투명성)

  • 동일한 값을 갖는 프로그램에서 두 표현식이 프로그램 동장에 영향을 주지 않고 프로그램의 어느곳에서나 대체될 수 있는 경우
  • 장점: 프로그램의 의미를 이해하기 쉬움
  • 변수가 없기 때문에 순수 함수형 언어는 참조가 투명
    • 함수는 로컬 변수에 저장된 상태를 가질 수 없음
    • 함수가 외부 값을 사용하는 경우 상수여야 함(변수 안됨). 따라서 함수의 값은 매개변수에만 의존

 

 

Assignment Statements

·=  :Fortran, BASIC, C기반 언어

·:=  :Ada

 

  • Unary Assigment Operator
    • C기반 언어의 단항 대입 연산자는 증분, 감소 연산을 대입에 결합
    • 예: sum= ++count
  • Assignment as an Expression
    • C 기반 언어, Perl, Javascript에서 대입문은 결과를 생성하고 피연산자로 사용할 수 있음
    • 예: while((ch=getchar())!=EOF){}
    • 단점: 또 다른 종류의 표현식의 부작용
  • Multiple Assignment
    • Perl, Ruby, Lua는 multiple target multiple-source 대입 허용
    • 예: ($first, $second, $third) = (20,30,40);
  • Assignment in Functional languages
    • functional languages의 식별자는 값의 이름일 뿐이다.
  • Mixed-Mode Assignment
    • 대입문은 mixed-mode일 수 있다
    • Fortran, C, C++에서 모든 숫자 값은 모든 숫자 타입 변수에 지정 가능
    • Java, C#에서는 widening assignment coercion만 수행
    • Ada에는 assignment coercion 없음

 

 

 

 

 

 

 

 

반응형
Comments