일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 그래프
- XR Interaction Toolkit
- 시뮬레이션
- 우선순위 큐
- 자료구조
- 다익스트라
- 그리디 알고리즘
- 수학
- ue5
- 투 포인터
- Unreal Engine 5
- 트리
- 스택
- 백준
- 다이나믹 프로그래밍
- 문자열
- BFS
- 브루트포스
- 재귀
- 백트래킹
- c++
- 구현
- 알고리즘
- Team Fortress 2
- 정렬
- 유니온 파인드
- 누적 합
- 유니티
- VR
- DFS
- Today
- Total
1일1알
2일차 : 코드의 흐름 제어 본문
if와 else
if : 뒤에 오는 조건이 참이라면 실행
else if : 위의 if문의 거짓이고 뒤에 오는 조건이 참이라면 실행
else : 위의 if문이 전부 거짓일 때 실행
switch
switch ( choice) : choice에는 정수나 문자열 가능
{
case 0:
(~~~) : choice가 0일 때 실행
break;
case 1:
(~~~) : choice가 1일 때 실행
break;
default:
(~~~) : 위에서 걸러지지 않을 떄 실행
break;
}
삼항연산자 : bool a = 조건식 ? 맞을 때 : 틀릴 때 (나는 별로 선호하지 않음)
가위바위보
Random rand = new Random();
int randVal = rand.Next(0, 3);
rand.Next(a, b) : a~a-1 까지의 랜덤한 값
randVal은 0 ~ 2 의 랜덤한 값을 가지게 된다.
입력
int input = Convert.ToInt32(Console.ReadLine());
Console.ReadLine()으로 문자열 형식을 입력받아서 int형으로 변환한 뒤 input에 저장
상수와 열거형
상수 : const를 이용하여 선언, 수정할 수 없는 값
const int VALUE = 10;
열거형 : 서로 연관이 있는 상수들을 묶어서 관리하는? 타입
enum Values
{
Zero,
One,
Five=5,
Six,
}
숫자를 안적으면 0부터 시작, 숫자를 직접 적어서 할당할 수 있음
int a = (int)Values.Six;
enum타입이기 때문에 정수로 쓸 때는 형변환을 해줘야 한다.
while
while(조건) : 조건이 참일 동안 계속 반복
do while : do 문에 있는 코드는 무조건 한번 실행하고 후에 while문의 조건에 따라 반복 여부 결정
for
for(int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
i는 0부터 시작, i가 5보다 작을 때까지 반복, 한번 반복될때마다 i는 1씩 증가
break, continue
break : 지금 실행되고 있는 반복문을 즉시 종료
continue : 지금 실행되고 있는 반복문의 contine 뒤의 내용을 실행하지 않고 다시 루프를 돌음
함수
함수 : 특정 기능을 수행하기 위한 코드들을 모아놓은 것?
static void PrintHello()
{
Console.WriteLine("Hello");
}
static : class 시간에 다룰 예정
void : 반환 형식이 없음
static int Add(int a, int b)
{
return a + b;
}
int : int 형식을 반환해야함
static int Add(int a, int b)
{
return a + b;
}
int val = Add(3, 4); // val = 7
Add함수에 3, 4가 인자로 들어오고 3 + 4를 반환한 값을 val에 할당
static void ChangeValue(int value)
{
value = value + 1; //value : 1
}
static void Main(string[] args)
{
int a = 0;
ChangeValue(a);
Console.WriteLine(a); // a : 0
}
위의 함수를 실행하면 최종 a는 0이다.
a가 1이 되지 않는 이유는 ChangeValue함수에 value를 인자로 넘길 때 a의 원본이 아닌 a와 값이 같은 복사본이 넘어가기 때문에 a의 값에는 변화가 없다.
static void ChangeValue(ref int value)
{
value = value + 1; //value : 1
}
static void Main(string[] args)
{
int a = 0;
ChangeValue(ref a);
Console.WriteLine(a); // a : 1
}
ref를 이용하면 복사본이 아닌 원본을 넘겨서 a의 값이 바뀐다.
ref, out
ref : 참조(원본) 을 직접 넘길 때 사용 ex) swap할 때 사용
static void ChangeValue(out int val1, out int val2)
{
val1 = 10;
val2 = 20;
}
static void Main(string[] args)
{
int a = 1;
int b = 2;
Console.WriteLine(a); //1
Console.WriteLine(b); //2
ChangeValue(out a, out b);
Console.WriteLine(a); //10
Console.WriteLine(b); //20
}
out : 반환하고싶은 값이 여러개일 때 사용? (out 도 참조로 사용)
매개변수에 어떤 값을 할당하지 않으면 오류를 발생시킨다. 반드시 함수 내에서 out 매개변수에 값을 할당해야한다.
static void ChangeValue(out int val1, out int val2)
{
val1 += 10; //error
val2 += 20; //error
}
out으로 받은 val1, val2의 초기값은 함수 내에서 무시된다. 따라서 val1, val2에는 현재 할당된 값이 없기 때문에 위의 코드는 오류가 발생한다.
ref는 기존의 변수를 함수 내에서 수정할 때 주로 사용되고
out은 함수 내에서 생성된 값을 반환할 때 사용된다.
오버로딩
오버로딩 : 다른 매개 변수를 가진 같은 이름의 여러 함수를 만드는 기능
static int Add(int a, int b)
{
return a + b;
}
static float Add(float a, float b)
{
return a + b;
}
static void Main(string[] args)
{
int val1 = Add(1, 2); // Add(int, int) 호출
float val2 = Add(3.0f, 4.0f); // Add(float, float) 호출
Console.WriteLine(val1); // 3
Console.WriteLine(val2); // 7
}
이름이 같은 Add의 함수가 2개가 있지만 매개 변수가 다르다.
Add(1, 2)를 실행하면 Add(int, int) 의 함수가 호출되고
Add(3.0f, 4.0f)를 실행하면 Add(float, float) 의 함수가 호출된다.
static int Add(int a, int b)
{
return a + b;
}
static int Add(int a, int b, int c)
{
return a + b + c;
}
static void Main(string[] args)
{
int val1 = Add(1, 2); // Add(int, int) 호출
int val2 = Add(1, 2, 3); // Add(int, int, int) 호출
Console.WriteLine(val1); //3
Console.WriteLine(val2); //6
}
매개변수의 타입이 같고 개수가 달라도 오버로딩을 할 수 있다.
static int Add(int a, int b, int c = 0)
{
return a + b + c;
}
static void Main(string[] args)
{
int val1 = Add(1, 2);
int val2 = Add(1, 2, 3);
Console.WriteLine(val1); // 3
Console.WriteLine(val2); // 6
}
위의 코드를 이런식으로 개선할 수 있다. ( 선택적 매개변수 )
a,b는 무조건 입력을 해야하지만 c는 해도 되고 하지 않아도 된다. c에 입력을 하지 않으면 c는 0으로 적용된다.
Add(1, 2)를 하면 a에 1, b에 2가 할당되고 c는 입력을 하지 않았기 때문에 1 + 2 + 0 이 반환된다.
static int Add(int a, int b, int c = 0, int d = 1, int e = 2)
{
return a + b + c + d + e;
}
int val2 = Add(1, 2, 3, e:10);
e : 10 이런 문법을 사용해서 순서를 건너뛰어서 입력을 할 수도 있다.
'스터디 > C#' 카테고리의 다른 글
알아두면 유용한 기타 문법 (1) | 2021.11.09 |
---|---|
자료구조 맛보기 (1) | 2021.11.08 |
4일차 : 객체지향 여행 (1) | 2021.11.05 |
1일차 : 데이터 갖고 놀기 (1) | 2021.11.01 |