CS 기초/C언어

[CS50] C 기초

담크 2021. 7. 28. 10:30

그래픽 인터페이스인 스크래치(skratch)를 사용해서도 간단한 프로그래밍이 가능하지만, 텍스트 기반 프로그래밍 언어인 C를 사용해도 컴퓨터에게 동일한 일을 시킬 수 있습니다.

 

C 언어란?

벨 연구소의 데니스 리치가 만든 프로그래밍 언어로 정식 명칭은 'C'지만 한국에서는 'C언어'라고 부른다.

세계적으로 가장 많이 쓰이는 프로그래밍 언어 중 하나이다.(출처 : 나무위키)

 

우선 저번 시간에 했던 스크래치와 비교해볼 텐데 혹시라도 저번에 스크래치를 사용해보지 않으셨다면

https://darmk.tistory.com/entry/CS50-%EC%8A%A4%ED%81%AC%EB%9E%98%EC%B9%98-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0?category=964471 

 

[CS50] 스크래치 사용해보기

알고리즘을 만들려면 여러 가지 프로그래밍 언어를 사용할 수 있는데요. 가장 쉽게 알고리즘을 만드는 방법 중 하나는 그래픽 프로그래밍 언어를 사용해 그래픽으로 이루어진 알고리즘 블록을

darmk.tistory.com

바로 이전 게시글 가서 한 번이라도 써 보시는 것을 추천드립니다. ㅎㅎ

 

우선 C언어의 기본 코드를 보자면

#include <stdio.h>

int main(void){
	prinf("hello, world");
}

이런 형식으로 표현됩니다. 이는 스크래치 블록으로 표시한다면

이런 모양으로 표시할 수 있습니다. (두 개의 결과는 같습니다.)

하나하나 설명해보자면

가장 먼저

#include <stdio.h>는 "stdio.h"라는 이름의 파일을 찾아서 "printf" 함수에 접근할 수 있도록 해주는 역할을 합니다.

 

int main(void)  -> "초록색 깃발을 클릭했을 때 (when (  ) clicked)" 와 같은 역할이고

시작한다. 라는 의미를 가지고 있습니다.

 

기본적인 프로그래밍 공부를 해보신 분들은 아시겠지만 앞으로 작성할 코드(행동 등)는 int main(void)의 { } 사이에 작성될 것입니다.

printf("hello, world"); -> say hello, world와 같은 역할을 하고

hello, world라고 말하기(출력하기)라는 의미를 가지고 있습니다.

 

위에서 알 수 있듯 글자나 단어, 문장을 적을 때는 언제나 텍스트에 " "(쌍따옴표)로 감싸야하고, 우리가 일상에서 문장의 끝에 .(마침표)를 찍는 것처럼 C에서는 ;(세미콜론)을 붙여줘야 합니다.

 

마지막으로 C로 작성한 코드는 "파일 이름.c"로 저장해야 합니다.

 

이렇게 작성된 코드를 소스코드라고 부릅니다.

그런데 이 소스코드들을 그대로 사용하면 컴퓨터가 이해를 할 수 없는데 컴퓨터는 0과 1만을 사용해서 말하기 때문입니다. 그래서 이 작성된 소스코드를 머신 코드로 변경해야 하는데 이때 필요한 작업이 컴파일러를 이용한 컴파일이라는 작업입니다.

그림으로 보면 더 쉬울겁니다.

그럼 컴파일을 어떻게 해야 할까요?

터미널 창의 명령어 프롬프트의 "$" 기호 옆에 원하는 명령어를 입력하면 됩니다.

여기에 이제

clang hello.c

라는 명령어를 사용할 건데 이건 "clang"이라는 컴파일러로 "hello.c"라는 파일을 컴파일하라는 의미를 가집니다.

 

그 결과로 a.out이라는 파일이 생성되는데(여기서 만들어지는 a.out은 default로 파일명을 지정해주지 않으면 자동으로 주어지는 이름입니다. 원하는 이름이 있으면 clang -o xxx hello.c => 이런식으로 xxx부분에 작성해주시면 됩니다.) 터미널에서 ./a.out이라는 명령어를 실행하면 컴퓨터가 현재 디렉토리에 있는 a.out이라는 프로그램을 실행시켜줍니다. (./a.out에서 .은 지금 현재 폴더를 나타냅니다.)

 

 


출처

본 내용은 CS50의 2019년 강의를 듣고 작성했습니다. (개념이 어느 정도 정리되면 최신강의도 다시 듣고 수정할 내용 있으면 수정하겠습니다.)

 

강의 자료는 EdX에서 무료로 사용할 수 있고 boostcourse에서 한글 강의로도 들을 수 있습니다.

 

'CS 기초 > C언어' 카테고리의 다른 글

[CS50] 하드웨어의 한계  (0) 2021.08.03
[CS50] 사용자 정의 함수, 중첩 루프  (0) 2021.08.02
[CS50] 자료형, 형식 지정자, 연산자  (2) 2021.08.01
[CS50] 조건문과 루프  (0) 2021.07.30
[CS50] 문자열  (0) 2021.07.29