팀스파르타 내일배움캠프

[사전캠프 11일차] C# 걷기반 재재재복습

creator2041 2025. 3. 31. 17:31

Lv.1 데이터와 연산자!

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

using System;

class Variable
{
    static void Main(string[] args)
    {
        // 정수형 변수 선언 및 초기화
        int level = 10;         // 현재 레벨 값
        int count = 100;        // 카운트(횟수) 값
        
        // 실수형 변수 선언 (float는 소수점 이하 7자리 정도의 정밀도를 가짐)
        float percentage = 0.5f; // 백분율(50%를 의미)
        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(); // int형을 문자열로 변환
        string sf = f.ToString(); // float형을 문자열로 변환

        // 문자열을 숫자로 변환하기
        string strten = "10";
        string strsix = "6.2";
        int Iten = Convert.ToInt32(strten); // Convert는 null값도 처리 가능 (문자열 -> 정수)
        float Isix = float.Parse(strsix);     // Parse는 문자열만 처리하며, null값은 에러 발생

        /* Convert와 Parse의 차이:
           - Convert: null 값을 처리할 수 있으며, 다양한 데이터 타입 간의 변환이 가능
           - Parse: 문자열만 변환하며, null 값이 들어오면 예외 발생
        */
    }
}

 chapter2. 연산자 실습

using System;

class VariableandOperator
{
    static void Main(string[] args)
    {
        // 산술 연산 및 대입 연산자 예제
        int ten = 10;
        ten += 7;                     // 10 + 7 = 17
        ten -= 3;                     // 17 - 3 = 14
        ten *= 2;                     // 14 * 2 = 28
        ten = (int)((float)ten * 1.5);  // 28을 float형으로 변환 후 1.5배, 다시 int형으로 변환 (42가 예상됨)
        ten /= 3;                     // 42 / 3 = 14 (정수 나눗셈)
        ten %= 4;                     // 14 % 4 = 2 (나머지 연산)
        Console.WriteLine(ten);       // 최종 결과 출력

        // 문자열 보간법을 사용한 문자열 합치기 예제
        string name = "patric";
        int year = 2025;
        string introduce = $"안녕하세요. 제 이름은 {name}입니다."; // 변수 name을 문자열 내에 포함
        string thisYear = $"올해는 {year}년 입니다.";             // 변수 year를 문자열 내에 포함

        // 비교 연산자 사용 예제
        int new_ten = 10;
        bool result_1 = new_ten == 10; // new_ten이 10과 같은지 비교
        bool result_2 = new_ten != 11; // new_ten이 11과 다른지 비교
        bool result_3 = new_ten < 20;  // new_ten이 20보다 작은지 비교
        bool result_4 = new_ten > 5;   // new_ten이 5보다 큰지 비교

        // 결과를 한 줄에 연속해서 출력 (줄바꿈 없이)
        Console.Write(result_1);
        Console.Write(result_2);
        Console.Write(result_3);
        Console.Write(result_4);

        /* 산술연산의 우선순위:
           - 곱셈, 나눗셈, 모듈로(%)가 덧셈, 뺄셈보다 우선 적용됨.
           - 괄호가 있으면 내부 연산을 먼저 계산함.
        */
    }
}

 chapter3. 연산자 실습

using System;

