쉽게 풀어쓴 C언어 Express 1장 Exercise (p45~p47)
2015년까지의 글/C Programming

쉽게 풀어쓴 C언어 Express 1장 Exercise (p45~p47)

[생능출판] 쉽게 풀어쓴 C언어 Express (개정판) _ 저자: 천인국

 

제 1장 프로그래밍의 개념

 

Exercise (p45~p47)

p45

1. 컴퓨터가 사용하는 진법은?

① 2진법    ② 8진법    ③ 10진법    ④ 16진법

2. 고급 언어로 작성된 프로그램을 기계어로 바꾸어주는 도구는 무엇인가?

① 링커    ② 컴파일러    ③ 에디터    ④ 디버거

3. 문제를 해결하는 절차를 시각적으로 표현한 것은 무엇인가?

① 구조도    ② 순서도    ③ 의사코드    ④ 설명도

4. 프로그램 개발 과정을 순서대로 적어라.

① 컴파일과 링크    ② 알고리즘의 개발    ③ 요구 사항 분석    ④ 유지보수

⑤ 코딩    ⑥ 프로그램 실행과 디버깅

③ - ② - ⑤ - ① - ⑥ - 

5. 다음 중 C언어의 특징으로 적합하지 않은 것은?

① 간결한 프로그래밍이 가능하다.

② 객체지향 프로그래밍이 가능하다.

③ 실행 속도가 빠르다.

④ 저수준의 프로그래밍이 가능하다.

6. 컴퓨터를 이용하여 문제를 해결하기 위한 절차를 무엇이라고 하는가?

① 알고리즘    ② 객체지향    ③ 구조적 방법    ④ 자료 구조

7. 알고리즘을 기술할 수 있는 방법을 모두 골라라.

① 순서도    ② 의사코드    ③ 자연어    ④ 디버깅

8. 순서도(flowchart)에서 처리를 나타내는 기호는?

① 

    ② 

    ③ 

    ④ 

9. 다음 중 C언어를 개발한 사람은 누구인가?

① Dennis Ritchie    ② Kernighan    ③ Niklaus Wirth    ④ Bjarne Stroustrup

11. 아날로그 방식과 디지털 방식의 장단점을 비교하라.

아날로그 방식의 장점: 대용량 저장이 가능하다.

아날로그 방식의 단점: 잡음이나 왜곡에 약하다. 조작이나 변경이 어렵다.

디지털 방식의 장점: 잡음에 강하다. 고기능의 추구가 가능하다. 소형화, 저가격화가 가능하다. 멀티미디어가 가능하게 되었다.

디지털 방식의 단점: 값을 표현하는 비트의 개수가 적은 경우에, 화질이나 음질이 떨어진다.

13. 인텔의 CPU에서 사용되는 명령어 중에서 3가지를 선택하여 무슨 일을 하는 명령어인지를 조사하여 보라.

MOV(Move): 데이터 이동 (전송)

XCHG(Exchange Register/memory with Register): 첫번째 오퍼랜드와 두번째 오퍼랜드 교환

IN(Input from AL/AX to Fixed port): 오퍼랜드로 지시된 포트로부터 AX에 데이터 입력.

 

p46

15. 컴퓨터 부품을 판매하는 인터넷 쇼핑몰을 방문하여서 컴퓨터의 부품에는 어떤 것들이 있고 어떻게 분류할 수 있는지를 조사하라.

컴퓨터 내부 부품: CPU, RAM, 마더보드, 하드디스크, 그래픽카드, 케이스/파워서플라이, 시디롬, 사운드카드, 네트워크카드(랜카드)

컴퓨터 외부 부품: 모니터, 키보드, 마우스, 스캐너, 프린터

17. 기계어, 어셈블리어, 고급 언어의 차이점을 정리하여 보라.

기계어: 특정 컴퓨터의 명령어를 이진수로 표시한 것이며 컴퓨터 하드에워를 설계할 때 결정된다.

어셈블리어: CPU의 명령어들을 이진수가 아닌 영어의 약자로 표기한 것이다.

고급 언어: 특정한 컴퓨터의 구조나 프로세서에 무관하게 독립적으로 프로그램을 작성할 수 있는 언어.

19. 엠베디드 시스템이란 어떤 것인가? 인터넷에서 자료를 찾아서 정리하여 보라.

미리 정해진 특정 시능을 수행하기 위해 컴퓨터의 하드웨어와 소프트웨어가 조합된 전자제어 시스템을 말한다.

21. 다음과 같은 일상적인 행위에 대한 알고리즘을 작성하여 보라.

(a) 프린터를 이용하여 인쇄를 한다.

프린터의 전원을 켠다. -> 종이를 넣는다. -> 인쇄 버튼을 누른다.

(b) 인터넷 쇼핑몰에서 상품을 구입한다.

상품을 선택한다. -> 배송지를 입력한다. -> 결제를 한다.

23. 사용자로부터 원의 반지름을 입력받고 반지름에 2를 곱하여 지름을 구하고 여기에 3.14를 곱하여 원주를 구하는 알고리즘을 순서도를 이용하여 기술하라.

 

 

24. 0부터 10까지 적혀있는 카드를 가지고 두사람이 하는 게임이 있다. 한 사람당 2장씩 카드를 뽑아서 가장 큰 숫자의 카드를 가진 사람이 승리한다. 이 게임의 승패를 판정하는 알고리즘을 작성하여 보자. 만약 가장 큰 숫자의 카드가 동일하다면 나머지 카드를 비교하여 승패를 결정한다.

 

 

25. 1부터 10까지의 숫자들이 있다. 이들 숫자들은 순서대로 되어있지 않다. 이들 숫자들을 크기 순서대로 정렬시키는 알고리즘을 생각할 수 있는가? 알고리즘을 3가지의 표현 방법 중에서 하나를 선택하여 기술하여 보라.

 

26. 두 개의 숫자 중에서 큰 수를 반환하는 연산만 지원되는 컴퓨터가 있다. 이 컴퓨터에서 3개의 숫자 중에서 제일 큰 수를 찾으려고 하면 어떤 알고리즘을 사용해야 하는가?

 

p47

28. 두 개의 컵에 우유와 주스가 각각 담겨있다. 우유와 주스를 교환하기 위한 알고리즘을 고안하라. 사용 가능한 세 번째 컵이 있다고 가정하라.

 

29-(a). 만약 숫자들의 리스트가 주어지고 이중에서 특정한 숫자를 찾는 알고리즘을 구상하여라. 숫자들은 정렬되어 있지 않다고 가정하라.

 

 

29-(b). 만약 숫자들이 크기순으로 정렬되어 있다면 특정한 숫자를 찾는 알고리즘을 어떻게 개선시킬 수 있는가?

 

(a)번에서는 크기순으로 정렬되어 있지 않기 때문에

처음부터 모든 숫자들의 리스트에서 찾고자 하는 숫자와 비교해야 한다.

즉, 찾고자 하는 숫자가 뒤에 있다면 비효율적.

그러나 크기순으로 정렬되어 있다면 범위를 지정해주면 효율적으로 찾을 수 있다.

 

 

31. 소프트웨어의 유지보수에는 어떤 것들이 있는가?

차후에 생길지도 모르는 버그 수정, 사용자의 추가 요구 사항 충족