일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- 백준
- UE_5
- 원카페#무인카페#카페추천#카페맛집
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 메테리얼
- 툰쉐이딩
- C++
- 코드리뷰
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- build.cs
- STL
- 폭설 #미친 날씨
- Module
- leetcode
- A* Algorithm
- 언리얼
- Harvard
- Gas
- c++ 베이직
- CS
- 네트워크 기초
- Unreal
- topdownmove
- 순환 리스트
- CS50
- Console
- Toon Shading
- 브론즈
- 헤더 경로
- Today
- Total
WN_인생기록
Harvard CS50 (2023) – Full Computer Science University Course-1 (C) 본문
전공이 뭐길래 이렇게 차이가 나나 싶어서
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 |