[C#] Lec 03 - 분기문
[C#] Lec 03 - 분기문
분기문
- 분기문은 프로그램의 흐름을 조건에 따라 여러 갈래로 나누는 흐름제어 구문
- C#에서는 if문과 switch문 2가지의 분기문을 제공함.
if 문
- if 문은 한번에 단 하나의 조건을 평가
- if 문에서 사용하는 조건식은 true or false의 bool 형식이어야 함.
- else (그렇지 않으면) 이용
- elif : else if 이용
예시
1
2
3
4
if (조건식)
{
codes;
}
case 문
- 여러 가지 조건이 한번에 존재하는 경우 효과적 흐름제어를 위해 switch문을 사용
- switch 문의 조건식은 정수 형식과 문자열 형식 2가지만 지원
- 주로 열거형 (enum)과 함께 사용됨.
- case 뒤에는 정수, 열거형만 가능하지만, dotnet의 업데이트로 실수형도 가능.
- string을 case 뒤에 넣고 싶다면 “asdf” 형태로 작성해야함.
1
2
3
4
5
6
7
8
9
switch (조건식)
{
case const1:
code1;
break;
case const2:
code2;
break;
}
예시 (enum과 함께 사용한 경우)
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
29
30
31
namespace Program
{
enum Rank { A=100, B=90, C=80, D=70}
static void Main(string[] args)
{
Rank John = Rank.A;
switch(John)
{
case Rank.A:
{
Console.WriteLine("Aclass");
break;
}
case Rank.B:
{
Console.WriteLine("Bclass");
break;
}
case Rank.C:
{
Console.WriteLine("Cclass");
break;
}
default :
{
Console.WriteLine("Dclass");
break;
}
}
}
}
반복문
- 특정 조건을 만족하는 동안 특정 코드를 반복해서 실행하도록 하는 문장
- C#에서는 while, do while, for, foreach의 4가지를 사용함.
while
- 조건식은 if와 동일하게 논리형식이 사용되며, 조건식이 true일 동안 계속 반복됨.
- 얼마나 반복해야하는지 알기 힘든 경우 주로 사용됨.
- 무한 루프를 주의해야 함.
1
2
3
4
5
6
7
8
while (조건식)
{
codes_to_repeat;
if (조건식2) {
break; // while 밖으로 탈출
}
codes_to_repeat2;
}
do while
- while과 유사하나, 반복될 코드를 무조건 한번 실행 후 조건문 판별
1
2
3
4
5
do
{
codes_to_repeat;
}
while (조건문); //semicolon 반드시 필요
- do codeblock 내의 command를 실행하고 이후 조건문을 따져서 true이면 반복.
for
- 조건식이 참인 동안 코드를 반복시행
- 초기화 식과 반복식을 통해 while문보다 반복문을 더 정교하게 제어할 수 있음.
- 초기화식, 조건식, 반복식으로 구성
1
2
3
4
for (초기화식; 조건식;반복식;)
{
codes_to_repeat;
}
- 초기화식 : 반복 실행 전 한번 실행, 반복문에서 사용할 변수 초기화
- 반복문을 계속 수행할지 결정하는 식. true일 경우 반복문을 계속 실행
- 반복식 : 반복이 끝날 때 마다 실행, 주로 조건시에서 사용하는 변수값을 조절.
.Contains
- “string”.Contains(“s”) → true
foreach
- 배열이나 콜렉션 형식의 데이터를 순환하며 각 데이터의 요소에 차례로 접근하는 반복문
- 마지막 요소에 도달하면 자동으로 반복문 종료
1
2
3
4
foreach (데이터 형식 변수명 in 배열 or collection)
{
codes_to_repeat;
}
예제
1
2
3
4
5
6
int[] array = new int[]{0, 1, 2, 3, 4, 5};
foreach (int item in array)
{
Console.WriteLine(item); // 0 1 2 3 4 5 출력
}
Console.WriteLine(array.Length); // 5 출력
- foreach 문 내부에서 array를 건드리면 안됨.
예제
1
2
3
4
5
6
7
8
int[] array = new int[]{10, 20, 30};
foreach (int item in array)
{
Console.WriteLine(item);
array = new int[] {1, 2, 3};
}
//결과는 10, 20, 30, 1, 2, 3으로 동작함.
//예상치 못한 결과가 나올 수 있음.
break를 이용한 점프문
- for, while foreach, do while에서 사용할 수 있는 break. 바로 반복문의 밖으로 빠져나오게 함
예제
1
2
3
4
5
6
7
8
9
10
int a=1;
while(a>0)
{
Console.WriteLine(a);
a++;
if (a==10)
{
break; // a가 10이 되는 순간 while문을 빠져나감
}
}
continue
- 반복문을 한 회 건너뛰어 반복을 수행.
- 충분히 동일한 기능이 가능하지만, 가독성을 높임.
예제
1
2
3
4
5
6
7
for (int i = 0;i<5;i++)
{
if (i==2)
continue; //해당 코드블록을 끝내고 반복문의 처음으로 돌아감
Console.writeLine(i);
}
//0, 1, 3, 4, 5 나옴
goto를 이용한 점프문
- 지정 레이블 (colon으로 표기)된 곳까지 한번에 이동함
- 코드의 가독성을 떨어트려 거의 사용되지 않음.
1
2
3
4
5
6
7
8
9
10
for (asdf; asdf; asdf)
{
for (asd; asd; asd;)
{
if (adsf)
goto EXIT;
}
}
EXIT:
Console.WriteLine("EXIT"); //adsf를 True로 만족시키면 모든 반복문의 밖으로 나옴
This post is licensed under CC BY 4.0 by the author.