1780 단어
9 분
C# 기초 문법
2024-10-02

이번 시간에는 C#의 기초에 대해서 배워보도록 하겠습니다. 이 순서대로 알려드리도록 하겠습니다.

  1. C# 기본 구조: Main 메서드, 기본 입출력 (콘솔 입출력)
  2. 자료형 및 변수: 기본 자료형, 변수 선언, 상수
  3. 연산자: 산술, 비교, 논리 연산자
  4. 조건문: if, else if, switch
  5. 반복문: for, while, do-while, foreach
  6. 배열 및 리스트: 1차원 배열, 다차원 배열, List, Dictionary<K,V>
  7. 메서드: 메서드 정의와 호출, 매개변수, 반환값
  8. 예외 처리: try, catch, finally, 예외 던지기 (throw)


1. C# 기본 구조: Main 메서드, 기본 입출력 (콘솔 입출력)#

C# 프로그램은 기본적으로 Main 메서드에서 실행이 시작됩니다. Main 메서드는 프로그램의 진입점(entry point)이며, 모든 프로그램은 이 메서드를 가지고 있어야 합니다. C#에서 기본 입출력은 Console 클래스를 사용하여 처리할 수 있습니다. 이 클래스는 입력을 받을 때는 Console.ReadLine()을, 출력을 할 때는 Console.WriteLine()을 사용합니다.

NOTE

매소드란 쉽게 말해 특정 작업을 수행하는 코드 블록으로, 호출될 때 실행되는 함수라고 보면됩니다.

예시:#

using System;

class Program
{
    // 프로그램의 진입점 (entry point)
    static void Main(string[] args)
    {
        // 기본 출력
        Console.WriteLine("Hello, World!");

        // 입력 받기
        Console.Write("이름을 입력하세요: ");
        string name = Console.ReadLine();

        // 입력 받은 값을 출력
        Console.WriteLine("안녕하세요, " + name + "님!");
    }
}

이 프로그램은 콘솔에 “Hello, World!”를 출력하고, 사용자의 이름을 입력받은 후 “안녕하세요, [이름]님!”을 출력하는 코드입니다.


2. 자료형 및 변수: 기본 자료형, 변수 선언, 상수#

C#에서는 여러 종류의 자료형이 있습니다. 자료형은 데이터를 저장할 수 있는 형식을 나타냅니다. 변수는 데이터를 저장하는 공간이며, 특정 자료형으로 선언됩니다. 또한, 상수는 변하지 않는 값을 저장하는 데 사용됩니다.

  • 기본 자료형: int, double, char, bool, string
  • 변수 선언: 자료형 변수이름 = 값;
  • 상수: const 키워드를 사용하여 선언, 이후 값 변경 불가능

예시:#

using System;

class Program
{
    static void Main(string[] args)
    {
        // 변수 선언 및 초기화
        int age = 25;
        double height = 1.75;
        char grade = 'A';
        bool isStudent = true;
        string name = "Alice";

        // 상수 선언
        const double PI = 3.14159;

        // 출력
        Console.WriteLine("이름: " + name);
        Console.WriteLine("나이: " + age);
        Console.WriteLine("키: " + height);
        Console.WriteLine("학점: " + grade);
        Console.WriteLine("학생 여부: " + isStudent);
        Console.WriteLine("원주율: " + PI);
    }
}

3. 연산자: 산술, 비교, 논리 연산자#

연산자는 값을 처리하고 계산하는 데 사용됩니다. C#은 다양한 종류의 연산자를 지원합니다.

  • 산술 연산자: +, -, *, /, % (덧셈, 뺄셈, 곱셈, 나눗셈, 나머지)
  • 비교 연산자: ==, !=, <, >, <=, >=
  • 논리 연산자: &&, ||, ! (AND, OR, NOT)

예시:#

using System;

class Program
{
    static void Main(string[] args)
    {
        int a = 10;
        int b = 20;

        // 산술 연산자
        int sum = a + b;
        int difference = a - b;

        // 비교 연산자
        bool isEqual = a == b;
        bool isLessThan = a < b;

        // 논리 연산자
        bool isTrue = (a < b) && (b > 15);

        // 출력
        Console.WriteLine("합계: " + sum);
        Console.WriteLine("차이: " + difference);
        Console.WriteLine("a와 b는 같은가? " + isEqual);
        Console.WriteLine("a는 b보다 작은가? " + isLessThan);
        Console.WriteLine("a < b AND b > 15: " + isTrue);
    }
}

4. 조건문: if, else if, switch#

