본문 바로가기
기타

프로그래밍 언어의 기본 공통 개념

by oncerun 2020. 10. 26.
반응형

현재 사용되는 대부분의 프로그래밍 언어들은 공통적인 몇 가지 개념을 사용한다.

 

1. 대입문

 대입문은 변수나 기억장치 주소에 값을 저장하는 역할을 한다. 대입문은 명령형 언어의 가장 주요한 기능 중의 하나이다. 대입문은 보통 다음과 같은 일반적인 형태를 가진다.

<수식 1> = <수식 2>

여기서 수식 1은 '왼쪽 값'이라고 하고, 값이 저장될 위치를 가리킨다. 수식 2는 '오른쪽 값'이라고 하고 수식 1이 가리키고 있는 곳에 저장할 값을 의미한다. 

즉 대입문은 <수식 2>의 '값'을  <수식 1>의 '주소가 가리키는 기억장치의 저장장소'에 저장한다.

 

2. 변수형 검사

 변수형은 연산에 사용되는 상수나 변수의 종류를 지정해서 연산 수행 시에 호환성이 없는 변수형 간의 연산을 막아서 연산의 결과로 얻게 되는 정보의 손실을 최소화하기 위해 사용 도니다.

예를 들자면 정수를 문자열로 나눈다거나 객체로 곱한다는 것은 의미가 없다. 이러한 변수형이 호환되지 않는 연산을 찾아내는 것을 형 검사(type checking)이라고 한다.

형 검사는 컴파일 과정에서 이루어지는 정적형 검사 방식과 프로그램의 실행(run-time) 중에 이루어지는 동적형 검사 방식이 존재한다.

 

3. 블록과 변수의 유효 범위

 프로그래밍 언어에서 중요한 문제 중의 하나는 변수나 기타 식별자가 코드의 어떤 범위에서 유요한 가 하는 유효 범위 결정 문제(변수에 대한 저장장치의 할당이 유지되는가)이다.

고급 언어들은 대부분 여러 개의 명령문이 모여서 하나의 명령문을 만드는 복합문이나 여러 개의 명령문이 모여 있는 블록을 프로그래밍 언어 내에서 구현하고, 이를 기초로 변수의 유효 범위를 결정한다.

블록들은 중첩되는 구조도 가질 수 있어서 블록 안에 다른 블록이 사용될 수 있다.

  전역 변수는 프로그램 코드의 모든 영역에서 저장장치의 할당이 유효하며, 지역변수는 그 변수가 정의된 블록 안에서만 저장장치의 할당이 유효하다.

 특정 블록의 명령문의 실행이 시작되면, 블록에서 사용될 지역변수에 대한 저장장치의 할당이 이루어지고 종료되면 해당 지역변수는 저장장치에서 삭제된다. 블록은 각 프로그래밍 언어마다 다르다 파이썬은 : C언어는 {}등등 이 존재한다.

 

4. 함수와 프로시저

 자주 사용되는 부분을 하나의 단위로 묶어 고유의 이름을 정의하고 그 이름을 명령어처럼 사용하는 것을 부 프로그램이라고 한다.

부 프로그램에는 두 가지 함수와 프로시저로 구분된다.  기능적으로 거의 동일하지만 함수는 코드 부분의 실행 결괏값을 return 하지만 프로시저는 return 값이 존재하지 않는다. 각 프로그래밍 언어마다 동일한 개념으로 사용하거나 분리하기도 한다.

 함수의 요구 조건

1) 함수 호출과 제어의 이전

  • 제어의 시작이 되는 제어 진입점이 한 곳으로 한정된다
  • 함수를 호출한 프로그램이나 함수의 수행이 일시적으로 중단되고 실행 흐름의 제어가 호출된 함수로 이전된다.
  • 함수 종료 조건이 만족될 때 실행 제어의 흐름이 다시 돌아간다.

2) 함수의 매개변수

  •  매개변수는 호출하는 프로그램과 호출되는 함수 사이에서 주고받는 데이터이다.
  •  호출한 프로그램에서 함수를 정의할 때 사용된 매개 변수를 형식 매개변수라고 하고, 호출하는 프로그램에서 함수를 호출하기 위해 사용된 매개변수를 실매개변수라고 한다

3) 함수의 매개변수 전달 방식

 호출하는 프로그램과 호출되는 함수 사이의 매개변수를 전달하는 방식에 따라 값 호출 방식과 참조 호출 방식으로 나뉜다.

 값 호출 방식은 실매 개변수의 주소값을 전달하는 것이 아닌 실매 개변수의 값을 호출된 함수의 매개변수로 넣어주는 것으로 호출된 함수에서의 결과 값이 호출한 프로그램에 반영되지 않는다.

반대로 실매개변수 자체가 형식 매개변수 자리를 취해서 함수 안에서 형식 매개변수에 행해진 모든 조작이 그대로 실매 개변수에 가해지는 방식을 참조 호출이라고 한다.

예를 들어 C언어에서 함수의 실행 결과를 실매개변수에 반영하기 위해서는 실매개변수의 주소를 호출 함수의 매개변수로 전달한다.

void swap(int*x, int*y) {
	int*tmp;
    
    tmp =x;
    *x = *y;
    *y = *tmp;
}

 

반응형

'기타' 카테고리의 다른 글

Web의 발전과 상식  (0) 2021.02.10
컴퓨터의 병렬처리 시스템  (0) 2020.11.04
조합회로와 순차회로  (0) 2020.10.26
부동소수점 실수 표현  (0) 2020.10.11
펌 특수문자 모음  (0) 2020.10.11

댓글