본문 바로가기

분류 전체보기

[42서울] CPP Module 05 - 재사용성과 예외처리 서론 재사용성과 예외처리에 대한 과제이다. try-catch문과 exception을 사용해보면서 예외처리를 몸에 익히는 과제라고 생각하면 될 것 같다. ex00 거대한 관료체계의 관료 클래스를 만들어라 상수 name과 1~150 사이의 grade을 보유해야 한다. 만약 잘못된 등급을 받게 되면 Bureaucrat::GradeTooHighException이나 Bureaucrat::GradeTooLowException 함수를 호출하여 예외처리를 해야 한다. 생성자에서도 에러 발생 시 동일한 함수로 예외처리를 하라. getName과 getGrade 함수를 만들고 grade를 높이거나 낮추는 함수도 보유해야 한다. 1등급이 가장 높기 때문에 3의 grade를 높인다면 2가 된다. grade = grade; if.. 더보기
[42서울] CPP Module 04 - 다형성과 추상클래스 서론 서브젝트 첫 페이지에 나오듯이 다형성과 추상 클래스, 그리고 인터페이스를 구현해보는 과제이다. 여담으로 cpp 03 이후에 04부터 08까지 한번에 끝낸 다음에 평가를 받았는데, 평가를 받으면서 보니 별로 좋은 생각은 아니었다. 평가를 받으면서 무슨 생각으로 이렇게 만들었는지를 까먹고 평가자와 같이 고민하게 되는 큰 문제가있었다. ex00 모든 exercise에서는 최대한 완벽한 테스트를 제공할 수 있도록 노력해야 한다. 모든 생성자와 소멸자는 클래스에 따라 다른 이름이 나와야 한다. 시작은 Animal 클래스 하나만 구현한다. protect로 string 타입의 type 변수 하나만 보유한 클래스이다. Dog 클래스와 Cat 클래스를 만들어서 각자 이름에 맞는 type를 가지도록 한다. Dog는 .. 더보기
[42서울] CPP Module 03 - 클래스 상속 서론 후술하겠지만 ex03에서 잘못 이해하고 구현한 부분이 있다. 그런데 테스트를 해보니 나와 평가자 둘 다 잘못 알고 있어서 한바탕 웃고 넘어갔지만, 굉장히 부끄러운 순간이었다. '내가 평가자였으면 어땟을까...' 하고 곰곰이 생각을 해보니 나는 fail 의 기준을 '평가표의 내용을 모르고 구현하지 않거나 다르게 구현한 경우'와 '잘못 알고 있으면 구현하지 못하는데 구현한 경우'를 fail 사유라고 생각하니까 아마 fail까진 아니었을 것 같단 생각도 든다. ex00 귀여운 클랩트랩 클래스를 구현하는 과제. private : 생성자 매개변수로 초기화하는 name HitPoint (10) Energy points (10) Attack damage (0) public : void attack(const s.. 더보기
[42서울] CPP Module 02 - 고정 소수점 클래스 만들기 서론 평가를 받고 나면 바로바로 글을 남겨야 글이 술술 나오는데, 평가를 받고 며칠 후에 글을 쓰려니 내가... 뭐라고 했더라...라는 생각이 들면서 글이 제대로 나오질 않는 것 같다. 본가에 내려가는 버스가 마지막 평가 끝나고 한 시간 뒤여서 급하게 평가를 받았고, 집에 내려가서도 공부를 안 하다 보니 내 과제이지만 뭔가 생소하다. 긍정적으로 생각해보면 에빙하우스의 망각곡선처럼 더 까먹을 때쯤 정리를 다시 하니 복습이 더 잘되는 것 같기도 하다. 코드를 다 완성하고 나면 서브젝트와 코드 내용을 노션에 정리한 다음, 1~2일 후에 평가를 받고, 거기에서 3~4일 후에 글을 쓰니까 사실 난 의도적으로 복습을 하고 있는 게 아닐까? ex00 부동소수점에 대한 칼럼이 나오고, c++에 고정소수점이 없으니까 그.. 더보기
[42서울] CPP Module 01 - 클래스와 레퍼런스 서론 cpp 과제는 과제보다 평가가 두배는 더 힘든 느낌이다. 평가받아야 하는 횟수 자체도 압도적으로 많은데, 카뎃 대부분은 C++을 모르다 보니 설명을 하려면 굉장히 먼데부터 설명해야 한다. 본론으로 들어가면, cpp module 01 과제는 제목에서처럼 클래스와 레퍼런스를 사용해보는걸 중점으로 하고 있다. 객체 지향 언어의 기본이자, C++의 꽃이라고 할 수 있는 부분이기 때문에 깊게 공부할수록 좋다. ex00 Zombie 클래스를 만든다. 디버깅, 평가 등을 위해 소멸자에 메시지를 넣는다. Zombie 클래스에는 본인의 이름과 BraiiiiiiinnnzzzZ... 를 출력하는 announce 기능이 있다. Zombie가 적절할 때 소멸되도록 만들고, 그에 따라 스택 영역과 힙 영역에 할당하도록 한다.. 더보기
[42서울] CPP Module 00 - c++ 과제의 시작 서론 별다른 부제가 생각나질 않는다. 나중에는 부제를 안 달고 글을 발행하지 않을까 하는 생각이 든다. 인트라넷이 맛 갔을 때 한글 번역본을 보고 과제를 진행한 다음 바뀐 게 있는지 확인하고 평가를 받았는데, 알고 보니 clang++이 아닌 c++ 컴파일러를 사용해야 하는 이슈가 있었다. 다음 과제부터는 고쳐서 제출할 예정이다. ex00 다음과 같이 동작하는 프로그램을 만들어라. 최대한 C++답게 만들도록 노력할 것 $>./megaphone "shhhhh... I think the students are asleep..." SHHHHH... I THINK THE STUDENTS ARE ASLEEP... $>./megaphone Damnit " ! " "Sorry students, I thought thi.. 더보기
[42서울] cub3D는 아름다워(Cub 3d è bella) 서론 오랜만에 자는 시간까지 쪼개서 과제를 했다. 7월 4일에 시작해서 7월 21일에 끝냈으니 14일이 걸린건데, 3일은 팀원의 일정으로 인해, 1일은 내 일정으로 인해 출근하지 않았으니 10일동안 쉬지않고 달려서 완성했다. 특히 이번에는 파트를 나누지않고 계속 둘이 같이 보면서 코드를 작성했는데, 생각한거보다 코드가 더 빠르게 나왔다. 둘이 각자 만든것보다 속도가 별로 느리지는 않으면서 코드에 대한 이해는 동일하게 상승하는걸 느끼고 짝 프로그래밍을 이래서 하는구나 하고 알게되었음. 공부의 순서는 맵 파싱 -> 레이캐스팅 공부 -> 레이캐스팅을 적용하여 완성 순으로 진행했는데, 다른 방식으로 공부해보진 않았지만 이게 가장 합리적인 공부 방식이었던것 같다. 맵 파싱을 하면서 만든 코드를 레이캐스팅 튜토리얼.. 더보기
[42서울] 넷프랙티스(netpractice). 놀랄 만큼 쉽고 믿기 힘들 만큼 재미있는 과제. 서론 제목처럼 정말 쉽고 재미있는 과제였다. 사실 평가를 하면서 보니 네트워크에 대한 지식이 조금 있어서 쉬웠던 것 같기는 한데, 네트워크에 대한 지식이 전무한 사람도 2~3일 정도 공부하면 통과할 수 있을 거라고 생각한다. 평가를 하면서 느낀 게 네트워크를 모르는 사람에게는 아예 문제 자체가 무슨 의미인지 모를 수도 있다. 그래서 이 글에서는 네트워크를 처음 듣는 초등학생도 이해할 수 있도록 설명할 계획이지만 잘될지는 아직 모르겠다. 쉽게 설명하기 위해 노력하다 보니 실제와 조금 다른 부분이 있을 수도 있습니다(ex. 스위치의 역할을 공유기라고 생각하면 된다고 한다거나) 평가내용을 보면 알겠지만 15분짜리 평가지만 네트워크에 대한 기본 지식을 같이 이야기해야 하기 때문에 한 시간 정도 잡는 게 더 알맞.. 더보기