๑ `⌃´ ๑

모두를 위한 컴퓨터 과학(CS50 2019)을 들으며 작성하였습니다.

 

 

1. C 기초

C는 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다.

 

우측 검은색 바탕에 적혀진 글씨들은 좌측의 스크래치 블록과 결과적으로 같다.

 

int main(void) 는 스크래치의 "초록색 깃발을 클릭했을 때" 블록과 같은 역할을 한다.

'시작한다'는 의미를 가지고있다고 보아도 무방하다. 앞으로 작성될 코드는 모두 이 int main(void) {} 의 중괄호 사이에 들어가게 될 것이다.

C에서는 스크래치의 say 함수가 없다. 대신 prinf 라는 함수가 있다.

printf("hello, world\n") 은 스크래치의 "'hello, world'라고 말하기" 블록과 같은 역할 을 한다. (\n 은 개행 문자)

글자나 단어, 문장(문자열)을 적을 때에는 항상 텍스트에 " " 쌍따옴표로 감싸야한다.

또한 우리가 글을 쓸 때 문장의 끝에 마침표를 붙이는 것처럼, C에서는 세미콜론(;)을 붙여야한다.

위의 기능들은 C에서 중요하게 사용되는 기본적인 내용이다.

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

우리가 word 로 문서를 작성한 뒤 저장할 때 "문서.docx"와 같이 확장자 .docx가 붙는 것처럼,

C로 작성한 코드는 "파일이름.c"로 저장해야한다. (확장자 ".c"는 C로 작성된 코드라는 의미이다.)

확장자가 자동적으로 붙지 않기 때문에 C의 경우에는 직접 .c를 붙여줘야한다.

 

컴파일러

우리가 직접 작성한 코드는 "소스 코드(source code)"라고 불린다. 이를 2진수로 작성된 "머신 코드(machine code)"로 변환해야 컴퓨터가 이해할 수 있다. 이런 작업을 컴파일러라는 프로그램이 수행해준다.

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

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

 

그 결과 a.out 이라는 파일이 생성되는데, ./a.out 이라는 명령어를 실행하면 컴퓨터가 현재 디렉토리에 있는 a.out 이라는 프로그램을 실행하게 해준다. (./a.out 에선 가장 앞에 있는 . 지금 있는 현재 폴더를 나타낸다.)

ls : 저장된 파일 리스트 호출

rm : remove(파일 제거). y 나 yes 로 제거 가능

파일명 옆의 * 는 컴파일된 파일을 표시

 

 

2. 문자열

C는 오래된 언어이기 때문에, 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해줘야 한다.

그래서 만일 우리가 단어, 문장, 문단 등과 같은 문자열을 저장하고자 한다면, 우리가 저장하고자 하는 값의 종류가 문자열(string)이라는 것을 알려줘야 한다. 이때 stirng을 형식지정자라고 한다.

우리가 일반적으로 사용하는 = 은 같다는 의미이다. 하지만 프로그래밍 언어에서는 오른쪽에서 왼쪽으로 가는 화살표와 비슷하다. 즉 오른쪽에 있는 것을 왼쪽에 지정하는 것이다. 이를 할당 연산자라고 한다.

위의 코드를 실행해보자.

이름을 입력받아 printf 함수로 출력을 해볼 것인데, 이때 유의할 점은 printf("hello, answer"); 이 아니라는 점이다.

우리는 answer이라는 변수에 들어있는 이름을 출력해야 하기 때문에 %를 사용한다.

이 때도 어떤 종류의 인자를 받는지 말해줘야 한다.

이름이라는 문자열을 받기 때문에 string에서의 s% 뒤에 붙여 인자를 받아준다.

그래서 최종적으로는 printf("hello, %s\n", answer); 이 되는 것이다.

가장 위 포함된 cs50.h 파일 안에 string 이라는 문자열 형식과 get_string 이라는 함수에 대한 코드가 포함되어 있다. 이 파일을 포함해야만 전체 코드를 컴파일하고 실행할 수 있다.

터미널창에 아래 명령어를 입력하여 컴파일을 할 수 있다.

여기서 -o string 은 string.c 를 string.out 이라는 머신코드로 저장하도록 하는 명령어이다.

-lcs50은 "link"라는 의미를 지닌 -l 이라는 인자에 우리가 추가로 포함한 "cs50" 파일을 합친 것이다. 이를 통해 컴파일시 cs50 파일을 연결하도록 알려줄 수 있다.

이런 복잡한 과정 대신에, 아래 make 명령어를 통해 간단히 컴파일을 수행할 수도 있다.

이와 같이 작성한 코드를 컴파일하고 실행하면, 사용자에게 입력값을 받고 문장 내에 포함하여 출력하는 프로그램이 된다.

'CS' 카테고리의 다른 글

FTP와 SFTP  (0) 2026.08.27
블로킹과 논블로킹  (0) 2026.08.25
모두를 위한 컴퓨터 과학(CS50 2019) - (1)컴퓨팅 사고  (0) 2022.07.26
🎵 Playlist
loading...
00:00 / 00:00