AR삽질러

C로 시작하는 컴퓨터 프로그래밍4판 - 1장 C언어의 시작 본문

C

C로 시작하는 컴퓨터 프로그래밍4판 - 1장 C언어의 시작

아랑팡팡 2023. 3. 8. 12:00
728x90

1. 컴퓨터의 구성 요소에 대해 설명하시오.

- 하드웨어, 소프트웨어

하드웨어 : 전자회로와 물리적인 장치로 이루어진것으로 입력장치, 중앙처리장치, 출력장치, 주기억장치, 보조기억장치가 있다.

 입력장치 : 문자나 기호 등의 데이터를 컴퓨터가 해석할 수 있도록 전기신호로 변환

 중앙처리장치 : 컴퓨터의 구성요소를 제어하거나 연산을 수행한다.

 출력장치 : 중앙처리 장치의 처리 결과를 출력한다.

 주기억장치 : RAM(Random Access Memory)실행중인 명령어와 데이터를 저장한다.

 보조기억장치 : 주기억장치를 보조하는 장치로 데이터를 영구적으로 보존하는 하드디스크, 이동식디스크 등

 

시스템 소프트웨어 : 컴퓨터 시스템 자체의 동작과 관련된 소프트웨어로 운영체제, 드라이버, 라이브러리 등이 있습니다. 하드웨어 자원을 관리하고 운영체제와 응용 소프트웨어 사이에서 중개자 역할, 시스템의 안정성, 보안성, 성능 등을 유지하고 개선하는 역할을 한다.

응용 소프트웨어 : 사용자가 직접 사용하는 소프트웨어로, 워드프로세서, 그래픽 디자인 프로그램, 게임, 인터넷 브라우저 등이 있습니다. 이러한 소프트웨어는 사용자의 요구에 따라 다양한 기능을 제공하며, 사용자가 컴퓨터를 보다 효율적으로 사용할 수 있도록 돕습니다. 응용 소프트웨어는 시스템 소프트웨어 위에서 동작하며, 사용자가 요구하는 작업을 수행한다.

 

2. 이 책에서 작성하는 프로그램은 시스템 소프트웨어인지 응용 소프트웨어인지 밝히고, 그 이유를 설명하시오.

- Visual Studio에서 C 프로그램은 일반적으로 응용 소프트웨어로 간주된다.

C 언어는 프로그래밍 언어 중 하나이고 시스템 소프트웨어와 응용 소프트웨어를 모두 개발할 수 있지만,  Visual Studio에서 일반적으로 개발되는 C 프로그램은 사용자가 직접 사용하는 프로그램이며, 시스템 자원을 직접 제어하지 않는다.

대신 운영체제와 시스템 소프트웨어가 하드웨어 자원을 관리하고, C 프로그램은 운영체제에서 제공하는 라이브러리와 API를 활용하여 작동하게 된다. 따라서 일반적으로 Visual Studio에서 개발되는 C 프로그램은 응용 소프트웨어로 분류될 수 있지만  C 언어 자체는 시스템 소프트웨어를 개발하는 데에도 사용될 수 있어 프로그램의 종류에 따라 다르게 분류될 수 있다.

 

3. 사용자가 원시 파일을 작성하는 것부터 컴퓨터가 실행 파일을 만드는 것까지, 프로그램의 실행 과정에 대해 설명하시오.

 1) 원시파일작성(test.c) -> 컴파일러

 2) 목적파일생성(test.obj) -> 링커

 3) 실행파일생성(test.exe) 

 

4. 시스템 라이브러리는 무엇이며, 사용자가 어떻게 이것을 활용할 수 있게 되는지 설명하시오.

