1.1 컴퓨터와 프로그램의 이해
- 컴퓨터의 정의: 데이터를 가공하여 정보를 얻기 위해 계산(compute)하는 기계
- 현대적 의미의 컴퓨터: 명령어들의 리스트에 따라 데이터를 처리하는 기계
- 컴퓨터의 장점: 범용적인 기계로, 프로그램만 바꿔주면 다양한 작업 가능
- 컴퓨터의 구성 요소: 하드웨어(물리적 장치)와 소프트웨어(프로그램)
1.2 프로그램과 프로그래밍
- 프로그램: 컴퓨터 하드웨어가 수행할 일련의 작업을 기술하고 있는 명령어의 모임
- 명령어(instruction): CPU가 처리할 수 있는 2진 코드
- 프로그래밍: 프로그램을 작성하는 일 또는 그 과정
- 소프트웨어 종류:
- 시스템 소프트웨어: 하드웨어를 지시하고 통제하기 위한 프로그램
- 응용 소프트웨어: 사용자가 원하는 일을 수행하기 위한 프로그램
1.3 프로그래밍 언어
- 프로그래밍 언어의 역할: 사람과 컴퓨터 사이의 커뮤니케이션 수단
- 기계어: 컴퓨터 시스템이 사용하는 언어로 0과 1의 집합(이진수)
- 어셈블리어: CPU 명령들을 기호(Symbolic name)로 표시, CPU에 종속적
- 고급 언어: 사람이 인식할 수 있는 문자로 작성, CPU에 독립적
- 컴파일러의 역할: 고급 언어를 기계어로 변환
- 고급 언어의 장점:
- 특정 CPU의 동작에 대해 자세히 알 필요가 없음
- CPU에 독립적인 프로그램 작성 가능
- 개발 및 유지보수 용이
2. C 언어 개요
2.1 C 언어의 역사 및 특징
- 탄생: 1970년대 초 벨 연구소의 데니스 리치(Dennis Ritchie)에 의해 UNIX 운영체제를 설계하는 과정에서 개발
- 표준 C: 모든 C 컴파일러에서 호환되는 표준 규격
- 현재 표준: C99, C11 개정 표준
- C/C++ 컴파일러:
- C 컴파일러와 C++ 컴파일러의 역할을 동시에 제공
- C 프로그램은 유효한 C++ 프로그램이지만, 그 반대는 아님
- 파일 확장자 .c일 때는 C 컴파일, .cpp일 때는 C++ 컴파일
2.2 C 언어의 주요 특징
- 간결성: 구문이 간결하고 구조적인 언어
- 이식성: 다양한 운영체제와 플랫폼에서 실행 가능
- 효율성: 프로그램 크기가 작고 실행 속도가 빠름
- 단점: 배우기 어렵고 사용 시 주의사항이 많음
2.3 C 언어의 활용 분야
- 여러 컴퓨터 시스템에서 사용할 라이브러리나 응용 프로그램 개발
- 시스템 프로그램, 서버 애플리케이션, 게임 등 성능 위주의 프로그램
- 임베디드 프로그램 개발
3. C 프로그램 개발 과정
3.1 통합 개발 환경(IDE)
- IDE의 정의: 에디터 + 컴파일러 + 디버거
- 우리가 사용하는 IDE: Visual Studio 2022
3.2 프로그램 개발 단계
- 프로그램 설계:
- 알고리즘(algorithm): 문제 해결을 위한 논리적 절차나 방법
- 알고리즘은 자연어, 순서도, 의사코드로 기술 가능
- 소스 코드 작성:
- 프로그램이 처리할 작업을 특정 프로그래밍 언어로 기술
- 텍스트 편집기나 소스 코드 편집기를 이용해 작성
- 컴파일 과정:
- 전처리기: 소스 파일을 컴파일하기 위해 준비
- 구문 분석: 소스 코드가 C 문법에 맞게 작성되었는지 검사
- 코드 생성: 오브젝트 파일 생성
- 링크: 오브젝트 파일과 라이브러리를 링크하여 실행 파일 생성
- 실행 및 디버깅:
- 실행: 생성된 실행 파일을 실행하여 결과 확인
- 디버깅: 프로그램의 실행 흐름과 값을 확인하여 오류 수정
3.3 프로젝트와 솔루션
- 프로젝트(*.vcxproj): 소스 파일, 헤더 파일, 컴파일 옵션, 링크 옵션 등 관리
- 솔루션(*.sln): 여러 프로젝트를 함께 관리하는 파일
3.4 Visual Studio에서의 개발 과정
- 프로젝트 생성
- 새 항목 추가(소스 파일 생성)
- 소스 파일 작성
- 빌드(F7)
- 실행(Ctrl+F5)
- 디버깅
4. C 프로그램 기본 구조 (예제 코드)
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
5. 예상 문제 및 풀이