반응형
[CS50] 배열 - 컴파일링
CSE/CS502024. 6. 12. 22:00[CS50] 배열 - 컴파일링

지금까지 작성했던 C 코드를 복습해보자. main이라는 함수가 있다. 프로그램의 시작점으로서 실행 버튼을 클릭하는 것과 같다. printf는 출력을 담당하는 함수다. printf 함수를 사용하기 위해서는 stdio.h 라이브러리가 필요하다. 정확하게는 stdio.h는 헤더 파일로 C 언어로 작성되어 있고 파일명이 .h로 끝나는게 헤더 파일이다. 이 파일에는 printf 함수의 프로토타입이 있어서 Clang 컴파일러가 프로그램을 컴파일할 때 printf가 무엇인지 알려주는 역할을 한다.#include int main(void){ printf("Hello, world!\\n");}코드를 clang hello.c로 컴파일하고 ./a.out 명령으로 프로그램을 실행할 때 컴퓨터가 이해하는 0과 1로 가득 ..

[CS50] C언어 - 하드웨어의 한계
CSE/CS502024. 6. 12. 20:00[CS50] C언어 - 하드웨어의 한계

컴퓨터의 메모리와 데이터 처리컴퓨터는 RAM(랜덤 액세스 메모리)이라는 물리적 저장장치를 포함하고 있다. 우리가 작성한 프로그램은 실행 중에 RAM에 저장된다. RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 때때로 부정확한 결과를 낼 수 있다.  부동 소수점 부정확성아래와 같이 실수 x, y를 인자로 받아 x 나누기 y를 하는 프로그램이 있다고 해보자.#include #include int main(void){ float x = get_float("x: "); float y = get_float("y: "); printf("x / y = %.50f\n", x / y);} 나눈 결과를 소수점 50자리까지 출력하기로 하고, x에 1을, y에 10을 입력하면 아래와 같이 결과가 나온다...

[CS50] C언어 - 사용자 정의 함수, 중첩 루프
CSE/CS502024. 6. 12. 18:00[CS50] C언어 - 사용자 정의 함수, 중첩 루프

사용자 정의 함수C 프로그램에서 특정 작업을 반복하려면 사용자 정의 함수를 이용해 코드를 단순화할 수 있다. "cough"라는 단어를 세 번 출력하는 프로그램을 작성해보자. 가장 간단한 방법은 아래와 같이 작성하는 것이다.#include int main(void){ printf("cough\n"); printf("cough\n"); printf("cough\n");}이 방법은 printf를 세 번 반복하여 출력하는 것이다. 그러나 동일한 작업을 반복할 때 같은 코드를 여러 번 작성하는 것은 횟수 등을 수정해야 할 때 번거로워질 수 있으므로 이를 해결하기 위해 루프를 사용할 수 있다. 여기서는 for 루프를 사용해보자.#include int main(void){ for (int i =..

[CS50] C언어 - 자료형, 형식 지정자, 연산자
CSE/CS502024. 6. 12. 16:00[CS50] C언어 - 자료형, 형식 지정자, 연산자

데이터 타입변수의 데이터 타입으로 사용할 수 있는 것들은 다음과 같다. 크기는 시스템 및 컴파일러에 따라 다를 수 있지만, 일반적인 크기를 기준으로 설명한다.bool: 불리언 표현 (예: True, False, 1, 0, yes, no) / 1 Bytechar: 문자 하나 (예: 'a', 'Z', '?') / 1 Bytestring: 문자열 / 각 문자는 1 Byte, 한글은 2 Bytes지만 charset 마다 차이 존재int: 특정 크기 또는 특정 비트까지의 정수 (예: 5, 28, -3, 0) / 4 Byteslong: 더 큰 크기의 정수 / 8 Bytes, 64bit 시스템 기준float: 부동소수점을 갖는 실수 (예: 3.14, 0.0, -28.56) / 4 Bytesdouble: 부동소수점을 ..

[CS50] C언어 - 문자열
CSE/CS502024. 6. 12. 14:00[CS50] C언어 - 문자열

문자열C는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 정확하게 명시해주어야 한다. 따라서 저장하려는 값의 종류가 문자열$_{string}$임을 명확히 알려줘야 한다. 이 때 사용되는 string을 형식지정자$_{format \space specifier}$라고 한다. 위의 그림처럼 내 이름을 포함해 printf() 함수로 문자열을 출력할 것이다. 여기서 주의할 점은 printf(”hello, answer”)로 작성하면 “answer”라는 문자열이 그대로 출력된다는 것이다. 우리가 원하는 것은 “answer”를 인자값으로 받아 출력하는 것이다. 이를 위해 문자열 형식 지정자인 “%s”를 사용해 인자를 받아준다. 따라서 printf(”hello, %s\n”, answer)로 작성해야 한다.  컴..

[CS50] C언어 - C 기초, 컴파일러
CSE/CS502024. 6. 10. 22:00[CS50] C언어 - C 기초, 컴파일러

C는 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다. 사전 지식이 없다면 어렵게 느껴질 수 있다. 특유의 이상한 영어들이 적혀있는 것을 보면 두려움이 생길 수 있다. 하지만 강의를 듣다보면 코드는 물론이고 그 이상을 이해할 수 있을 것이다.  스크래치와 C언어우선 검은색 바탕에 있는 이상한 글씨들은 아래의 스크래치 블록과 결과적으로 정확히 같다.  int main(void)는 스크래치의 “when (green flag) clicked” 블록과 같은 역할을 한다. 즉, ‘시작한다’의 의미를 가지고 있다. 앞으로 C언어에서 작성할 코드 전부는 int main(void) {}의 중괄호 안에 작성할 것이다. 그 밑에 보라색 블록을 보게 되면 “say”라는 블록이 있을 것이다. C언어에서는 printf();..

[CS50] 컴퓨팅 사고 - 알고리즘
CSE/CS502024. 6. 10. 20:00[CS50] 컴퓨팅 사고 - 알고리즘

알고리즘?알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다. 일련의 순서적 규칙들을 어떻게 나열하는지에 따라 알고리즘의 종류가 달라진다. 같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있다. 예를 들어, 홍길동을 전화번호부에서 찾는 일을 한다고 가정해보자. 먼저 전화번호부를 집어 들고 첫 페이지를 펼친 후 홍길동이 그 페이지에 있는지 확인한다. 없다면 다음 페이지로 넘어가서 다시 찾는다. 이러한 과정을 홍길동을 찾을 때까지 혹은 전화번호부가 끝날 때까지 반복한다. 전화번호부에 홍길동이 있다면 이 방법을 통해 결국 찾을 수 있을 것이다. 알고리즘을 평가할 때는 정확성뿐만 아니라 효율성도 중요한 요소이다. 효율성은 주어진 ..

728x90
반응형
image