ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C언어] C 기초
    Stage/Computer Science 2021. 5. 26. 19:21

    학습목표

    C로 "hello, world"를 출력하는 프로그램을 만들 수 있다.

    1. C언어

    아주 오래되고 전통적인 순수 텍스트 기반의 언어이다.
    앞에서 접한 스크래치는 형형색색의 블록을 끌어다 쓰면 됐기 때문에 사용자 친화적이었다.
    스크래치로 만들었던 코드 블록들을 순수 텍스트 기반으로도 옮길 수 있는데, C언어를 사용해서 표현해보자.

    #include <stdio.h>
    
    int main(void)
    {
        printf("hello, world");
    }
    
    • int main(void): 시작한다는 의미이다. 스크래치에서 '초록색 깃발을 클릭했을 때' 블록과 같은 역할을 한다.
    • printf: 스크래치에서 'say'와 같은 함수. ("hello, world" 라고 말하기)
    • 문장이 끝날 때는 세미콜론(;)을 붙여야 한다. 문장이 끝났음을 알려주는 의미이다.

    2. 출력하기

    2.1. 소스코드와 머신코드

    위에서 작성한 코드는 '소스 코드' 라고 불린다. 이 input을 출력하려면 어떻게 해야 할까?

    input -> ____ > output

    우리가 작성한 소스 코드는 컴퓨터가 이해할 수 없는 언어로 만들어졌다.
    컴퓨터가 이를 이해하기 위해서는 소스코드를 0과 1로 작성해야 한다. 컴퓨터는 2진법을 사용하기 때문이다.
    컴퓨터가 이해할 수 있는 코드를 머신 코드라고 부른다.

    source code -> ____ -> machine code

     

    2.2 컴파일러

    source code -> compiler -> machine code

    소스코드를 머신코드로 변환하는 작업을 뜻한다.
    터미널 창에서 우리가 원하는 명령어를 입력하면 컴퓨터가 수행해준다.
    '$' 기호 옆에 명령어를 입력해보자.

    1) 명령어 입력

    • "clang" 이라는 컴파일러로 "hello.c" 코드를 컴파일하라는 의미이다.

     

    • 아무일도 일어나지 않은 것 같아 보이지만, 폴더를 확인해보면 a.out 이라는 파일이 생성되어있다.
    • a.out 파일은 소스코드를 머신코드로 컴파일한 파일이다. 우리가 작성한 코드가 0과 1로 가득차있다.

    2) a.out 파일 실행

    • ./a.out
    • . = 지금 말그대로 현재 폴더(right here.)
      컴퓨터에서 마우스로 더블클릭해서 실행 하는 것과 같은 것
    • /a.out = 이 디렉토리에서 a.out이라는 파일을 실행하라

    우리가 작성한 "hello, world"가 작성된 것을 확인할 수 있다. 하지만 문자열 뒤의 '$'가 거슬리므로 "hello, world" 그리고 줄바꿈을 하라고 다시 명령해보자.



    3) "hello, world" + 줄바꿈 실행

    • 다시 컴파일을 해주고 a.out 파일을 실행해주면 "hello, world" 그리고 줄바꿈이 수행 된 것을 확인할 수 있다.

    4) 그 외 명령어

    • clang -o hello hello.c = hello.c 코드를 hello 라는 이름을 가진 파일로 컴파일 하겠다.
      옆에 hello 라는 파일이 생성된 것을 확인 할 수 있다.
    • ls 명령어를 입력하여 리스트를 확인해보면 현재 디렉토리가 가지고 있는 파일들이 보이는데, '*'가 있는 파일도 있고 없는 파일도 있다.
      '*'가 붙어 있는 파일은 실행가능하다는 의미로, 즉 컴퓨터가 이해할 수 있는 머신코드라는 의미이다.

     

    'Stage > Computer Science' 카테고리의 다른 글

    [C언어] 조건문과 루프  (0) 2021.05.26
    [C언어] 문자열  (0) 2021.05.26
    [컴퓨팅 사고] 알고리즘  (0) 2021.05.26
    [컴퓨팅 사고] 정보의 표현  (0) 2021.05.26
    [컴퓨팅 사고] 2진법  (0) 2021.05.26

    댓글