Coding

    [ C++ ] Variable 과 Fundamental Data Type

    [ C++ ] Variable 과 Fundamental Data Type

    C++ Fundamental Data Type #string 타입은 Fundamental Data Type이 아님. std 라이브러리에 속해있는 것. #signed는 음의 정수와, 0, 양의 정수를 포함. #unsigned 는 0, 양의 정수를 포함하되, 음의 정수는 포함하지 않음. 왜 ? - 저장되는 방식이 다르기 때문에, unsigned가 계산에 빠른 특징이 있음. C++ 의 변수 초기화 방법 C++에서 변수를 초기화하는 방법은 3가지다. 1. copy initialization 2. direct initialization 3. uniform initialization int value = 0; // copy initialization int value(0); // direct initializati..

    [ C++ ] namespace_명칭공간

    [ C++ ] namespace_명칭공간

    네임스페이스(namespace) 네임스페이스는 디렉토리와 유사하다. 디렉토리 덕분에 한 컴퓨터안에 같은 이름의 파일이 존재할 수 있다. 파일명의 충돌을 피할 수 있는 것이다. 위와 같은 이유로 스크립트에서 사용한다. C++에서는 변수, 함수, 구조체, 클래스 등을 서로 구분하기 위해서 이름으로 사용되는 다양한 내부 식별자(identifier)를 가지고 있다. 내가 작성한 코드가 복잡해질수록 내부 식별자들끼리의 충돌이 일어나 제대로 빌드가 안될 수 있다. 이를 방지하기 위해 네임스페이스를 사용하는 것이다. 네임스페이스는 식별자가 가질 수 있는 유효 범위를 제공하는 선언적 영역이다. 네임스페이스 정의 namespace 키워드를 사용하여 정의 할 수 있다. *단 블록 내에서는 정의할 수 없다. 네임스페이스 접..

    [ C++ ] 헤더 파일 / 헤더 가드

    [ C++ ] 헤더 파일 / 헤더 가드

    1. 헤더 파일 헤더파일이란, 공통된 함수들을 묶어 한 파일에 넣어두는 용도이다. 여기에 함수의 전방선언만 넣어두고, 함수의 내용은 cpp파일에 따로 만들어 저장하는 것이 좋다. 헤더 파일에는 전방 선언을, cpp 파일에는 정의를 분리시켜준다. 이 같이 헤더 파일을 만드는 과정에서 중복된 함수의 선언과 정의가 포함될 수 있다. 그러면, 빌드하는 과정에서 컴파일오류와 같은 에러가 일어날 수 있기 때문에 에러를 방지하고자 헤더 가드라는 메커니즘을 사용한다. 2. 헤더 가드 간소화된 헤더 가드를 #pragma 지시자 로 사용할 수 있다. 헤더 가드는 다음과 같다. #pragma once 헤더 가드는 왜 사용하는가 ? - 함수의 중복되는 선언과 정의를 방지하기 위해 사용한다. 전처리 과정에서 실행된다. 간소화된..

    [ C++ ] 선언과 정의의 분리

    홍정모 교수님의 '홍정모의 따라하며 배우는 C++' 강의를 공부하며 정리한 글입니다. 스크립트에서 함수가 많아질 때, 가독성을 위해 선언과 정의를 분리해 줄 필요가 있다. 이를 forward declaration 이라 한다. #include using namespace std; int add(int a, int b); // forward declaration int main() { cout

    [ Programming 기초 ] 프로그래밍 구조 ( with Visual Studio IDE )

    [ Programming 기초 ] 프로그래밍 구조 ( with Visual Studio IDE )

    목차 프로그래밍 구조 1. 컴파일 과정 2. 링크 과정 3. Visual Studio 통합개발환경으로 보는 프로그래밍 구조 1. 컴파일 과정 컴파일 언어는 우리가 이해하는 형태의 코드를 컴파일러를 통해 컴퓨터가 이해할 수 있는 형태로 바꿔주어야 한다. 우리가 이해하는 형태 : Source Code 기계가 이해하는 형태 : Object Code 이 과정을 '컴파일 과정' 이라 한다. 2. 링크 과정 프로그램은 분리되어진 여러 부분이 합쳐지면서 만들어진다. 예를 들어, Hello Wolrd 프로그램은 우리가 작성한 소스파일과 표준 라이브러리 총 2개의 부분으로 이루어진다. 그렇기 때문에 실행 가능한 파일을 만들기 위해서는 나눠진 부분것을 컴파일해서 목적코드로 만들고 목적 코드를 링크해야한다. 이와 같이 각 ..

    < P5.JS > The Nature of Code_Vector

    < P5.JS > The Nature of Code_Vector

    The Nature of Code_Vector #01 : Vector의 정의와 작동원리 이해하기 Vector 란 무엇인가 정확히는 유클리드 벡터라고 하며, 크기와 방향을 가진 물리량을 가르키는 말이다. 벡터는 크기(화살의 길이)와 방향(화살의 방향)을 모두 가졌기 때문에 화살표로 표현 할 수 있다. 배경은 유클리드 공간, 좌표계 공간이다. 유클리드 공간은 평면과 공간에 대해 일반화 한 것으로, 우리가 살아가는 3차원 공간, 평면, 수직선 등 다차원 공간까지 표현 할 수 있다. 마야나 언리얼엔진 같은 프로그램에서 좌표계로 표현한 공간을 생각하면 쉽게 이해할 수 있다. 벡터는 컴퓨터 그래픽, 물리 시뮬레이션에서 핵심적인 역할을 하고 있다고 한다. 프로그래밍에서 볼 수 있는 배열 요소 std :: vector..

    < 비야네스트롭스트룹 C++ > 4. 유용한 데이터 저장 방식, Vector

    vector는 c++에서 유용한 데이터 저장 방식 중 하나로, 인덱스로 접근 할 수 있는 요소의 시퀀스라고 한다. 쉽게보자면, 이름표가 붙어있는 무한한 상자가 있다. 그 상자들에는 무한한 값들을 담을 수 있고, 언제든 삭제하고 추가 할 수 있다. 즉, 인덱스(이름표)로 접근 할 수 있는 요소(값)의 시퀀스(무한한 상자들의 집합) 이라고 볼 수 있다. vector 는 변수를 사용하는 방법과 마찬가지로, 선언과 초기화라는 과정을 통해 만들어야한다. 선언과 초기화 변수와 마찬가지로, 상자에 담길 데이터의 종류(타입)와 초기 값을 지정한다. *타입은 '' 괄호안에 작성한다. 1. 선언만하기 vectorname; 2. 선언과 동시에 초기화 vectorname = {..

    < 비야네스트롭스트룹 C++ > 3. C++로 보는 컴퓨터 계산

    컴퓨터 계산은 주어진 입력을 바탕으로 여러 계산을 통해 출력을 생성하는 과정을 뜻한다. 입력은 ' 인자 ( Argument ) ' 를 나타내고, 출력은 ' 결과 ( Result ) ' 를 나타낸다. 프로그램을 잘 만드는 것 : 정확성, 단순성, 효율성 정확하고 단순하고 효율적으로 프로그램을 만들고자 사용 할 수 있는 방법이 있다. 추상화 ( abstraction ) : 프로그램 상에서 전화번호부를 정렬하기 위해, C++ 표준 라이브러리의 Sort 알고리즘을 사용하듯이, 알고리즘을 이해하고 있다면 직접 계산을 하지 않고 함수 호출을 통해 간단하게 만들 수 있다. 분할 정복 ( divide and conquer ) : 프로그램으로 사전을 만들 때 데이터를 읽고, 읽은 데..