-
Notifications
You must be signed in to change notification settings - Fork 0
[CPP] 제 1장 시작하기
-
main 함수는 OS 가 명시적으로(explicitly) 호출하는 유일한(only) 함수이고, 모든 프로그램에 반드시 포함시켜야한다. OS 에서 main 이 반환하는 값을 보고 성공인지 실패인지 판단한다.
-
main 함수는 제한된 파라미터만 입력받을 수 있다. (int *argv, char **argc) (내가 알기로는 argv 는 CLI 에서 입력받은 파라미터의 갯수를 입력받는 포인터 변수이고, argc 는 파라미터의 실제 값을 입력받는 포인터 변수이다.)
-
함수의 구성
- 반환 값 타입
- 함수 이름
- 함수 몸체 (body)
- 파라미터 리스트
- 대부분의 시스템에서 main 이 반환하는 값은 그 프로그램의 성공적인 수행 여부를 의미한다. 대부분 0을 반환하면 성공적인 수행, 0이 아닌 값(non zero)이 반환되면 에러가 있다고 판단한다. 하지만 각 OS 마다 main 에서 반환하는 값을 정의하는 것이 다르기 때문에 OS 시스템에 맞춰야한다.
- file suffix : 파일 확장자 파일 확장자는 컴파일러에 따라서 다르다. cpp만 있는 것이 아니라 cxx, cp, c, cc 등 이 있다. 이 교재에서는 cc 를 지원하는 컴파일러를 사용한다.
-
stream : 스트림은 시간의 흐름에 따라 일련의 문자열들이 생성되고, 소비되는 하나의 흐름을 지칭할 때 쓴다 (The term stream is intened to suggest that the characters are generated, or consumed, sequentially over time)
-
iostream : 입출력 라이브러리
-
종류 : cin (입력), cout (출력), cerr (표준 에러 출력), clog (일반 로그 출력)
-
endl : manipulator 라고 불리며, 줄 바꿈 효과와 버퍼를 비우는(flush) 효과를 가지고 있다
- 알고리즘 문제를 풀면, 종종 endl 때문에 시간초과가 나는 경우가 있다. 매번 출력을 할 때마다 버퍼를 비우니까 그만큼 디바이스 IO 횟수가 증가하는 것이고, 그 때문에 시간초과가 날지도 모른다.
- 초기화 : 변수를 처음에 초기화할 것인가 말 것인가에 대한 문제는 변수에 값이 반드시 들어간다라는 것이 보장되면 초기화하지 않아도 되고, 아니면 초기화 해야한다. (당연한 소리)
-
while : 조건 판단 -> while body 실행 -> 조건 판단(조건이 false 가 될 때까지) ... c++ 에서는 while 안에 있는 조건문이 0 인지 0이 아닌지에 따라 판단한다. 자바의 경우 반드시 true, false 였던 것 같음.
-
for : for 가 등장한 이유는 여기서 이렇게 말하고 있다. "while 에서 보듯이 조건이 되는 변수가 자주 사용이 된다. 그래서 이것을 좀 더 간략하게 보여주고 싶어 for 문이 등장했다." (The use of variable like val to control a loop happens so often that the language defines a second control structure, for statement.)
다 알겠지만, for 문의 구조 : 초기화부(init) -> { 조건부(condition), 실행부(body), 후기실행부(increment, decrement ... etc) } 맨 처음에 값을 초기화하고, 조건부를 판단해서 true 가 나오면 실행을 하고 실행을 마친 후에는 후기실행부? 에서 작업을 해준다.
-
if
-
input 의 갯수를 모를 때
int value;
while(std::cin >> value){
std::cout << value;
}
조건부에서 cin 을 테스트한다는 말은, 스트림의 상태를 테스트하는 것과 같은 효과가 있다. 데이터 타입에 알맞는 값을 입력했을 경우에는 success 이지만, EOF 를 입력하거나, 잘못된 입력을 (다른 데이터 타입의 값을 입력) 수행한 경우에는 조건부가 fail 이 된다
- window 에서 EOF 는 ctrl+z, Max OS X 와 같은 Unix 시스템에서는 ctrl+d 가 EOF 를 나타낸다.
클래스를 구성하는 방법에 대해서는 자세하게 다루지 않고, 사용하는 방법에 대해서만 자세하게 다루고 있다.
- member function 는 method 와 같은 말이다.
마치면서... 이 책은 문제해결(bookstore problem) -> 개념설명 (어려운 부분은 숨기면서) 을 하는 식으로 기초적인 내용들을 overview 해줬다.