랑아
article thumbnail

02. 자료 객체

01. 예약어(Reserved Word)

1) 예약어, 변수, 상수 구분을 위한 C언어 코드

main() {
    int kor, eng;
    kor = 70;
    eng = 80;
    printf("#d #d", kor, eng);
}
  • 예약어 : int
  • 변수 : kor, eng
  • 상수 : 70, 80
  • 지원 함수 : main(), printf()

2) 예약어의 정의

  • 프로그래밍 언어에서 시스템이 알고 있는 특수한 기능을 수행하도록 이미 용도가 정해져 있는 단어

3) 예약어의 특징

  • 프로그램을 번역할 때 예약어의 사용은 심볼 테이블 검색 시간을 단축시킴
  • 번역 과정에서 성능을 향상시킬 수 있음
  • 프로그램의 신뢰성을 향상시킴
  • 예약어는 오류 회복(Error Recovery)을 가능하게 함
  • 예약어는 프로그래밍 언어에서 사용하는 명령어, 연산, 함수명들로 새로운 프로그래밍 언어일수록 기능이 많아지기 때문에 예약어 수가 많아질 수밖에 없음



02. 변수와 상수

1) 변수

  • 기억 장치의 한 장소를 추상화한 것으로 프로그램이 동작하는 동안 값이 수시로 변할 수 있는 공간
  • 어떤 값을 주기억 장치에 기억하기 위해서 사용하는 공간을 의미

2) 변수의 특징

  • 변수는 변수명(이름), 값, 속성, 메모리 위치로 구성됨
  • 프로그램 실행 과정에서 하나의 기억 장소를 차지함
  • 프로그래머가 각 언어별로 변수명을 만드는 규칙에 따라 임의로 이름을 붙일 수 있음
  • 변수의 유형은 컴파일 시간에 한 번 정해지면 일반적으로 그대로 유지함
  • 변수명은 묵시적으로 변수형을 선언할 수도 있고, 명시적으로 사용할 수도 있음

3) 상수

  • 프로그래밍 언어에서 수명 시간 동안 고정된 하나의 값과 이름을 가진 자료로써 프로그램이 동작하는 동안 값이 절대로 바뀌지 않는 것을 의미함

4) 식별자

  • 프로그램의 구성 요소를 구별하기 위한 기준으로, 변수명이 식별자에 속함

5) 선언

  • 명시적 선언 : 선언문을 이용하여 변수 이름을 나열하고 속성을 부여하는 방식
  • 묵시적 선언 : 별도의 선언문 없이 상수 값에 의해 속성이 부여되는 방식

6) 할당

  • 변수에 메모리 공간을 바인딩하는 작업을 의미함
    • 바인딩(Binding) : 변수들이 갖는 속성이 완전히 결정되는 시간

7) 데이터 타입(Type, 유형)

  • 변수가 가질 수 있는 속성 값의 길이 및 성질을 의미함
  타입     설명  
  논리 타입     조건이 참인지 거짓인지 판단하고자 할 때 사용  
  문자 타입     문자 하나를 저장하고자 할 때 사용  
  문자열 타입     나열된 여러 개의 문자를 저장하고자 할 때 사용  
  정수 타입     정수 값을 저장하고자 할 때 사용  
  부동 소수점 타입     소수점을 포함하는 실수 값을 저장하고자 할 때 사용  
  배열 타입     여러 데이터를 하나로 묶어서 저장하고자 할 때 사용  



03. 배열(Array)

1) 배열의 개념

  • 같은 크기와 타입의 자료를 연속적인 기억 장치에 저장하여 처리하는 구조
  • 고정 크기의 메모리 공간을 사용함
  • 연속적인 기억 장치를 사용하므로 액세스 시간이 짧고 구조가 간단함
  • 연속적인 공간을 사용하므로 중간에 삽입/삭제가 어려움
  • 주어진 자료를 찾을 때 가장 좋은 방법
  • 논리적인 순서와 물리적인 순서가 같음
  • 같은 항목들의 집합으로 각 자료마다 개별적인 변수를 사용하는 번거로움을 줄일 수 있음
  • 각각의 변수를 생성하지 않고, 동일한 데이터 타입의 데이터를 묶어서 하나의 변수에 저장하고 싶은 경우에는 배열 타입을 이용하여 저장함
  • 배열은 여러 개의 변수가 필요할 때 모든 변수를 일일이 선언하지 않고 하나의 변수명으로 선언할 수 있기 때문에 프로그램을 효율적이면서도 쉽게 개발할 수 있도록 해줌
  • 연속적인 기억 공간에 변수명이 동일하므로 프로그램 실행 속도도 빨라지고, 프로그래밍 하기도 쉬워짐

