본문 바로가기
CS/프로그래밍언어론

프로그래밍 언어에서 타입, 복합 타입 정리 및 문제 풀이

by Renechoi 2023. 12. 8.

타입

  1. 데이터 집합이란 처리 대상이 되는 데이터와 집합으로 예를 들어 정수형의 데이터 집합은 {..., -2, -1, 0, 1, 2, ...}
  2. 연산 집합이란 해당 데이터에 적용 가능한 연산의 집합으로 예를 들어 정수형의 연산집합이란 {+, -, ...}
  3. 타입이란 변수의 속성 중 한가지
  4. 서브프로그램의 인자와 반환에도 이용함
  5. 연산의 안전성 보장을 위해 필요
  6. 프로그램은 "타입 안전하다"라는 표현은 프로그램 내 모든 연산 및 함수에 대해 다음 성질을 만족하는 경우 : 함수 f의 타입이 f(x): A-> B 라면 모든 a 포함 집합 A에 대해 f(a) 포함집합 B이어야 함 -> 즉 타입 오류가 발생하지 않는다는 의미
  7. 강타입 언어란 모든 타입 오류를 검출하는 언어 (Haskell, Ml, Java - 타입 캐스팅 제외하면 )
  8. 약 타입 언어란 타입 오류를 검출, 그러나 일부 타입 오류를 허용 : C -> 공용체, 타입 캐스팅을 통해 타입 검사를 회피
  9. 무타입 언어란 타입 선언문도 없고 어떤 대상의 타입도 계속 변경 가능 : Python 등 대부분의 스크립트 언어
  10. 데이터의 형태에 따라 정수형, 실수형, 문자형, 배열, 구조체 등으로 타입을 분류할 수 있음
  11. 원시타입은 프로그래밍 언어에서 기본적으로 제공하는 타입으로 사용자가 개입할 여지가 없는 타입이며, 미리 정의된 타입 혹은 내장 타입이라고도 함
  12. 사용자 정의 타입은 사용자가 직접 정의해서 사용하는 타입으로 대쵸적으로 배열과 구조체가 있음
  13. 단순타입은 데이터 집합의 요소가 하나의 데이터로만 구성된 타입이며 스칼라 타입이라고도 함
  14. 복합 타입은 데이터 집합의 요소가 데이터들의 구조로 구성된 타입으로 구조 타입이라고도 부름
  15. 졍수형이란 정수 데이터를 다루는 타입
  16. 정수형의 데이터 집합은 {-무한, -2, -1, 0. ,,,} 중 일부만 표현 -> 정수 표현을 위해 할당된 메모리 크기에 의존
  17. 표현 가능한 정수 범위에 따라 다양한 타입이 존재함
  18. 자바에는 unsigned가 붙는 정수형이 없음
  19. 연산집합으로 사칙 연산은 덧셈, 뺄셈, 곱셉, 나눗셈 등 -> 연산의 결과도 정수형
  20. C, C++에서 16비트로 구현된 hosrt 타입의 경우 +1을 하는 경우와 -1을 하는 경우 데이터 집합 안에 존재하지 않으면 다른 결과가 나올 수 있음
  21. 실수형의 경우 전체 실 수 중 사용 비트의 크기에 따라 일부 범위의 실수만 표현 가능
  22. 부호 + 지수 + 가수부
  23. 지수부 -> 지수 + bias
  24. bias는 지수부의 크기에 따라 결정됨
  25. 가수부는 소수점 이하 부분만 표현 -> 1.xxxx 형태를 갖도록 정규화를 거침
  26. 문자형의 데이터 집합 중 Ascii는 128개 의 문자, 유니코드는 전세게 다양한 문자 표현 가능
  27. 열거형이란 순서 관계가 있는 이름들을 데이터로 다루는 타입
  28. 열거형에서 데이터 집합은 사용자가 직접 지엉한 이름들, 각 이름은 0 이상의 정수와 대응 하며 순서 관계 성립함

