12강. 프로그래밍 언어 (2)

학습개요

프로그래밍 언어의 구문과 구조, 부프로그램과 매개변수 등에 대해서 이해한다. 특히, 변수와 기억장소의 관계에 대해서 이해하며, 객체지향 프로그램의 특성에 대해서 공부한다.

학습목표

  1. 프로그래밍 언어의 기본적이고 공통적인 여러 요소들의 개념을 이해할 수 있다.
  2. 함수의 매개변수로 형식매개변수와 실매개변수의 관계, 그리고 값호출과 참조호출의 차이를 이해한다.
  3. 객체지향프로그램의 추상화와 캡슐화에 대해서 공부한다.

연습문제

  1. C언어에서 int x = 10 + “hello”; 의 명령이 주어졌을 때 어떤 오류나 경고가 뜨는가?
    1. 문법 오류 (syntax error)
    2. 실행 오류 (runtime error)
    3. 논리 오류 (logic error)
    4. 형 (type) 경고
      정답 : 4

      ● 변수 형은 연산에 사용되는 상수(constant)나 변수(variable)의 종류를 지정해서 연산 수행 시에 호환성이 없는 변수 형간의 연산을 막아서 연산의 결과로 얻게 되는 정보의 손실을 최소화하기 위해 사용된다. 예를 들어 정수를 문자열로 나눈다거나 복잡한 구조체(struct) 타입으로 곱하는 것은 연산의 의미가 없다. 혹은 정수와 실수의 덧셈에서 정수 형으로 연산을 수행하면 실수값의 일부분을 잃게 된다. 이렇게 변수 형이 호환되지 않는 연산을 찾아내는 것을 형 검사(type checking)라고 한다. 형 검사는 컴파일 과정에서 이루어지는 정적(static) 형 검사 방식과 프로그램의 실행(run-time) 중에 이루어지는 동적(dynamic) 형 검사 방식이 있다.

  2. 다음 중 프로그램에 관한 사고를 간소화하기 위한 방법이 아닌 것은?
    1. 암호화
    2. 추상화
    3. 코드 숨기기
    4. 캡슐화
      정답 : 1

      ● 추상화라는 개념은 필수적인 속성만을 가지고 주어진 것을 묘사함으로써 나머지 부수적이거나 불필요한 속성들은 숨겨지거나 삭제된다. 즉, 공통의 유사성을 표현하고 차이점을 삭제함으로써 동일한 부류의 객체들을 하나로 묶어서 표현하는 방법이다. 프로그래밍 언어에서의 자료 추상화란 자료형의 표현과 그에 관련된 연산들을 함께 묶어 캡슐화(encapsulation)하는 기법이다. 이런 캡슐화는 부적당한 사용으로부터 자료형을 보호하기 위한 기법이다. 캡슐화는 프로그래머에게 추상 자료형의 정의된 이름을 통해 객체를 호출하여 사용하도록 하는 윈도우(window)를 제공한다. 이러한 윈도우를 통해서 객체의 호출을 외부에 알려주는 부분을 공용부(public part) 또는 가시부(visible part)라 부르고, 캡슐화를 통해 보호되는 구현 부분을 전용부(private part)라 부른다.

  3. 프로그래머에게 추상 자료형의 정의된 이름을 통해 객체를 호출하여 사용하도록 하는 윈도우(window)를 제공하는 것은 ?
    1. 클래스
    2. 캡슐화 
    3. 메시지
    4. 메소드
      정답 : 2

      ● 추상 자료형이란 객체들의 집합과 이들 객체들에 적용되는 연산들의 집합을 말한다. 프로그래밍 언어에서의 자료 추상화란 자료형의 표현과 그에 관련된 연산들을 함께 묶어 캡슐화(encapsulation)하는 기법이다. 캡슐화는 프로그래머에게 추상 자료형의 정의된 이름을 통해 객체를 호출하여 사용하도록 하는 윈도우(window)를 제공한다. 이러한 윈도우를 통해서 객체의 호출을 외부에 알려주는 부분을 공용부(public part) 또는 가시부(visible part)라 부르고, 캡슐화를 통해 보호되는 구현 부분을 전용부(private part)라 부른다. 예를 들면 자동차를 구성하고 있는 모든 부품들의 기능을 알지 못하더라도 운전자는 운전을 할 수 있다. 엑셀을 밟으면 앞으로 전진하고, 브레이크를 밟으면 차가 멈춘다는 사실은 알고 있다. 하지만, 시동을 걸고 엑셀을 밟는 과정에서 엔진의 기능의 상세하게 아는 사람은 많지 않을 것이다. 꼭 운전자가 알고 있어야 하는 기본적인 기능들은 공용부에 해당한다고 할 수 있고, 운전자가 몰라도 되는 엔진의 기능과 같은 상세하고 전문적인 기능들은 전용부라고 생각할 수 있다.

정리하기

  1. 변수의 유효범위
    • 변수나 기타 식별자가 코드의 어떤 범위에서 유효한가 하는 유효 범위 결정 문제
      (변수에 대한 저장장치의 할당이 유지되는가에 대한 문제)
      .
  2. 함수의 매개변수 :
    • 매개변수(parameter) : 호출하는 프로그램과 호출되는 함수사이에서 주고받는 데이터
    • 형식매개변수 : 호출되는 함수의 정의에 사용된 매개변수
    • 실매개변수 : 호출하는 프로그램에서 함수를 호출하기 위해 사용된 매개변수
      .
  3. 변수의 수명 : 변수가 값을 저장하기 위해 기억장소를 할당받고 있는 시간
    .
  4. 객체 지향 프로그램을 위한 추상 자료형
    • 자료와 그 자료를 처리할 연산을 함께 선언할 수 있어야 하며, 선언은 구현에 의존적이어서는 안 되며, 연산의 선언에는 의미에 대한 명세가 포함되어야 함
    • 정보 은닉(information hiding) 개념을 도입하여 프로그램을 쉽게 읽을 수 있어야 하고 유지 보수를 용이하게 해야 함
      .
  5. 디스크 스케줄링 기법 :
    • FCFS(First-Come First Served) 스케줄링 기법 : 먼저 도착한 디스크 접근 요청이 가장 먼저 서비스를 받는 방법
    • SSTF(Shortest Seek Time First) 스케줄링 기법 : 현재 디스크 헤드의 위치에서 가장 짧은 트랙 탐색 거리(또는 탐색 시간)를 가진 디스크 접근 요청을 먼저 처리하는 방식
    • SCAN 스케줄링 기법 : 한쪽 방향에서 가장 짧은 탐색거리의 디스크 접근 요청을 먼저 서비스하는 방식
    • SLTF(Shortest Latency Time First) 스케줄링 기법 : 디스크 헤드가 특정 실린더에 도착하면 그 실린더 내의 모든 요구를 검사한 후 가장 짧은 회전지연을 갖는 요구들에게 우선적으로 서비스하는 방식
      .
  6. 파일 구조 : 파일을 구성하는 레코드들이 보조기억장치에서의 배치 방법
    .
  7. 디스크 공간 할당 방식
    1. 연속 할당(contiguous allocation) 기법 : 파일이 보조기억장치에 저장될 때 연속된 물리적 공간을 할당받는 기법
    2. 불연속 할당(noncontiguous allocation) 기법 : 파일을 작은 단위로 나누고, 보조기억장치의 불연속적인 공간을 나누어 할당받는 기법

Leave a Comment