//출력
// 줄바꿈
{
    Console.WriteLine("Hello World!");
    Console.WriteLine("My Name is Ju");

    Console.WriteLine(10);
    Console.WriteLine(3.141592);
    Console.WriteLine(3 + 3);
}

// 한줄 출력
{
    Console.Write("Hello! ");
    Console.Write("We are Learning ");
    Console.WriteLine("at TeamSparta");
}

// 입력
{
    Console.Write("Enter your name: ");
    string name = Console.ReadLine();
    Console.WriteLine("Hello, {0}!", name);
}


// Split 함수 문자열 나누기 + 형변환
{
    Console.Write("Enter two numbers: ");
    string input = Console.ReadLine();    // "10 20"과 같은 문자열을 입력받음
    // { "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 키워드
{
    var num = 10;         // int 자료형으로 결정됨
    var name = "kero";   // string 자료형으로 결정됨
    var pi = 3.141592;    // double 자료형으로 결정됨
}


// 산술 연산자
{
    int num1 = 20, num2 = 10;

    Console.WriteLine(num1 + num2);
    Console.WriteLine(num1 - num2);
    Console.WriteLine(num1 / num2);
    Console.WriteLine(num1 * num2);
    Console.WriteLine(num1 % num2);
}

// 관계 연산자
{
    int num1 = 20, num2 = 10;

    Console.WriteLine(num1 == num2);
    Console.WriteLine(num1 != num2);
    Console.WriteLine(num1 > num2);
    Console.WriteLine(num1 < num2);
    Console.WriteLine(num1 >= num2);
    Console.WriteLine(num1 <= num2);
}

// 논리 연산자
{
    int num3 = 15; 
    0 <= num3 <= 20

    Console.WriteLine(0 <= num3 && num3 <= 20); // 0과 20 사이에 포함되면
    Console.WriteLine(0 > num3 || num3 > 20); // 0 ~ 20 사이에 포함되지 않으면

    Console.WriteLine(!(0 <= num3 && num3 <= 20)); // 0과 20 사이에 포함되어있지 않으면
}


// 비트 연산자
{
    int a = 0b1100; // 12 (2진수)
    int b = 0b1010; // 10 (2진수)

    int and = a & b; // 0b1000 (8) 두 비트 값이 모두 1일 때 1을 반환
    int or = a | b; // 0b1110 (14) 두 비트 값 중 하나라도 1일 때 1을 반환
    int xor = a ^ b; // 0b0110 (6) 두 비트 값이 서로 다를 때 1을 반환
    int not = a; // 0b0011 비트 값의 보수(complement)를 반환

    int c = 0b1011; // 11 (2진수)
    int leftShift = c << 2; // 0b101100 (44) 비트를 왼쪽으로 이동
    int rightShift = c >> 1; // 0b0101 (5) 비트를 오른쪽으로 이동

    int d = 0b1100; // 12 (2진수)
    int bit3 = (d >> 2) & 0b1; // 0 (3번째 비트)
    d |= 0b1000; // 0b1100 | 0b1000 = 0b1100 (12)
}

// 연산자 우선순위
{
    1.괄호(): 괄호로 감싸진 부분은 가장 높은 우선순위로 먼저 계산됩니다.
    2.단항 연산자: 단항 연산자들(++, --, +, -, !등)은 괄호 다음으로 높은 우선순위를 가집니다.
    3.산술 연산자: 산술 연산자들(*, /, %, +, -)은 단항 연산자보다 우선순위가 낮습니다.
    4.시프트 연산자: 시프트 연산자(<<, >>)는 산술 연산자보다 우선순위가 낮습니다.
    5.관계 연산자: 관계 연산자들(<, >, <=, >=, ==, !=)는 시프트 연산자보다 우선순위가 낮습니다.
    6.논리 연산자: 논리 연산자들(&&, ||)는 관계 연산자보다 우선순위가 낮습니다.
    7.할당 연산자: 할당 연산자들(=, +=, -=, *=, /= 등)는 논리 연산자보다 우선순위가 낮습니다.
}


// 문자열 처리 기능 메서드
// 문자열 생성
{
    string str1 = "Hello, World!"; // 리터럴 문자열 사용
    string str2 = new string('H', 5); // 문자 'H'를 5개로 구성된 문자열 생성
}

// 연결 - 포멧팅을 더 자주 사용한다
{
    string str1 = "Hello";
    string str2 = "World";
    string str3 = str1 + " " + str2;
}

// 분할
{
    string str = "Hello, World!";
    string[] words = str.Split(','); // str 문자열을 쉼표(,)로 구분
}

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

// 대체
{
    string str = "Hello, World!";
    string newStr = str.Replace("World", "Universe"); // str 문자열에서 "World" 문자열을 "Universe" 문자열로 대체한 새로운 문자열 newStr을 생성
}

// 변환
{
    string str = "123";
    int num = int.Parse(str);
}
{
    int num = 123;
    string str = num.ToString();
}

// 비교
{
    string str1 = "Apple";
    string str2 = "Banana";
    int compare = string.Compare(str1, str2); // 사전식 비교. str1이 str2보다 작으면 음수, 크면 양수, 같으면 0이 나온다.
}

// 포멧팅
// 형식화
{
    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.";
}

 

 

Parse랑 Convert의 차이

파싱 실패했을 때, Parse는 FormatException을 내보내고 Convert는 기본값(int같은 경우 0)을 내보낸다.즉, Parse는 예외처리가 되고 Convert는 안된다. 데이터가 항상 명확하고 원하는 값이라면 Parse를 사용하고 불확실할 때는 Covert를 사용한다.

내 프로젝트를 로컬에 저장하기

1. Git Desktop에서 Create a New Repository를 누른다.

위에서부터 차례대로 이름, 작업내용 설명, 경로, 무시할 특정 파일, 라이센스이다.

 

2. 이름과 설명을  입력한 뒤, Publish repository를 누른 뒤, 이름과 설명을  입력한다.

 

그럼 Publish repository가 Fetch origin으로 바뀐다. 이것을 눌러주면 내 로컬에 저장이 된다.(내 GitHub 사이트에 들어가서 확인해보면 생성되어 있다.)

 

3. GitHub에 공유할 유니티 프로젝트의 Assets을 우클릭 하면 나오는 Show in Explorer를 누른다.

 

4. GitHub Desktop에서 역시 우클릭 하여 나오는 Show in Explorer를 누른다.

 

5. GitHub Desktop에서 띄운 창에 유니티 프로젝트의 내용들을 옮긴다.

 

6. GitHub Deskop에서 Summary를 입력해준 뒤, Commit한다.

 

그 후 원격으로 올리고 싶다면 Push하면 된다.

+ Recent posts