본문 바로가기
그냥 공부

"프로그래밍언어개론" 3주차 정리

by seungh2 2020. 4. 26.

변수 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으로부터 알 수 있는 정보

  1. 값의 범위 (range of value)
  2. 연산의 종류 (set of operations)
  3. 유효 숫자의 범위 (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

 

728x90

'그냥 공부' 카테고리의 다른 글

자바 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

댓글