namespace DataAndOperators
{
    class VariableandOperator
    {
        static void Main(string[] args)
        {
            // 사용자로부터 임의의 입력을 받아 해당 데이터 타입을 판별
            Console.WriteLine("임의의 무언가를 입력해주십시오.");
            string input = Console.ReadLine();

            // int.TryParse: 입력값을 정수로 변환 시도 (변환 성공 시 true)
            // 주의: year 변수가 미리 선언되지 않았으므로 아래처럼 임시 변수 사용
            if (int.TryParse(input, out int year))
            {
                Console.WriteLine("입력받은 데이터는 숫자입니다.");
            }
            // bool.TryParse: 입력값을 불리언으로 변환 시도 (true/false)
            else if (bool.TryParse(input, out bool boolValue))
            {
                Console.WriteLine("입력받은 데이터는 불리언입니다.");
            }
            else
            {
                // 위 두 경우에 해당되지 않으면 문자열로 간주
                Console.WriteLine("입력받은 데이터는 문자열입니다.");
            }

            // 입력받은 값이 숫자인지 확인 후, 그 숫자가 100 미만인지 이상인지를 판별
            Console.WriteLine("이번엔 임의의 숫자를 입력해주십시오.");
            string input2 = Console.ReadLine();
            if (int.TryParse(input2, out int number))
            {
                if (number < 100)
                {
                    Console.WriteLine($"{number}은(는) 100 보다 작은 수 입니다.");
                }
                else // number가 100 이상일 경우
                {
                    Console.WriteLine($"{number}은(는) 100 보다 같거나 큰 수 입니다."); 
                }    
            }
            else
            {
                // 숫자 변환에 실패하면 안내 메시지 출력
                Console.WriteLine("숫자가 아닙니다.");
            }

            // 홀수와 짝수를 판별하는 예제
            Console.WriteLine("이번엔 전혀 다른 임의의 숫자를 입력해주십시오.");
            string input3 = Console.ReadLine();
            if (int.TryParse(input3, out int num))
            {
                // num % 2 연산을 통해 홀수(나머지 1)와 짝수를 판단
                if (num % 2 != 0)
                {
                    Console.WriteLine($"{num} 은(는) 홀수입니다.");
                }    
                else
                {
                    Console.WriteLine($"{num} 은(는) 짝수입니다.");
                }
            }
            else
            {
                Console.WriteLine("숫자가 아닙니다");
            }

            /* if와 switch의 차이:
               - if문: 조건식에 따라 다양한 형태의 로직 구현이 가능
               - switch문: 주어진 값에 따른 여러 선택지(case)를 단순하게 처리할 때 유용
            */
        }
    }
}

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();
            // 두 개의 입력값을 각각 input과 input2에 저장

            // 두 입력 모두 숫자로 변환이 실패한 경우 처리
            if (!int.TryParse(input2, out int number2) && !int.TryParse(input, out int num2))
            {
                Console.WriteLine("두 데이터 모두 숫자가 아닙니다.");
            }
            // 두 입력 모두 숫자로 변환이 성공한 경우 처리
            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("하나의 데이터만 숫자입니다.");
            }
        }
    }
}

 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();

            // 입력받은 값을 정수로 변환한 후 switch 문으로 분기 처리
            switch(Convert.ToInt32(input))
            {
                case 1:
                    Console.WriteLine("오답입니다!");
                    break;
                case 2:
                    Console.WriteLine("오답입니다!");
                    break;
                case 3:
                    Console.WriteLine("정답입니다!");
                    break;
                case 4:
                    Console.WriteLine("오답입니다");
                    break;
                default:
                    // 예상 외의 입력에 대한 처리 (필요시 추가)
                    Console.WriteLine("1부터 4 사이의 숫자를 입력해주세요.");
                    break;
            }
            // 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();

            // 입력값이 정수로 변환 가능한지 검사
            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
                {
                    // 1~4 외의 숫자가 입력된 경우 처리
                    Console.WriteLine("1부터 4까지의 숫자 중 하나를 입력해주세요.");
                }
            }
            else
            {
                // 입력값이 숫자가 아닌 경우
                Console.WriteLine("1~4의 숫자를 입력해주세요.");
            }
        }
    }
}

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

using System;

namespace DataAndOperators
{
    class Controller
    {
        static void Main(string[] args)
        {
            // 올바른 이름이 입력되었는지 여부를 확인하는 플래그 변수 (초기값: false)
            bool isSuccess = false;

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

                // 사용자가 입력한 이름을 변수에 저장
                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반복문의 개념에서 멈칫 멈칫했지만. 다행히 극복!