본문 바로가기

C++

(32)
C++ 배우기 8(enum, Switch) ENUM enum ABC { a, b, c }; enumerate의 줄임말로, 열거형이라고 하며, 이것도 자료형이라고 할 수 있다. 정수만 취급하는 특징을 가지고 있다. 선언 방식은 기존의 변수 선언방식과 비슷하다고 보면 된다.(type callname 형식) 위와 같이 안에 각각 변수를 만들었다. 값을 넣어주지 않아도 앞에서부터 차례대로 0, 1, 2, 3 순의 정수가 들어가게 된다. 위 사진과 같이 중간에 특정값을 대입하면, 처음 a, b에는 0, 1이 들어가다 c, d는 15, 16 순으로 정수가 들어간다. 즉, 중간에 특정값을 대입하면 그 뒤로는 특정값의 증감한 값들이 차례대로 들어간다. 이러한 성질을 잘 기억하고 나중에 사용할 때 유의하면 되겠다. Switch switch(특정값) { case ..
C++ 배우기 7(지시자break / continue, 형변환) 지시자 break / continue 반복문에서 특정한 명령을 지시하는 역할을 한다. 그중에서 break와 continue를 알아보자. break는 말 그대로 부신다는 뜻으로, 현재 위치한 반복문을 더 이상 반복하지 않고 바로 탈출하도록 해준다. 위와 같이 for 반복문 안에서 특정 조건에 만족할 때에 break가 걸리도록 하였다. 처음 i = 0 일 때에 한번 반복되고 증감되어 i = 1이 되면 조건에 만족하여 break로 탈출한다. continue는 바로 밑에 있는 코드들을 모두 건너뛰고 다시 처음부터 반복하도록 해준다. 위와 같이 for 반복문 안에 사용할 수 있다. break는 그 즉시 반복문이 종료되지만, continue는 한번 건너뛰고 다시 반복시킨다는 점이 둘의 중요한 차이점이라고 할 수 있..
C++ 배우기 6(이중for문, 스왑, 셔플) 이중 for 문 for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { } } 앞서 이중 for문을 사용하여 로또번호 자동 생성기를 좀 더 효율적으로 코딩할 수 있었다. 이중 for문이란, 말 그대로 for문 안에 for문을 넣어 이중으로 사용한다는 뜻이다. 그리고 이중 for문하면 떠오르는 바로 그것, '별 찍기'이다. 마침 오늘 숙제 중 하나가 별 찍기여서 조금 어려웠었다...ㅎㅎ;; 셔플 알고리즘 앞서 우리는 랜덤 한 값을 넣기 위해서 랜덤함수를 사용했었다. 하지만 랜덤함수에는 중복된 값이 가끔 나올때가 있었는데, 이 셔플 알고리즘을 사용하면 중복되는 값 없이, 랜덤한 값을 나타낼 수 있다. 우선 셔플은 우리가 알던 카드를 섞는 그런 행위를 일컫는 말..
C++ 배우기 5(랜덤함수, 배열, for문) 원래는 10월 14일에 배운 내용이지만, 카카오 관련 문제로 인해서 이제야 쓰게 되었다... 덕분에 조금 긴가민가한 기억으로 작성하여서 조금 뒤죽박죽일 수 있다. 한 번에 몰아서 써야 되는 내 인생이 레잔도... 랜덤, 난수 들어가기에 앞서 연산자 / 와 % 의 차이를 다시 확인해보자. 연산자 / 는 나누고 나온 몫을 출력해주고, 연산자 % 는 나누고 남은 나머지를 출력해준다. 따라서 연산자 % 를 사용하여 나오는 값을 가지고 여러 조건들을 만들어 낼 수 있으니 잘 기억해두면 좋다. 우선 랜덤 함수를 쓰기 전에 위와같이 파일을 불러와야 한다. 현재 시간을 불러오는 역할을 하는데, 바로 현재 시간을 불러와 seed 값에 넣어 출력 결과가 매번 달라지게 만들기 위해서이다. 만약 위의 srand()를 입력하지..
C++ 배우기 4(반복문 / 논리연산자 / 증감연산자) 티스토리 안에 코드블럭이라는 기능을 오늘이 돼서야 알게 됐다.... 좀 더 일찍 알았더라면;; 처음 블로그를 해보는 거라 많이 미숙한 것 같다...ㅠㅠ 반복분 While while(조건문) { } 반복문 중 하나인 while에 대해서 알아보자. 영어 그대로는 ~하는 동안의 뜻으로, 조건이 참인 동안 계속 반복한다. 하지만 조건이 거짓이 될 때 while을 빠져나와 반복이 종료가 된다. 만약 조건이 계속 참(true) 일 경우에는 무한루프가 되어버리니 주의하도록 하자. 번외로 비교연산자를 사용할 때, while( input != answer ) 과 while( !(input == answer) )는 'input과 answer 변수가 같지 않을 때'라는 같은 뜻이니 헷갈리지 않도록 하자. 논리연산자 저번에 ..
C++ 배우기 3(비교 연산자, if문) 스코프 { } 위 사진과 같이 int main() 다음에 오는 대괄호를 스코프라고 부른다. 이는 int main()의 범위를 잡아주는 역할을 한다. 물론 int main()뿐만 아니라 다른 곳에도 많이 활용하고 있다. 변수의 규칙 저번에 알아봤듯이 변수는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 말한다. 그리고 이 안에 저장된 값은 언제든 변경할 수 있다. 또한 자료형을 통해 정수형 int, char, short, long, 실수형 float, double 변수 또한 알아보았다. 변수의 이름은 본인이 원하는대로 자유롭게 지을 수 있다. 때문에 변수가 하는 역할을 잘 나타낼 수 있도록 짓는 것이 가장 좋은 방법이다. 하지만 변수의 이름을 생성할 때에도 몇 가지 지켜야 할 규칙이..
C++ 배우기 2(자료형과 연산자) 저번 시간에... 전처리기 주석 제거, include 처리, 매크로 확인. 한마디로 필요한 것 넣고 필요 없는 것 제거 컴파일러 어셈블리어로 번역 어셈블러 기계어로 번역 링커 마지막에 하나로 묶어 exe 파일 생성. 컴파일 과정에서 링커가 중요하다. 매크로 위 사진의 define은 정의하다 라는 뜻으로, 앞으로 MAX를 30으로 정의하겠다는 것이 된다. #if ~ #endif 저번에 설명 했듯이 int main()은 코드의 진입점을 나타내고 있다. 하지만 int main()이 두 번 선언되어 있다면 오류가 날 텐데, 위 사진에서 #if ~ #endif 가 그 오류를 막아주고 있다. 자세히 보면 #if 뒤에 0 과 1이 있을 텐데, 0이 있는 곳의 내용은 출력대상에서 제외시키고, 1이 있는 곳의 내용이 출..
C++ 배우기 1(단축키와 Hello World!) 컴퓨터 언어 컴퓨터와 소통을 하기 위해서는 컴퓨터의 언어를 통해 해야 하는데, 그 언어는 여러 가지 종류가 있다. 대표적으로 파이썬(Python), 자바(Java), C#, C++ 등등이 있다고 한다. 그런데 이 중에서도 언어레벨이 존재하는데, 사람의 언어와 가까울수록 High level, 컴퓨터의 언어와 가까울수록 Low level이라고 할 수 있다. 만약 위의 컴퓨터 언어들을 순서대로 나열해보자면 이런 식으로 나타낼 수 있을 것이다. 사람(High level)-----Python------Java----------C#---------C++---------컴퓨터(Low level) 그중에서 나는 C++를 배우는 중이다. Visual Studio 2019를 설치해서 우선 기본적인 단축키들 먼저 알아보았다..