2024. 11. 28. 12:18ㆍDiveIntoSystems
Dive into Systems: C 언어 소개 요약이 장은 다른 프로그래밍 언어에 대한 경험이 있는 학생들을 위해 작성된 C 프로그래밍 개요를 제공한다. 특히 Python 프로그래머를 대상으로 하며, Python 예제를 비교 목적으로 사용한다.
C 언어의 특징
- 고급 프로그래밍 언어: Python, Java, Ruby, C++와 같은 고급 프로그래밍 언어로, 명령형 및 절차적 프로그래밍 언어이다.
- 프로그램 구조: C 프로그램은 컴퓨터가 실행할 일련의 명령문(단계)으로 표현되며, 함수(절차) 집합으로 구성된다. 모든 C 프로그램은 main 함수를 포함해야 하며, 이 함수는 프로그램 시작 시 실행되는 명령문을 포함한다.
추상화 수준
- 낮은 추상화: C는 컴퓨터의 기계어와의 추상화 수준이 낮아 객체 지향 프로그래밍이나 고급 프로그래밍 추상화(예: 문자열, 리스트, 딕셔너리)를 지원하지 않는다. 따라서, C에서 딕셔너리 데이터 구조를 사용하려면 직접 구현해야 한다.
장점
- 코드와 실행의 관계 이해: 낮은 추상화 수준 덕분에 프로그램 코드와 컴퓨터 실행 간의 관계를 더 쉽게 이해할 수 있다.
- 하드웨어 제어: 하드웨어에서 프로그램이 어떻게 실행되는지를 더 많이 제어할 수 있으며, 메모리 관리에 대한 제어가 성능에 큰 영향을 미칠 수 있다.
- 효율성: 다른 고급 언어보다 효율적으로 실행되는 코드를 작성할 수 있다. 이러한 이유로 C는 시스템 프로그래밍에서 중요한 언어로 남아 있다.
책에서의 C 사용 이유
- 표현력과 효율성: 프로그램 제어의 표현력과 컴퓨터가 실행하는 어셈블리 및 기계 코드로의 비교적 간단한 번역 때문에 이 책에서는 C를 사용한다.
1.1. Getting Started Programming in C
이 섹션에서는 C 프로그래밍 언어로 "Hello World" 프로그램을 작성하는 방법을 소개한다. Python과 비교하여 C의 기본적인 문법과 구조를 설명한다.
C와 Python의 비교
주석
- Python: 여러 줄 주석은 '''로 시작하고 끝나며, 한 줄 주석은 #로 시작한다.
- C: 여러 줄 주석은 /*로 시작하고 */로 끝나며, 한 줄 주석은 //로 시작한다.
라이브러리 코드 포함
- Python: import를 사용하여 라이브러리를 포함한다.
- C: #include를 사용하여 라이브러리를 포함하며, 모든 #include 문은 프로그램 상단에 위치한다.
블록
- Python: 들여쓰기로 블록을 구분한다.
- C: {}로 블록을 시작하고 끝낸다 (예: 함수, 루프, 조건문).
메인 함수
- Python: def main():으로 메인 함수를 정의한다.
- C: int main(void){ }로 메인 함수를 정의하며, int 타입 값을 반환한다. 반환 값 0은 오류 없이 완료되었음을 의미한다. void는 매개변수를 받지 않음을 의미하며, 이후 섹션에서는 명령줄 인자를 받을 수 있는 방법을 설명한다.
문장
- Python: 각 문장은 별도의 줄에 있다.
- C: 각 문장은 세미콜론 ;으로 끝나며, 모든 문장은 함수 내에 있어야 한다 (예시에서는 main 함수).
출력
- Python: print 함수는 포맷된 문자열을 출력하며, 형식 문자열의 자리 표시자에 대한 값은 % 기호 뒤에 쉼표로 구분된 값 목록으로 제공된다.
- C: printf 함수는 포맷된 문자열을 출력하며, 형식 문자열의 자리 표시자에 대한 값은 추가 인수로 제공된다.
주요 차이점
- 들여쓰기: C에서는 들여쓰기가 의미를 가지지 않지만, 블록의 중첩 수준에 따라 들여쓰기를 하는 것이 좋은 프로그래밍 스타일이다.
- 출력: C의 printf 함수는 자동으로 줄 바꿈 문자를 출력하지 않으므로, 원하는 경우 명시적으로 \n을 추가해야 한다.
- 메인 함수 실행:
- C 프로그램은 반드시 main이라는 이름의 함수를 가져야 하며, 이 함수는 자동으로 호출된다.
- Python 프로그램은 명시적으로 메인 함수를 호출해야 실행된다.
C 프로그램 컴파일 및 실행
Python은 인터프리터 언어로, 소스 코드를 직접 실행할 수 있다. 반면에 C는 컴파일러를 통해 소스 코드를 바이너리 실행 파일로 변환해야 한다. 예를 들어, Unix 시스템에서 hello.c 파일을 컴파일하고 실행하려면 다음 명령어를 사용한다:
gcc hello.c -lm
컴파일 시 수학 라이브러리를 링크해야 할 경우 -lm 옵션을 사용할 수 있다.
변수와 C의 숫자 타입
C에서 변수는 데이터를 저장하는 이름 있는 저장 위치이다. 모든 변수는 사용 전에 선언되어야 하며, 변수의 타입은 그 변수가 표현할 수 있는 값의 범위와 연산 시 해석 방식을 정의한다. 기본적인 C 타입에는 char, int, float, double 등이 있다.
변수 선언 예시
int x;
char letter;
float winpct;
double pi;
변수는 선언 후에 초기화하여 사용해야 한다.
C의 데이터 타입
C는 내장 데이터 타입과 배열 및 구조체를 통해 복잡한 데이터 구조를 만들 수 있는 기능을 제공한다. 숫자 값을 저장하기 위한 기본 타입으로는 int, float, double 등이 있으며, 각 타입은 저장할 수 있는 값의 범위와 정밀도가 다르다.
Table 2. C Numeric TypesType nameUsual sizeValues storedHow to declare
char | 1 byte | integers | char x; |
short | 2 bytes | signed integers | short x; |
int | 4 bytes | signed integers | int x; |
long | 4 or 8 bytes | signed integers | long x; |
long long | 8 bytes | signed integers | long long x; |
float | 4 bytes | signed real numbers | float x; |
double | 8 bytes | signed real numbers | double x; |
산술 연산자
C에서 산술 연산자는 숫자 타입 값을 결합하며, 자동 형 변환이 이루어질 수 있다. 주요 연산자로는 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 모듈로(%)가 있다. % 연산자는 정수 타입에만 사용할 수 있다.
https://diveintosystems.org/book/C1-C_intro/getting_started.html
Dive Into Systems
Python is an interpreted programming language, which means that another program, the Python interpreter, runs Python programs: the Python interpreter acts like a virtual machine on which Python programs are run. To run a Python program, the program source
diveintosystems.org
'DiveIntoSystems' 카테고리의 다른 글
0. Introduction (0) | 2024.11.28 |
---|