CS/C++

C++ 공부 섹션3 : 홍정모의 따배씨쁠쁠

샤아이인 2022. 1. 16.

내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다.

1) 섹션3

◆ ​이번 단원에서는 연산자들에 대해 주로 배웠다. 대부분이 거의 C에서 배워 아는 내용이였지만 그중 또 새로운 내용도 있었기에 이러한 새로운 내용 위주로 집중하며 들었다.

◆ 간단한 실수의 산술 연산이다. 계산이 어려운것이 아니라 다음 코드에 중요한 점은 바로 피연산자의 어느 한쪽에 float형으로 cast를 한 경우 결과 값이 실수로 바뀐다는 점이다.

출처 - 홍정모의 따배씨쁠쁠 강의

4개의 cout 구문에서 맨 첫줄의 코드는 나누기 연산자를 진행후 몫인 1이 결과값 이지만, 나머지 코드의 경우 float로 casting 되었기에 실수범위로 나타난다.

◆ C에서도 배운 증감연산자다. 후위연산자와 전위 연산자의 차이는 익히 알고있기에 가볍게 보았다.

출처 - 홍정모의 따배씨쁠쁠 강의

 Comma 연산자의 경우 내기억상으로는 처음 보는 연산자 인 것 같다(아마?).

출처 - 홍정모의 따배씨쁠쁠 강의

int z = (++x, ++y); 로 나와있는 코드에서 x도1 증가시키고 y도 1증가시킨후 y값이 z에 들어가는 연산이다.

여기서 중요한 점은 왜 괄호안에 두었는가? 이다. comma의 경우 연산의 우선순위가 = 보다 낮다.

따라서 만약 식을 z = ++x, ++y; 로 둘경우 x가 4가되서 z는 4가 나오고, y는 11이 된다.

 

 조건부 연산자는 C++에서 아직까지는 유일한 3항 연산자 라고 하셨다.

출처 - 홍정모의 따배씨쁠쁠 강의

사실 조건부연산자 또한 if문을 쪼게서 나타낼수 있다. 그럼 이러한 연산자는 왜 사용하는 것 일까?

위의 사진에서 보면 const로 고정된 변수는 값이 바뀔수가 없다.

\하지만 애당초 조건부연산자를 통해 초기화 할 경우 const의 적용과 초기화를 동시에 사용할 수 있다.

 

 std::abs는 차의 절대값을 보여준다.

출처 - 홍정모의 따배씨쁠쁠 강의

위의 사진을 보면 d1이나 d2 모두 결과값은 0.001로써 동일할것이라 생각하는 것 이 일반적이다.

하지만 컴퓨터는 생각보다 멍청하며 정밀도를 높혀 살펴볼경우 두 값에서 차이가 생긴다.

따라서!

어느정도의 정밀도 하에서는 두 값이 같다 할지 정해줄수가 있다. 위으 사진에서는 epsilon이라는 변수값에 오차범위값을 정해줬고.

이보다 오차가 작으면 같다고 여기고, 이보다 오차가 크다면 다르다 출력해주었다.

이와 관련된 학문으로 수치해석학 과목을 추천해 주셨다. 기회가 되면 해당학과의 과목을 일선으로 들어봐야 겠다.

 

 이는 내가 C에서 직접 몸소 겪었던 문제였는지라 나의 뇌리에 명확히 박혀있는 개념이다.

출처 - 홍정모의 따배씨쁠쁠 강의

논리 연산의 경우 왼쪽에서 오른쪽으로 연산하는대, 만약 왼쪽의 피연산자가 false라면 오른쪽은 계산하지도 않는다.

따라서 y는 값이 변하지 않고 2를 그대로 출력한다.

 

 shift연산 또한 이미 알고있던 개념이다.

출처 - 홍정모의 따배씨쁠쁠 강의

간단히 비트벡터에서 shift 시키는 개념이다.

 

 Bit mask의 경우 나같은 경우 시스템프로그래밍 시간에서 배운적이 있었기에 쉽게 이해되었다.

출처 - 홍정모의 따배씨쁠쁠 강의

빨강, 초록, 파랑 박스가 각각의 8비트 mask에 해당된다. 이를 보라색의 color bit와 and 연산을 진행한다면, 원하는 부위의 색만을 추출해 낼수가 있다.

시스템 프로그래밍 시간에는 다음과 같이 signal을 보내라 kernel에 요청할 경우, 해당 process에서 이를 bit단위로 check하여 받은 signal에 대한 handler를 호출하게되는대 위와 같은 논리이다.

출처 - 홍정모의 따배씨쁠쁠 강의

2) 나의 현황

● 같이 볼 기본서로 어떤 책을 볼까 하다. 다른 교수님께서 쓰신 명품 C++ programming이라는 책을 선택하게 되었다.

이책은 선택한 이유는 크게 2가지 이다.

 

1) 600페이지 정도로 한달정도의 시간안에 읽기 적당하다.

2) 적당한 깊이의 지식을 충분히 전달한다. (처음배울때 너무 깊은 내용은 독이 됨을 잘 알고 있다.)

3) C를 알고있다는 가정하에 읽게된는 책이다. 따라서 for 반복문 같은 기본에 대해서는 다루지 않는다.

 

홍정모 교수님의 강의와 함께 병행하여 읽을것 이며, 아마 1월 말까지 따배씨쁠쁠과 함께 다 읽는것이 목표이다.

2월부터는 아마 알고리즘쪽을 시작할 것 같다.

이글의 모든 사진과 내용의 출처는 홍정모 교수님께 있습니다.

홍정모 교수님 블로그:

 

댓글