반응형
1. if, else if, else문
2. 난수
3. 사용자정의 변수타입
4. 열거형
5. switch문
6. for, while, do while 반목문
7. 배열
배열 실습: 랜덤 셔플
1. if, else if, else문
여러 조건 중 하나를 처리하는 기능이다.
"조건식"의 참/거짓 여부에 따라 코드가 동작한다.
if(조건식) // 1번 { //동작할 코드 } else if(조건식) // 2번 { //동작할 코드 } else // 3번 { //동작할 코드 }
1번, "조건식"을 체크하여 true일 경우 코드블록 안의 코드가 동작한다.
2번, else if는 반드시 if와 함께 사용이 되어야 한다.
3번, else는 반드시 if와 함께 사용이 되어야 한다.
else는 if문의 조건이 false일 경우 동작한다.
하나의 if문에 else는 하나만 존재할 수 있다.
int BossHP = 29; if (30 <= BossHP && BossHP <= 50) { std::cout << "if문 조건식이 true 입니다." << std::endl; } else if (51 <= BossHP && BossHP <= 70) { std::cout << "보스의 체력이 51~70 사이입니다." << std::endl; } else { std::cout << "if문 조건식이 false 입니다." << std::endl; }
2. 난수
rand()
C++에서 난수를 발생시켜주는 "함수"이다.
표현 범위는 0~32767 사이의 "정수"이다.
srand(20); // 20번 시드에 있는 난수를 가져온다. time(0); // time(0) 은 현재 시간을 사용하는 것. srand(time(0)) // 현재 시간을 기준으로 난수 생성
// "특정 최소~최대값"을 구하고 싶을 때 // rand() % (최대 - 최소 + 1) + 최소 std::cout << rand() % 101 + 101 << std::endl; // 100~200 std::cout << rand() << std::endl; // 0~32767 std::cout << rand() % 10001 * .01f << std::endl; // 0.00~100.00
3. 사용자정의 변수타입
struct, class, enum, union, typedef, using, 템플릿 등을 활용하여 복잡한 데이터 구조와 로직을 효과적으로 관리할 수 있다. 객체 지향 프로그래밍의 원칙을 잘 활용하면 더욱 견고하고 유지보수하기 쉬운 코드를 작성할 수 있다.
4. 열거형 (enum)
사용자정의 변수 타입을 만들어주기 위한 하나의 문법이다.
열거형은 연속된 숫자 상수를 만들어줄 수 있는 기능이다.
숫자에 이름을 부여해줄 수 있다.
열거형은 기본(Default)으로 4 byte의 크기를 가지고 있다.
// 4 byte enum EFruit { None, Apple = 10, Banna = 50, Grape } // 1 byte enum class EDishType : unsigned char { Asian, Western, Chinese }
5. switch 문
분기처리가 가능하다.
switch(변수) { case 상수: break; case 상수: break; default: break; }
변수의 값에 따라 case의 상수를 찾아서 코드를 동작시키고, break를 만나면 switch문을 빠져나간다.
모든 case 상수 중에서 "변수"의 값과 같은 상수가 없을 경우 default가 동작된다.
int Number = 2; switch (Number) { case 1: { int Number1 = 10; std::cout << "숫자가 1입니다." << std::endl; } //Number1 = 500; break; case 2: // case2와 case3와 같이 switch문 안의 같은 블록을 공유하고 있는 경우 // 중복 선언으로 취급하여 "컴파일 에러"를 발생시킨다. // int Number2: 재정의 오류 //int Number2; //Number2 = 300; std::cout << "숫자가 2입니다." << std::endl; break; case 3: //int Number2; //Number2 = 1000; std::cout << "숫자가 3입니다." << std::endl; break; default: std::cout << "그 외의 숫자입니다." << std::endl; break; }
EFruit Fruit; std::cout << sizeof(EFruit) << std::endl; // 4 byte std::cout << sizeof(int) << std::endl; // 4 byte //Fruit = 2342125; // int값 형식을 -> enum값 형식에 대입X int FruitInt = EFruit::Apple; // enum값 형식을 -> int값 형식에 대입O
// 반드시 열거형 소속과 함께 접근을 해야 대입 가능 EDishType DisType = EDishType::Apple; DisType = EDishType::Banna;
6. for, while, do while 반복문
1. 조건식 체크
2. 코드 동작
3. 증감값
for(초기값; 조건식; 증감값) { // 동작할 코드 } // 무한 루프 for(;;) { } while(조건식) { // 동작할 코드, 증감값 } // 최소 한 번 실행은 보장한다. do { // 동작할 코드, 증감값 } while(조건식);
for (int i = 0; i < 5; ++i) // 0, 1, 2, 3, 4 { for (int j = 0; j < 10; ++j) { // i와 j의 값을 이용해서 0~49까지 출력될 수 있게 // 코드를 작성하시오. // 세로줄번호 * 가로개수 + 가로번호 std::cout << i * 10 + j << std::endl; } }
7. 배열
"배열"은 인덱스를 이용해서 접근한다.
인덱스는 0 ~ 개수-1 까지이다.
int Array[50] = {1, 2, 3, 4}; // 5~49번 인덱스까지는 모두 0으로 초기화 //Array[3] = 500; ++Array[49]; for (int i = 0; i < 50; ++i) { std::cout << Array[i] << std::endl; }
8. 배열 랜덤 셔플
for (int i = 0; i < 100; ++i) { // 0~19 랜덤 수 생성 int Index1 = rand() % 20; int Index2 = rand() % 20; int Temp = Number[Index1]; Number[Index1] = Number[Index2]; Number[Index2] = Temp; } for (int i = 0; i < 100; ++i) std::cout << Number[i] << std::endl;
반응형
'Programming Languages > C++' 카테고리의 다른 글
[C++] 5x5 빙고게임 (AI 추가) (2) | 2024.12.19 |
---|---|
[C++] 5x5 빙고게임 (1) | 2024.12.19 |
[C++] 야구게임 (3) | 2024.12.18 |
[C++] 기초문법 - 2편 (1) | 2024.12.13 |
[C++] 기초 문법 - 1편 (3) | 2024.12.06 |