3월 13일 #반복문 #디버거

sejun-Lee·2025년 3월 13일
post-thumbnail

for 반복문

  • 초기화, 조건식, 증감연산 으로 구성된 반복문
			✅몇 회 어떤 기능을 반복해!
            for (초기식; 조건식; 증감연산)
            for (int i = 0; i < 10; i++)  // 10번 반복해
            {
                //반복하고자 하는 내용
                Console.WriteLine("반복 작업 {0}", i);
            }                
            //초기식 : 반복을 몇부터 시작할 것인지?
            //조건식 : 언제까지 할 것인지?


            for (int i = 5; i > 0; i--)
            {
                Console.WriteLine("카운트 다운 {0}", i);
                // 5, 4, 3, 2, 1
            }


            ✅반복문 속에 조건문을 넣을 수 있음
            Console.WriteLine("삼육구!");
            for (int i = 1; i < 10; i++)
            {
                if (i % 3 == 0)
                {
                    Console.WriteLine("짝!!");
                }
                else
                {
                    Console.WriteLine("{0}", i);
                }
            }


            ✅반복문 속에 반복문
            Console.WriteLine("구구단!");
            for (int dan = 2; dan <= 9; dan++)
            {
                Console.WriteLine(" {0}단!", dan);   // 2단, 3단, 4단
                for (int number = 1; number <= 9; number++)
                {   // 2*1 2*2 ..... 9*8  9*9
                    Console.WriteLine("{0} * {1} 는 {2}", dan, number, dan * number);
                }
                Console.WriteLine();    // 각 단 끝날때마다 줄 간격 띄움
            }

반복문 while

  • 조건식의 true, false에 따라 블록을 반복하는 반복문
            ✅동전교환기
            int coin = 500;
            while (coin > 0)
            {
                Console.WriteLine("100원 동전을 꺼냅니다.");
                coin -= 100;
            }


            int count = 0;
            bool flag = true;
            int toLoop = 10;    // 총 돌 횟수

            while (flag)
            {
                Console.WriteLine($"현재 {count}회 작동중입니다. "); //현재 카운트 횟수 출력
                count++;

                if (count > toLoop)
                {
                    flag = false;
                    Console.WriteLine("정비가 되어야 할 장비!");
                }
            }

do while 반복문

  • 블록을 한번 실행 한 후 조건식의 true, false에 따라 블록을 반복하는 반복문
            ✅일단 한번 실행 한 후 조건을 확인함
            int choice;
            do
            {
                Console.WriteLine("1에서 9사이의 수를 입력하세요 : ");
                string input = Console.ReadLine();
                int.TryParse(input, out choice);
            } while ((1 <= choice && choice <= 9) == false);

            ✅조건을 미리 확인 하고 실행이 불가능 하기 때문에 오류 -> do while을 사용해야함
            /*
            while ((1 <= choice && choice <= 9) == false)
            {
                Console.WriteLine("1에서 9사이의 수를 입력하세요 : ");
                string input = Console.ReadLine();
                int.TryParse(input, out choice);
            }
            */

break 제어문

  • 가장 가까운 반복문을 종료
            ✅반복문 while 키워드 [break] 가장 가까운 반복문을 멈추고 넘어감
            ✅무한히 증가하다가 조건이 맞으면 멈추는 기능 제작

            while (true)
            {
                Console.WriteLine("1");
                Console.WriteLine("2");
                Console.WriteLine("3");
                Console.WriteLine("4");

                break;

                Console.WriteLine("5");
                Console.WriteLine("6");
                Console.WriteLine("7");
                Console.WriteLine("8");
            }

            int potionPos = 5;
            for (int i = 1; i < 1000; i++)
            {
                Console.WriteLine("{0}번째칸에 포션이 있는지 확인합니다.", i);
                if (i == potionPos)
                {
                    Console.WriteLine("포션을 찾았습니다.");
                    Console.WriteLine("포션을 찾았습니다.");
                    break;
                }
            }

            while (true)
            {
                Console.WriteLine("1. 공격한다 2. 방어한다 3. 도망친다 ");
                Console.Write("행동을 선택하세요 : ");

                string input = Console.ReadLine();

                if (input == "1")
                {
                    Console.WriteLine("플레이어가 공격합니다.");
                }
                else if (input == "2")
                {
                    Console.WriteLine("플레이어가 방어합니다.");
                }
                else if (input == "3")
                {
                    Console.WriteLine("플레이어가 도망칩니다..");
                    break;
                }
                else
                {
                    Console.WriteLine("잘못 입력했습니다.");
                }
                Console.WriteLine();
            }

            int num = 35;
            for (int i = 2; i < num; i++)
            {
                if (num % i == 0)
                {
                    Console.WriteLine($"{num}을 나눌 수 있는 가장 작은 수는 {i}이다");
                    break;
                }
            }

continue 제어문

  • 가장 가까운 반복문의 새 반복을 시작
            while (true)
            {
                Console.WriteLine("1");
                Console.WriteLine("2");
                Console.WriteLine("3");

                continue; //1,2,3 무한이 입력됨.

                Console.WriteLine("4");
                Console.WriteLine("5");
                Console.WriteLine("6");
            }4번 플레이어가 무적이야, 6번 플레이어는 내 캐릭이야.
            for (int i = 1; i <= 8; i++)
            {
                if (i == 4)
                {
                    Console.WriteLine("4번 플레이어는 무적이라 공격하지 못합니다.");
                    continue;   //시작으로 돌아가서 5 부터 다시 실행
                }
                if (i == 6)
                {
                    Console.WriteLine("6번 플레이어는 내 캐릭터라서 공격하지 않습니다.");
                    continue;   //시작으로 돌아가서 7 부터 다시 실행
                }
                Console.WriteLine("{0}번 플레이어를 공격합니다.", i);
                // 1,2,3 ,5, 7, 8,9 공격
            }


디버거

✅디버거 F11 눌러서 한단계 한단계씩 진행사항을 확인할 수 있음.
✅F9를 누르거나 왼쪽 회색 새로바에 빨간색 중단점을 찍으면, F5 실행시 빨간 점 부분에서 멈춤 
int value = 0;
int attack = 100;
int level = 1;
// F11 디버거 중 마우스 오른쪽 버튼을 눌러서 조사식 추가 가능 (즐겨찾기?)
value++;
value++;
value++;
attack++;
Console.WriteLine(value);
value++;
value++;
value++;
level++;
Console.WriteLine(value);
value++;
value++;
value++;
value++;
level++;
value++;
Console.WriteLine(value);

✅디버거가 필요한 이유 -> 컴퓨터가 완전무결하지는 않다. 오차,한계가 있을수 있다.


uint value = 170;

while (true)
{
    value *= 2;
    Console.WriteLine(value);
}
✅정상적으로 나오다가 0이 무한이 출력. uint가 표현할 수 있는 범위를 넘어섬
profile
초보 개발자

0개의 댓글