본문 바로가기
CS 기초/CS50 2019

[CS50 2019] (C언어) C 기초

by Dev.Andy 2023. 5. 27.

머리말

참고 자료

C언어에서 배울 내용 소개

  • functions
  • conditions
  • Boolean expressions
  • loops

 

C언어 작성

hello.c 파일

  • hello world 출력 코드
#include <stdio.h>

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

printf

  • printf에서 f는 format(형식)을 뜻한다
  • 괄호 안의 문장을 출력하라는 뜻

include

  • 작성한 함수가 어디서 저장되어 있는지를 알려주어야 한다
  • stdio.h 파일을 참고하라는 뜻

 

컴파일러와 파일 실행

컴파일러(compiler)

소스 코드와 머신 코드 사이에 컴파일러가 있는 이미지
컴파일러는 소스 코드를 머신 코드로 변환하는 프로그램이다.

  • 저번 시간에 배운 이진법에 의하면, 컴퓨터는 0과 1만 이해한다. C 언어 또한 이해하지 못함.
  • 소스 코드를 기계어(머신 코드)로 변환하는 과정이 필요함
  • 소스 코드는 영어와 유사한 코드, 기계어는 컴퓨터가 이해할 수 있는 이진법의 코드
  • 두 코드를 번역하는 프로그램을 컴파일러라 한다.
  • $는 프롬프트를 의미함

clang 명령어를 통한 컴파일

clang 명령어를 통해 hello.c 파일을 컴파일하여 a.out 파일 생성

$ clang hello.c

a.out 파일 실행

$ ./a.out
hello, world!$

 

  • 다음 줄로 가라는 코드가 없었기에 프롬프트($)가 다음 줄로 넘어가지 않고 현재 줄에 머무른다.

줄바꿈 문자(\n)를 추가하여 다음 줄로 이동하기

  • 문장의 맨끝에 줄바꿈 문자를 추가하여 다음 줄로 가도록 해야 한다.
#include <stdio.h>

int main(void)
{
    printf("hello, world!\n");
}
  • 수정한 내용은 다시 컴파일 되어야 한다.
  • 기존의 컴파일 된 파일은 이것이 반영이 되지 않았기 때문이다.
$ clang hello.c
$ ./a.out
hello, world!
$

 

Q: include와 main 사이에 다음 줄이 비어 있는 이유?

  • 가독성을 높이기 위해서

Q: a.out말고 다른 파일의 이름으로 바꿀 수 있는지?

  • o 옵션을 주고 원하는 이름을 입력한 뒤, 컴파일하고자 하는 파일을 입력하면 된다
$ clang -o hello hello.c
  • hello라는 실행파일이 생김

 

꼬리말

직관적이고 이해하기 위한 설명

  • 교수님이 처음 접하는 학생들도 쉽게 이해할 수 있도록 설명하는 점이 인상적이었다.
  • 어려운 용어를 설명하지 않고 기존에 배웠던 내용(이진법, 원인과 결과 사이의 알고리즘 이미지 등)을 이용해서 사용하는 점이 되게 좋았다.
  • 나도 다른 사람에게 설명할 때도 어려운 용어보다는 처음 듣는 사람이 부담을 갖지 않고 그 사람이 아는 내용을 활용하여 생각을 이끌도록 노력해봐야겠다.

 

댓글