김김김의 게임개발
  • C# #1 프로그래밍 기본 요소, 변수, 자료형, 연산자와 문자열 처리
    2023년 08월 14일 15시 00분 04초에 업로드 된 글입니다.
    작성자: noun06

    내배캠 TIL 11


    기본 코드 구조

    • using System : System 네임스페이스를 사용하기 위한 코드이며 "Console." 클래스 사용을 위해 필요.
    • namespace HelloWorld : 코드의 구성에 사용되며 클래스 등의 일종의 컨테이너(그룹화 하는 역할).
    • class Program : "Program"이라는 이름의 C# 클래스를 정의하는 키워드.
    • static void Main() : 프로그램이 시작할 때 자동으로 호출되는 메서드.
    • Console.WriteLine("Hello World!"); : 콘솔에 "내용" 출력하는 코드.
    // Hello World.cs
    
    using System;
    
    namespace HelloWorld
    {
      class Program
      {
        static void Main(string[] args)
        {
          Console.WriteLine("Hello World!");    
        }
      }
    }

     

    콘솔 출력

    • Console.WriteLine() : 인수로 전달된 값을 출력하고 줄바꿈 문자열 추가.
    • Console.Write() : Console.WriteLine()과 유사하지만 줄바꿈 문자열을 추가하지 않음.
    Console.WriteLine("Hello World!");
    Console.WriteLine(10);
    
    [출력]
    Hello World!
    10
    
    Console.Write("Hello! ");
    Console.Write("We are Learning ");
    
    [출력]
    Hello! We are Learning

     

    이스케이프 시퀀스(Escape Sequence)

    • 문자열 내에 특정 문자를 출력하거나 포함시키기 위해 사용하는 특별한 문자 조합.
    \' 작은 따옴표 삽입
    \" 큰 따옴표 삽입
    \\ 역슬래시 삽입
    \n 줄바꿈 삽입
    \r 현재 줄 맨앞으로 이동
    \t 탭 사입
    \b 백스페이스 삽입 

     

    주석(Comments)

    • 프로그램의 실행에 영향을 미치지 않는 텍스트로, 코드의 의도나 동작을 설명하거나 정보를 전달할 때 사용.
    • VS에서의 단축키 : ctrl + k + c / ctrl + k + u
    //변수 a 를 선언
    int a;
    /*이것은 여러 줄 주석입니다. 
    하지만 //를 많이 사용합니다.*/

     

    자료형(Data Type)

    • 변수가 가질 수 있는 값의 종류와 메모리 저장 방식.
    • 메모리의 효율적인 사용, 정확한 데이터표현, 코드 안정성을 위해 세분화하여 사용함.
    • 아래 표는 주로 사용되는 자료형들임.
    int 정수형 -2,147,483,648 ~ 2,147,483,647
    long 정수형 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
    float 실수형 ±1.5 × 10^-45 ~ ±3.4 × 10^38
    double 실수형 ±5.0 × 10^-324 ~ ±1.7 × 10^308
    char 문자형 유니코드 문자
    string 문자열 유니코드 문자열
    bool 논리형 유니코드 문자

     

    리터럴(literal)

    • 프로그램에서 상수 값을 나타내는 고정된 값을 의미, 각 자료형 마다의 표기법이 존재. 
    int num = 10;
    float f = 3.14f;
    char c = 'A';
    string str = "Hello, World!";

     

    변수의 선언과 초기화

    • 변수(Variables) : 데이터를 저장하고 사용하기 위한 할당받은 메모리 공간.
    • 변수의 선언 : 변수의 이름을 지정하고, 자료형을 명시하는 단계.
    int myNumber;

     

    • 변수의 초기화 : 변수에 값을 할당하는 단계. 할당 연산자(=)를 사용하여 값을 대입.
    myNumber = 42; // 변수 myNumber에 42를 할당하여 초기화

     

    • 변수의 선언과 초기화는 동시에 가능.

     

    변수명

    • 키워드 : 프로그래밍에서 이미 예약되어있는 단어로 특정 의미나 기능을 나타내기 위해 사용.
    • 식별자 : 변수, 메서드, 클래스, 인터페이스 등에 사용되는 이름으로 키워드의 이름을 사용할 수 없음.
    • 코드 컨벤션 : 개발자들 사이의 약속된 코드 작성 규칙, 가독성 향상 및 쉬운 유지 보수를 위해 사용. 
    PascalCase 클래스, 메서드, 프로퍼티 이름 등에 사용 단어의 첫글자는 대문자로(ClassName, MethodName) 
    camelCase 변수, 매개변수, 로컬 변수 이름등에 사용 단어의 첫글자는 소문자로(varaibleName, parameterName)
    • 위 표는 식별자 표기법 관련 사항이며, 이외에도 들여쓰기, 중괄호 위치, 빈 줄 사용, 주석 등의 코드 컨벤션이 있음.

     

    형변환

    • 형변환(Type Casting) : 자료형의 값을 다른 자료형으로 변환하는 과정으로, 다른 자료형 간의 연산, 할당 시 필요.
    • 명시적 형변환(Explicit Type Conversion) : 의도적으로 자료형을 변환하는 경우. (데이터 손실에 주의)
    int num1 = 10;
    long num2 = (long)num1;   // int를 long으로 명시적 형변환

     

    • 암시적 형변환(Implicit Type Conversion) : 자동으로 자료형을 변환하는 경우. (보통 작은 자료형에서 큰 자료형 변환)
    int num1 = 10;
    float num2 = 3.14f;
    float result = num1 + num2;  // int형과 float형의 덧셈에서 float형으로 암시적 형변환

     

    콘솔 입력

    • Console.ReadLine() : 콘솔에서 사용자의 텍스트 입력을 받을 때 사용. 사용자가 입력한 값을 문자열로 반환.
    • 사용자가 입력한 값을 문자열로 반환하므로, 숫자나 논리형의 경우 형변환이 필수적임.
    Console.Write("이름을 입력하세요: ");
    string name = Console.ReadLine(); // 사용자의 입력을 받아 문자열로 저장
    
    Console.WriteLine("안녕하세요, " + name + "님!"); // 입력받은 이름을 사용하여 출력

     

    • string.Split() : 여러 개의 값을 한줄에 입력받고 싶을 때 사용. 특정 구분자를 기준으로 문자열을 조각으로 나누어 처리
    Console.Write("Enter two numbers: ");
    string input = Console.ReadLine();    // "10 20"과 같은 문자열을 입력받음
    
    string[] numbers = input.Split(' ');  // 문자열을 공백으로 구분하여 배열로 만듦
    int num1 = int.Parse(numbers[0]);     // 첫 번째 값을 정수로 변환하여 저장
    int num2 = int.Parse(numbers[1]);     // 두 번째 값을 정수로 변환하여 저장
    
    int sum = num1 + num2;                // 두 수를 더하여 결과를 계산
    
    Console.WriteLine("The sum of {0} and {1} is {2}.", num1, num2, sum);
    
    [출력]
    Enter two numbers: 10 20
    The sum of 10 and 20 is 30.

     

    var 키워드

    • var을 사용하여 변수를 선언하면 변수의 자료형이 초기화하는 값의 자료형에 따라 자동으로 결정. 

     

    산술 연산자

    • 숫자를 대상으로 사용.
    + 덧셈
    - 뺄셈
    * 곱셈
    / 나눗셈
    % 나머지

     

    관계 연산자

    • 두 값을 비교하여 참 혹은 거짓 값을 반환.
    == 같음
    != 다름
    >
    < 작음
    >= 크거나 같음
    <= 작거나 같음

     

    논리 연산자

    • 참 혹은 거짓 값을 대상으로 사용. 
    && AND
    || OR
    ! NOT

     

    비트 연산자

    • 데이터의 비트 단위로 연산을 수행.
    & (AND) 두 비트 값이 모두 1일 때 1을 반환
    | (OR) 두 비트 값 중 하나라도 1일 때 1을 반환
    ^ (XOR) 두 비트 값이 서로 다를 때 1을 반환
    ~ (NOT) 비트 값의 보수(complement)를 반환
    << (왼쪽 시프트) 비트를 왼쪽으로 이동
    >> (오른쪽 시프트) 비트를 오른쪽으로 이동

     

    복합 대입 연산자

    • 변수에 연산을 수행한 결과를 저장하는 연산자.
    += x += y; %= y;
    -= x -= y; x = x - y;
    *= x -= y; x = x * y;
    /= x /= y; x = x / y;
    %= %= y; x = x / y;

    증감 연산자

    • 변수의 값을 1씩 증가시키거나 감소시키는데 사용. 
    • 후위 증감 연산자 : 변수의 값을 먼저 사용한 후 값을 변경.
    • 전위 증감 연산자 : 변수의 값을 변경한 후에 값을 사용. 
    ++ 1 증가
    -- 1 감소

     

    연산자 우선순위

    • 괄호 → 단항 연산자 → 산술 연산자 → 시프트 연산자 → 관계 연산자 → 논리 연산자 → 대입 연산자

     

    문자열 처리 기능 및 메서드

    • 문자열 생성
    string str1 = "Hello, World!"; // 리터럴 문자열 사용
    string str2 = new string('H', 5); // 문자 'H'를 5개로 구성된 문자열 생성

     

    • 연결
    string str1 = "Hello";
    string str2 = "World";
    string str3 = str1 + " " + str2;
    //두 문자열을 공백으로 구분하여 연결한 문자열 str3

     

    • 분할
    string str = "Hello, World!";
    string[] words = str.Split(',');
    //str을 (,)로 구분하여 분할한 문자열 배열 words

     

    • 검색
    string str = "Hello, World!";
    int index = str.IndexOf("World");
    //"World" 문자열의 첫번째 인덱스를 찾아 index 변수에 저장
    //7 출력

     

    • 대체
    string str = "Hello, World!";
    string newStr = str.Replace("World", "Universe");
    //"World" 문자열을 대체한 새로운 문자열 newStr

     

    • 문자열을 숫자로 변환
    string str = "123";
    int num = int.Parse(str);
    //문자열 str을 정수형 숫자로 변환 후 num에 저장

     

    • 숫자를 문자열로 변환
    int num = 123;
    string str = num.ToString();
    //정수형 숫자 num을 문자열로 변환 후 str에 저장

     

    • 문자열 값 비교
    string str1 = "Hello";
    string str2 = "World";
    bool isEqual = str1 == str2;
    //두 문자열 비교 후, isEqual 변수에 결과 저장

     

    • 문자열 대소 비교
    string str1 = "Apple";
    string str2 = "Banana";
    int compare = string.Compare(str1, str2);
    //두 문자열 대소 비교 후 compare 변수에 결과 저장, 비교의 기준은 사전적인 순서.
    //음수값 반환 시 첫번째가 두번째보다 작음, 0 반환 시 같음, 양수값 반환 시 첫번째가 두번째보다 큼.

     

    • 포멧팅
    string name = "John";
    int age = 30;
    
    string message = string.Format("My name is {0} and I'm {1} years old.", name, age);
    //문자열 형식화
    
    string message = $"My name is {name} and I'm {age} years old.";
    //문자열 보간

     

    실습 [1]

    • 이름과 나이를 입력 받고 출력하는 코드를 작성하세요.
    namespace NameAge
    {
        internal class Program
        {
            //이름과 나이를 입력 받고 출력
            static void Main(string[] args)
            {
                Console.Write("이름을 입력하세요: ");
                string name = Console.ReadLine();
    
                Console.Write("나이를 입력하세요: ");
                int age = int.Parse(Console.ReadLine()); //정수형 변환
    
                Console.WriteLine("안녕하세요 {0}!, 당신은 {1} 세 이군요.", name, age);
            }
        }
    }

     

    실습 [2]

    • 두 수를 입력받고 사칙연산의 결과를 출력하세요.
    namespace Calculator
    {
        internal class Program
        {
            //두 수를 입력 받고 사칙연산의 결과를 출력하는 계산기
            static void Main(string[] args)
            {
                Console.Write("첫번째 수를 입력하세요: ");
                int firstNum = int.Parse(Console.ReadLine());
    
                Console.Write("두번째 수를 입력하세요: ");
                int secondNum = int.Parse(Console.ReadLine());
    
                Console.WriteLine("더하기: {0}", firstNum + secondNum);
                Console.WriteLine("빼기: {0}", firstNum - secondNum);
                Console.WriteLine("곱하기: {0}", firstNum * secondNum);
                Console.WriteLine("나누기: {0}", firstNum / secondNum);
            }
        }
    }

     

    실습 [3]

    • 섭씨온도를 입력받아, 화씨온도로 변환하는 프로그램.
    namespace TemperatureConverter
    {
        internal class Program
        {
            //섭씨온도를 화씨온도로 변환
            static void Main(string[] args)
            {
                Console.Write("섭씨 온도를 입력하세요: ");
                int tempCint = int.Parse(Console.ReadLine());
    
                int tempFint = (tempCint * 9 / 5) + 32;
                Console.Write("변환된 화씨온도: {0}", tempFint);
            }
        }
    }

     

    실습 [4]

    • 키(m)와 체중(kg)를 입력받아, BMI 지수를 계산하는 프로그램. 
    namespace BMI
    {
        internal class Program
        {
            //BMI 지수 계산
            static void Main(string[] args)
            {
                Console.Write("키(m): ");
                float height = float.Parse(Console.ReadLine());
    
                Console.Write("체중(kg): ");
                float weight = float.Parse(Console.ReadLine());
    
                float bmi = weight / (float)Math.Pow(height, 2); // Math.Pow(a, b) == a^b
                Console.WriteLine("당신의 BMI 지수는: {0}.", bmi);
        	}
        }
    }

     

     

    'C#' 카테고리의 다른 글

    C# #5 클래스, 객체, 상속, 다형성  (0) 2023.08.16
    C# #4 메서드와 구조체  (0) 2023.08.15
    C# #3 배열과 컬렉션  (0) 2023.08.15
    C# #2 조건문과 반복문  (0) 2023.08.14
    C# #0 - 간단한 예습  (0) 2023.08.11
    댓글