ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 2주차 1일 C# 문법 기초 다지기 ( 자료형, 변수명, 형 변환, 포맷팅, switch문 )
    개발일지/스파르타 코딩클럽 부트캠프 2024. 4. 22. 21:14

    스파르타 코딩클럽 부트캠프에서는 매 주 조가 바뀌기 때문에

    오늘 새로운 조 편성을 한 후 이번 주는 아마

    팀 프로젝트 없이 스터디 그룹 느낌으로 개별학습을

    진행하고 개별과제를 목요일까지 제출한다.

     

    오늘 배운 내용

    • C#에 대해서
    • Visual studio 사용법 간단
    • 프로그래밍의 기본 요소
    • 변수와 자료형
    • 연산자와 문자열 처리
    • 조건문과 반복문

    중요하게 생각하는 부분

     

     C#의 기초에 대해서

     

    음.. 어떻게보면 정말 독학할 때 기초가 없이 시작한 것 같은데

    얼마나 기초가 없었는지 다시금 깨닫게 되는 시간이었다.

    나는 유니티를 사용하고 유니티 내부의 스크립트를 C#으로 만든다면서

    Console.WriteLine을 모르고 있었다. 지금까지 Debug.Log밖에 출력을 몰랐던....

    창피할 따름..

     

    간단한 이스케이프 시퀀스

    \'
    작은따옴표(') 삽입
    \"
    큰따옴표(") 삽입
    \\
    역슬래시() 삽입
    \n
    새 줄(줄바꿈) 삽입
    \r
    현재 줄 맨 앞으로 이동
    \t
    탭 삽입
    \b
    백스페이스 삽입

     

    자료형 종류

     

    자료형 종류도 이렇게 많다는걸 처음 알았는데

    지금까지 자료형은 정수와 실수, 문자형 등으로만 나뉘는 줄 알았는데

    각 자료형마다 각각의 크기가 있다는걸 처음 알았다.

     

    예를 들면 int는 그냥 숫자형 자료형인줄 알았는데 -2,147,483,648 ~ 2,147,483,647

    를 표현하는 4바이트 크기의 자료형이다..

    더 큰 숫자형으로는 long이 있다.

     

    변수명에 관해서

     

    변수 명은 변수, 메소드, 클래스 등의 이름으로는 사용할 수 없고

    규칙이 있다

    • 첫 문자는 알파벳, 언더스코어(_)가 올 수 있습니다.
    • 두번째 문자부터는 알파벳, 언더스코어, 숫자가 올 수 있습니다.
    • 대소문자를 구분합니다.
    • 키워드와 같은 이름으로 사용할 수 없습니다.

    이렇게 규칙이 있고, 또 코드컨벤션이라는 개발자들 사이에서 약속된 규칙이 있는데

    가독성을 높이고 유지 보수를 쉽게 하기 위해서 사용된다고 한다.

    각 프로그래밍 언어마다 다를 수 있고, C#은 다음과 같다.

    • PascalCase: 클래스, 메서드, 프로퍼티 이름 등에 사용됩니다. 단어의 첫 글자는 대문자로 시작하며, 이후 단어의 첫 글자도 대문자로 표기합니다. 예를 들어, ClassName, MethodName, **PropertyName**과 같은 형태입니다.
    • camelCase: 변수, 매개변수, 로컬 변수 이름 등에 사용됩니다. 단어의 첫 글자는 소문자로 시작하며, 이후 단어의 첫 글자는 대문자로 표기합니다. 예를 들어, variableName, parameterName, **localVariableName**과 같은 형태입니다.
    • 대문자 약어: 예외적으로 전체 글자가 모두 대문자인 식별자도 있습니다. 대표적으로 ID, HTTP, FTP 등이 있습니다.

    이외에도 들여쓰기는 4칸, 중괄호 위치는 항상 새로운 줄에서 시작

    관련 없는 코드 사이에 빈 줄 사용

    메서드, 클래스 등의 블록 사이에는 두 줄 띄어쓰기

    주석 등이 있다.

     

    형 변환

     

    형 변환은 간단하게 자료형이 다른 자료형의 형태를 띄워서 연산을 수행할 수 있게 하는 기능이다.

     

    명시적 형변환

    int num1 = 10;
    long num2 = (long)num1;   // int를 long으로 명시적 형변환

    이런 식으로 int를 long으로 일시적으로 바꿔주는 느낌이다.

    중요한 점은 이렇게 형변환을 한다고 num1 자체가 long으로 바뀌는 것이 아닌

    저 코드에서 일시적으로 long의 역할을 한다고 생각하면 되겠다.

     

    암시적 형변환은 작은 데이터에서 큰 데이터로 변환할 때 우리가 따로 코드를 쓰지 않아도

    알아서 변환되는 것을 말한다.

     

    **Console.ReadLine**

     

    앞으로도 엄청 많이 쓰이고 중요하다고 생각 되는 코드인데

    콘솔 입력을 받기 위해 사용한다

    Console.Write("Enter your name: ");
    string name = Console.ReadLine();
    Console.WriteLine("Hello, {0}!", name);
    
    [출력]
    Enter your name: Kero
    Hello, Kero!

    Enter your name이 먼저 나오고 Kero를 입력하자 결과값이 나온 모습

     

    ** var 키워드 사용법 **

     

    var은 마법의 키워드라고도 부른다는데 그럴만하다

    var키워드를 사용하면 변수의 자료형이 컴파일러에 의해서 자동으로 결정된다 

    예를 들어서

    var num = 10;         // int 자료형으로 결정됨
    var name = "kero";   // string 자료형으로 결정됨
    var pi = 3.141592;    // double 자료형으로 결정됨

    이런 식으로 알아서 맞춰주는 진짜 마법의 키워드,...

     

    하지만 모든 상황에서 만능은 아니라고 한다.

    그래도 개발할 때 정말 많이 쓰인다고 한다.

    지금은 일단 자료형에 익숙해지기 위해서 사용을 안하려고 한다.

     

    ** Parse **

     

    Parse 키워드는 벌써 되게 유용하게 사용을 많이 했는데

    형변환이랑 같지만 다르다(?) 형 변환은 일시적으로 변경해주지만

    Parse의 경우에는 그대로 완전히 변경이 된다.

    string str = "123";
    int num = int.Parse(str);

    문자열을 숫자로 변환한 모습

     

    ** 문자열 포맷팅 **

     

    C#에서 문자열을 포맷팅 하는 방법은 다음과 같다.

    두 가지 방법이 있는데

     

    문자열 형식화

    string name = "John";
    int age = 30;
    string message = string.Format("My name is {0} and I'm {1} years old.", name, age);

    문자열 보간

    string name = "John";
    int age = 30;
    string message = $"My name is {name} and I'm {age} years old.";

    둘 다 같은 기능을 하는데

    나는 문자열 보간이 더 편해서 그 쪽으로 사용중이다.

     

    switch 문

     

    이제 조건문과 반복문인데

    아직 반복문은 진도가 안들어갔고

    if문은 매우매우 중요하지만 새롭게 알게된건 아니라서

    switch문만 적어보려고 한다.

     

    switch문은 변수나 식의 결과에 따라서 다른 코드 블록을 실행하는 제어문인데

    쉽게 말하면 몇가지 값을 정해놓고 객관식 선택에 따라서 다음 진행을 정한다는 뜻이다.

    switch (변수나 식)
    {
        case 값1:
            // 값1이 나온 경우 실행되는 코드
            break;
        case 값2:
            // 값2가 나온 경우 실행되는 코드
            break;
        // ...
        default:
            // 모든 case문에 해당하지 않는 경우 실행되는 코드
            break;
    }

    이게 기본적인 틀인데

    여기서 case가 선택지의 느낌이고 break는 말 그대로

     진행되다가 braek를 만나면 그대로 완전히 다음 코드로 넘어간다.

    예를 들면 case 1이 선택되면 2와 3은 진행되지않고 switch문 밖의 다음 코드가 실행된다.

     

    이렇게만 보면 이해가 어려울 수 있는데 다음 코드를 보면 바로 이해가 된다.

    Console.WriteLine("게임을 시작합니다.");
    Console.WriteLine("1: 전사 / 2: 마법사 / 3: 궁수");
    Console.Write("직업을 선택하세요: ");
    string job = Console.ReadLine();
    
    switch (job)
    {
        case "1":
            Console.WriteLine("전사를 선택하셨습니다.");
            break;
        case "2":
            Console.WriteLine("마법사를 선택하셨습니다.");
            break;
        case "3":
            Console.WriteLine("궁수를 선택하셨습니다.");
            break;
        default:
            Console.WriteLine("올바른 값을 입력해주세요.");
            break;
    }
    
    Console.WriteLine("게임을 종료합니다.");

    이상하게 이게 더 이해가 잘 되는 느낌 ㄷㄷ

     

    이 외에도

    홀수와 짝수 구분하기

    등급 출력

    로그인 프로그램

    알파벳 판별 프로그램 등을 실습을 통해 만들어봤다.

     

    오늘 낮에 몸이 좋지 않아서 공부를 많이 못했다고 생각했는데

    그대로 나름 적어놓고 보니 꽤 많은걸 배웠다는 생각이 든다.

     

    기초가 정말 중요하다는걸 다시금 깨닫는 날이었다.

Designed by Tistory.