본문 바로가기

cs50

(40)
C 언어 | 사용자 정의 함수와 중첩 루프 ✔ 학습목표 사용자 정의 함수와 중첩 루프를 작성할 수 있다. 사용자 정의 함수 프로그래밍을 하다 보면 반복적으로 작성해야 하는 코드가 있다. 이런 코드를 여러 번 쓰지 않고 함수 형태로 저장해두면 코드를 간결하고 이해하기 쉽게 만들 수 있다. 이것이 사용자 정의 함수다. "cough"라고 세 번 말하는 프로그램을 작성한다고 생각해보자. #include int main(void) { printf("cough\n"); printf("cough\n"); printf("cough\n"); } 가장 단순한 방법은 printf 함수를 세 번 반복해서 사용하는 것이다. 하지만 이는 말 그대로 동일한 작업의 반복이기 때문에 효율적이지 않다. #include int main(void) { for (int i = 0; ..
C 언어 | 자료형, 형식 지정자, 연산자 ✔ 학습목표 1. 다양한 데이터 타입과 형식 지정자를 나타내는 방법을 학습한다. 2. 다양한 연산자를 이용하여 조건문을 표현하는 방법을 학습한다. 자료형(Data Type) 아래 목록은 자료형으로 사용할 수 있는 것들이다. bool : 불리언 표현, 예) True, False, 1, 0, yes, no char: 문자 하나, 예)'a', 'Z', '?' string: 문자열int: 특정 크기의 정수, 예)3, 58, 0, -3 long: 더 큰 크기의 정수 float: 부동소수점을 갖는 실수, 예) 3.14, 0.0, -85.45 double: 부동소수점을 포함한 더 큰 실수 자세한 값은 다음과 같다. * int는 대략 40억까지 셀 수 있다. 40억개 이상의 데이터를 가진 일부 거대 기업이 아니라면 대..
C 언어 | 조건문과 루프 ✔ 학습목표 조건문과 루프를 c로 작성할 수 있다. 변수 설정 조건문과 루프에 관한 코드를 작성하기에 앞서, 앞서 배운 변수를 복습해보자. 지난 글에서 처럼 C는 오래된 언어기 때문에 저장하고자 하는 변수의 종류를 꼭 명시해주어야 한다. 만약 숫자를 세는 프로그램을 만들고 싶어 counter라는 변수를 설정한다면 int counter = 0; 처럼 말이다. 여기서 int는 저장하려는 데이터가 정수(integer)라는 것을 의미한다. counter는 변수의 이름, 0은 그 값에 0을 저장(초기화)하는 것이다(할당 연산자 '=' 사용). 코드의 마지막에는 꼭 세미콜론(;)을 붙여주는 것도 중요하다. 그렇다면 숫자를 세는 기능은 어떻게 구현할까. C에서는 변수의 값을 1씩 증가시키는데 다양한 방법이 있다. 1..
C 언어 | 문자열 ✔ 학습목표 C로 문자열 형식을 가진 변수를 선언하고 출력하는 프로그램을 만들 수 있다. 프로그램 생성 간단하게 'hello world'만 출력했던 지난 강의와 달리, 직접 문자열을 받고 출력하는 프로그램을 생성했다. 예제(string.c)는 다음과 같다. #include #include int main(void){ string answer = get_string("what's your name?\n"); printf("hello %s\n", answer); } 1) 변수 설정 사용자의 이름을 받아서 인사를 출력하는 프로그램이다. 변수명은 answer로 정했다. C는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해주어야 한다. 본 예제에서는 문자열을 저장하고 싶기 때문에 st..
C 언어 | C 기초 ✔ 학습목표 C로 "hello, world"를 출력하는 프로그램을 만들 수 있다. C 언어 C는 아주 오래되고 전통적인 순수 텍스트 기반의 프로그래밍 언어다. C로 작성한 코드는 '파일이름.c'로 저장한다. 아래는 hello.c라는 이름으로 생성한 예제 프로그램이다. #include int main(void) { printf("hello, world\n"); } 1) int main(void)는 시작한다는 의미를 가진다. 2) printf("hello, world\n")은 말하는 역할을 한다. 글자나 단어, 문장을 적을 때에는 언제나 텍스트를 ""쌍따옴표로 감싼다. 그리고 문장의 끝에 마침표를 붙이는 것과 같이 C에서는 세미콜론(;)을 붙여 마무리한다. 3) #include 는 'stdio.h'라는 이름..
컴퓨팅 사고 | 알고리즘 ✔ 학습목표 1. 우리가 일상생활에서 하는 일들을 컴퓨터가 이해할 수 있는 알고리즘으로 표현할 수 있다. 2. 효율적인 알고리즘에 대해 설명할 수 있다. 알고리즘 앞서 숫자, 글자, 색깔 등을 컴퓨터가 이해할 수 있는 2진법으로 표현하는 것은 입력(input)에 해당한다. 컴퓨팅은 입력을 받아 처리한 후 출력하는 과정이다. 여기서 처리 과정에 해당하는 것이 알고리즘(algorithm)이다. 알고리즘은 입력(input)에서 받은 자료를 출력(output) 형태로 만든다. 즉, 알고리즘은 출력값을 나타내기 위해 어떤 명령이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다. 이때 정확성은 물론 효율성도 중요하다. 예를 들어 전화번호부에서 친구 Mike Smith를 찾는 경우를 생각해보자. 1) 첫 페이지를 ..
컴퓨팅 사고 | 정보의 표현 ✔ 학습목표 컴퓨터가 문자, 사진, 영상, 음악 등 다양한 정보를 처리하는 방식을 설명할 수 있다. ASCII ASCII(아스키코드/American Standard Code for Information Interchange)는 문자를 숫자로 표현할 수 있도록 정해진 표준 중 하나이다. 예를 들어 알파벳 F는 10진수 기준으로 70이다. 이를 2진법으로 표현하면 1000110으로 표현할 수 있다. Unicode Unicode(유니코드)는 ASCII의 상위개념으로, 더 많은 비트를 사용하여 더 다양한 문자를 표현하도록 지원한다. 유니코드를 사용하면 😂(기쁨의 눈물)과 같은 이모티콘까지 표현할 수 있다. RGB 문자와 같이 그림의 경우에도 숫자로 표현할 수 있다. 그림은 수많은 작은 점으로 구성된다. 이를 픽..
컴퓨팅 사고 | 컴퓨터 과학과 2진법 ✔ 학습목표 컴퓨터 과학이 무엇인지 정의하고, 컴퓨터가 정보를 표현하는 방법에 대해 설명할 수 있다. 컴퓨터과학 컴퓨터과학은 문제 해결에 대한 학문이다. 문제 해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정이다. 그 중간에 있는 과정이 컴퓨터 과학이다. 입력과 출력을 표현하기 위해서는 모두가 동의하는 약속, 즉 표준이 필요하다. 2진법 일상에서 사용하는 0,1,2,3,4,5,6,7,8,9 총 10개의 기호로 표현하는 것이 10진법이다. 하지만 컴퓨터에서는 오직 0과 1로만 데이터를 표현한다. 이것을 2진법이라 한다. 10진법에서는 각 자릿수가 10의 거듭제곱을 의미하지만, 2진법에서는 2의 거듭제곱을 의미한다(예) 10진법의 3을 2진법으로 표현하면 011이 된다). 컴퓨터에는 ..