ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Functions, arguments, return values, variables | CS50 Week 1
    Computer Science/CS 50 Harvard 2021. 11. 5. 19:17

    Harvard CS50 강의를 한글로 정리한것입니다.

     

    이 다음 강의를 진행하기 위해서는, cs50의 라이브러리를 설치해야한다. 설치 과정에 대해서는 cs50 github페이지에 나와있다.

     

    printf

    scratch 프로그램을 배울 때, say 블록은 어떤 문장을 프린트 할 수 있게 해주었다. 이것을 C에서는 printf를 사용해서 다음과 같이 코딩할 수 있다.

    printf("hello, world");

     

    printf 에서 f 뜻은 "formatted" string을 뜻한다. 즉, 원하는 포맷으로 문장을 만들어서 출력한다는 뜻이다. String이란, characters 또는 words들이 모인것이고, 앞뒤로 "" 를 붙여주면 스트링으로 인식한다. 괄호 또는 parentheses (), 는 inputs이나 argument를 printf 함수에 줄 수 있게끔 해주고 세미콜론 ; 은, 코드 라인의 끝을 알려준다.

     

    이 함수의 output종류중의 하나는 side effects인데, 우리가 알 수 있는 변화가 생기는것들을 말한다.

    예를들어, Scratch를 사용할 때, "say" 블록은 고양이가 말풍선을 만들어 말을 하는 side effect를 보여줬었다.

    이 side effect와 반대로, 어떤 값들을 return 하는 블록들을 사용할수도 있었다. 우리가 함수 안에서 계산하고 사용했던 variable을 return 할 수 있다. 예를 들어 아래를 보자.

     

     

    String

    Scratch에서 이름을 묻고, 그 값을 사용했던적이 있다. 프로그램이 돌아가는 도중에 어떤 값을 입력받아서 사용하는 방식이었다. C에서도 이와 비슷하게 할 수 있다. 원래는 조금더 복잡한 사고를 해서 코딩을 해야하지만, CS50클래스에서 개발한 라이브러리를 설치하면, get_string이라는 함수를 이용해서 string을 손쉽게 사용할 수 있다.

    #include <cs50.h>
    #include <stdio.h>
    
    int main(void)
    {
        string answer = get_string("What's your name? ");
        printf("hello, %s\n", answer);
    }

    이렇게 하면, 유저로부터 string을 받아서 인사를 할 수 있다. 아래 명령어로 컴파일 후 실행시킬 수 있다.

    > make hello
    clang     hello.c  -lcs50 -o hello
    > ./hello
    What's your name? Jieun
    hello, Jieun

    조금더 간단하게 코드를 하면 어떨까? 만약 이름을 저장할 필요가 없다고 하면, 한라인으로 합칠 수 있다.

    #include <cs50.h>
    #include <stdio.h>
    
    int main(void)
    {
        printf("hello, %s\n",  get_string("What's your name? "));
    }

     

    이 get_string 이라는 함수는 Scratch에서 ask 블럭과 같은 동작을 하고, 그 값을 return해주는 역활을 하고있다.

     

     

     

    Reference

     

    댓글

Designed by Tistory.