Unreal Engine

UE5 강의 12 - C++ 기초 문법 개론 2 [2026.03.21.]

_김로그 2026. 3. 29. 22:20
반응형

오늘 한 일

  1. C++ 기초 문법 개론
    1. 반복문 (while문)
      1. while (조건): 조건 true면 false가 될 때 까지 반복
    2. [실습] CheckPoint 1_1
      CheckPoint1을 입력과 반복으로 대체
      유져 입력을 받는다. > 숫자를 입력하세요(8자리 이하):
      숫자의 자리수를 출력
      결과 예시: 
      숫자를 입력하세요(8자리 이하): 123
      3
      2
      1
      입력 예외처리 하지 않음!

      #include <iostream>
      
      void main()
      {
          int inputNum = 0;
          int result = 0;
          int cacheNum = 0;
      
          std::cout << "숫자를 입력하세요(8자리 이하) :";
          std::cin >> inputNum;
          std::cout << std::endl;
          
          cacheNum = inputNum;
      
          while (cacheNum > 0)
          {
              result = cacheNum % 10;
              std::cout << result << std::endl;
              cacheNum = cacheNum / 10;
          }
          std::cout << "시작값: " << inputNum << std::endl;
      }



    3. [실습] CheckPoint 3
      10~51번의 수를 4,5,5,  4,5,5,  4,5,5의 순서로 나누어서 출력
      
      결과값:
      10 11 12 13
      14 15 16 17 18
      19 20 21 22 23
      24 25 26 27
      28 29 30 31 32
      33 34 35 36 37
      38 39 40 41
      42 43 44 45 46
      47 48 49 50 51
       
      #include <iostream>
      
      void main()
      {
      	int newLineNum = 13;
      	int group = 1;
      	
      	for (int i = 10; i <= 51; i++)
      	{
      		std::cout << i  << " ";
      		if (i >= newLineNum)
      		{
      			if (group % 3 == 0)
      			{
      				newLineNum += 4;
      			}
      			else
      			{
      				newLineNum += 5;
      			}
      		std::cout << std::endl;
      		++group;
      		}
      	}
      }
        
    4. [실습] CheckPoint 4(구구단 출력)
      #include <iostream>
      
      void main()
      {
      	for (int i = 2; i <= 9; i++)
      	{
      		for (int j = 1; j <= 9; j++)
      		{
      			std::cout << i << "X" << j << "=" << i * j << " ";
      		}
      		std::cout << std::endl;
      	}
      }


      #include <iostream>
      
      void main()
      {
      	for (int j = 1; j <= 9; j++)
      	{
      		for (int i = 2; i <= 9; i++)
      		{
      			std::cout << i << "X" << j << "=" << i * j << " ";
      		}
      		std::cout << std::endl;
      	}
      }



    5. [실습] CheckPoint 5(다이아몬드 패턴)
      #include <iostream>
      
      void main()
      {
      	int countStar = 7;
      	int countBlank = 0;
      
      	// Top
      	{
      		for (int i = 0; i < 4; i++)
      		{
      			for (int j = 0; j < countBlank; j++)
      			{
      				std::cout << " ";
      			}
      			for (int k = 0; k < countStar; k++)
      			{
      				std::cout << "*";
      			}
      			countStar -= 2;
      			++countBlank;
      			std::cout << std::endl;
      		}
      	}
      	//Bottom
      	{
      		countStar = 3;
      		countBlank = 2;
      		for (int i = 0; i < 3; i++)
      		{
      			for (int j = 0; j < countBlank; j++)
      			{
      				std::cout << " ";
      			}
      			for (int k = 0; k < countStar; k++)
      			{
      				std::cout << "*";
      			}
      			countStar += 2;
      			--countBlank;
      			std::cout << std::endl;
      		}
      	}
      }


    6. 반복문 제어(break, continue)
      1. 반복문 중간에 특정 조건이 달성 되었을 때 반복을 끝내거나(break) 현재 반복을 건너 뛸(continue) 수 있다.
        #include <iostream>
        
        void main()
        {
        	for (int i = 1; i <= 10; i++)
        	{
        		if (i == 2)
        		{
        			continue; // 숫자 2는 출력하지 않기
        		}
        		if (i > 8)
        		{
        			break; // 8까지만 출력하고 9, 10은 출력하지 않기
        		}
        		std::cout << i << std::endl;
        	}
        }
    7. 배열
      #include <iostream>
      
      void main()
      {
      	// 1차원 배열
      	{
      		int arrNums[3] = { 0, 1, 2 };
      		int arrNum2[3] = { 0, }; // arrNum2[3]={0, 0, 0}
      		int arrNum3[] = { 0, 1, 2, 3 }; // arrNum3[4]={0, 1, 2, 3}
      		int arrNum4[5]; // arrNum4[5] = {쓰레기값(=임의의 값) 5개}
      
      		for (int i = 0; i < 3; i++)
      		{
      			std::cout << "i: " << arrNums[i] << " " << std::endl;
      		}
      	}
      
      	// 2차원 배열
      	{
      		int arrNum5[3][2] = { {1, 2}, {3, 4}, {5, 6} };
      
      		for (int i = 0; i < 3; i++)
      		{
      			for (int j = 0; j < 2; j++)
      			{
      				std::cout << "i: " << i << ", j: " << j << " == " << arrNum5[i][j] << std::endl;
      			}
      		}
      	}
      }
    8. [실습] CheckPoint 6
      구구단 몇단을 보여 드릴까요(2 ~ 9)0번입력하면 나가기: 2
      결과값: 2 * 1= 2  2 * 2= 4 2 * 3= 6 2 * 4= 9  2 * 9= 18
      결과값을 캐싱해서 처리.
      1차원 배열로 캐싱(미리 저장)하기(72개의 결과값(구구단))

      #include <iostream>
      
      void main()
      {
      	int arrResults[72] = { 0, };
      	int index = 0;
      	int result = 0;
      	int inputNum = 0;
      
      	// 구구단 생성
      	{
      
      		for (int i = 2; i < 10; i++)
      		{
      			for (int j = 1; j < 10; j++)
      			{
      				result = i * j;
      				arrResults[index] = result;
      				++index;
      			}
      		}
      	}
      	// 사용자 입력
      	{
      
      		while (true)
      		{
      			std::cout << "구구단 몇 단을 보여드릴까요(2~9) 0번 입력하면 나가기: ";
      			std::cin >> inputNum;
      			std::cout << std::endl;
      			if (inputNum == 0)
      			{
      				break;
      			}
      			else if (inputNum < 2 || inputNum > 9)
      			{
      				std::cout << "2~9 사이를 입력하세요";
      				std::cout << std::endl;
      			}
      			else 
      			{
      				for (int i = 0; i < 9; i++)
      				{
      					int indexResult = ((inputNum - 2) * 9) + i;
      					int cacheResult = arrResults[indexResult];
      					std::cout << inputNum << "X" << i + 1 << "=" << cacheResult << " ";
      				}
      				std::cout << std::endl;
      				break;
      			}
      		}
      	}
      }


    9. [실습] CheckPoint 7
      CheckPoint6에 결과값 캐싱을 2차원 배열로 변경 후 처리
      int arrResults[8][9];

      #include <iostream>
      
      void main()
      {
      	int arrResults[8][9];
      	int index = 0;
      	int result = 0;
      	int inputNum = 0;
      
      	// 구구단 생성
      	{
      		for (int i = 0; i < 8; i++)
      		{
      			for (int j = 0; j < 9; j++)
      			{
      				result = (i+2) * (j+1);
      				arrResults[i][j] = result;
      				++index;
      			}
      		}
      	}
      	// 사용자 입력
      	{
      		while (true)
      		{
      			std::cout << "구구단 몇 단을 보여드릴까요(2~9) 0번 입력하면 나가기: ";
      			std::cin >> inputNum;
      			std::cout << std::endl;
      			if (inputNum == 0)
      			{
      				break;
      			}
      			else if (inputNum < 2 || inputNum > 9)
      			{
      				std::cout << "2~9 사이를 입력하세요";
      				std::cout << std::endl;
      			}
      			else
      			{
      				for (int i = 0; i < 9; i++)
      				{
      					int cacheResult = arrResults[inputNum-2][i];
      					std::cout << inputNum << "X" << i + 1 << "=" << cacheResult << " ";
      				}
      				std::cout << std::endl;
      				break;
      			}
      		}
      	}
      }

 


어려웠던 점

  1. 수업 중에 바로바로 하기에는 아직 시간이 부족했다. 집에서 복습할 때는 괜찮았다.

배운 점

  1. for에서 사용하는 i는 왠만하면 0부터 시작하는게 일관적인 판단을 하는데 도움이 되는 것 같다.

해야 할 일

1. 

반응형