CS50 37

[CS50] 하드웨어의 한계

컴퓨터는 프로그램을 구동하기 위해서 다양한 물리적 장치를 이용합니다. 그중 하나가 아래 보이는 메모리 혹은 램이라는 것으로 프로그램이 필요한 정보가 저장되는 곳입니다. 이러한 램의 용량은 유한하기 때문에 때로는 프로그램에서 의도하지 않은 오류가 발생하기도 합니다. 지금까지는 의도적이던 아니던 사용자의 실수로 인해 에러가 발생했는데 램(RAM : Random Access Memory)은 유한한 크기의 비트만 저장할 수 있기 때문에 때로는 컴퓨터에서 부정확한 결과를 나타내기도 합니다. 그렇다면 어떠한 예시가 있는지 알아봅시다. 부동 소수점 부정확성 x / y의 결과를 출력하는 코드를 작성해보겠습니다. #include #include int main(void){ float x = get_float("x : "..

CS 기초/C언어 2021.08.03

[CS50] 사용자 정의 함수, 중첩 루프

프로그래밍을 하다 보면 반복적으로 같은 코드를 작성해야 할 때가 있는데, 이때 코드를 여러 번 쓰는 게 아니라 함수 형태로 지정해두면 코드를 간결하게 사용이 가능합니다. 더불어 하나의 루프로 수행하기 힘든 작업을 중첩 루프를 사용해 해결하는 방법도 공부해보도록 하겠습니다. 만약 "에취!"라고 세번 말하는 C 프로그램을 작성할 때 가장 간단한 방법은 단순히 3번 출력하게 만들어주는 것입니다. #include int main(void){ printf("에취!\n"); printf("에취!\n"); printf("에취!\n"); } 그렇다면 이것을 좀 더 간단하게 코딩해본다면 어떻게 될까요? 지난 시간에 배운 루프를 사용하면 더 간단히 표현할 수 있습니다. #include int main(void){ for(..

CS 기초/C언어 2021.08.02

[CS50] C 기초

그래픽 인터페이스인 스크래치(skratch)를 사용해서도 간단한 프로그래밍이 가능하지만, 텍스트 기반 프로그래밍 언어인 C를 사용해도 컴퓨터에게 동일한 일을 시킬 수 있습니다. C 언어란? 벨 연구소의 데니스 리치가 만든 프로그래밍 언어로 정식 명칭은 'C'지만 한국에서는 'C언어'라고 부른다. 세계적으로 가장 많이 쓰이는 프로그래밍 언어 중 하나이다.(출처 : 나무위키) 우선 저번 시간에 했던 스크래치와 비교해볼 텐데 혹시라도 저번에 스크래치를 사용해보지 않으셨다면 https://darmk.tistory.com/entry/CS50-%EC%8A%A4%ED%81%AC%EB%9E%98%EC%B9%98-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0?category=96447..

CS 기초/C언어 2021.07.28

[CS50] 스크래치 사용해보기

알고리즘을 만들려면 여러 가지 프로그래밍 언어를 사용할 수 있는데요. 가장 쉽게 알고리즘을 만드는 방법 중 하나는 그래픽 프로그래밍 언어를 사용해 그래픽으로 이루어진 알고리즘 블록을 붙여가며 기능을 완성하는 것일 겁니다. 이번에는 그래픽 프로그래밍 언어 중 하나인 스크래치 라는걸 사용해보려고 합니다. Scratch - Imagine, Program, Share (mit.edu) Scratch - Imagine, Program, Share Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations. scratch.mit.edu 페..

[CS50] 알고리즘

알고리즘이란? 수학, 컴퓨터과학, 언어학 또는 역인 분야에서 어떠한 문제를 풀어 맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것이라고 합니다.(출처 : 위키백과) 컴퓨터가 자신이 입력받은 정보를 어떻게 가공해서 출력하는 방식에 대해 생각해보면 컴퓨터는 순서대로 필요한 동작을 하면서 문제를 처리하는데 이를 알고리즘이라고 컴퓨터과학에서는 말합니다. 그렇다면 이 알고리즘을 어떻게 정의가 가능하고, 그 정확성과 효율성은 어떨까요? 전에 2진법을 공부할때 input(입력) output(출력)에 대해 공부했었는데요 input에 해당하는 숫자, 글자, 색깔 등 컴퓨터가 이해할 수 있는 2진법으로 표현하는 것을 배웠습니다. 그렇다면 output은 어떻까요? output은 input된 내용(자료)을 처..

[CS50] 정보의 표현

지난 포스팅에 컴퓨터가 이미지, 오디오, 비디오 등을 저장할 수 있을까? 하고 잠깐 얘기한 게 있는데 말 그대로 숫자는 2진법으로 표현할 수 있다고 해도 그 이외의 정보들은 어떻게 처리할지 알아보겠습니다. 문자의 표현 가장 먼저 문자의 표현입니다. 기존에 코딩을 접해보지 않으신분들은 문자를 어떻게 숫자로 표현하지? 하고 의문을 가질 수 있는데요 문자 역시 숫자로 표현할 수 있도록 미리 정해진 약속(표준)이 있습니다. 이를 ASCII(아스키코드)라고 합니다. 0부터 127까지 총 128개의 부호로 이루어져 있습니다. 여기서 알파벳은 대문자 A를 시작으로 소문자 z까지 10진수 기준 65부터 표시가 가능합니다. 예를 들어 알파벳 A를 표현하려고 한다면 10진법 기준으로 65가 알파벳 A이므로 2진법으로 표현..

[CS50] 2진법

CS는 Computer Science의 약자로 직역하면 컴퓨터 과학이라는 뜻을 가지고 있습니다. 그렇다면 컴퓨터 과학을 왜 알아야 할까요?? 본 강의에 의하면 컴퓨터 과학은 단지 문제를 해결하는 과정이라고 합니다. 이게 무슨 말인가 해서 봤더니 문제 해결이란 Input을 받아 output을 만들어내는 과정이라고 하는데 이 중간에 있는 과정이 컴퓨터 과학이라고 설명합니다. 이러한 Input, output을 표현하기 위해서는 모든 사람이 동의할만한 약속(표준)이 필요합니다. 따라서 CS의 첫 번째 개념인 2진법은 어떻게 표현하는지에 대한 표현 방법을 말합니다. 2진법 우리가 흔히 사용하는 숫자인 0, 1, 2, ... , 7, 8, 9 이렇게 총 10개의 기호로 표현되는 것이 10진법인데요 컴퓨터는 사람과 ..