목록cs50 (7)
Love Every Moment

이미 수료증을 받은지도 한 달이 훨씬 넘었지만 라피씬이 끝나고서야 쓰는 뒤늦은 후기! 본 프로그램은 네이버 커넥트재단에서 운영하는 비영리 소프트웨어 교육 플랫폼 부스트코스에서 진행한 코칭 스터디이다. 내가 참가했던 코칭스터디는 2기였고 작년 말까지 지원자를 받아 1월 초부터 활동을 시작했다. 온라인으로 진행된 비대면 스터디였기 때문에 어느 지역에 살든 참가 가능하고 요즘 시국에도 걱정 없이 다른 사람들과 함께 스터디를 진행할 수 있다는 점에서 매력적이었다. 사전 레벨 테스트가 존재하기는 하지만, 단순히 스터디 조를 편성할 때에 참고하기 위해서 받는 것이기 때문에 전혀 부담가질 필요 없이 지원하면 된다. 전공 유무와 상관 없이 실력과 상관 없이 누구나 스터디에 참여하고 싶은 이유를 적고 레벨 테스트만 받으..

1. malloc int main(void) { int *x; int *y; x = malloc(sizeof(int)); *x = 42; *y = 13; } 위의 코드는 y 가 어디를 가리키는지 정의하지 않았다는 점에서 오류가 있다. 초기화되지 않은 *y 에 13 이라는 값을 저장하려고 하면 오류가 발생한다.따라서 y 가 가리키는 곳이 어디인지 정의하는 과정이 필요하다. #include #include int main(void) { int *x; int *y; x = malloc(sizeof(int)); y = x; *y = 13; printf("%i\n", *x); printf("%i\n", *y); free(x); } y = x 라는 코드를 더해줌으로써 y 가 가리키는 곳이 x 와 같게 되었다. 따라..

1. 메모리 주소 (1) 16진수(Hexadecimal) 16진법에서 a 부터 f 까지는 각각 10 부터 15까지의 수를 의미하며 0x 는 16진수를 나타내는 형식이다. 예를 들어 위의 사진에서 255 는 16 x f(15) + 1 x f(15) 와 같으므로 0xff 로 나타낼 수 있다. 알파벳 대문자 A 는 아스키 코드로 65 에 해당하므로 0x41 로 나타낼 수 있다. 다음의 표는 0 ~ 19 를 16진수로 표현하는 방식을 보여주는 예시이다. 10진법 0 1 2 3 4 5 6 7 8 9 16진법 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 10진법 10 11 12 13 14 15 16 17 18 19 16진법 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x..

1. 알고리즘(Algorithms) (1) 선형 검색(Linear Search) 배열의 인덱스를 처음부터 끝까지 하나씩 증가시키면서 찾는 방법이다.배열이 정렬되어 있지 않을 경우에 유용하다. (2) 이진 검색(Binary Search) 배열의 중간 인덱스부터 시작하여 찾고자하는 값보다 큰 인덱스 또는 작은 인덱스로 이동하여 중간 인덱스를 검사하는 것을 반복하여 찾는 방법이다. 배열이 정렬되어 있을 경우에 유용하다. (3) 알고리즘 효율성 분석 알고리즘의 효율성을 분석하는 방법으로는 시간 복잡도와 공간 복잡도가 있는데 보통 위와 같은 시간 복잡도를 사용한다. Big O 와 Big Ω는 g(n)을 상한으로 표시하기 때문에 점근적 상한과 점근적 하한을 나타낸다. 예를 들어, 선택 정렬은 n(n-1)/2 번의 ..

1. 컴파일링(Compiling) (1) 전처리(Precompile) : 실질적인 컴파일 전에 무언가를 실행하라고 시키는 과정 #include 를 소스 코드에 작성하면 stdio.h 파일의 내용을 포함한 새로운 소스 코드 파일이 생성된다 (2) 컴파일(Compile) : 전처리한 소스 코드를 어셈블리 코드로 변환하는 과정 컴파일이라는 용어는 넓은 의미로 소스 코드에서 오브젝트 코드로 변환하는 전체 과정을 의미하기도 하고 좁은 의미로는 전처리된 소스 코드를 어셈블리 코드로 변환하는 것을 의미한다 *** make 명령어를 통해 clang 이라는 컴파일러를 호출해서 소스코드를 오브젝트 코드로 변환할 수도 있다 (3) 어셈블(Assemble) : 어셈블리 코드를 오브젝트 코드로 변환하는 과정 어셈블러라는 프로그..

1. C언어 기초 (1) printf() : 뒤에 나오는 문장을 출력하는 역할을 하며 쌍따옴표 " " 안에 문장을 작성해야함 (2) 세미콜론(;) : 함수를 작성하고나서 마지막에 붙여주어야 함 (3) clang : 소스코드(hello.c)를 머신코드(a.out)로 변환시켜주는 컴파일러 명령어 * make : clang 보다 간단하게 머신코드 파일을 만들어주는 명령어 * 위의 사진처럼 clang animal.c -lcs50 보다 쉽게 머신코드 파일 animal 을 만들어준다 (4) ./ : 머신코드 파일을 실행하는 역할 2. 문자열(string) (1) get_string() : 스크래치에서의 ask 함수와 같은 역할을 하며 사용자의 답변을 왼쪽의 변수에 저장한다 string animal = get_str..

하버드 대학에서 제공하는 무료 온라인 컴퓨터 프로그래밍 입문 강의 CS50 ! 비전공자에 코딩에 대해 문외한이었기 때문에 C언어를 기초부터 배우고 싶어 본 강의를 수강하게 되었다. 마침 네이버 부스트코스에서 온라인 스터디를 모집하고 있어서 신청하였고 일주일 전에 선발되었다는 연락을 받았다. 부스트코스 코칭 스터디 2기에서는 기본적으로 CS50 강의를 통해 스스로 학습하는 것을 기본 전제로 하면서 매주 라이브 강의와 조별 미션을 진행할 예정이다. 아무래도 오프라인 스터디보다 활발한 소통이나 시너지는 기대하기 어렵겠지만 완전히 혼자서 공부하는 것보다 함께 공부하는 사람들이 있다는 것만으로 서로 힘이 되어주는 것 같다. 블로그에는 매주 강의를 수강하면서 내용 요약과 실습 과정에서 헷갈렸던 부분 등을 기록해보려..