팀스파르타 내일배움캠프

[사전캠프 7일차] C# 걷기 복습 또 복습!

creator2041 2025. 3. 25. 16:55

오늘은 고민이 아니라. 제대로 해보는 시간! 머리가 나쁘면 여러번 해보기라도 하자!

using System;

namespace DataAndOperators
{
    class Variable
    {
        static void Main(string[] args)
        {
        }
    }
}

위 코드를 통해. 걷기의 여러 과정들을 각각 하나하나씩의 네임스페이스로 묶어버릴것이다!

각 과정내 챕터들은 class로 구분 예정!

Lv.1 데이터와 연산자!

 chapter1. 데이터(변수) 다루기!

    class Variable
    {
        static void Main(string[] args)
        {
            int level = 10;
            int count = 100;
            float percentage = 0.5f;
            float speed = 1.5f;
            string nickName = "John";
            string description = "This is a description";

            Console.WriteLine(level);
            Console.WriteLine(count);
            Console.WriteLine(percentage);
            Console.WriteLine(speed);
            Console.WriteLine(nickName);
            Console.WriteLine(description);
            //호출되지 않았다는 경고를 없애기 위해 사용

            int iten = 10;
            float ften = (float)iten;

            float fFive = 5.0f;
            int iFive = (int)fFive;
            //숫자끼리의 형변환

            int n = 10;
            float f = 0.5f;

            string sn = n.ToString();
            string sf = f.ToString();
            //숫자를 문자열로 변환

            string strten = "10";
            string strsix = "6.2";

            int Iten = Convert.ToInt32(strten);
            float Isix = float.Parse(strsix);
            //문자열을 숫자(정수, 실수)로 변환

            /*Convert와 Parse의 차이는 생각보다 간단한데,
             Convert는 null값을 처리할 수 있지만, Parse는 null값을 처리할 수 없다.
             거기에 추가적으로, convert는 다른 데이터 타입을 변환할 수 있지만, Parse는 string만 변환할 수 있다.*/

        }
    }

 chapter2. 연산자 실습

    class VariableandOperator
    {
        static void Main(string[] args)
        {
            int ten = 10;
            ten += 7;
            ten -= 3;
            ten *= 2;
            ten = (int)((float)ten * 1.5);
            ten /= 3;
            ten %= 4;
            Console.WriteLine(ten);
            //대입 연산자를 활용한 사칙연산

            string name = "patric";
            int year = 2025;

            string introduce = $"안녕하세요. 제 이름은 {name}입니다.";
            string thisYear = $"올해는 {year}년 입니다.";
            //변수를 활용한 문자열의 작성
            //문제의 의도는 더하기 연산자를 사용하는 것이지만, 보간을 활용하여 더 효율적으로 만듬
            //더하기 부호를 사용할경우 "안녕하세요."+" 제 이름은 "+name+"입니다." 이렇게 쓰는 것과 같다.

            int new_ten = 10;

            bool result_1 = new_ten == 10;
            bool result_2 = new_ten != 11;
            bool result_3 = new_ten < 20;
            bool result_4 = new_ten > 5;
            Console.Write(result_1);
            Console.Write(result_2);
            Console.Write(result_3);
            Console.Write(result_4);
            //비교 연산자를 활용한 결과값 출력
            //원래는 console.writeLine을 활용. 하지만, 결과값의 지나친 줄바꿈을 막기 위해 console.write를 사용
            //문제의 의도는 그저 논리연산을 만들어 보는것이기 때문에. 전혀 무방.

            /*사칙연산간의 우선순위는 너무 나도 쉬운 정답.
             당연히 곱셈과 나눗셈이 먼저이고 덧셈과 뺄셈이 후순위. but 괄호가 있는 내부의 것을 먼저 계산하는 것이다.*/
        }
    }

 chapter3. 연산자 실습

using System;