조건문은 프로그램에서 특정 조건에 따라 다른 코드가 실행되도록 제어합니다.

  • if: 주어진 조건이 true일 때만 실행
  • else if: 여러 조건을 평가할 때 사용
  • else: 위의 조건들이 모두 false일 때 실행
  • switch: 하나의 변수 값을 여러 경우와 비교할 때 사용

예시:#

using System;

class Program
{
    static void Main(string[] args)
    {
        int score = 85;

        // if-else 조건문
        if (score >= 90)
        {
            Console.WriteLine("A 학점");
        }
        else if (score >= 80)
        {
            Console.WriteLine("B 학점");
        }
        else
        {
            Console.WriteLine("C 학점");
        }

        // switch문
        int dayOfWeek = 3;
        switch (dayOfWeek)
        {
            case 1:
                Console.WriteLine("월요일");
                break;
            case 2:
                Console.WriteLine("화요일");
                break;
            case 3:
                Console.WriteLine("수요일");
                break;
            default:
                Console.WriteLine("기타");
                break;
        }
    }
}

5. 반복문: for, while, do-while, foreach#

반복문은 특정 코드 블록을 여러 번 실행하는 데 사용됩니다.

  • for: 반복 횟수가 정해졌을 때 사용
  • while: 조건이 true인 동안 반복
  • do-while: 코드가 최소 한 번 실행된 후 조건을 평가
  • foreach: 배열이나 컬렉션의 요소를 순회할 때 사용

예시:#

using System;

class Program
{
    static void Main(string[] args)
    {
        // for 반복문
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine("for: " + i);
        }

        // while 반복문
        int j = 1;
        while (j <= 5)
        {
            Console.WriteLine("while: " + j);
            j++;
        }

        // do-while 반복문
        int k = 1;
        do
        {
            Console.WriteLine("do-while: " + k);
            k++;
        }
        while (k <= 5);

        // foreach 반복문
        string[] fruits = { "사과", "바나나", "포도" };
        foreach (string fruit in fruits)
        {
            Console.WriteLine("foreach: " + fruit);
        }
    }
}

6. 배열 및 리스트: 1차원 배열, 다차원 배열, List, Dictionary<K,V>#

배열과 리스트는 데이터를 순차적으로 저장할 수 있는 자료구조입니다.

  • 1차원 배열: 단일 차원의 배열
  • 다차원 배열: 여러 차원의 배열
  • List: 동적 배열처럼 크기가 가변적인 자료구조
  • Dictionary<K,V>: 키와 값을 쌍으로 저장하는 자료구조

예시:#

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // 1차원 배열
        int[] numbers = { 1, 2, 3, 4, 5 };

        // 다차원 배열
        int[,] matrix = { { 1, 2 }, { 3, 4 } };

        // List<T>
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };

        // Dictionary<K,V>
        Dictionary<string, int> ages = new Dictionary<string, int>
        {
            { "Alice", 25 },
            { "Bob", 30 }
        };

        // 출력
        Console.WriteLine("배열 첫 번째 값: " + numbers[0]);
        Console.WriteLine("행렬 값: " + matrix[0, 1]);
        Console.WriteLine("첫 번째 이름: " + names[0]);
        Console.WriteLine("Alice의 나이: " + ages["Alice"]);
    }
}

7. 메서드: 메서드 정의와 호출, 매개변수, 반환값#

메서드는 특정 작업을 수행하는 코드 블록입니다. 매개변수를 받을 수 있으며, 결과값을 반환할 수 있습니다.

예시:#

using System;

class Program
{
    // 메서드 정의
    static int Add(int a, int b)
    {
        return a + b;
    }

    static void Main(string[] args)
    {
        // 메서드 호출
        int result = Add(3, 4);

        // 출력
        Console.WriteLine("합계: " + result);
    }
}

8. 예외 처리: try, catch, finally, 예외 던지기 (throw)#

예외 처리는 프로그램

실행 중 발생할 수 있는 오류를 처리하는 방법입니다.

  • try: 예외가 발생할 가능성이 있는 코드를 감싸는 블록
  • catch: 예외가 발생했을 때 실행되는 블록
  • finally: 예외 발생 여부와 상관없이 실행되는 블록
  • throw: 명시적으로 예외를 던짐

예시:#

using System;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // 예외 발생 가능성 있는 코드
            int number = int.Parse("ABC");
        }
        catch (FormatException ex)
        {
            // 예외 처리
            Console.WriteLine("형식 오류 발생: " + ex.Message);
        }
        finally
        {
            // 항상 실행되는 코드
            Console.WriteLine("프로그램 종료");
        }
    }
}

이 코드는 숫자로 변환할 수 없는 문자열을 파싱하려고 시도할 때 FormatException이 발생하여 이를 처리하는 방식입니다.