전체 글
-
[배열] 컴파일링Stage/Computer Science 2021. 5. 27. 10:40
학습목표 컴파일링의 네 단계를 설명할 수 있다. 1. 동작원리 이전에 사용한 예제 코드를 다시 보면서 동작 원리를 이해해보자. 1.1 #include int main(void) { printf("hello, world\n"); } main 함수를 만나서 프로그램을 시작한다. printf 함수를 수행해야 하는데, 그러려면 stdio.h 라이브러리가 필요하다. stdio.h 라이브러리에 대해 좀 더 자세히 알아보자. stdio.h는 헤더 파일이고 C언어로 작성되어 있으며 파일 확장자가 .h로 끝난다. stdio.h 파일에는 printf 함수의 프로토타입이 있어서 Clang 컴파일러가 프로그램을 컴파일 할 때 printf가 무엇인지 알려준다. 1.2 clang hello.c로 컴파일하고 그 결과 a.out 이..
-
[C언어] 하드웨어의 한계Stage/Computer Science 2021. 5. 27. 09:03
학습목표 메모리 용량이 프로그램의 구동에 미치는 영향을 설명할 수 있다. 우리가 작성한 프로그램은 구동 중에 RAM에 저장이 된다. RAM은 유한한 크기의 비트만 저장할 수 있으므로 때때로 부정확한 결과를 내기도 한다. 1. 부동 소수점 부정확성 #include #include int main(void) { float x = get_float("x: "); float y = get_float("y: "); printf("x / y = %.50f\n", x / y); } x / y를 했을 때 소수점 50자리까지 출력하는 코드이다. x = 1, y = 10 을 대입해보자. x / y = 0.10000000149011611938476562500000000000000000000000 0.1 이라는 결과가 나와야..
-
[C언어] 사용자 정의 함수, 중첩 루프Stage/Computer Science 2021. 5. 27. 09:02
학습목표 사용자 정의 함수와 중첩 루프를 작성할 수 있다. 1. 사용자 정의 함수 #include #include int get_positive_int(void); int main(void) { int i = get_positive_int(); printf("%i\n", i); } int get_positive_int(void) { int n; do { n = get_int("Positive Integer: "); } while (n < 1); return n; } get_positive_int()라는 함수를 호출하고 있는데, 이는 CS50 라이브러리에는 없는 함수이다. 위 코드에서 정의해놓은 get_positive_int() 함수를 살펴보자. int get_positive_int(void) 여기서 (v..
-
[C언어] 자료형, 형식 지정자, 연산자Stage/Computer Science 2021. 5. 27. 00:16
학습목표 다양한 데이터 타입과 형식 지정자를 나타내는 방법을 학습한다. 다양한 연산자를 이용하여 조건문을 표현하는 방법을 학습한다. 1. 데이터 타입 bool: 불리언 표현, (예) True, False, 1, 0, yes, no char: 문자 하나 (예) 'a', 'Z', '?' string: 문자열 int: 특정 크기 또는 특정 비트까지의 정수 (예) 5, 28, -3, 0 long: 더 큰 크기의 정수 float: 부동소수점을 갖는 실수 (예) 3.14, 0.0, -28.56 double: 부동소수점을 포함한 더 큰 실수 2. 형식 지정자 %c : char %f : float, double %i : int %li : long %s : string 3. 예제 #include #include int ..
-
[C언어] 조건문과 루프Stage/Computer Science 2021. 5. 26. 23:21
조건문과 루프 학습 목표 조건문과 루프를 C로 작성할 수 있다. 1. 조건문 if (x ) { printf("x is less than y\n"); } else if (x > y>) { printf("x is greater than y\n"); } else if (x == y>) { printf("x is equal to y\n"); } 마지막 else if 절에서 '==' 표시를 살펴보자. x와 y가 같을 때를 의미하는데 '='를 사용하지 않고 '=='을 사용하고 있다. '='는 할당 연산자라고 정해버렸기 때문에 같다는 것을 표현하기 위해서는 = 을 2개를 사용하여 표현한다고 정했다. ('=='은 일치 연산자라고 한다.) 위의 코드를 보면 조건문을 3개를 사용했는데, 마지막 조건문은 굳이 적을 ..
-
[C언어] 문자열Stage/Computer Science 2021. 5. 26. 19:23
학습목표 C로 문자열 형식을 가진 변수를 선언하고 출력하는 프로그램을 만들 수 있다. 1. 문자열 입력받기 string answer = get_string("What's your name?\n"); 1.1 타입 명시 사용자의 이름을 받아서 저장할 변수를 answer 라고 지정한다. (변수명은 마음대로 정해도 된다.) 중요한 점은 데이터 타입을 정확하게 명시해 줘야 한다는 것이다. 문자열을 저장할 것이기 때문에 string 이라고 타입을 명시해준다. 여기서 string 을 형식 지정자 라고 한다. 1.2 '=' 우리는 '='을 '같다'라고 해석한다. 하지만 프로그래밍 언어에서 '='은 '='을 기준으로 오른쪽에 있는 것을 왼쪽에 지정한다는 의미로 해석해야 한다. 이를 할당 연산자 라고 한다. get_str..
-
[C언어] C 기초Stage/Computer Science 2021. 5. 26. 19:21
학습목표 C로 "hello, world"를 출력하는 프로그램을 만들 수 있다. 1. C언어 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다. 앞에서 접한 스크래치는 형형색색의 블록을 끌어다 쓰면 됐기 때문에 사용자 친화적이었다. 스크래치로 만들었던 코드 블록들을 순수 텍스트 기반으로도 옮길 수 있는데, C언어를 사용해서 표현해보자. #include int main(void) { printf("hello, world"); } int main(void): 시작한다는 의미이다. 스크래치에서 '초록색 깃발을 클릭했을 때' 블록과 같은 역할을 한다. printf: 스크래치에서 'say'와 같은 함수. ("hello, world" 라고 말하기) 문장이 끝날 때는 세미콜론(;)을 붙여야 한다. 문장이 끝났음을 알..
-
[컴퓨팅 사고] 알고리즘Stage/Computer Science 2021. 5. 26. 01:09
학습 목표 1. 우리가 일상 생활에서 하는 일들을 컴퓨터가 이해할 수 있는 알고리즘으로 표현할 수 있다. 2. 효율적인 알고리즘에 대해 설명할 수 있다. 1. 알고리즘? 컴퓨터는 2진법으로 데이터를 표현한다. 0과 1을 가지고 숫자, 문자, 사진, 영상, 음악 등을 표현하고 저장하는데, 이것은 input에 해당한다. 컴퓨터 과학을 설명하면서 컴퓨터 과학은 문제 해결에 대한 학문이라고 했다. input -> 컴퓨터 과학 -> output input을 전달받아 output을 만들어내는 것에 대한 학문 그렇다면 전달받은 input을 어떻게 처리해서 output을 낼까? 알고리즘은 input에서 받은 데이터를 output 형태로 만드는 처리 과정을 뜻한다. 알고리즘이란 입력값을 출력값 형태로 바꾸기 위해 어떤 ..