- 시스템 라이브러리는 운영체제와 같은 시스템 레벨에서 사용되는 함수나 도구들의 모음으로 주로 시스템 프로그래밍이나 운영체제와 관련된 소프트웨어 개발에 사용된다.

 1) 시스템 라이브러리는 C, C++, Java 등과 같은 프로그래밍 언어로 작성될 수 있고 이러한 라이브러리는 운영체제의 기능을 이용하여, 프로그래머가 시스템 자원을 직접 제어할 수 있도록 돕습니다. 파일 시스템, 네트워크, 프로세스 및 스레드 관리, 메모리 관리 등의 기능을 수행하는 라이브러리가 있다.

 2) 사용자는 시스템 이 라이브러리들을 활용하여, 운영체제와 상호작용하는 프로그램을 작성할 수 있습니다. 이러한 프로그램은 시스템 자원을 효율적으로 사용하고, 더 높은 수준의 제어와 성능을 제공할 수 있습니다.

 3) 시스템 라이브러리는 운영체제와 관련된 정보를 제공하는 함수들을 제공합니다. 이러한 함수들은 운영체제의 종류, 버전, 시스템 자원의 상태 등을 알려주는 정보를 제공합니다. 이러한 정보를 이용하여, 프로그램은 시스템 자원을 효율적으로 사용하고, 안정적으로 동작할 수 있습니다.

 

5. 프로그램 오류 가운데 문법적인 오류와 논리적인 오류는 무엇이며, 일반적으로 왜 논리적인 오류가 해결하기 더 어려운지 설명하시오.

 1) 문법적인 오류 : 프로그래밍 언어의 문법 규칙을 위반한 오류로 일반적으로 컴파일러나 인터프리터가 이러한 오류를 발견하고 오류 메시지를 출력한다.

 ex)변수를 정의하지 않고 사용하거나, 괄호의 짝이 맞지 않는 등의 오류

 2) 논리적인 오류는 문법적인 오류와는 달리 문제의 원인이 프로그램의 논리에 있어 발생하는 오류로 문법적인 오류와는 다르게 컴파일러나 인터프리터가 오류를 발견하지 못한다.

ex) 잘못된 조건문, 부적절한 변수 사용 등

 

 3) 일반적으로 논리적인 오류가 해결하기 어려운 이유 : 

첫째 - 논리적인 오류는 프로그램의 구조나 알고리즘 자체에 문제가 있기 때문에 수정이 어렵다.

둘째 - 논리적인 오류는 컴파일러나 인터프리터가 검출하지 못하기 때문에, 디버깅이 어렵다.

셋째, - 논리적인 오류는 일부 상황에서는 문제가 발생하지 않을 수도 있기 때문에 오류를 발견하기 어렵다.

논리적인 오류는 문제를 발생시키는 시점을 찾고 수정이 어려우므로 수정 과정에서 새로운 오류가 발생할 가능성이 높기 때문에 논리적인 오류를 최대한 방지하기 위해서는 문제를 잘 이해하고, 효율적인 알고리즘을 사용하고 오류를 발생시킬 수 있는 상황을 미리 예측하고, 오류를 최소화하는 방법을 사용한다.

 

6. 주석이란 컴퓨터가 처리하지 않는 내용으로 프로그램 실행과는 관련이 없다. 그럼 왜 사용자는 주석을 사용하는지 설명하시오.

- 프로그램의 내용을 사용자가 이해할 수 있도록 돕기 위해, 프로그래머가 자신이 작성한 프로그램의 코드를 이해할 수 있도록 돕는다.

 

7. 다음 소스코드를 작성하고 프로그램을 실행하여 오류가 발생하면 결과 창의 내용을 읽고 디버깅하시오.

1)

#include{stdio.h}

int main(){

	printf("김경영의 학번은 2022001입니다.\n);
	return 0;
}

#include{stdio.h}   => #include<stdio.h>

2)

#include<stdio.h>

int void main(){

	printf(안녕하세요\n");
	return 0;
}

printf(안녕하세요\n");  => printf("안녕하세요\n");

 

8. Visual C++ 프로그램편집창의[도구]-[옵션] 메뉴를 이용하여 소스 작성 창의 배경을 검은색으로 텍스트색상을 회색으로, 키워드 색상을 흰색으로 바꾸시오.

 

 

728x90
반응형
LIST