You are on page 1of 3

1.

과목: SW 융합코딩 1- 2 분반

2. 내용: 1 주차 과제 리포트 (연습문제 풀이)


1. 컴퓨터가 사용하는 진법은 무엇인가? - ①2 진법

2. 고급 언어로 작성된 프로그램을 기계어로 바꿔주는 도구는 무엇인가? - ② 컴파일러

3. 문제 해결 절차를 시각적으로 표현한 것은 무엇인가? - ② 순서도

4. 다음 중 C 언어의 특징으로 적합하지 않은 것은? - ② 객체지향 프로그래밍이 가능하다.

5. 컴퓨터를 이용하여 문제를 해결하기 위한 절차를 무엇이라고 하는가? - ① 알고리즘

6. 알고리즘을 기술할 수 있는 방법을 모두 고르라. - ① 순서도, ② 의사 코드, ③ 자연어

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

8. 다음 중에서 C 언어를 개발한 사람은 누구인가? - ①Dennis Ritchie

9. 컴퓨터에서 이미지와 음악이 어떻게 표현되는지를 인터넷에서 조사하여 보라.


- 이미지: 각 픽셀의 밝기값이 숫자로 표현된다. / 음악: 음파의 높이가 숫자로 표현된다.

10. 컴퓨터에서 10 진법이 아닌 2 진법이 사용되는 이유를 설명하라.


- 이진법이 십진법에 비해 표현이 쉽기 때문이다. 전자 회로를 이용해 구현 가능한 스위치를
이용함으로써 0 과 1 을 표현할 수 있다.

11. 인텔의 CPU 에서 사용되는 명령어 중 3 가지를 선택해 무슨 일을 하는 명령어인지 조사해 보라.
- MOV: 데이터 이동
- XCHG: 첫 번째 오퍼랜드와 두 번째 오퍼랜드 교환
- IN: 오퍼랜드로 지시된 포트로부터 AX 에 데이터 입력

12. 주판, 계산자, 계산판 등의 고대의 계산하는 기계들하고 현대의 컴퓨터와 결정적인 차이점은
무엇인가?
- 컴퓨터는 명령어들의 리스트에 따라 데이터를 처리할 수 있어 다양한 프로그램을 수행할 수 있는
반면, 계산기는 계산만 가능하며 다른 프로그램을 수행할 수 없다.

13. 컴퓨터 부품을 판매하는 인터넷 쇼핑몰을 방문하여서 컴퓨터 부품에는 어떤 것들이 있고 어떻게
분류할 수 있는지 조사하라.
- 컴퓨터 내부 부품: CPU, RAM, 마더보드, 하드디스크, 그래픽카드, 케이스/파워서플라이,
CD-ROM, 플로피디스크드라이브, 사운드카드, 랜카드, CD 레코더, DVD 드라이브
- 컴퓨터 외부 부품: 모니터, 키보드, 마우스, 스캐너, 프린터

14. 컴퓨터로 문제를 해결할 때, 문제 해결 방법을 인간이 구체적으로 고안하여 알려주어야 한다면
왜 컴퓨터를 사용하는 것인가? 인간이 직접 하는 편이 낫지 않을까?
- 한 번만 문제 해결 방법을 알려주면, 그 방법을 여러 번 이용할 수 있기 때문이다.

15. 기계어, 어셈블리어, 고급 언어의 차이점을 정리해 보라.


- 기계어: 컴퓨터가 이해할 수 있는 단 하나의 언어이며, 특정 컴퓨터의 명령어를 2 진수로
표시한 것이다.
- 어셈블리어: CPU 의 명령어들을 기호로 표기한 것이다. 어셈블러라는 프로그램이 기호를 2
진수로 변환하며, 기호 이름과 CPU 의 명령어가 일대일 대응되고 컴퓨터의 CPU 가 달라지면 실행이
불가능한 저급 언어이다.
- 고급 언어: 특정 컴퓨터의 구조나 프로세서와는 무관하게, 독립적으로 프로그램을 작성할 수
있으며, 기계어보다는 인간의 언어에 가까워 프로그램을 작성하기가 쉽고, 프로그램 이해 · 유지
보수하기가 쉽다.

16. C++와 Java 는 C 에다 어떤 개념을 추가한 것인가? 인터넷에서 검색해 정리해 보라.
- 객체 지향: 캡슐화(관련 데이터와 알고리즘이 하나의 묶음으로 정리된 것), 상속(기존 코드를
재활용하는 것), 다형성(하나의 이름으로 많은 상황에 대처하는 기법)의 특징을 지녔다.

23. 두개의 컵에 우유와 주스가 각각 담겨있다. 우유와 주스를 교환하기 위한 알고리즘을 고안하라.
사용가능한 세 번째 컵이 있다고 가정한다.
- 처음에 우유가 담긴 컵을 A 라고 한다.
- 처음에 주스가 담긴 컵을 B 라고 한다.
- 비어있는 세 번째 컵을 C 라고 한다.
- A 에서 C 로 우유를 옮긴다.
- B 에서 A 로 주스를 옮긴다.
- C 에서 B 로 우유를 옮긴다.

24. 다음 알고리즘을 구상해 보라.


(a) 만약 숫자들의 리스트가 주어지고 이중에서 특정한 숫자를 찾는 알고리즘을 구상해 보시오.
숫자들은 정렬되어 있지 않다고 가정하라.
- 변수 n 의 값을 1 로 바꾼다.
- n 번째 숫자와 주어진 특정 숫자를 비교한다.
- 같은 숫자일 경우 멈춘다.
- 다른 숫자일 경우 n 에 1 을 더한 후 첫번째 줄로 돌아가 멈출 때까지 반복 실행을 한다.

(b) 만약 숫자들이 크기순으로 정렬되어 있다면 특정한 숫자를 찾는 알고리즘을 어떻게 개선시킬
수 있는가?
- 리스트의 숫자 개수가 홀수일 경우, 처음 숫자 ~ 가운데 숫자, 가운데 숫자 ~ 마지막 숫자 의
구간 중 주어진 특정 숫자가 있는 구간을 찾는다.
- 리스트의 숫자 개수가 짝수일 경우, 처음 숫자 ~ 가운데 바로 왼쪽 숫자, 가운데 바로 오른쪽
숫자 ~ 마지막 숫자 의 구간 중 주어진 특정 숫자가 있는 구간을 찾는다.
- 주어진 특정 숫자가 없는 구간의 값은 버린다.
- 남은 숫자의 구간 중 양 끝값 중 특정 숫자와 일치하는 값이 있으면 실행을 멈춘다.
- 첫번째 줄로 돌아가 숫자를 찾을 때까지 반복 실행한다.

25. 1 부터 100 사이의 정수 중 소수를 찾는 알고리즘을 생각할 수 있는가?

#include <stdio.h>

int main()
{
int i, j;
for(i=2; i<=100; i++) //1 은 소수가 아니므로 2 부터 시작
{
for(j=2; j<=100; j++)
{
if(i % j == 0) break;
if(j == 100) printf("%d", i);
}
}
return 0;
}
3. 담당교수: 박홍식
4. 제출일: 2021. 3.14
5. 학과: 소프트웨어학과
6. 학번: 32213160
7. 성명: 이서현

You might also like