변수 Variables
변수와 von Neumann 구조
- 명령형 언어는 von Neumann 구조의 컴퓨터를 구현한 형태이다.
- 변수는 명령형언어에서 매우 중요한 요소이다. 변수를 사용하지 않고서는 프로그램을 작성하기 매우 어렵다.
- 프로그래밍 언어에서 변수는 von Neumann 구조의 기억장소를 표현한다.
변수의 속성 (6개)
1. 변수의 이름
대부분의 프로그래밍언어에서 변수 이름은 일반적으로
'첫 문자는 영문자, 두 번째 문자는 영문자나 숫자'의 형태를 갖는다.
¿변수 이름의 최대 길이는 몇 자인가?
- 변수 이름의 최대 길이가 짧으면 Readability(가독성)이 떨어진다.
¿변수 이름에 특수 문자 사용이 가능한가?
- 변수 이름에 특수 문자 사용이 가능하면 Readavility(가독성)이 향상된다.
¿변수 이름에서 대소문자를 구별하는가?
- 대소문자를 구별하는 언어는 Readability(가독성)이 떨어진다.
- C, C++, Java는 대소문자 구별
¿특수 단어가 keyword인가 아니면 reserved word(예약어)인가?
- 특수 단어 : 프로그램의 구성 요소들을 구별하기 위한 단어
ex) if, for, while, begin ...
- keyword : 특정 문맥에서만 의미를 가지기 때문에 변수 이름으로 사용이 가능하다.
- 특수 단어가 keyword이면 Readability가 떨어진다.
- Reserved word(예약어) : 정의된 목적 이외에 프로그래머 임의로 사용할 수 없다. ex) C
♭무명 변수
- anonymous variable.
- 이름이 없는 변수.
2. 변수의 주소(address)
- 프로그램에서 사용되는 변수는 Type의 크기만큼 기억장소가 대응된다.
- 한 변수의 주소는 실행 시점에 따라 주소가 다를 수 있다.
- 동일한 이름의 변수는 프로그램에서 사용된 위치에 따라 주소가 다를 수 있다.
int x; //전역변수
foo() {
int x; ... //foo의 지역변수
}
goo() {
int x; ... //goo의 지역변수
}
- 하나의 기억장소에 여러 개의 변수 이름이 대응될 수 있다. (Alias현상)
♭Alias 현상 (별칭)
- 하나의 기억장소를 여러 개의 이름으로 사용할 때.
- Alias 현상이 존재하면 Readability와 reliability가 좋지 않다.
♭Alias 현상이 발생하는 경우
1. Pointer 사용
int *p, *q;
p = q = (int *) malloc(...);
p와 q를 통해서 기억장소에 접근이 가능하다. 그 기억장소는 무명변수!
2. 참조변수(Reference variable) 사용 (C++)
int ans;
int &ref_ans = ans;
&ref_ans에 ans의 주소가 저장된다.
ans의 기억장소는 ans로 접근가능하지만 ref_ans로도 접근이 가능하다.
3. union 사용 (C, C++)
union { int p;
flot q;
} a;
한 장소를 2가지 이름(p, q)으로 사용한다.
4. Call-by-Reference(참조 전달)에 의한 parameter(인자) 전달 (C++)
void foo(int &x, ...){...}
main(){
int a;
foo(a, ...)
...}
a의 기억장소를 x로도 접근 가능하다.
3. 변수의 Type
Type의 종류
Primitive Data Type(기본) : 정수형, 실수형, 문자형, 논리형. 기본적으로 제공되는 것.
Derived Data Type(유도된) : 배열, 구조체, pointer ...
Primitive Data Type을 이용해 만드는 것.
사용자가 정의한다고 해서 User-defined Data Type이라고도 한다.
Type으로부터 알 수 있는 정보
- 값의 범위 (range of value)
- 연산의 종류 (set of operations)
- 유효 숫자의 범위 (precision) : 실수형의 경우
4. 변수의 값 (value)
- 변수에 대응되어 있는 기억장소에 저장되어 있는 값.
- 변수의 l-value : 변수의 주소
- 변수의 r-value : 변수의 값
Parameter passing(인자 전달)
- Call-by-value 값 전달 : r-value를 전달
- Call-by-reference 참조 전달 : l-value를 전달
5. 변수의 영역
6. 변수의 존속기간
- 변수에 기억장소가 할당되는 시점부터 반환되는 시점까지의 시간
- 생성부터 소멸까지의 시간
2020/04/29 - [2020_소소하게] - 4월 29일 수요일 소소한 공부
4월 29일 수요일 소소한 공부
"프로그래밍언어개론" 3주차 복습 지금 듣고있는 전공 과목인 "프로그래밍언어개론" 3주차 소소한 복습! Binding 개체에 속성을 맺어주는 것. 1. 변수 Binding : 변수에 변수와 관련된 속성을 맺어주는 것. 2. 연..
seunghee114-blog.tistory.com
'그냥 공부' 카테고리의 다른 글
자바 StringTokenizer (0) | 2020.08.25 |
---|---|
for문과 while문 (0) | 2020.08.25 |
[알고리즘] 에라토스테네스의 체 (0) | 2020.07.22 |
"프로그래밍언어개론" 5주차 정리 (0) | 2020.06.03 |
"프로그래밍언어개론" 4주차 정리 (0) | 2020.05.21 |
댓글