2) 2개의 행, 5개의 열을 가지는 2x5 배열의 경우

  • 행은 첫 번째 첨자에, 열을 두 번째 첨자에 지정하여 배열을 정의함
  • C언어의 선언 : int A[2][5];
  • Java의 선언 : int[][] A = new int[2][5];
  • FORTRAN : INTEGER A(2, 5)



04. 포인터(Pointer)

1) 포인터

  • 변수명은 기억 장소의 명칭이고 프로그래머가 알고 있는 이름으로 기호 번지라고도 함
  • 변수명에는 실제 기억 장소의 위치인 절대 번지가 존재하는데 이 절대 번지를 주소 상수라고 하거나 포인터 상수라고 함
  • 프로그래머가 하나의 변수를 선언하면 변수명과 변수가 실제로 위치하는 절대 번지가 함께 확보되는 것

2) 포인터의 특징

  • 자료 객체를 참조하기 위해 주소를 값으로 하는 형식
    • 자료 객체 : 변수, 상수, 배열, 리스트와 같은 자료 구조
  • 커다란 배열에 원소를 효율적으로 저장하고자 할 때 이용함
  • 하나의 자료에 동시에 많은 리스트의 연결이 가능함
  • 고급 언어에서 주로 사용되는 기법



05. 사용자 정의 자료형

1) 열거체

  • 괄호 안에 연속적인 값이 들어가는 자료형
  • 특정 값을 넣어 주지 않으면 1씩 늘어나기 때문에 상수 배열이라고 부르기도 함

2) 구조체

  • 괄호 안에 멤버 변수를 사용하는 자료형
  • 멤버 변수 자료형을 자유롭게 선언할 수 있음

3) 공용체

  • 구조체와 거의 유사하나 조금 더 범주가 크다고 볼 수 있음
  • 열거체나 구조체와 달리 공용체명을 작성해야 하며, 구조체를 멤버로 사용할 수 있음



06. 바인딩(Binding)

1) 바인딩의 개념

  1. 바인딩의 정의
    • 프로그램에서 어떤 변수의 명칭과 그 메모리 주소, 데이터형 또는 실제 값을 연결하는 것
    • 변수와 변수에 관련된 속성을 연결하는 과정
  2. 바인딩 시간(Binding Time)
    • 프로그램에서 변수들이 갖는 속성이 완전히 결정되는 시간

2) 바인딩 시간의 종류

  1. 언어 정의 시간
    • 프로그램의 자료 구조, 택일문 등을 확정하는 시간
  2. 언어 구현 시간
    • 프로그램의 자료 구조인 정수형이나 실수형이 실제 가지는 값을 할당하는 시간
  3. 번역 시간
    • 컴파일 시간 : 변수의 형과 구조를 결정하는 시간
    • 링크 시간 : 외부 함수 간에 호출 정보를 인식하는 시간
    • 적재 시간 : 전역 변수의 위치를 할당하는 시간
  4. 실행 시간
    • 자동 변수의 값이나 연산을 수행하는 시간

3) 정적 바인딩과 동적 바인딩

  1. 정적 바인딩(Static Binding, 전기 바인딩)
    • 프로그램 실행 시간 전에 속성을 연결하는 방식
    • 언어 정의 시간, 언어 구현 시간, 번역 시간, 정적 변수 확보 등이 있음
    • 동적 바인딩에 비해 효율성을 확보할 수 있음
  2. 동적 바인딩(Dynamic Binding, 후기 바인딩)
    • 프로그램 실행 시간에 속성을 연결하는 방식
    • 실행 시간, 프로그램 호출 시간, 모듈의 가동 시간, 실행 시간 중 객체 사용 시점, 지역 변수 확보 등이 있음
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!