C# 문법 기초 1주차
1. 이스케이프 시퀀스
문자열 내에 특수한 문자를 포함시키고 싶을 때 사용하는 문자 조합이다.
( \ == \ )
파일 경로 등을 표시할 때 역슬래시 ( \ ) 가 자주 쓰이는데,
이 때 역슬래시를 삽입하기 위해서는 \\로 나타내야 한다.
\t 의 경우 콘솔창에서 8칸 기준 띄어쓰기가 실행된다.
2. 변수 선언과 초기화
변수 선언 : 자료형 변수이름;
초기화 : 변수이름 = 값;
< 여러 개의 변수를 초기화하는 방법 >
int num1, num2, num3 = 10; (X)
=> 이렇게 하면 num3 변수만 10으로 초기화
num1 = num2 = num3 = 10;
=> 이렇게 해야 모두 10으로 초기화
3. 식별자 규칙
식별자란 [변수, 메서드, 클래스, 인터페이스] 등에 사용되는 이름이다.
식별자 규칙은 크게 다음과 같다.
- C#의 키워드와 같은 이름은 사용할 수 없다.
- 첫 문자에 알파벳, 언더스코어(_)가 올 수 있다.
- 두 번째 문자에는 알파벳, 언더스코어, 숫자가 올 수 있다.
- 대소문자를 구분한다.
< 변수명 지을 때 TIP >
변수명이 길어지더라도 직관적으로 알아보기 쉽게 이름을 지어주는 것이 좋다.
(코드가 늘어날 때 쉽게 구분하기 위해서)
자동완성 기능을 활용할 수 있기 때문에 변수명이 길어진다고 해서 불리한 것은 없다.
변수명은 숫자로 시작해서는 안 된다. (오류 발생)
4. Console.ReadLine
콘솔 입력을 받을 때 사용하는 ReadLine의 경우 항상 string 값 (문자열) 으로 돌려준다는 걸 명심하자.
< 1주차 과제 제출 Insight >
사칙연산 계산기를 만들던 도중 ReadLine은 문자열로 출력한다는데.. 숫자를 어떻게 입력하지?
1) 처음에 string 을 사용해 str1, str2 로 변수를 만들었는데 계산식 출력에 오류가 발생
2) 그러면 ReadLine 을 거쳐서 나온 문자를 숫자로 변환시켜서 계산식에 입력할까? (X)
Console.ReadLine 부분이 다음에 오는 Console.WriteLine에 영향을 주지 않는다.
코드를 깔끔하게 만들기 위해서는 불필요한 변환을 최소화해야한다.
따라서 처음부터 변수를 int 로 생성하고 ReadLine 때 필요한 변수만 문자로 변환시켜주자.
3) int.Parse(Console.ReadLine()); 방식으로 변환해 ReadLine 에서는 문자열로 출력할 수 있게 함
4) 문자열 출력도, 계산기 출력도 완성!
using System;
namespace ConsoleApp1
{
internal class Assignment
{
public static void Main()
{
Console.Write("첫 번째 수를 입력하세요: ");
int num1 = int.Parse(Console.ReadLine());
Console.Write("두 번째 수를 입력하세요: ");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("더하기: " + (num1 + num2));
Console.WriteLine("빼기: " + (num1 - num2));
Console.WriteLine("곱하기: " + (num1 * num2));
Console.WriteLine("나누기: " + (num1 / num2));
}
}
}
5. 논리연산자를 사용해 범위 나타내기
!을 사용함으로써 (범위)가 아니면 이라는 뜻의 연산을 만들 수 있다.
int num1 = 15;
# 'num1이 0부터 20 사이에 포함되지 않으면' 만들기
Console.WriteLine(0 > num3 || num3 > 20);
Console.WriteLine( !(0 <= num3 && num3 <= 20) );
// 두 조건은 같은 범위를 나타내고 있다.
// 이 때 num1이 15이므로 값은 False.
6. 증감연산자의 전위와 후위
코드는 항상 위에서 아래로, 좌에서 우로 가기 때문에
1) 전위형 ( ~ ++ x)
코드가 ++ 를 먼저 마주치므로 '1 증가'할 준비를 하고 x를 만나 이전 항목에 x를 더하는 것이 가능하다.
2) 후위형 ( ~ x ++)
x ++ 같은 경우는 코드가 x를 먼저 마주치므로 해당 줄의 모든 코드가 끝난 다음에 ++가 실행된다.
7. Compare
compare 할 때 문자열의 경우
알파벳은 A 에서 Z 로 갈수록 값이 크고, 소문자가 대문자보다 값이 크다.
Compare(a,b) 에서 a>b 이면 1, a==b 이면 0, a<b 이면 -1 이 출력된다.
C# 문법 기초 2주차
1. if - else 문에서 많이 하는 실수
if - else 문에서 else 문에도 조건을 다는 경우가 있는데,
if(조건) 이 있기 때문에 else 는 자동으로 조건에 맞지 않는 모든 경우가 해당한다.
else 뒤에 조건 붙이지 말자!
2. 3항 연산자
3항 연산자의 형태 == (조건식) ? 참일 경우 값 : 거짓일 경우 값;
3항 연산자와 if else는 의미가 같다.
int currentExp = 1200;
int requiredExp = 2000;
# 삼항 연산자
string result = (currentExp >= requiredExp) ? "레벨업 가능" : "레벨업 불가능";
Console.WriteLine(result);
# if else 문
if (currentExp >= requiredExp)
{
Console.WriteLine("레벨업 가능");
}
else
{
Console.WriteLine("레벨업 불가능");
}
3. switch문 의 특징
데이터 값이 특정 case에 부합할 때 해당 case에 맞는 명령을 수행한 뒤 break를 만나 즉시 switch문이 종료된다.
public static void Main(string[] args)
{
int playerScore = 100;
string playerRank = "";
switch(playerScore / 10)
{
case 10:
case 9:
playerRank = "Diamaond";
break;
case 8:
playerRank = "Platinum";
break;
case 7:
playerRank = "Gold";
break;
case 6:
playerRank = "Silver";
break;
default:
playerRank = "Bronze";
break;
}
Console.WriteLine(playerRank);
}
이 경우 playerRank = "Diamaond"; 를 수행하기 위한 조건은 case 10과 case 9 두 가지가 된다.
즉, case 10의 경우에도 case 9와 같은 명령을 수행하고
break를 만나 switch문을 빠져나온다는 뜻이다.
오늘의 회고
1주차 과제 2번에서 변환에 대한 고민을 하다가 int.Parse 힌트를 얻어서 겨우 끝낼 수 있었다.
머릿속으로 만들고 싶은 그림은 있는데 그게 코드로 부드럽게 표현이 안 된다.
꾸준한 연습만이 답인 것 같다.
사전캠프 때 훑었던 C# 기초 문법도 다시 꼭꼭 씹으면서 소화하니 머리에 잘 저장할 수 있었다.
오늘 집중해서 강의 들었는데도 다른 팀원들만큼은 못 따라갔다.
캠프 이전부터 코딩을 접한 분들이라 기초 문법은 쉽게 들었나보다.
하지만 나는 입문자라서 기초 용어 하나하나 실습해보고 1주차 과제까지 끝내려니 힘이 많이 들었다.
기초가 부실하면 나중에 팀 프로젝트에서 부족함을 느낄까봐 더 꼼꼼히 공부하고 싶다.
강의를 빨리 마쳐야 기초문법-개인 프로젝트에 돌입할 수 있는데, 시간적으로 쫓기는 것 같아 벌써 걱정이다.
새로 팀이 편성돼서 어색함(?) 같은 것도 있었고, 개인 공부 주차이다 보니 팀 단위로 질문하기가 어려웠다.
팀 프로젝트도 있는만큼 좋은 분위기 속에서 좋은 결과를 낼 수 있었으면 좋겠다.
내일도 힘내자!
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
C# 콘솔 - Snake 게임 만들기 (0) | 2023.11.08 |
---|---|
조건문의 이해 / 배열과 리스트 (0) | 2023.11.07 |
일정한 간격으로 카드 배치하기 (1) | 2023.11.03 |
배경음악 종료하기 / 다시 시작 버튼 만들기 (0) | 2023.11.02 |
카드에 랜덤으로 이미지 넣기 / 카드 2장만 열게 하기 (0) | 2023.11.01 |
댓글