안녕하세요 상자입니다
개인적으로 혼자 학습한 내용을 정리하고 풀어낸 문제이므로 오타 또는 오답이 있을 수 있습니다.
오타 또는 오답이 있는 경우 댓글로 말씀해 주시면 감사드리겠습니다.
이론 문제)
01. 전문가들은 IT 분야에서 어떤 종류의 기업이 미래를 지배할 것이라고 예측하는가?
① 가전 기업
② 소프트웨어 기업
③ 증권사
④ 석유회사
[정답 2번]
소프트웨어 기업이 지배할 것이라 전문가들은 예측한다.
02. 다음 설명 중에서 틀린 것은?
① 사람과 가장 친밀한 프로그래밍 언어가 고급 언어이다.
② CPU는 기계어만 이해하고 처리할 수 있다.
③ 고수준 언어를 저수준 언어로 번역할 컴파일러가 필요하다.
④ 기계어를 익혀서 프로그램을 작성하는 것이 좋은 개발자가 되는 지름길이다.
[정답 4번]
개발자는 고급 언어 하나를 익히는 게 좋은 개발자가 되는 지름길이다. 기계어 X 고급 프로그래밍 언어도 다다익선이지만 하나만 제대로 할 수 있어도 좋은 개발자가 될 수 있다.
03. 다음 언어 중에서 계보가 다른 것은?
① Java ② C ③ C++ ④ Fortran
[정답 4번]
Fortran의 경우 1954년도에 어셈블리에서 파생이 된 언어이다.
C의 경우 어셈블리에서 BCPL를 기반으로 파생이 되었고 순차적으로 -> B언어 -> C언어 순으로 개발 이후 C++ C++에서 자바가 생겼다
04. 다음 중 객체 지향 언어가 아닌 것은?
① Java ② C ③ C++ ④ C#
[정답 2번]
C언어는 객체 지향 언어가 아니다.
05. 객체 지향 언어가 태동하게 된 원인이 아닌 것은?
① 소프트웨어의 크기가 점점 커지게 되어 관리의 어려움을 극복하기 위해
② 소프트웨어의 생명 주기가 짧아지게 됨에 따라 빠른 소프트웨어 작성이 요구되어
③ 운영체제 독립적인 프로그램 작성이 필요해서
④ 실세계의 문제를 모델링 하는데 객체의 개념이 적합해서
[정답 3번]
1,2,4번은 객체 언어가 태동하게 된 원인이다.
( 태동 - 어떤 일이 생기려는 기운이 싹트다 )
06. 다음 중 객체 지향 개념에 포함되지 않는 것은?
① 상속
② 흐름도
③ 캡슐화
④ 다형성
[정답 2번]
흐름도는 객체 지향 개념에 포함되지 않는다.
07. C++ 언어가 C 언어의 문법적 체계를 계승 받음으로써 좋은 점은?
① C 언어로 작성된 프로그램과 호환성을 가질 수 있다.
② C 언어처럼 빠르게 실행될 수 있다.
③ C 언어처럼 절차 지향 프로그래밍도 할 수 있다.
④ 전역 변수를 만들어서 여러 함수에서 공유할 수 있다.
[정답 1번]
C++은 C와 호환성을 가질 수 있다.
08. C++ 언어가 C 언어의 문법적 체계를 계승 받음으로써 나타난 문제점은?
① 개발 과정이 복잡해졌다.
② 프로그램 관리가 어려워졌다.
③ C 라이브러리를 사용할 수 없게 되어 불편하다.
④ 전역 변수가 존재하게 되어 캡슐화의 원칙이 무너졌다.
[정답 4번]
전역 변수가 존재하게 되어 캡슐화의 원칙이 무너졌다.
09. 다음 빈칸에 적절한 단어를 기입하라.
C++는 ______언어와의 호환성을 목표로 하여 설계되었으며 객체 지향 개념을 추가하였다. 그러나 클래스 바깥에 전역 변수나 함수들을 선언하게 됨으로써 객체 지향의 핵심 개념인 _______의 원칙이 무너지게 되었다. |
정답 : 1 - C, 2 - 캡슐화
10. C++ 표준으로 C++ 프로그램을 작성할 때의 장점은?
① 화장성
② 호환성
③ 실행 성능
④ 개발 용이성
[정답 2번]
호환성이 장점이다.
11. C++의 객체 지향 특징이 아닌 것은?
① 상속
② 함수 중복
③ 인라인 함수
④ 클래스
[정답 3번]
인라인 함수이다 1,2,4번의 경우 모두 객체 지향의 특징이지만 3번 인라인 함수의 경우 절차 지향 언어의 특징이다.
12. C++ 언어가 가지고 있는 3가지 객체 지향 특성을, 주어진 예를 이용하여 설명하라.
⑴ 캡슐화 : (예) TV 객체로 캡슐화를 설명하라.
⑵ 다형성 : (예) > 연산자로 다형성을 설명하라.
⑶ 상속성 : (예) '메뚜기는 생물이다'라는 문구로 상속성을 설명하라.
정답 (?조금 애매한 부분입니다... 본인이 생각하기에 설명 부분이 부족한 느낌이 드네요..)
1 -> 캡슐화
TV 객체로 캡슐화를 설명한다면 TV는 하나의 껍데기와 그 안에 여러 가지 기능들이 들어가 있습니다.
캡슐화의 뜻은 데이터를 캡슐로 싸서 외부의 접근으로부터 데이터를 보호하는 객체 지향 특성인데 TV에는 여러 가지 기능들이 들어가 있기 때문에 전문가가 아닌 경우 만졌을 때 고장 날 가능성이 있고 제 기능을 발휘할 수 없는 경우가 있기 때문입니다.
다른 예로 들면 캡슐 알약의 경우에 캡슐 알약 내부의 내용물이 세균에 감염되어 제 기능이 파괴되지 않은 상태로 신체에서 흡수할 수 있도록 만든 알약입니다. 만약 이 내용물들이 제대로 캡슐로 보호되지 않으면 제 기능을 상실하기 때문에 프로그래밍 언어에서도 코드를 캡슐화하여 제 기능을 상실하지 않도록 도와주는 것입니다.
2 -> 다형성
> 연산자로 다형성을 설명하면 책에서는 +의 경우 정수형과 문자열의 접근으로 예를 나눴습니다.
> 연산자로 예를 들면 3>5에 대하여 참 또는 거짓으로 조건을 걸 수 있습니다. 예시 그대로 작동되면 거짓으로 반환하지만 3과 5의 위치를 바꿔서 5>3로 정의한 경우에는 참값이 반환이 가능합니다.
3 -> 상속성
메뚜기는 생물이라는 문구로 상속성을 설명하려면 우선 생물의 정의가 필요합니다.
구글에 생물의 정의를 검색하면 이러한 내용이 나옵니다.
생명을 가진 것. 증식·성장·물질대사·자극 반응성·조절성(調節性) 등을 나타내는 것의 총칭. 동물·식물·미생물로 나뉨으로 정의됩니다.
생명은 활동할 수 있는 것이며 메뚜기의 경우 유생물에 포함되는 영역입니다.
그런 생물이라는 특징을 주어서 상속성을 표현하라는 것이면 귀뚜라미, 사람, 강아지, 고양이 등등의 모든 생물에게 살아 움직이는 생물로 정의가 가능한 것들에게 생물의 상속성을 부여할 수 있게 됩니다.
13. C++에서는 C 언어와 달리 다음 3개의 함수를 함께 작성하고 구분하여 호출할 수 있다. 어떤 객체 지향 특성을 말하는가?
int big(int a, int b);
int big(int a[], int size);
int big(int a, int b, int c);
정답 : 위의 3가지 방법은 연산자 중복이라고 부른다. 객체 지향 특성에서는 다형성의 특성을 가진다.
++
자몽그린티님의 피드백입니다!
13번은 연산자 중복이 아닌 다형성 중 '함수중복'에 해당됩니다 ^^
14. C++ 언어가 C 언어에 추가한 내용이 아닌 것은?
① delete 연산자
② 함수 중복
③ 참조에 의한 호출
④ 타입 변환
[정답 4번]
타입 변환이다. 타입 변환은 C에서 C++로 옮기면서 생긴 기능이 아니다.
15. C와 C++ 언어에 대해 말한 것 중 틀린 것은?
① C++ 코드는 객체 지향 개념의 도입에 따라 C 코드에 비해 실행 속도가 떨어질 우려가 있다.
② C++ 표준에 따라 소스 프로그램을 작성하면 높은 호환성으로 인해 거의 모든 종류의 C++ 컴파일러에 의해 컴파일 가능하다.
③ C++ 프로그램은 C 소스 프로그램을 수용하여 사용할 수 있지만, 이미 컴파일된 C언어 목적 파일은 링크시켜 사용할 수 없다.
④ C 소스 파일의 표준 확장자는 .c 이고 C++ 소스 파일의 표준 확장자는 .cpp이다.
[정답 3번]
C++은 C와 목적 파일을 링크시켜 사용할 수 있다.
16. C++ 프로그램에 대해 다음 중 틀린 것은?
① C++ 소스 파일은 텍스트 파일이 아니라 바이너리 파일이다.
② C++ 소스 파일의 표준 확장자는. cpp이지만 컴파일에 따라 .cc .CC .c++ 등의 확장자를 갖기도 한다.
③ C++ 파일은 컴파일 목적 파일의 확장자는 .obj 혹은 .o와 같이 운영체제에 따라 다를 수 있다.
④ C++ 프로그램의 디버깅이란 실행 파일( exe 파일)을 실행할 때 나타나는 오류를 발견하고 수정하는 과정이다.
[정답 1번]
31page C++ 소스 프로그램 작성을 읽어보면
C++ 소스 프로그램은 표준 확장자가 cpp인 텍스트 파일이므로 아무 텍스트 편집기를 이용하여도 작성 가능하다.라고 나와있다.
즉 C++ 소스 파일은 텍스트 파일이다.
17. 링킹에 대한 설명 중 바른 것은?
① C++ 소스 파일을 컴파일하여 생긴 목적 파일(obj 파일)은 기계어로 이루어져 있기 때문에 바로 실행 가능하다.
② 링킹 후 생성되는 실행 파일( exe 파일)을 컴퓨터에서 실행시키기 위해서는 목적 파일( obj 파일)도 함께 필요하다.
③ 링킹은 C++ 프로그램 개발 과정에서 실행 파일을 만들기 위해 반드시 필요하다.
④ 링킹을 통해 실행 파일( exe 파일)과 다른 실행 파일을 합쳐서 하나의실행 파일 (exe 파일 )을 만들 수 있다.
[정답 3번]
1번은 링킹과정이 필요하다. 바로 실행이 불가능하다.
2번 링킹이 목적파일을 C++라이브러리들을 이용하여 실행 파일로 바꾸는 역할을 해주는 것이므로 오답
4번 링킹은 라이브러리를 이용해 해석하는 것 뿐 합치는 파일이 아니므로 불가능
18. 다음 그림에서 링킹의 의미를 구체적으로 설명하라.
[정답]
링킹의 정의부터 접근하면 링킹(linking)이란? 어떤 목적 파일이 참조하는 C++ 표준 라이브러리나 다른 목적 파일 속에 있는 함수, 객체 데이터를 포함하여 실행에 필요한 모든 기계어 코드를 확보하여, 하나의 실행 파일로 만드는 과정이라는 정의가있습니다.
즉 개발자가 만든 목적 파일의 경우 함수, 객체, 데이터가 모두 참조만 되어 있을 뿐 연결되어 있는 것이 아닙니다. 그 참조 상태의 목적 파일을 링킹 과정을 통하여 하나의 온전한 실행 파일을 만드는 것이 링킹 과정이 되며, 표준 C++ 라이브러리를 가져와서 실행 파일로 만들어주는 과정입니다.
19. C++ 프로그램의 확장자에 대한 설명 중 틀린 것은?
① C++ 소스 파일의 확장자는 .cpp, .cxx, .c++ 등 운영체제에 따라 다양하다.
② 비주얼 C++에서 .c 확장자를 가진 파일은 C 컴파일러가, .cpp 확장자를 가진 파일은 C++ 컴파일러가 자동으로 컴파일한다.
③ 목적 파일의 확장자는 .obj나 .o 등 운영체제에 따라 다르다.
④ 실행 파일의 확장자는 운영체제에 관계없이 .exe로 표준화되어 있다.
[정답 4번]
이론문제 19번의 문제의 경우 35page 하단에 c++ 프로그램의 확장자를 보면 조금 더 이해가 잘 가는 문제입니다.
4번의 경우 유닉스의 경우 표준화 되어있지 않으며 개발자가 직접 정의합니다.
*.cpp-윈도우 *.cxx-리눅스 등이 있습니다. 나머지 설명은 다 옳은 얘기입니다.
20. C++ 표준 라이브러리에 포함되지 않는 것은?
① C++ 통신 라이브러리
② C++ 입출력 라이브러리
③ STL 라이브러리
④ C 라이브러리
[정답 1번]
C++ 통신 라이브러리는 표준 라이브러리에 포함되지 않는다.
21. 다음 빈칸에 적잘한 단어를 기입하라.
최근에 동일한 프로그램 코드에 구체적인 타입을 적용할 수 있도록 함수나 클래스를 일반화시킨 ______ 함수와 ______ 클래스를 이용하여 프로그램을 작성하는 새로운 프로그래밍 패러다임인 __________이 활발히 사용되고 있다. 이것은 흐름도를 중심으로 작업의 실행 순서에 따라 프로그램을 작성하는 ________ 프로그래밍 기법에서, 객체 사이의 상호 작용과 관계를 중심으로 프로그램을 작성하는 ________ 프로그그래밍 기법 이후에 도입된 것이다. |
[정답]
제너릭함수와 제너릭클래스
새로운 프로그래밍 패러다임인 제너릭 프로그래밍
프로그램을 작성하는 절차지향프로그래밍 기법
프로그램을 작성하는 객체지향프로그래밍 기법
30page C++언어와 제네릭 프로그리밍과 46page C++언어의 특징에서 제네릭 프로그래밍의 언급들을 모두 참고
22. C++ 통합 개발 환경이란 무엇을 말하는가?
[정답]
준말 - 풀네임
IDE - Integrated Development Environment
IDE의 경우 통합개발환경이라하여 소스코드 작성, 컴파일, 디버깅 기능을 가지고 있는 것입니다.
C나 C++의 통합개발환경으로는 비주얼 스튜디오를 java의 경우에는 eclipse를(본인은 java의 개발환경으로 eclipse를 사용합니다.)사용하는 편입니다.
'C, C++ > C++' 카테고리의 다른 글
C++ 클래스를 이용하여 x자 출력하기 (0) | 2020.12.02 |
---|---|
명품 C++ Programming 2판 연습문제 3장 이론문제 개인 풀이 (5) | 2020.10.23 |
명품 C++ Programming 2판 연습문제 2장 실습문제 개인 풀이 (2) | 2020.10.15 |
명품 C++ Programming 연습문제 2장 이론문제 개인 풀이 (6) | 2020.10.14 |
명품 C++ Programming 연습문제 1장 (실습문제)개인 풀이 및 개인 해설 (0) | 2020.10.13 |