Development Log
[CS50] C언어 - 기초 본문
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로 번역하려면 중간 단계가 필요하다.
컴파일러
- 소스코드로부터 머신코드를 얻기위해서는 번역을 수행하는 알고리즘 혹은 소프트웨어를 컴파일러라고 부른다.
- 소스코드는 직접 작성한 코드를 뜻한다.
- 머신코드는 컴퓨터가 실제로 이해하는 0과 1의 조합이다.

예시
clang(클랭) : C, C++, 오브젝티브-C, 오브젝티브-C++ 프로그래밍 언어를 위한 컴파일러 프론트엔드이다.
./a out : 현재 디렉토리에 있는 a.out이라는 프로그램을 실행한다. ( . 은 지금 있는 현재 디렉토리를 의미한다.)
// hello.c
#include <stdio.h>
int main(void)
{
printf("hello, world");
}
- 터미널창에 명령어를 입력해 "hello.c"파일의 코드를 컴파일한다. (컴파일하면 "a.out"파일이 생성된다.)
- 터미널창에 명령어를 통해 생성된 "a.out" 프로그램을 실행하도록 한다.
- 결과1 같이 출력한 텍스트 뒤에 프롬프트($)가 붙어서 나오는 것을 볼 수 있다.
(컴퓨터에게 커서를 다음줄로 옮기라고 말하지 않았기 때문에)

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

- 터미널창에 "hello.c"파일의 코드를 컴파일 한 뒤, "a.out" 프로그램을 실행한다.
- 결과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
'성장 여행기 > CS50' 카테고리의 다른 글
| [CS50] C언어 - 조건문과 루프 (0) | 2022.03.25 |
|---|---|
| [CS50] C언어 - 문자열 (0) | 2022.03.24 |
| [CS50] 컴퓨팅 사고 - 알고리즘 (0) | 2022.03.24 |
| [CS50] 컴퓨팅 사고 - 정보의 표현 (0) | 2022.03.23 |
| [CS50] 컴퓨팅 사고 - 2진법 (0) | 2022.03.23 |