1. By the C, by the C, by the Beautiful C / 1.1. Getting Started Programming in C

2024. 11. 28. 12:18DiveIntoSystems

728x90
반응형

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