복합 타입

  1. 배열은 동질형 데이터의 모음으로 구성된 타입
  2. 원소 : 각 배열의 데이터
  3. 배열의 크기 : 배열이 가지는 원소의 개수
  4. 배열에서 각 원소는 첨자로 구분 -> 첨자: 첫 원소와의 상대적 위치
  5. 배열의 데이터 집합: 원소의 타입에 해당하는 데이터 집합이 배열의 크기만큼 모인 집합으로 원소의 타입과 배열의 크기에 따라 다양한 타입
  6. 배열의 크기 -> 양의 정수 범위 x 차원
  7. 배열에서 차원 : 배열에 사용되는 첨자의 개수
  8. 배열의 구현 : 저장 공간 확보 -> 정적 변수 : Fortran, 스택 동적 변수 : 배열의 크기는 정적 바인딩 또는 동적 바인딩 , 힙동적 변수 : 배열의 크기도 동적 바인딩
  9. 배열에서 첨자를 통한 원소의 주소 계산 -> 주소 = 주소 (A[0]) + i * 원소 크기
  10. 크기 M x N인 2차원 배열 -> 행 우선 저장 -> 주소 (B([i][j]) = 주소 (B[0][0]) + i * N * 원소 크기 + j * 원소크기
  11. 크기 M X N인 2차원 배열 -> 열 우선 저장 -> 주소 (B[i][j]) = 주소 (B[0][0]) + j * M * 원소크기 + i * 원소크기
  12. 배열의 연산 집합 : 배열 전체를 다루는 연산들의 집합으로 개별 원소 연산은 원소 타입의 연산 집합에 의존 -> PL에 따라 배열 전체에 대한 연산은 다름
  13. C, C++, Java -> 초기화 연산만 기본적으로 제공 , Ada, Perl, Python -> 대입 연산 등이 포함
  14. 문자열은 문자들의 나열
  15. 문자열형의 데이터 집합에 대해, C, C++은 문자형의 1차원 배열, Java는 String 클래스 타입
  16. 연관 배열은 동질형 데이터의 순서 없는 모음으로 구성된 타입. 순서 없는 모음이란 모여진 원소들 사이의 위치 관계는 아무 의미가 없다는 것
  17. 연관배열에서 각 원소는 키로 구분함. 키는 각 원소의 절대위치를 가리킴.
  18. 연관 배열의 연산 집합은 원소 참조, 원소 추가, 원소 삭제 등
  19. C++에서 연관배열로 map 타입이 있음
  20. 구조체 혹은 레코드형은 데이터의 모음으로 구성된 타이,ㅂ. 이때 모여진 원소들의 타입은 서로 같아도 되고 달라도 됨
  21. 구조체에서 각 원소는 이름으로 구별함 : 이름 -> 각 원소의 타입으로 선언된 변수명
  22. 구조체 데이터 집합은 각 원소의 타입과 개수에 따라 다양한 타입이 존재함
  23. 공용체는 저장공간을 공유하는 데이터의 모음으로 구성된 타입. 모여진 원소들의 구성 형태는 구조체와 윳가하여 원소의 타입은 서로 같거나 다를 수 있고 각 원소는 이름으로 구별
  24. 공용체는 하지만 원소들의 저장 공간이 서로 공유되기 때문에 한 원소의 값이 바뀌면 다른 원소들의 값도 영향을 받음 -> 예를 들어, 3개의 원소로 구성되고 각 원소의 타입이 문자형, 정수형, 실수형인 공용체의 한 가지는 다음과 같음 -> 문자형 데이터 a, 정수형 데이터 i, 실수형 데이터 f 에 대해 만약 a의 문자를 바꾸면 정수 i의 값도 바귀고 실수 f의 값도 바뀔 수 있음
  25. C와 C++은 공용체로 union 타입이 있음
  26. 공용체의 데이터 집합은 각 원소의 타입에 해당하는 데이터 집합의 합집합, 연산 집합은 개별 원소 타입의 연산 집합
  27. 포인터 형은 특정 데이터가 저장되는 주소 자체를 데이터로 다루는 타입
  28. 포인터형의 특정 데이터 타입은 사용자가 지정하는 타입으로 단순타입과 복합타입 모두 가능. 따라서 포인터형의 포인터형도 가능.
  29. 포인터형의 데이터집합은 가용한 범위의 주소를 포함함. 예를 들어 32비트 시스템은 주소 범위가 2^32를 넘지 않고 64 비트 시스템은 2^64를 넘지 않음
  30. 포인터형의 연산 집합은 대입 연산과 덧셈, 뺄셈 연산을 포함. C, C++ 포인터형 앞에 역참조 연산자 *를 붙여 값으로 가리키는 주소에 저장된 데이터를 사용하게 함
  31. 참조형은 사용자가 지정하는 타입의 데이터가 저장된 주소 자체를 자신의 주소로 사용하는 타입. 즉, 참조형은 지정한 타입의 저장공간이 이미 존재해야 함.

문제

2. 타입의 개념에 대한 설명으로 옳지 않은 것은?

  1. 타입은 변수의 속성 중 하나이다.
  2. 모든 프로그램 언어는 타입을 지원한다.
  3. 타입은 데이터 집합과 연산 집합의 결합이다.
  4. 타입은 서브프로그램의 인자와 반환에도 이용된다.

정답: 2
해설: 무타입 언어는 타입 선언문도 없고 어떤 대상의 타입도 계속 변경할 수 있으므로 모든 프로그래밍 언어가 타입을 지원하는 것은 아니다.

3. 강타입 언어에 대한 설명으로 옳지 않은 것은?

  1. 모든 타입 오류를 검출한다.
  2. Haskell, ML, Java는 강타입 언어의 예이다.
  3. 타입 캐스팅을 통해 타입 검사를 회피할 수 없다.
  4. 타입 안전성을 중요시한다.

정답: 3
해설: Java는 타입 캐스팅을 통해 타입 검사를 회피할 수 있으므로, 모든 강타입 언어가 타입 캐스팅을 통한 타입 검사 회피를 허용하지 않는 것은 아니다.

4. 복합 타입에 대한 설명으로 옳은 것은?

  1. 복합 타입은 단순 타입만을 포함한다.
  2. 배열은 복합 타입의 한 예이다.
  3. 복합 타입은 데이터의 구조를 표현하지 않는다.
  4. 모든 복합 타입은 정적 타입이다.

정답: 2
해설: 배열은 동질형 데이터의 모음으로 구성되며, 이러한 특성은 복합 타입의 한 예시이다.

5. 배열의 첨자 계산 방법에 대한 설명으로 옳은 것은?

  1. 배열의 첨자 계산은 항상 동적으로 수행된다.
  2. 2차원 배열의 주소 계산에는 행 우선 저장 방식과 열 우선 저장 방식이 있다.
  3. 배열의 첨자 계산은 배열의 타입과 무관하다.
  4. 모든 배열은 같은 방식으로 첨자 계산을 수행한다.

정답: 2
해설: 2차원 배열의 주소 계산에는 행 우선 저장 방식과 열 우선 저장 방식이 존재하며, 이는 배열의 구조에 따라 달라진다.

6. 실수형 타입에 대한 설명으로 옳지 않은 것은?

  1. 실수형 데이터는 부호, 지수, 가수부로 구성된다.
  2. 모든 실수를 표현할 수 있다.
  3. 지수부는 지수와 bias로 구성된다.
  4. 가수부는 소수점 이하 부분만을 표현한다.

정답: 2
해설: 실수형 타입은 사용 비트의 크기에 따라 일부 범위의 실수만을 표현할 수 있으므로 모든 실수를 표현할 수 있는 것은 아니다.

7. C언어에서 16비트 short 타입에 대한 설명으로 옳은 것은?

  1. 16비트 short 타입은 모든 정수를 표현할 수 있다.
  2. 16비트 short 타입의 연산 결과는 항상 short 타입 범위 내에 존재한다.
  3. +1 또는 -1 연산 결과가 데이터 집합 밖에 있을 경우 다른 결과가 나올 수 있다.
  4. C언어의 short 타입은 항상 16비트로 구현된다.

정답: 3
해설: 16비트 short 타입에서 연산 결과가 표현 가능한 범위를 초과하면 오버플로우가 발생하여 예상치 못한 결과가 나타날 수 있다.

8. 문자형 타입에 대한 설명으로 옳지 않은 것은?

  1. Ascii 문자 집합은 128개의 문자를 포함한다.
  2. 유니코드는 전 세계의 다양한 문자를 표현할 수 있다.
  3. 모든 문자형 데이터는 동일한 메모리 크기를 가진다.
  4. 문자형 데이터 집합은 문자의 종류에 따라 다를 수 있다.

정답: 3
해설: 문자형 데이터의 메모리 크기는 사용하는 문자 집합에 따라 다를 수 있으며, Ascii와 유니코드는 서로 다른 메모리 크기를 가질 수 있다.

9. 구조체 혹은 레코드형에 대한 설명으로 옳은 것은?

  1. 구조체의 모든 원소는 동일한 타입이어야 한다.
  2. 구조체에서 각 원소는 이름으로 구별된다.
  3. 구조체는 데이터의 순서만을 표현한다.
  4. 모든 구조체는 동일한 크기의 메모리를 차지한다.

정답: 2
해설: 구조체 혹은 레코드형은 다양한 타입의 원소를 포함할 수 있으며, 각 원소는 이름으로 구별된다.

10. 포인터형에 대한 설명으로 옳은 것은?

  1. 포인터형은 항상 정수형 데이터만을 가리킨다.
  2. 포인터형은 특정 데이터가 저장된 주소 자체를 데이터로 다룬다.
  3. 모든 포인터형은 동일한 크기의 메모리를 차지한다.
  4. 포인터형은 데이터의 값을 직접 저장한다.

정답: 2
해설: 포인터형은 특정 데이터가 저장된 주소를 데이터로 다루며, 이는 데이터의 위치 정보를 나타낸다.

11. 참조형에 대한 설명으로 옳지 않은 것은?

  1. 참조형은 다른 타입의 주소를 가리킨다.
  2. 참조형은 원래 데이터의 주소를 자신의 주소로 사용한다.
  3. 참조형은 포인터형과 동일한 기능을 한다.
  4. 참조형은 지정한 타입의 저장공간이 이미 존재해야 한다.

정답: 3
해설: 참조형과 포인터형은 비슷하지만 동일하지는 않다. 참조형은 원래 데이터의 주소를 자신의 주소로 사용하며, 다른 메커니즘을 사용한다.

12. 열거형 타입에 대한 설명으로 옳은 것은?

  1. 열거형은 순서 관계가 없는 이름들을 데이터로 다룬다.
  2. 열거형의 각 이름은 0 이상의 정수와 대응된다.
  3. 열거형은 데이터의 순서만을 표현한다.
  4. 열거형에서 데이터 집합은 사용자가 지정하지 않는다.

정답: 2
해설: 열거형 타입은 순서 관계가 있는 이름들을 데이터로 다루며, 각 이름은 0 이상의 정수와 대응한다.

13. C언어에서 union(공용체) 타입에 대한 설명으로 옳지 않은 것은?

  1. 공용체는 저장공간을 공유하는 데이터의 모음이다.
  2. 공용체에서 하나의 원소 값이 바뀌면 다른 원소들의 값도 영향을 받는다.
  3. 공용체의 데이터 집합은 각 원소의 타입에 해당하는 데이터 집합의 합집합이다.
  4. 공용체는 각 원소가 독립적인 저장공간을 가진다.

정답: 4
해설: 공용체는 원소들이 저장공간을 공유하기 때문에, 한 원소의 값이 바뀌면 다른 원소들의 값에도 영향을 미친다. 각 원소가 독립적인 저장공간을 가지는 것은 아니다.

14. 연관 배열에 대한 설명으로 옳은 것은?

  1. 연관 배열은 순서 있는 데이터의 모음이다.
  2. 연관 배열에서 각 원소는 키로 구분된다.
  3. 연관 배열의 원소는 순서에 따라 접근된다.
  4. 연관 배열은 동질형 데이터만 포함할 수 있다.

정답: 2
해설: 연관 배열은 순서 없는 데이터의 모음으로, 각 원소는 키로 구분된다. 키는 각 원소의 절대위치를 가리키는 역할을 한다.

15. 원시타입에 대한 설명으로 옳지 않은 것은?

  1. 원시타입은 프로그래밍 언어에서 기본적으로 제공하는 타입이다.
  2. 사용자가 원시타입을 수정할 수 있다.
  3. 원시타입은 미리 정의된 타입 또는 내장 타입이라고도 한다.
  4. 원시타입에는 사용자의 개입이 없다.

정답: 2
해설: 원시타입은 프로그래밍 언어에서 기본적으로 제공하는 타입으로, 사용자가 이를 수정할 수는 없다.

16. 문자열형에 대한 설명으로 옳은 것은?

  1. 문자열형은 항상 고정된 길이를 가진다.
  2. C언어에서 문자열형은 문자형의 1차원 배열로 표현된다.
  3. 문자열형은 단일 문자만을 저장할 수 있다.
  4. 모든 문자열형은 동일한 메모리 크기를 차지한다.

정답: 2
해설: C언어에서 문자열형은 문자형의 1차원 배열로 표현되며, 이는 문자들의 나열로 구성된다.

17. 포인터형 연산에 대한 설명으로 옳지 않은 것은?

  1. 포인터형은 주소에 대한 연산을 수행할 수 있다.
  2. 포인터형 연산에는 대입, 덧셈, 뺄셈이 포함된다.
  3. 포인터형 연산에는 곱셈과 나눗셈이 포함된다.
  4. C, C++에서 포인터형 앞에 역참조 연산자 '*'를 사용할 수 있다.

정답: 3
해설: 포인터형 연산에는 곱셈과 나눗셈이 포함되지 않는다. 주로 대입, 덧셈, 뺄셈 연산이 사용된다.

18. 변수의 영역에 대한 설명으로 옳은 것은?

  1. 변수의 영역은 프로그램 전체에 걸쳐서 일정하다.
  2. 지역 변수는 함수 내에서만 접근 가능하다.
  3. 전역 변수는 오직 한 함수 내에서만 접근 가능하다.
  4. 정적 변수는 프로그램 실행 동안 사라지지 않는다.

정답: 2
해설: 지역 변수는 그것이 선언된 함수 내에서만 접근할 수 있으며, 함수 외부에서는 접근할 수 없다.

19. 배열의 구현 방식에 대한 설명으로 옳은 것은?

  1. 배열은 항상 힙 메모리에 저장된다.
  2. 정적 배열은 컴파일 시간에 크기가 결정된다.
  3. 모든 배열은 동적으로 크기가 결정된다.
  4. 배열의 원소는 항상 연속된 메모리 위치에 저장되지 않는다.

정답: 2
해설: 정적 배열은 컴파일 시간에 크기가 결정되며, 배열의 원소들은 메모리 상에서 연속적으로 위치한다.

20. 사용자 정의 타입에 대한 설명으로 옳지 않은 것은?

  1. 사용자 정의 타입에는 배열과 구조체가 포함된다.
  2. 사용자 정의 타입은 프로그래밍 언어에 의해 미리 정의된 타입이다.
  3. 사용자는 자신의 요구에 맞추어 새로운 타입을 정의할 수 있다.
  4. 사용자 정의 타입을 통해 프로그램의 가독성과 유지보수성이 향상된다.

정답: 2
해설: 사용자 정의 타입은 프로그래밍 언어에 의해 미리 정의된 타입이 아니라, 사용자가 직접 정의하여 사용하는 타입이다.

21. 정수형 타입에 대한 설명으로 옳은 것은?

  1. 모든 정수형 타입은 동일한 범위의 정수를 표현한다.
  2. C언어에서 16비트 short 타입은 모든 정수를 표현할 수 있다.
  3. 정수형 타입은 정수 데이터를 다루며, 표현 가능한 범위는 할당된 메모리 크기에 의존한다.
  4. 정수형 타입의 연산 결과는 항상 정수형 타입의 범위를 벗어나지 않는다.

정답: 3
해설: 정수형 타입은 정수 데이터를 다루는 타입이며, 표현 가능한 정수 범위는 할당된 메모리 크기에 따라 달라진다.

22. 타입 안전성에 대한 설명으로 옳지 않은 것은?

  1. 타입 안전한 프로그램은 모든 연산 및 함수가 타입 오류를 발생시키지 않는다.
  2. 강타입 언어는 타입 안전성을 보장한다.
  3. 타입 안전성은 서브프로그램의 인자와 반환에서도 중요하다.
  4. 타입 안전성은 프로그래밍 언어의 특징이 아니라 프로그램의 특징이다.

정답: 4
해설: 타입 안전성은 프로그래밍 언어의 특징이며, 이는 프로그램 내 모든 연산 및 함수에서 타입 오류가 발생하지 않음을 의미한다.

23. 배열의 구현 방식에 대한 설명으로 옳은 것은?

  1. 배열은 항상 힙 메모리에 저장된다.
  2. 배열의 크기는 실행 시간에 항상 변경될 수 있다.
  3. 정적 배열은 컴파일 시간에 크기가 결정되며 연속된 메모리 위치에 원소들이 저장된다.
  4. 모든 배열은 동적으로 크기가 결정된다.

정답: 3
해설: 정적 배열은 컴파일 시간에 크기가 결정되며, 배열의 원소들은 메모리 상에서 연속적으로 위치한다.

24. 문자형 타입에 대한 설명으로 옳은 것은?

  1. 모든 문자형 데이터는 동일한 메모리 크기를 가진다.
  2. Ascii 문자 집합은 전 세계의 모든 문자를 포함한다.
  3. 문자형 데이터의 메모리 크기는 사용하는 문자 집합에 따라 달라질 수 있다.
  4. 유니코드는 오직 영문자만을 표현할 수 있다.

정답: 3
해설: 문자형 데이터의 메모리 크기는 사용하는 문자 집합에 따라 다를 수 있으며, Ascii와 유니코드는 서로 다른 메모리 크기를 가질 수 있다.

25. 연관 배열에 대한 설명으로 옳지 않은 것은?

  1. 연관 배열은 순서 있는 데이터의 모음이다.
  2. 연관 배열에서 각 원소는 키로 구분된다.
  3. 연관 배열의 원소는 순서에 따라 접근된다.
  4. 연관 배열은 동질형 데이터만 포함할 수 있다.

정답: 1
해설: 연관 배열은 순서 없는 데이터의 모음으로, 각 원소는 키로 구분된다. 키는 각 원소의 절대위치를 가리키는 역할을 한다.

26. 데이터 집합에 대한 설명으로 옳은 것은?

  1. 데이터 집합은 변수에 저장될 수 있는 모든 값의 집합이다.
  2. 데이터 집합은 프로그래밍 언어에서 사용되지 않는다.
  3. 모든 데이터 집합은 동일한 크기를 가진다.
  4. 데이터 집합은 오직 숫자형 데이터만 포함한다.

정답: 1
해설: 데이터 집합은 해당 변수에 할당될 수 있는 모든 가능한 값들의 집합을 의미한다. 이는 타입에 따라 다양할 수 있다.

27. 연산 집합에 대한 설명으로 옳지 않은 것은?

  1. 연산 집합은 해당 데이터에 적용 가능한 모든 연산들을 포함한다.
  2. 모든 데이터 타입은 동일한 연산 집합을 가진다.
  3. 연산 집합은 데이터 타입에 따라 다를 수 있다.
  4. 연산 집합에는 산술 연산, 논리 연산 등이 포함될 수 있다.

정답: 2
해설: 연산 집합은 해당 데이터 타입에 적용 가능한 연산들의 집합을 말하며, 데이터 타입에 따라 다양한 연산 집합이 존재한다.

28. 타입 안전성에 대한 설명으로 옳은 것은?

  1. 타입 안전성은 프로그램에서 타입 오류를 방지하는 능력을 의미한다.
  2. 모든 프로그래밍 언어는 타입 안전성을 보장한다.
  3. 타입 안전성은 오직 강타입 언어에서만 중요하다.
  4. 타입 안전성은 변수의 크기와 관련이 있다.

정답: 1
해설: 타입 안전성은 프로그램이 타입 오류를 방지하는 능력을 의미하며, 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다.

29. 정적 바인딩과 동적 바인딩에 대한 설명으로 옳은 것은?

  1. 정적 바인딩은 프로그램 실행 시간에 변수의 크기와 타입이 결정된다.
  2. 동적 바인딩은 컴파일 시간에 변수의 크기와 타입이 결정된다.
  3. 정적 바인딩은 컴파일 시간에 변수의 크기와 타입이 결정된다.
  4. 모든 프로그래밍 언어는 정적 바인딩만을 지원한다.

정답: 3
해설: 정적 바인딩은 컴파일 시간에 변수의 크기와 타입이 결정되는 반면, 동적 바인딩은 프로그램 실행 시간에 이러한 결정이 이루어진다.

30. 배열의 첨자 계산 방식에 대한 설명으로 옳지 않은 것은?

  1. 배열의 첨자 계산은 배열의 크기와 차원에 따라 달라질 수 있다.
  2. 모든 배열은 동일한 방식으로 첨자 계산을 수행한다.
  3. 2차원 배열에서 행 우선 저장 방식과 열 우선 저장 방식을 사용할 수 있다.
  4. 첨자 계산은 배열의 원소에 접근하는 데 사용된다.

정답: 2
**해

설:** 배열의 첨자 계산 방식은 배열의 크기, 차원, 그리고 데이터 구조에 따라 달라질 수 있다. 따라서 모든 배열이 동일한 방식으로 첨자 계산을 수행하는 것은 아니다.

31. 열거형 타입에 대한 설명으로 옳은 것은?

  1. 열거형은 데이터의 순서만을 표현한다.
  2. 열거형에서 각 이름은 0 이상의 정수와 대응하며 순서 관계가 성립한다.
  3. 열거형은 순서 관계가 없는 이름들을 데이터로 다룬다.
  4. 열거형에서 데이터 집합은 사용자가 지정하지 않는다.

정답: 2
해설: 열거형 타입은 순서 관계가 있는 이름들을 데이터로 다루며, 각 이름은 0 이상의 정수와 대응하여 순서 관계를 갖는다.

32. 포인터형 데이터에 대한 설명으로 옳은 것은?

  1. 포인터형 데이터는 항상 정수형 데이터만을 가리킨다.
  2. 포인터형 데이터는 특정 데이터가 저장된 주소를 데이터로 다룬다.
  3. 모든 포인터형 데이터는 동일한 크기의 메모리를 차지한다.
  4. 포인터형 데이터는 데이터의 값을 직접 저장한다.

정답: 2
해설: 포인터형 데이터는 특정 데이터가 저장된 메모리 주소를 가리키는 데이터 타입으로, 데이터의 위치 정보를 나타낸다.

33. 실수형 타입에 대한 설명으로 옳지 않은 것은?

  1. 실수형 데이터는 부호, 지수, 가수부로 구성된다.
  2. 실수형 타입은 모든 실수를 표현할 수 있다.
  3. 지수부는 지수와 bias로 구성된다.
  4. 가수부는 소수점 이하 부분만을 표현한다.

정답: 2
해설: 실수형 타입은 부호, 지수, 가수부로 구성되며, 사용하는 비트의 크기에 따라 표현할 수 있는 실수의 범위가 제한된다.

34. 사용자 정의 타입에 대한 설명으로 옳은 것은?

  1. 사용자 정의 타입은 프로그래밍 언어에 의해 미리 정의된 타입이다.
  2. 사용자 정의 타입에는 배열과 구조체가 포함될 수 있다.
  3. 사용자는 새로운 타입을 정의할 수 없다.
  4. 사용자 정의 타입은 프로그램의 가독성과 유지보수성에 기여하지 않는다.

정답: 2
해설: 사용자 정의 타입은 사용자가 직접 정의하여 사용하는 타입으로, 이에는 배열과 구조체 등이 포함될 수 있으며, 이를 통해 프로그램의 가독성과 유지보수성을 향상시킬 수 있다.

34. 참조형 타입에 대한 설명으로 옳지 않은 것은?

  1. 참조형 타입은 다른 타입의 데이터를 참조한다.
  2. 참조형 타입은 지정한 타입의 저장공간이 이미 존재해야 한다.
  3. 참조형은 포인터형과 완전히 동일한 기능을 한다.
  4. 참조형은 원본 데이터를 직접 수정할 수 있다.

정답: 3
해설: 참조형과 포인터형은 유사하지만 완전히 동일하지 않다. 참조형은 지정한 타입의 데이터가 저장된 주소를 자신의 주소로 사용하며, 원본 데이터에 대한 접근 및 수정이 가능하다.

35. 실수형 타입의 특징에 대한 설명으로 옳지 않은 것은?

  1. 실수형 데이터는 부호, 지수, 가수부로 구성된다.
  2. 실수형 타입은 모든 실수를 정확하게 표현할 수 있다.
  3. 지수부의 크기에 따라 표현할 수 있는 실수의 범위가 달라진다.
  4. 실수형 타입은 정규화된 형태로 실수를 저장한다.

정답: 2
해설: 실수형 타입은 부호, 지수, 가수부로 구성되어 있으며, 사용하는 비트의 크기에 따라 표현할 수 있는 실수의 범위가 제한되어 있어 모든 실수를 정확하게 표현할 수는 없다.

36. 연관 배열에 대한 설명으로 옳은 것은?

  1. 연관 배열은 순서 있는 데이터의 모음이다.
  2. 연관 배열에서 각 원소는 키로 구분된다.
  3. 연관 배열은 동질형 데이터만 포함할 수 있다.
  4. 연관 배열의 원소는 순서에 따라 접근된다.

정답: 2
해설: 연관 배열은 순서 없는 데이터의 모음으로, 각 원소는 키로 구분된다. 이 키를 통해 각 원소에 접근할 수 있다.

37. 정적 바인딩과 동적 바인딩의 차이점에 대한 설명으로 옳지 않은 것은?

  1. 정적 바인딩은 컴파일 시간에 변수의 크기와 타입이 결정된다.
  2. 동적 바인딩은 실행 시간에 변수의 크기와 타입이 결정된다.
  3. 모든 프로그래밍 언어는 정적 바인딩만을 지원한다.
  4. 정적 바인딩은 프로그램의 실행 효율을 높일 수 있다.

정답: 3
해설: 많은 프로그래밍 언어들이 정적 바인딩과 동적 바인딩을 모두 지원한다. 정적 바인딩은 컴파일 시간에 타입과 크기가 결정되며, 프로그램의 실행 효율을 높일 수 있다.

반응형