42SEOUL

42SEOUL/Circle4

[42SEOUL] Netpractice

Chapter 1 Introduce 4서클 과제 중 Netpractice라는 과제를 마주했다. 주변에서 들리는 소문에 의하면 빡세게 한다면 2~3일 정도면 충분하다는 말을 듣고 호기롭게 도전해보았으나... 아차차.. 내가 네트워크에 대해 아무것도 모르고 있었다는 것을 다시금 깨닫게 되었다. 과제를 등록하면, 첨부파일이 하나 있는데 압축해제해서 index.html을 실행하면 다음과 같은 화면들이 나온다. 도대체 이게 무엇인가... 싶었다. 보아하니 연결을 하라고는 하는데, ip 주소에 대한 기본적인 이해가 없어서 어떤식으로 풀어야하는지 잘 몰랐다. 그래서 네트워크에 대한 기초 개념을 ip주소에 관한 내용들 위주로 먼저 정리했다. Chapter2 Network 네트워크? 인터넷? 먼저, 컴퓨터 네트워크라고하..

42SEOUL/Circle4

[42SEOUL] miniRT

miniRT 이 프로젝트는 Raytracing의 아름다운 세계를 소개한다. 완료된다면 간단한 Computer-General-Images를 렌더링할 수 있고 다시는 수학 공식을 구현하는 것을 두려워하지 않을 것이다. Chapter 1 Introduction 3차원의 컴퓨터 생성 이미지를 렌더링할 때 가능한 접근 방식은 두 가지가 있다: 효율성 때문에 거의 모든 그래픽 엔진에서 사용하는 Rasterization과 Ray Tracing이다. 1968년에 처음 개발되었던 Ray Tracing은 오늘날에도 Rasterizaion보다 계산 비용이 더 많이 든다. 결과적으로, 아직 실시간 사용 사례에 완전히 적용되지는 않았지만 훨씬 더 높은 수준의 시각적 사실성을 생성한다. 이 그림들은 레이트레이싱 기술로 렌더링된다..

42SEOUL/Circle5

[42SEOUL] CPP Module 08

Chapter 0 STL Container STL이란 Standard Template Library의 약자로 C++의 템플릿을 이용해 표준으로 정의된 라이브러리를 말한다. 여기서 컨테이너는 클래스 템플릿으로 구성되어있다. 컨테이너 변수를 선언할 때 컨테이너가 보유할 요소의 형식을 지정한다. 컨테이너는 데이터를 저장하고 잘 관리하기 위한 클래스라고 생각하면 된다. 컨테이너는 초기화리스트를 사용해 생성할 수 있으며, 요소의 추가, 제거 및 다른 작업들을 수행하기 위한 멤버 함수들을 가지고 있다. 반복기(iterator)를 사용해 컨테이너의 요소를 반복하고 개별 요소에 접근할 수 있다. 멤버 함수와 연산자 및 전역 함수를 사용해 반복기를 명시적으로 사용할 수 있다. 모든 STL 컨테이너에 대한 반복기에 공통적..

42SEOUL/Circle5

[42SEOUL] CPP Module 07

Chapter 0 Template 이번 과제의 주제는 template이다. 템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있게 만들어 놓은 "틀"이라고 할 수 있다. 템플릿은 C++이 가지고 있는 프로그래밍 언어의 특징 중 하나인 일반화 프로그래밍의 기능 중 하나이다. 일반화 프로그래밍이란 데이터를 중시하는 객체 지향 프로그래밍과 달리 프로그램의 알고리즘에 중점을 두고 있다. C++에서의 템플릿은 크게 함수 템플릿과 클래스 템플릿으로 나눌 수 있다. 먼저, 함수 템플렛은 함수의 일반화된 선언을 뜻하며, 서로 다른 타입에서 동작하는 함수를 한 번에 정의할 수 있다. 임의의 타입으로 작성된 함수에 특정 타입을 매개변수로 전달하면, C++ 컴파일러는 해당 타입에 맞는 ..

