get_string
이번 시간에는 좀 더 다이나믹한 것을 해볼 예정이다. 우선 지난 번에 했던 방식처럼 스크래치와 C언어를 비교하는 예를 보자.
스크래치의 ask 와 가장 비슷한 C 함수는 get_string 이다. string은 단어나 구절, 문장을 부르는 말이며 숫자와는 다른 종류의 데이터를 말한다. 괄호 사이에는 어떠한 입력을 넣을 수 있는데 사용자가 화면에서 보게 될 명령어를 넣을 수 있습니다. 그래서 위와 같이 작성하고 실행하면 $What's your name? 이라는 질문이 나오게 된다.
이제 get_string을 통해 사용자에게 이름을 물어봤으니 그 답변을 활용해야 한다. 이 때 get_string 앞에 'string ---- = ' 을 붙이면 된다. 위 예시에는 answer 이라고 적혀있는데, 이 부분은 '변수' 이고 내 마음대로 이름을 붙여도 되지만 알아보기 쉽게 answer 이라고 적어놓은 것이다. 앞에 string 이 붙는 이유는 C가 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해야 알아듣기 때문이다. 그래서 변수 왼쪽에 저장하고자 하는 값의 종류가 문자열임을 알려줘야 하기에 string 을 쓰는 거다. 마지막으로 ''=' 은 우리가 평상시에 쓰는 '같다' 의 뜻이 아니라 '할당 연산자' 로써 오른쪽의 내용을 왼쪽으로 옮기는 화살표의 역할을 한다. 정리하자면,
"get_string("what's your name?\n"); 을 통해 답을 얻으면 그 답을 answer라는 변수에 저장한다."
자 이제 질문을 완성했고, answer 라는 변수에 내 이름이 담겼다. 이제 컴퓨터가 답할 차례다. 그런데 만약 hello, answer 이라고 쓰면 내 이름이 아니라 문자 그대로 hello, answer 로 답을 할 것이다. 이 때 내 답이 담긴 answer이라는 인자를 받기 위해 %s 를 사용한다. 그리고 마지막으로 Terminal 로 가서 'make ----' 라고 치면 기존에 'clang -o hello hello.c' 와 동일하게 프로그램을 만들 수 있다.
위 코드에서 #include <cs50.h> 라는 처음 보는 라이브러리가 생긴 것을 알 수 있다. 이것은 이 강의를 위해 만들어진 라이브러리이며 string 이라는 함수를 알아듣게 하기 위해 추가한 것이다. 원래 'make hello' 를 하기 전 'clang -o hello hello.c -lcs50' 라는 것을 썼는데, -lcs50 은 cs50,h 라는 라이브러리를 추가해 프로그램을 만든다는 의미이다. 그럼 여기서 <stdio.h> 는 왜 적지 않을까 라는 의문이 생길 수 있는데, stdio.h 는 표준 라이브러리이며 기본적으로 link가 되어있기 때문에 따로 적지 않는 것이다.
점점 어려워지는 기분이 들지만, 정신 차리고 잘 이해해야지!
'Programming > 1. boostcourse - 'CS50'' 카테고리의 다른 글
Ep 3-4. 자료형, 형식 지정자, 연산자 (0) | 2021.04.08 |
---|---|
Ep 3-3. 조건문과 루프 (0) | 2021.04.08 |
Ep 3-1. C언어 기초 (0) | 2021.04.07 |
Ep 2-3. 컴퓨팅 사고_Scratch (0) | 2021.04.07 |
Ep 2-2. 컴퓨팅 사고_정보의 표현, 알고리즘 (0) | 2021.04.07 |
댓글