[CS50] C 언어 - 사용자 정의 함수와 중첩루프
TIL
사용자 정의 함수반복적으로 작성하는 코드를 함수로 만들면 코드를 간결하고 이해하기 쉽게 만들 수 있다. "cough"를 세 번 출력하는 프로그램을 작성해보자.#include int main(void){ printf("cough\n"); printf("cough\n"); printf("cough\n");} 반복문을 사용하면 더 간결해진다.#include int main(void){ for (int i = 0; i 이제 함수를 만들어보자.void cough(void)로 함수를 정의한다. main 함수에서 cough()를 호출하면 우리가 정의한 대로 동작한다.#include void cough(void){ printf("cough\n");}int main(void){ for ..
[CS50] C 언어 - 자료형과 연산자
TIL
데이터 타입C에서는 다양한 데이터 타입을 제공한다. 각 타입에 맞는 형식 지정자로 적절히 출력하고, 다양한 연산자로 계산하거나 조건문을 작성할 수 있다.주요 데이터 타입bool: 불리언 (True, False, 1, 0)char: 문자 하나 ('a', 'Z', '?')string: 문자열int: 정수 (약 40억까지)long: 더 큰 정수float: 실수double: 더 큰 실수int는 약 40억까지 셀 수 있어 대부분의 경우 충분하다. 형식 지정자printf함수에서 각 데이터 타입을 출력할 때 사용한다.%c: char%f: float, double%i: int%li: long%s: string 연산자수학 연산자+: 더하기-: 뺴기*: 곱하기/: 나누기%: 나머지 논리 연산자&&: 그리고||: 또는 주석..
[CS50] C 언어 - 조건문과 루프
TIL
변수Scratch에서 블록으로 표현했던 조건문과 루프를 C로 구현해보자. Scratch에서 counter 변수를 생성하고 0을 저장하는 블록은 다음과 같다.int counter = 0;int는 변수가 정수(integer)라는 것을 알려주고, counter는 변수 이름, 0은 초기값이다. 변수를 1씩 증가시키는 방법은 여러 가지다.counter = counter + 1;counter += 1;counter++;세 가지 모두 같은 기능을 수행한다. 조건문if (x if (조건) 괄호 안에 검사할 조건을 넣고, { } 안에 조건이 참일 때 수행할 작업을 넣는다.else를 사용하면 조건이 거짓일 때의 동작을 정의할 수 있다. if (x else if로 조건을 추가할 수 있다.if (x y){ print..
[CS50] C 언어 - 문자열
TIL
변수와 형식 지정자사용자로부터 문자열을 입력받아 출력하는 프로그램을 작성해보자. 사용자의 이름을 저장할 변수를 answer라고 정했다. C는 오래된 언어라 변수가 저장하는 데이터 종류를 정확히 명시해야 한다.string answer = get_string("What's your name?\n");문자열을 저장한다는 것을 알려주기 위해 string이라는 형식 지정자를 사용한다.=는 할당 연산자로, 오른쪽 값을 왼쪽 변수에 저장한다는 의미이다. get_string 함수가 반환한 사용자 이름을 answer변수에 저장하는 것이다. 문자열 출력이제 printf함수로 저장된 이름을 출력해보자. 변수에 들어있는 값을 출력하려면 %를 사용한다. 문자열(string)이므로 s를 붙여 %s로 지정한다.printf("hel..
[CS50] C 기초
TIL
C 언어C는 오래되고 전통적인 텍스트 기반 언어이다.#include int main(void){ printf("hello, world\n");} 여기서 int main(void)는 Scratch의 "초록색 깃발을 클릭했을 때" 블록과 같다. 프로그램의 시작을 의미한다. printf 함수printf("hello, world\n")은 Scratch의 "'hello, world'라고 말하기" 블록과 같다.텍스트는 항상 " "쌍따옴표로 감싸야 하며, 문장 끝에는 세미콜론(;)을 붙인다. 일상에서 마침표(.)를 쓰는 것과 같다. include#include 는 stdio.h 파일을 불러와 printf 함수를 사용할 수 있게 한다. C로 작성한 코드는 파일이름.c 형식으로 저장해야 한다. Word처럼 자동으로..
[CS50] 컴퓨팅 사고 - 알고리즘
TIL
알고리즘이란컴퓨터는 입력을 받아 처리한 후 출력한다. 입력받은 자료를 출력 형태로 만드는 처리 과정을 알고리즘이라고 한다.알고리즘은 입력값을 출력값으로 바꾸기 위한 명령들의 순서적 나열이다. 같은 결과를 만들더라도 알고리즘에 따라 소요 시간이 달라질 수 있다.정확한 알고리즘전화번호부에서 Mike Smith를 찾는다고 가정해보자.첫 페이지를 펼친다.Mike Smith가 있는지 확인한다.없으면 다음 페이지로 넘긴다.찾을 때까지 또는 끝날 때까지 반복한다.이 알고리즘은 정확하다. Mike Smith가 있다면 언젠가는 찾을 수 있다.하지만 한 페이지씩 넘기는 방식은 매우 비효율적이다. 한 번에 두 페이지를 넘기면? 빨라지지만 원하는 페이지를 건너뛸 수도 있다. 여전히 가장 효율적인 방법은 아니다. 효율적인 알고..
[CS50] 컴퓨팅 사고 - 정보의 표현
TIL
컴퓨터의 정보 처리우리는 컴퓨터를 통해 다양한 정보를 처리한다. 간단한 숫자부터 문자, 사진, 영상, 음악까지 정보를 표현하는 형태는 매우 많다. 컴퓨터는 어떻게 이런 다양한 정보를 처리할까?문자의 표현컴퓨터는 스위치를 ON/OFF하면서 숫자를 표현한다. 그렇다면 문자는 어떻게 표현할까?문자를 숫자로 표현할 수 있도록 정해진 약속(표준)이 있다. 그중 하나가 ASCII(American Standard Code for Information Interchange, 아스키코드)로, 총 128개의 문자를 정의한다.알파벳 'A'를 2진법으로 표현하면 다음과 같다. 10진법으로 65이므로 2^6×1 + 2^0×1 = 64+1, 즉 1000001이다. ASCII는 영문 알파벳과 기본 기호만 표현할 수 있어 한계가 있..
[CS50] 컴퓨팅 사고 - 2진법
TIL
컴퓨터 과학과 문제해결컴퓨터 과학은 문제 해결에 대한 학문이다.문제 해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정이며 그 중간에 있는 과정이 바로 컴퓨터 과학이다.입력과 출력을 표현하기 위해서는 모두가 동의할 약속(표준)이 필요하다.2진법우리가 일상에서 사용하는 10진법은 0부터 9까지 총 10개의 기호로 숫자를 표현한다.반면 컴퓨터는 오직 0과 1로만 데이터를 표현하며, 이를 2진법이라고 한다. 다음의 표는 10진법과 2진법의 자릿수별 값을 보여준다.10진법은 10의 거듭제곱, 2진법은 2의 거듭제곱으로 각 자릿수의 값이 결정된다. 예를 들어, 2진법으로 011은 10진법의 3을 나타낸다. (0x4 + 1x2 + 1x1 = 3) 이렇게 컴퓨터는 숫자뿐만 아니라 글자, 사진, ..