42SEOUL/Circle5

[42SEOUL] CPP Module 06 [23/03/19 수정]

23/03/14 이후 수정된 서브젝트로 다시 풀고 수정했습니다. Chapter 0 이번 과제의 주제는 cast이다. cast는 형변환이라는 의미로, 흔히 int형에서 float형 등으로 형태를 변환한다는 의미를 가지고 있다. 형변환에는 명시적 형변환과 암시적 형변환이 있다. C와 C++ 모두 지원하며, 42에서 C언어 과제를 할 때, 주로 사용한 형 변환이 명시적 형변환이다. // 명시적 형변환 float a = 1.23; int b; b = (int)a; // 명시적으로 float형인 a를 int형으로 변환해준다. std::cout

42SEOUL/Circle5

[42SEOUL] CPP Module 05

Chapter 0 이번 과제의 주제는 반복과 예외이다. 지금까지는 예외가 발생하면 그 상태로 에러를 반환하는 형태로 프로그램을 구현했다. 즉, "예외 -> 프로그램 종료" 라는 형식으로 코드를 작성했는데, 이번 과제에서는 예외가 발생한다면 다시 입력을 받거나, 예외가 발생한 구간부터 사용자가 작성한 코드를 동작하도록 만들어야 하는 것으로 보인다. 먼저, 이번 과제에서 자주 쓰일 try - catch 문에 대해 알아보도록 하자. Try - Catch 우리가 주로 사용하던 if문을 통한 예외처리 방식은 if 조건문이 굉장히 많이 쓰이고, 다방면으로 쓰이기 때문에 예외 처리를 위해 사용하는 것인지 한눈에 알아보기 힘들다. 이런 불편한 점 때문에, 가독성과 유지보수성을 위해 try-catch문을 사용하게 된다...

42SEOUL/Circle4

[42SEOUL] CPP Module 04

Chapter 0 Subtype polymorphism 서브타입 다형성이라는 것을 알아보기 전에, 다형성에 대해서 먼저 알아보자. 다형성이란, 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 객체 지향 프로그래밍의 구성에서 저번 과제때 배웠던 상속과 더불어 중요하게 작용하는 특징 중 하나이다. 다형성 중 부모 클래스의 포인터 또는 참조형을 통해 자식 클래스를 사용하는 것을 의미하는 경우가 서브타입 다형성이다. C++에서의 다형성은 지난 과제들에서도 사용했던 가상함수, 연산자 오버로딩, 앞으로의 과제에서 사용 할 템플릿 등이 있다. 가상함수이 과정을 통해 같은 이름을 함수지만 내용이 다른 함수를 호출이 가능해진다.또한, 클래스를 상속할 경우, 소멸자에 virtual을 붙여주어야 깔끔하게 상속을..

42SEOUL/Circle4

[42SEOUL] CPP Module 03

Chapter 0 Inheritance 이번 과제는 클래스 상속에 관한 과제이다. 상속이란 객체지향 언어에서 사용하는 정말 중요한 개념이다. 클래스 상속을 통해 기존에 정의해놓은 클래스를 용도에 맞게 재사용할 수 있으며, 수정하거나 새로운 기능을 추가하기 용이하다. 상속을 해주는 클래스를 '부모 클래스', 상속을 받는 클래스를 '자식 클래스' 라고 하는데, 다른 표현으로 '베이스 클래스', '파생 클래스'라고도 한다. 클래스에는 접근 제한자라는 개념을 통해, 클래스 내부에서만 접근 가능한 'private' 변수와 클래스 외부에서도 접근 가능한 'public' 변수로 나눌 수 있다. 상속 받은 클래스 또한 이 개념이 적용되어 'private' 변수는 접근할 수 없다. 이 부분에서, 'private' 영역은..

chanwoong1
'42SEOUL' 카테고리의 글 목록 (2 Page)