namespace DataAndOperators
{
    class VariableandOperator
    {
        static void Main(string[] args)
        {
            Console.WriteLine("임의의 무언가를 입력해주십시오.");
            string input = Console.ReadLine();

            if ( int.TryParse( input, out year ) )
            {
                Console.WriteLine("입력받은 데이터는 숫자입니다.");
            }
            else if(bool.TryParse( input,out bool Bool))
            {
                Console.WriteLine("입력받은 데이터는 불리언입니다.");
            }
            else
            {
                Console.WriteLine("입력받은 데이터는 문자열입니다.");
            }
            //입력받는 데이터값을 TryParse를 통해 구분하는것이다. 즉. year은 인트로 출력되야 true가 되기 때문에. if는 조건들을 true로 받아들여 밑의 값을 실행한다.


            Console.WriteLine("이번엔 임의의 숫자를 입력해주십시오.");
            string input2 = Console.ReadLine();
            if ( int.TryParse( input2,out int number))
            {
                if ( number < 100 )
                {
                    Console.WriteLine($"{number}은(는) 100 보다 작은 수 입니다.");
                }
                else if( number >= 100)
                {
                    Console.WriteLine($"{number}은(는) 100 보다 같거나 큰 수 입니다."); 
                }    
            }
            else
            {
                Console.WriteLine("숫자가 아닙니다.");
            }
            //입력받는 데이터값이 숫자인지 아닌지를 1차적으로 구분. 그 조건문 안에서 숫자일경우에 또 100이상과 미만으로 나눠 출력한다


            Console.WriteLine("이번엔 전혀 다른 임의의 숫자를 입력해주십시오.");
            string input3 = Console.ReadLine();
            if( int.TryParse( input3,out int num))
            {
                if( num % 2 != 0)
                {
                    Console.WriteLine($"{num} 은(는) 홀수입니다.");
                }    
                else
                {
                    Console.WriteLine($"{num} 은(는) 짝수입니다.");
                }
            }
            else
            {
                Console.WriteLine("숫자가 아닙니다");
            }
            //위와 동일하지만. 내부 조건이 변함. 짝수 홀수의 구분으로.

            /*사실 언제 if를 쓰냐, 언제 case를 쓰냐는 간단하다.
             switch 문은 선택지가 주어질때 사용한다. 즉, 내가 어떤 번호에 할당된 무언가를 충족할때, 무언가를 한다.
             if문은 말 그대로 그런 한계가 없다. 정해진 조건이 아니라. 만약 이렇다면....이렇게 해라! 라고 지시하는것.*/
        }
    }
}

Lv.2 제어문!

 chapter1. 숫자 검증!

using System;

namespace DataAndOperators
{
    class Controller
    {
        static void Main(string[] args)
        {
            Console.WriteLine("첫번째 수를 입력해주세요.");
            string input = Console.ReadLine();
            Console.WriteLine("두번째 수를 입력해주세요.");
            string input2 = Console.ReadLine();
            //두개의 데이터를 입력하게 함.

            if (!int.TryParse(input2, out int number2) && !int.TryParse(input, out int num2))
            {
                Console.WriteLine("두 데이터 모두 숫자가 아닙니다.");
            }
            //두 데이터가 둘 다(&&==and)숫자가 아닐경우 출력되게 함

            else if (int.TryParse(input2, out number2) && int.TryParse(input, out num2))
            {
                Console.WriteLine("두 데이터는 모두 숫자입니다.");
                if (number2 == num2)
                {
                    Console.WriteLine($"{number2}와(과) {num2}은(는) 같습니다.");
                }
                else if(number2 > num2)
                {
                    Console.WriteLine($"{number2}은(는) {num2}보다 큽니다.");
                }
                else
                {
                    Console.WriteLine($"{number2}(는) {num2}보다 작습니다.");
                }
            }
            //두 데이터가 모두 숫자일경우 출력하게 함. 그 상태에서. 숫자인 두 데이터를 받아, 값을 비교하게 함.

            else if (!int.TryParse(input2, out number2) || int.TryParse(input, out num2))
            {
                Console.WriteLine("하나의 데이터만 숫자입니다.");
            }
            //두 데이터 중 하나만(|| == or)숫자일 경우 출력되게 함

        }
    }
}

 chapter2. Switch를 활용한 간단한 퀴즈내기!

using System;

namespace DataAndOperators
{
    class Controller
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Q. 대한민국의 수도는 어디일까요?");
            Console.WriteLine("1.인 천    2.평 창    3.서 울    4.부 산");
            string input = Console.ReadLine();
            //말 그대로, 퀴즈를 문자열로 출력후에, ReadLine으로 입력하게 해준것.

