WN_인생기록

Harvard CS50 (2023) – Full Computer Science University Course-1 (C) 본문

CS/이론

Harvard CS50 (2023) – Full Computer Science University Course-1 (C)

WhNi 2024. 4. 11. 23:12

전공이 뭐길래 이렇게 차이가 나나 싶어서

 

CS 수업을 들어보기로 했다. 긴 시간 투자한만큼 도움이 되는 시간이었으면 한다. 

 

소스 코드 ->  컴파일러 -> 바이너리 (머신코드)

소스코드를 머신코드로 바꿔주는게 컴파일러고, 문법적 에러가 생기면 컴파일러에서 체크해준다. 

복잡한 코드에서는 알아내기 어렵지만 기본적인건 확인해줌

 

 

 

중요한 세가지 포인트

1. 올바른 문법으로 올바르게 사용하는가

2. 코드의 디자인을 잘 활용하는가 -> 협약된 내용의 구조를 짜는건 좋은 아이디어를 다른 사람들과 나누는것과 같다. 

3. 컴퓨터는 띄어쓰기라던가 줄바꿈을 신경쓰지 않지만, 일하는 사람들 끼리는 가독성이 좋아야해서 중요함

 

 

 

헤더 파일 -> 필요한 기능만을 담은 헤더파일을 include 해야함.

라이브러리 -> 함수 기능이 있는 헤더파일이고, 헤더파일을 include 하면 라이브러리에 있는 함수 기능을 사용할 수 있다. 

리눅스 -> 서버에서 많이 씀. CLI (Command line Interface) 키보드와 글자만 나와있는 터미널이여서, 이걸쓰는 매크로도 따로 있음.

 

실행가능한  파일들은 *가 붙어있음

 

ls -> 경로에 나와있는 파일들 다 보여줌

mv-> (바꿀 파일 -> 바뀐파일)

cd-> 디렉토리로 들어가기

mkdir-> 디렉토리 만들기

cp -> 복사하기

rmdir -> 디렉토리 지우기 

 

 

????

 

?

?

?

?

 

???

???

???

 

를 구현하는 for문을 구현함으로써 좀더 프로그래밍에 쉽게 다가가도록 접근했음.

 

const ->  변하지 않는. 보호의 개념으로 봐도 됨

 

 

cs50.h 라는 헤더를 쓰는데, 나는 그냥 C++로 하고 있었다. 

 

처음엔  스크레치로 작동 방식을 설명하고, C 코드를 보여주며 절차지향까지 설명은 했다.

 

추가적으로) 메모리에 대한 설명을 좀 더 해줬다. 메모리의 최대치가 있어서 그걸 항상 넘어가면 올바른 값이 안나올 수 있다. int32 -> 4 billion ( 음수 까지 포함하면 2  billion) 까지만 적용 가능 그 이후에는 오버플로가 발생하는거까지 설명해줬다.

 

바이너리(이진수) 내가 제일 싫어하는거....

 

truncation? 이게 뭘까  -> 나머지가 잘림.  1/3 한 경우에 0.3333 되어야 하지만 int형이라 값이 잘리게 된다. 이는 정확한 계산을 요구하는 컴퓨터 연산에서 잘못된 결과를 내놓기도 하기에 정확한 float 형으로 해서 정확한 값을 구해야 한다. 

->그래서 Type Casting을 해야함.

명시적으로 (float)이라고 선언해주면 가능함 

 

floating -point imprescision -> 

C의 경우에는 printf("%.2f\n,x)  를 한다면

.2 만큼 float 값을 보여준다.  ( 3.14)

 

C++의 경우에는

 

#include <iomanip> 

헤더를 include 해주고

 

cout << fixed << setprecision(5) << x << endl; (3.14152)

 

을 하게 되면 원하는 숫자만큼의 소수점이 출력된다. 

 

 

제일 인상깊었던 건데, comment 설명해주면서

 

pseudo-code 에 대한 설명이였다. 

 

알고리즘 풀때도 그렇고 내가 부족했던건데, 거대한 로직을 어떻게 구현할까 막막해서 항상 시작이 어려웠는데, 이 강의에서 말한 내용듣고 좀 인상깊었다. 

 

pseudo-code를 comment로써 작성한 다음 그 부분들을 구현하면서 점진적인 완성을 이루는것. 

 

내가 간과했던 부분이라 더욱 크게 다가왔다. 굉장히 기초적인 내용이지만 정말로 중요한 내용이라 감명받았다. 

 

pseudo-code쓰는걸 적용해야겠다.

 

 

 

 

 

 

https://youtu.be/LfaMVlDaQ24?si=mI462qAlYWflT5r_

 

 

 

 

 

'CS > 이론' 카테고리의 다른 글

Harvard CS50 (2023) – Full Computer Science University Course-2(Arrays)  (0) 2024.04.16
IP 주소  (0) 2024.04.03
네트워크 기초 이론 (TCP/IP)  (1) 2024.04.03
네트워크 기초  (0) 2024.03.29