모각코

[2025 하계 모각코] 1회차 활동 결과 - C 언어 개발환경 및 기본 문법

pengine 2025. 7. 15. 18:35

활동 목표: C언어 개발환경 설정 및 기본 문법 학습

 

활동 결과

 

1. C언어 개발환경 설정

 

- C언어는 Python이 인터프리터를 사용하는 것과 달리 컴파일러를 사용한다.

 

컴파일러와 인터프리터의 차이

 

인터프리터 - 프로그램을 한 줄씩 읽어 실행시킨다. python과 같은 High Level 언어들이 주로 인터프리터를 사용한다.

컴파일러 - 프로그램을 한 번에 읽어 실행시킨다. C, JAVA 등과 같은 비교적 Low Level 언어들이 주로 컴파일러를 사용한다.

프로그램을 한 줄씩 읽어 실행시키기 때문에 인터프리터는 속도가 상대적으 느리다는 단점이 있다. 하지만 프로그램 수정이 간단하다는 장점이 있다.

 

컴파일러는 프로그램을 한 번에 읽어 한 번에 실행시키기 때문에 속도가 빠르다. 하지만 프로그램을 수정하려면 컴파일을 처음부터 다시 해야한다는 점에서 수정이 용이하지 않다는 단점이 존재한다.

 

직관적으로 인터프리터와 컴파일러의 속도 차이를 말로만 들었을 때 느껴지지 않을 수 있다. 따라서 이해를 돕기 위한 간단한 애니메이션을 첨부하겠다. https://youtu.be/Dx2tSsd3aFc

 

- GCC 설정

 

GCC란 C 컴파일러 중 하나이다. 

GCC의 컴파일 과정은 다음과 같다.

1. 전처리 -> 전처리 파일

2. 컴파일 -> 어셈블리어 파일

3. 어셈블 -> 기계어(2진수)

4. 링크 -> 실행 파일

 

Visul Studio Code에서 GCC를 설정해주었다.

 

2. 기본 문법 학습

 

- #include <stdio.h>

 

처음에 이 구문이 주석인 줄 알고 이 줄을 빼고 코드를 작성했다가 오류가 났다...

 

가장 맨 처음에 Hello Word 를 출력하려다가 저 줄을 뺐더니 printf에서 오류가 난 것이다.

그래서 이 줄의 의미하는 것을 알아보니 standard input output(표준 입출력)을 h(헤더 파일)에 포함시키겠다는 것이다.

print, scanf 이 포함되기 때문에 대부분의 코드에 빠지면 안되는 구문이다.

 

- 변수 

 

C에서는 변수를 선언할 때 자료형을 선언한다.

그리고 변수를 표현할 때 또한 자료형에 따라 다른 표현을 필요로 한다.

%d - int(정수)

%f - float(실수)

%lf - double

%c - char(문자)

%s - char(문자열)

 

- 반복문

 

for 문

for (초기 값; 조건 식; 증가/감소 값) {

실행;

}

 

while 문

while (조건 식) {

실행

}

 

do while 문

do {

실행;

} while (조건 식);

 

for 문과 while문은 거의 똑같아 보였기 때문에 의도에 따라 구분해서 사용하는 것으로 이해하였다.

do while문은 처음 보는 문법이지만 while문과 거의 똑같고 조건에 부합하지 않아도 한 번 실행할 수 있다는 차이를 느꼈다.

 

- 조건문

 

if문

if (조건){

실행;

}

else if (조건2){

실행;

}

else {

실행;

}

 

switch case 문

switch (변수) {

case 값1: 

  실행;

  break;

case 값2: 

  실행;

  break;

default:

  실행;

}

 

if 문과 달리 switch case 문은 변수에 대한 값을 미리 지정해두어 일치여부를 판단한다.

겉으로 보기에는 같은 의미지만 구분지어 둔 이유가 있을 것이다.

 

결과적으로 switch 문은 if 문보다 효율적으로 프로그램을 작성할 수 있게 해준다.

if else문은 bool 값을 확인해야 하지만

switch 는 case가 이산적으로 나타나지므로 hash와 비슷한 로직을 사용할 수 있다(값과 주소를 mapping). 내부적으로는 jump table이라는 것이 만들어지게 된다. 

더욱 자세히 알아보고 싶다면 control flow를 찾아보기 바란다.