목록Supplementary (10)
have to do_yeon

1. 스택 (stack) 데이터 원소가 차례대로 쌓아 올려진 구조로, 가장 마지막에 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조이다. (1) LIFO(Last In, First Out), 후입선출 구조 (2) 스택(stack)의 추상자료형(ADT) 멤버함수 (member function) 반환 (return) 설명 (explanation) stack.push(data) None 데이터를 스택의 맨 위에 추가한다. stack.pop() data 스택의 가장 위에 있는 데이터를 반환하고 삭제한다. stack.peek() data 스택의 가장 위에 있는 데이터를 반환한다. stack.empty() bool 스택이 비어있으면 True(1), 아니면 False(0)를 반환한다. (3) 스택(stack) 구현하기 ..

1. 고정소수점 (fixed point) 고정소수점이란, 우리가 알고 있는 수학적 소숫점을 생각하면 된다. 소숫점을 사용할 때, 소숫점의 위치가 바뀌게 되면 숫자의 크기가 변하게 된다. 34.2153 != 3421.53 임을 떠올리면 된다. 2. 부동소수점 (floating point) 따라서, 우리는 소숫점의 위치가 유연한 부동소수점 방식을 사용하여 소수를 표현할 것이다. 부동소수점 변환 과정은 크게 세 부분으로 나눌 수 있는데, ① 10진수를 2진수로 변환 ② 정규화 ③ 비트로 표현 각각 자세히 살펴보도록 하자. ▶ 부동소수점 변환 ① 10진수를 2진수로 변환 정수부와 소수부를 나누어 각각 다른 방식으로 2진수로 변환한다. 정수부의 경우, lec02 포스팅의 '1. 2진수 변환' 부분을 참고하면 된다..

1. 2진수 변환 컴퓨터는 0과 1을 이용하여 모든 숫자를 표현하므로, 우리가 입력하는 10진수를 2진수로 변환한다. 우리는 이 변환 과정을 공부해야 한다...(웃을때가아님) ① 10진수로 주어진 수를 몫이 1이 나올 때까지 나눈다. ② 이 때, 모든 나머지를 표시한다. ③ 그리고 몫부터 맨 처음의 나머지까지 거슬러 올라가면~! 2진수 변환 끝!!!! 2. 부호가 없는 정수 2진수의 맨 왼쪽부터 자리를 할당한다. 순서대로 2의 n승이며 맨 첫자리는 0승으로 시작한다. 한 자리당 1비트(1bits)이고, 8개의 배수 단위로 사용한다. (8비트 정수, 16비트 정수, 32비트 정수...) 3. 16진수 4개씩 묶어서 숫자를 표시할 수 있다. 이 때, 숫자표현 앞에 0x를 붙여줘야 하는데, 이는 16진수라는 ..

1. Const (상수) 말 그대로 변수나 함수에 붙여주면 상수가 된다. 일반 변수에 붙여도 되고 포인터에 붙여도 된다. 마음대로~ 자신과 가장 가까운 것을 상수화한다. 순서를 헷갈리지 말아야 하는데... 예제로 확인해보도록 하자. #include using namespace std; int main() { int a = 100; int b = 200; // non const 포인터 int* ptr = &a; ptr = &b; // 주소 변경 가능 *ptr = 300; // 값 변경 가능 // 상수 포인터(const pointer) int* const ptr2 = &a; ptr2 = &b; // error! 포인터가 상수이므로 변경 불가능 *ptr2 = 300; // 값은 변경 가능 // 상수에 대한 포..

1. Call by value VS Call by reference ① Call by value 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다 변수의 값을 복사하여 함수의 인자로 전달하므로 함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않는다. ② Call by reference 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. 함수가 종료되면 해당 공간은 사라진다. 함수 호출시 인자로 전달되는 변수의 레퍼런스를 전달하므로 함수 안에서 인자의 값이 변경되면, arguement로 전달된 객체의 값도 함께 변경된다. 예시를 보자. #include using namespace std; //두 수를 바꾸는 함수를 만들어보자...

1. Object Oriented (객체 지향 프로그래밍) 객체지향이라고 하면 어렵게 생각하는 사람이 많을텐데, 간단하게 이야기 하자면 인간의 관점에서 쓰는 것이 아니라고 생각하면 된다. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다. 출처 >> https://url.kr/lr87cw 여담 한마디 하자면, 컴퓨터뿐만 아니라 기타 공학과 같은 조금 고급 지식 자료를 찾아볼 때, 위키의 도움을 꺼려하지 않았으면 하는데 생각보다 전문적인 내용이 많기 때문이다. 오히려 어려운 말들을 주석 등을 통해서 쉽게 설명해줄 ..
1. Structure (구조체) 강의자료에는 정의로 "각 부분과 요소들이 모여 이루어진 물체나 형태." 라고 적혀있다. 이 말 그대로이다. 변수 덩어리라고 생각하면 편하다. 여러개의 변수를 하나로 묶어서 단위로 운용한다. struct Person { string name; int age; string major; }; 위 구조체는 세 개의 변수를 Person이라는 큰 구조로 묶은 것이다. #include using namespace std; struct Person { string name; int age; string major; }; int main(){ Person DY;// 구조체 이름 짓기 DY.name = KDY; DY.age = 22; DY.major = Art&Tech; cout

1. if - else (조건문) 파이썬이나 C에서도 했던 것이라 모르는 사람이 없을 것으로 보인다. 다만 하나 알고 있어야 할 것은, if () { } else if () { } else { } if () { } else { if () { } else { } } 위 두 코드가 같다는 점이다. else if를 단순히 if 다음에 오는거~ 라고만 생각하고 있으면 틀린말은 아니지만 맞는말도 아니다~ 2. switch 조건문의 한 종류이다. 다음 예제를 통해 if-else로 표현한 코드를 switch로 표현할 수 있음을 알 수 있다. // if-else if( == ) { } else if( == ) { } else if( == ) { } else { } // switch switch () { case : b..