            switch(Convert.ToInt32(input))
            {
                case 1:
                    Console.WriteLine("오답입니다!");
                    break;
                case 2:
                    Console.WriteLine("오답입니다!");
                    break;
                case 3:
                    Console.WriteLine("정답입니다!");
                    break;
                case 4:
                    Console.WriteLine("오답입니다");
                    break;
            }
            //switch함수를 활용. 주어진 case 번호를 누르면, 해당 값이 출력되게 만들어줌.
            //switch의 특성상. break를 하지 않으면 무한 루프의 굴레에 빠질수있음!
        }
    }
}

 chapter3. 제시된 문제 외의 닶을 입력할경우의 처리!

using System;

namespace DataAndOperators
{
    class Controller
    {
        static void Main(string[] args)
        {
            Console.WriteLine("어디로 여행을 가고 싶나요?");
            Console.WriteLine("1.제주도   2.코타키나발루   3.싱가포르   4.태국");
            string input = Console.ReadLine();
            //말 그대로, 질문을 문자열로 출력후에, ReadLine으로 입력하게 해준것.

            if(int.TryParse(input, out int A))
            {
                if(A ==1)
                {
                    Console.WriteLine("제주도는 한국의 섬으로 비교적 방문이 쉽고 다양한 놀거리 / 먹거리가 준비되어 있습니다.");
                }
                else if(A ==2)
                {
                    Console.WriteLine("코타키나발루는 말레이시아 사바주의 주도로, 말레이시아 동부 보르네오섬 최대의 도시입니다.");
                }
                else if(A ==3)
                {
                    Console.WriteLine("싱가포르는 동남아시아, 말레이 반도의 끝에 위치한 섬나라이자 항구 도시로 이루어진 도시 국가입니다.");
                }
                else if(A ==4)
                {
                    Console.WriteLine("태국은 중국문화, 말레이문화, 불교문화, 힌두문화, 이슬람 문화가 혼재되어 있습니다. 불교적인 모습을 많이 띄지만, 문화 자체는 색다르고 스펙트럼이 넓은 형태를 띄고 있어요.");
                }
            }
            else
            {
                Console.WriteLine("1~4의 숫자를 입력해주세요.");
            }
            //기존 switch함수에서 변동을 주는것보다 빠르게.
            //if 조건문을 통해 검증을 할수있도록 함.
            //bool isint = int.TryParse(input, out num) 으로 한 후. switch를 그대로 사용해주는 방법도 있음(아마, 경우의 수가 많아져서 switch가 효율적일땐 이렇게 할듯)
            //그러나, 굳이 변수 추가 할당이 필요없는 규모라고 판단. if를 통해 검증함
        }
    }
}

 chapter4. 이름을 입력하게 하고. do while 반복문을 활용. 틀리면 다시 입력하게!

using System;

namespace DataAndOperators
{
    class Controller
    {
        static void Main(string[] args)
        {
            bool isSuccess = false;
            // 프로그램이 성공적으로 실행되었는지 확인하는 변수
            // false로 시작하고, 올바른 이름이 입력되면 true로 변경됩니다

            // 사용자가 올바른 이름을 입력할 때까지 반복
            do
            {
                // 사용자에게 이름 입력 안내 메시지 출력
                Console.WriteLine("이름을 입력해주세요(3~10글자)");

                // 사용자가 입력한 이름을 name 변수에 저장
                string name = Console.ReadLine();

                // 입력된 이름의 길이 확인
                int length = name.Length;

                // 화면 지우기
                Console.Clear();

                // 이름 길이가 조건(3~10글자)에 맞는지 확인
                if (length < 3 || length > 10)
                {
                    // 이름이 조건에 맞지 않으면 오류 메시지 출력
                    Console.WriteLine("이름을 확인해주세요!");
                    // isSuccess는 여전히 false이므로 반복문이 계속됩니다
                }
                else 
                {
                    Console.WriteLine($"안녕하세요 제 이름은 {name} 입니다.");

                    // 성공 플래그를 true로 설정하여 반복문 종료
                    isSuccess = true;
                }
            }
            while (!isSuccess);  // isSuccess가 false인 동안 계속 반복
        }
    }
}

 

 

오늘 공부 사항

-복습과 반복의 개념으로 복습해봄. 내일부터는 달리기를 나갈수있을 것 같음.

-내일 오전에도 꾸준하게 복습 필요.

-나이 탓이든 군대 탓이든. 머리가 부족하면 깡 반복으로. 깡 따라하기로 해결한다!

-힌트 없이 해결하는데 성공. do-while반복문의 개념에서 멈칫 멈칫했지만. 다행히 극복!