데이터 타입

변수의 데이터 타입으로 사용할 수 있는 것들

  • 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: 부동소수점을 포함한 더 큰 실수

* int는 대략 40억까지 셀 수 있기 때문에 40억게 이상의 데이터를 가진 일부 거대 기업과 같은 상황이 아닌 일반 사용자들은 대부분 정수에 int를 사용

 

CS50 라이브러리 내의 get 함수

  • get_char
  • get_double
  • get_float
  • get_int
  • get_long
  • get_string

 

형식 지정자

printf 함수에서는 각 데이터 타입을 위한 형식 지정자를 사용할 수 있다. 데이터 타입 마다 사용되는 형식 지정자를 적절히 사용해야 한다.

  • %c : char
  • %f : float, double
  • %i : int
  • %li : long
  • %s : string

 

기타 연산자 및 주석

그 외에도 아래 목록과 같이 다양한 수학 연산자, 논리 연산자, 주석 등이 기호로 정의되어 있다.

  • +:  더하기
  • -: 빼기
  • *: 곱하기
  • /: 나누기
  • %: 나머지
  • &&: 그리고
  • ||: 또는
  • //: 주석

 

정수와 실수를 받아서 출력해보기

① get_int ( 정수 값을 받아오는 CS50 라이브러리에 있는 함수 )

#include<cs50.h>
#include<stdio.h>

int main(void)
{
	int age = get_int("what's your age?\n");
	printf("Your are at least %i days old.\n",age*365);
}
  • 사용자의 나이는 오른쪽에서 왼쪽으로 복사되어 age라는 변수에 저장
  • 그 변수의 종류는 int 정수 → printf 함수에 이번에는 문자가 아닌 정수이기 때문에 %i로 days의 인자를 받아주고 출력
  • 이 사람의 나이를 일 수로 환산하면? 위와 같은 코드로 작성 가능 !

 

 

get_float (실수(float)값을 받아오는 CS50 라이브러리에 있는 함수)

#include<cs50.h>
#include<stdio.h>

int main(void)
{
	float price = get_float("what's the price?\n");
	printf("Your total is %f\n",price*1.0625);
}
  • get_float 함수를 사용하여 물건의 가격을 물어보고 가격을 받아 price에 저장
  • 그런 다음 세금을 포함한 값을 계산해서 출력 (메사추세츠의 부가세는 6.25%)
  • 총액은 실수(float)이므로 %f를 사용
  • 코드를 실행해서 가격을 100으로 넣으면 → 결과 값으로 105.250000이 나온다.
  • 하지만 소수점이 6번째 자리까지 나와 보기에 안 좋다. 
  • 소수점 2번째 자리까지 나오게 하려면 ? 아래 코드와 같이 %f → %2f 로 바꿔주기. 
printf("Your total is %2f\n",price*1.0625);

 

짝수인지 홀수인지 알려주는 코드짜기

 

 

  • get_int로 사용자들에게 정수인 숫자를 받아서 n에 저장
  • 2로 나누어 나머지가 0이냐 1이냐를 통해 홀수와 짝수를 구분해 줌 (* 짝수면 나머지가 0이 될 것이고 홀수면 1이 될 것)
  • if ( n % 2 == 0 ) 을 풀어 쓰면 n을 2로 나누었을 때 나머지가 0이면 printf("even\n"); → even(짝수)을 출력
  • 홀수를 출력하는 것은 왜 else if (n % 2 == 1)으로 하지 않았을까? 짝수 아니면 홀수 이기 때문에 else로도 충분하기 때문

 

주석

C에서는 //로 주석을 달 수 있다.

주석은 왜 다는 것일까?

 

  • 주석은 이 코드가 무슨 일을 하는지 설명하는 것
  • 여러분의 친구, 동료, 혹은 조교 등 여러분들이 짠 코드를 처음보는 사람들에게 설명이 필요하기 때문
  • 만약 코드가 수 백, 수 천줄이 되면 주석이 없다면 부분 부분마다 어떤 일을 하는지 찾기 힘들 것
  • 자신이 짠 코드라고 해도 한달 뒤, 일년 뒤에 보면 새롭기 때문에 꼭 타인이 아닌 자기 자신에게도 해당
  • 그렇기 때문에 주석으로 잘 설명하는 습관이 중요

 

 

 

※ 참고) #include<cs50.h> 는 무엇인가요?

 

CS50 수업을 위해 만들어진 라이브러리 입니다. 라이브러리는 여러 함수들을 모아둔 것이라고 볼 수 있습니다. CS50 수업에서는 여러분들께서 좀 더 쉽게 코딩을 짤 수 있게 CS50 라이브러리 안에 여러 함수(get_int, get_double, get_float 등등)를 만들어 두었습니다.

반면에 C에는 표준 라이브러리도 있습니다. 우리가 처음부터 사용한 #inclue<stdio.h>가 표준 라이브러리 중 하나 입니다. 가장 많이 쓰고 가장 보편적으로 사용하는 라이브러리입니다. 그 밖에도 <math.h>, <time.h> 등 자신이 코딩하는데 필요한 함수들을 그때 그때 라이브러리를 불러와서 다른 사람들이 만들어둔 함수를 사용할 수 있습니다. 

그렇다면 sandbox.cs50.io가 아닌 Visual Studio 같은 곳에서 CS50 라이브러리를 바로 사용이 가능할까요? 답은 사용할 수 없습니다. 표준 라이브러리는 기본적으로 설치가 되어 있기 때문에 사용이 가능하지만 앞서 말씀드렸듯이 CS50 라이브러리는 수업을 위해 만들어진 라이브러리 입니다. 그래서 sandbox.cs50.io 처럼 미리 설치가 된 곳이 아니면 따로 설치를 하여야만 사용이 가능합니다. 

 


출처 : https://www.boostcourse.org/cs112/lecture/119008/?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

+ Recent posts