본문 바로가기

내일배움캠프/C#문법종합반

[TIL 24.04.22] 1주차~2주차 강의 필기노트

.

목   차

     


    1주차 강의

                1.클래스, 매서드, 변수 등의 이름 입력할 때 Tab으로 자동완성 가능.
                Console.WriteLine("C#");

                2.메서드나 변수 입력 도중 자동완성이 끊겼다면, Ctrl + Space로
                IntelliSense 부르기.
                Console.WriteLine("Study");

                3.코드 템플릿을 사용하여 더 빠른 코드 가능.
                for (int i = 0; i < 10; i++)
                {
                    코드 템플릿(Tab 2회)으로 만든 for문.
                }

                4. Debug 모드 vs Release모드: VS Community창 상단에 실행버튼 왼쪽.
                디버그모드는 개발 중, 릴리즈 모드는 개발완료 후를 위한 모드임.


                Console.WriteLine(var Value);
            Console.Write(var Value);

                이스케이프 시퀀스
                 \', \", \\, \n, \r, \t, \b 등.

                주석: 보통 한줄 주석 선호. (한줄: // 여러 줄: /**/)
                프로그램 초반에 설명용으로 여러줄 주석 쓰기도 함.
                /*주석 주의사항
                 코드 대체x
                 정확&명확해야 함
                 코드 수정 시 함께 업데이트 필요
                 모든 코드x 필요할때만 작성o
                */

    Members&DataType

    //frequently used Data Type:
    //int, long, float, double, char, string, bool.

    /*정수 자료형만 해도 최소 8개가 있는데, 이렇게 종류가 많은 이유는? (세분화)
     * 메모리의 효율적 사용(자료형마다 크기가 다르므로)
     * 정확한 데이터 표현
     * 타입 안정성(자료형으로 인한 크기범위 제한 등)
     */

    //리터럴(literal): 프로그램에서 직접 사용되는 상수 값
    /*정수형 literal: 10, 0x10, 0b10, 10L, 10UL 등
     *부동소수 ex: 3.14, 3.14f, 3.14m
     *문자형 literal: 'A', '\n', '\u0022'
     *문자열 literal: 일반 문자열, 보간 문자열, Verbatim문자열, 보간Verbatim
     */

    /*변수 선언, 초기화.
     *int a, b, c; 동시에 선언.
     *a = b = c = 10; 동시에 초기화.
     *int a, b, c = 10; //c만 초기화 됨.
     */

    //키워드: C#에서 이미 예약된 단어

    /* 식별자:변수, 메서드, 클래스, 인터페이스 등에서 사용되는 이름
     * 첫 문자: 알파벳, 언더스코어(_)
     * 두 번째 문자~: 알파벳, 언더스코어, 숫자
     * 대소무자 구별됨.
     * 키워드랑 겹치면 안됨.
    */

    /*코드 컨벤션(개발자간의 약속된 코드 작성 규칙)
     *식별자 표기법: 카멜 케이스, 파스칼 케이스, 대문자 약어.
     *들여쓰기(코드블록)
     *중괄호 위치: 새로운 줄에서 시작 (때로 if () { 처럼 붙기도 함.)
     *1줄 공백: 관련 없는 코드 사이
     *2줄 공백: 클래스/메서드 등의 블록 사이.
     */

    /*형 변환: 명시적&암시적 -> 반드시 더 큰 형태를 쫓아감.*/

    /*Console.ReadLine: 다중입력*/
    {
        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);
    }

    //var 키워드.

    Operators&String Process

    //산술 연산자

    //관계 연산자

    //논리 연산자

    //비트 연산자

    //복합 대입 연산자 & 증감연산자

    //연산자 우선순위

    //문자열 처리 기능 및 메서드
    //생성, 연결, 분할, 검색, 대체, 변환, 비교, 포멧팅
    //gpt 추천 메서드: Concat, Join, Split, Substring, Replace, ToUpper&ToLower,
    //Trim, Contains, IndexOf, StartsWith&EndsWith

    //string a = b + c + d 보다는 StringBuilder, 보간, Join 등을 사용.

     

    2주차 강의

    Condition&Loop

    //<조건문>

    //if문: 조건식의 결과에 따라 실행여부 결정하는 조건문.
    //else문: if의 세트메뉴.
    //else if: if와 else 사이의 새로운 조건문.
    //중첩조건문: if 안의 if

    //switch문.

    //3항 연산자
    //(조건식)? 참:거짓;

    //<반복문>
    //for문: 초기식, 조건식, 증감식

    //while문: 조건식이 true인 동안 반복.

    //for vs while
    //for: 직관적인 반복횟수
    //while: 유동적 반복횟수

    //for each

    //중첩반복문
    //구구단

    //break, continue문.

    Array&Collection

    //배열: 동일한 데이터 유형을 가지는 데이터 요소들을 한 번에 모아 다룰 수 있는 구조.
    //index화 가능

    //배열_이름: new 데이터_유형[크기]; 생성(정확히는 할당)
    //이 때 new 는 클래스 때문!
    //--------------

    //다차원배열: int[,] array = new int[2, 3];
    //1차원 아니다 = 다차원이다.
    //복잡한 데이터 구조를 효율적으로 관리 가능.
    //ex) 게임 맵 구현.
     

    //컬렉션: 자료를 모아놓은 데이터 구조.

    //1. List<T> name = new List<T>()
    //Length 대신 Count.

    //2. Dictionary<string, int> name = new Dictionary<string, int>()
    //키와 값이 세트.

    //3. Stack, Queue.
    //둘다 형은 1개씩. 
    //Stack: 후입선출.
    //Queue: 선입선출.

    //4. HashSet: 중복되지 않는 요소들로 이루어진 집합.
    //List와 유사하지만 중복성의 차이가 있음.
    //bool a = hash.Add(1); -> true/false로 중복인지 확인.

    //배열과 리스트.
    //리스트 단점: 메모리 사용량, 데이터 접근 시간, 코드 복잡도.

    Method&Struct

    //메서드: 일련의 코드블록, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능단위.
    //메소드를 사용하는 이유:
    //반복되는 작업을 더 편하게 불러오기 위해.(재사용성)
    //코드의 가독성을 높이기 위해.(가독성&유지보수성)
    //모듈화
    //추상화

    //메서드 구조
    //접근제한자(private, public, protected)
    //리턴 타입.
    //메서드 이름
    //매개변수
    //메서드 바디.

    //오버로딩(Overloading.)
    //동일한 이름의 메서드를 다양한 매개변수 목록으로 다중정의하는 개념.

    //재귀호출.
    //메서드가 자기 자신을 호출
    //무한루프 조심.

    //구조체
    //여러 개의 데이터를 묶어서 하나의 사용자정의 형식으로 만들기 위한 방법.
    //값 형식으로 분류. struct키워드 이용.
    //멤버: 변수&메서드. (동욱님은 둘 중 하나만이라 했던거 같은데...;;)


     

    마무리

    이번 조에서는 매일 저녁에 서로의 코드를 공유하는데, 2가지의 배울 점이 있었다.

    • 비트 연산자로 플레이어 교체(0, 1 toggle)
    • 격자 할 때 '+' 기호 사용하면 조금 더 예쁜 모양을 만들 수 있다.