Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Development Log

[CS50] C언어 - 기초 본문

성장 여행기/CS50

[CS50] C언어 - 기초

gu-su 2022. 3. 24. 18:58

C언어

  • 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다.
  • C로 작성한 코드는 "파일이름.c"로 저장해야 한다. (확장자 ".c"는 C로 작성된 코드라는 것을 의미한다.)
#include<stdio.h> 
// 컴퓨터에 함수가 어디에 구현되어있는지 혹은 어디에 저장되어 있는지 알려줘야 한다.
// printf 함수에 접근하기 위해 stdio.h라는 파일을 들여다보라는 의미다.

int main(void) // 시작한다의 의미
{
    printf("hello, world\n"); 
        // f는 형식화된 형태를 의미
        // 글자나 단어, 문장을 적을 때는 언제나 텍스트에 쌍따옴표("")로 감싸야 한다.
        // 코드를 마칠 때 세미콜론(;)을 붙여야 한다.
        // \n은 줄바꿈의 기능을 한다.
}

 

컴퓨터는 영어를 이해하지 못한다. 즉, 컴퓨터는 C언어 역시 이해하지 못한다. 
컴퓨터가 이해하는 언어는 0과 1로 이루어진 2진법이다. (요즘에는 0과 1을 써서 코딩하는 사람은 없다.)
코드를 다 작성한 후, 소스 코드를 컴퓨터가 이해할 수 있도록 0과 1로 번역하려면 중간 단계가 필요하다.

 

컴파일러

  • 소스코드로부터 머신코드를 얻기위해서번역을 수행하는 알고리즘 혹은 소프트웨어컴파일러라고 부른다. 
    1. 소스코드는 직접 작성한 코드를 뜻한다.  
    2. 머신코드는 컴퓨터가 실제로 이해하는 0과 1의 조합이다. 

 

예시

clang(클랭) : C, C++, 오브젝티브-C, 오브젝티브-C++ 프로그래밍 언어를 위한 컴파일러 프론트엔드이다.
./a out : 현재 디렉토리에 있는 a.out이라는 프로그램을 실행한다. ( . 은 지금 있는 현재 디렉토리를 의미한다.)
// hello.c 

#include <stdio.h>

int main(void)
{
    printf("hello, world");
}
  1. 터미널창에 명령어를 입력해 "hello.c"파일의 코드를 컴파일한다. (컴파일하면 "a.out"파일이 생성된다.)
  2. 터미널창에 명령어를 통해 생성된 "a.out" 프로그램을 실행하도록 한다.
  3. 결과1 같이 출력한 텍스트 뒤에 프롬프트($)가 붙어서 나오는 것을 볼 수 있다.
    (컴퓨터에게 커서를 다음줄로 옮기라고 말하지 않았기 때문에)

결과1

// hello.c 

#include <stdio.h>

int main(void)
{
    printf("hello, world\n"); // 줄바꿈을 위해 코드 수정
}
  1. 줄바꿈 문자를 추가한다. (자동 저장됨)
  2. 터미널창에 명령어를 통해 생성된 "a.out" 프로그램을 실행하도록 한다.
  3. 결과2 같이 줄바꿈이 이뤄지지 않는 것을 볼 수 있다.
    (저장을 했을 뿐 컴파일을 다시 하지않았기 때문이다.)

결과2

  1. 터미널창에 "hello.c"파일의 코드를 컴파일 한 뒤, "a.out" 프로그램을 실행한다.
  2. 결과3 같이 줄바꿈이 이뤄지는 것을 볼 수 있다.

결과3

 

 

C를 비롯한 많은 언어들은 시키는 일만 한다.
컴퓨터는 시킨 일만 한다.
즉, 새로운 버전의 코드를 실행하고 싶다면 다시 컴파일을 해야한다. 

마우스와 그래픽 UI로 할 수 있는 모든 일을 명령어만으로도 할 수 있다.
(터미널에서 명령어를 입력함으로써 ex. ls, rm, mkdir 등)

 

think about

1) C로 "hello, boostcourse" 출력해보세요.

더보기
#include <stdio.h>

int main(void)
{
    printf("hello, boostcourse\n");
}

 

David J. Malan의 강의

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org