반복문 예시
1
2
3
4
for (int i=0; i<1000; i++)
{
Console.WriteLine(i);
}
배열
배열 != 리스트
int[] arr = { 1, 2, 3 };
접근은 인덱스로 가능 arr[0] (단, 음수로 접근 불가)
빈배열 생성 시 int[] arr = new int[100];
이때, 숫자 자료형은 0, 문자열 자료형은 빈 문자열, 객체는 null로 초기화됨
요소 개수 확인 시 Length 속성을 사용 arr.Length
while문
1
2
3
4
while (true)
{
Console.WriteLine("무한 반복");
}
1
2
3
4
5
6
7
8
int i = 0;
int[] arr = { 10, 12, 15, 19, 21 };
while (i < arr.Length)
{
Console.WriteLine(i + "번째 출력:" + arr[i]);
i++;
}
do while문
조건의 참 거짓 여부와 상관없이 내부의 문장을 최소 한 번은 실행함
1
2
3
4
do
{
Console.WriteLine("무한 반복");
} while (true);
1
2
3
4
5
6
7
string input;
do
{
Console.Write("입력(exit을 입력하면 종료): ");
input = Console.ReadLine();
} while (input != "exit");
for문
기본
1
2
3
4
for (int i=0; i<1000; i++)
{
Console.WriteLine(i);
}
0부터 100까지 더하기
1
2
3
4
5
6
7
8
int sum = 0;
for (int i=1; i<101; i++)
{
sum += i;
}
Console.WriteLine(sum);
1부터 20까지 곱하기
1
2
3
4
5
6
7
8
long mul = 1;
for (int i=1; i<21; i++)
{
mul *= i;
}
Console.WriteLine(mul);
한글 전부 출력하기
1
2
3
4
for (char i='가'; i<='힣'; i++)
{
Console.WriteLine(i);
}
역 for문
1
2
3
4
5
6
int[] arr = { 1, 2, 3, 4, 5, 6 };
for (int i=arr.Length-1; i>=0; i--)
{
Console.WriteLine(arr[i]);
}
foreach문
컬렉션에 쉽게 반복문을 적용할 때에 사용함 (ex.배열)
1
2
3
4
5
6
string[] arr = { "사과", "오렌지", "바나나" };
foreach (string item in arr)
{
Console.WriteLine(item);
}
var 키워드 사용 (더 일반적)
1
2
3
4
5
6
string[] arr = { "사과", "오렌지", "바나나" };
foreach (var item in arr)
{
Console.WriteLine(item);
}
코드 조각
if, while, for, foreach + tab
2회
tab
으로 키워드 간 이동하여 쉽게 수정 가능
중첩 반복문
별 피라미드
1
2
3
4
5
6
7
8
9
for (int i=1; i<11; i++)
{
for (int j=0; j<i; j++)
{
Console.Write('*');
}
Console.WriteLine();
}
역 별 피라미드
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i=1; i<11; i++)
{
for (int k=0; k<10-i; k++)
{
Console.Write(' ');
}
for (int j=0; j<i; j++)
{
Console.Write('*');
}
Console.WriteLine();
}
break 키워드
1
2
3
4
5
6
7
8
9
while (true)
{
Console.Write("숫자를 입력하세요(짝수를 입력하면 종료): ");
int input = int.Parse(Console.ReadLine());
if (input % 2 == 0)
{
break;
}
}
goto 키워드
지정한 레이블로 순간 이동함
goto doNotUse; 이렇게 적으면 doNotUse: 부분으로 코드의 흐름이 즉시 이동한다고 생각하면 됨
사용하지 말 것
continue 키워드
홀수만 출력하기 (키워드O)
1
2
3
4
5
6
7
8
for (int i=1; i<10; i++)
{
if (i%2==0)
{
continue;
}
Console.WriteLine(i);
}
홀수만 출력하기 (키워드X)
1
2
3
4
5
6
7
for (int i=1; i<10; i++)
{
if (i%2!=0)
{
Console.WriteLine(i);
}
}
응용예제 - 문자열 처리
C#의 모든 문자열 처리 메서드는 자신을 변경하지 않고 반환함
무슨 소리냐면 input.ToUpper() 을 해도 input 자체는 변경되지 않는다는 뜻임
이런 메서드를 비파괴적 메서드라고 부르기도 함
Split()
문자열을 특정한 문자 또는 문자열 기준으로 자르고, 결과를 문자열 배열로 반환함
매개변수로 char 배열을 넣을 수 있음 (여러 개의 문자를 입력하면 여러 문자를 기준으로 자를 수 있음)
1
2
3
4
5
6
7
string input = "모찌 정아 포뇨";
string[] inputs = input.Split(new char[] { ' ' });
foreach (var item in inputs)
{
Console.WriteLine(item);
}
여러 개의 문자 기준으로 자르기
1
2
3
4
5
6
7
string input = "하얀!모찌 까만!정아 빨간!포뇨";
string[] inputs = input.Split(new char[] { ' ', '!' });
foreach (var item in inputs)
{
Console.WriteLine(item);
}
Trim()
문자열 양 옆의 공백을 제거함
1
2
string input = " test \n";
Console.WriteLine("::" + input.Trim() + "::");
TrimStart() = 문자열 앞의 공백 제거
TrimEnd() = 문자열 뒤의 공백 제거
string.Join()
배열에 있는 요소를 연결해서 문자열로 반환함
1
2
string[] arr = { "포카칩", "에이스", "초코비" };
Console.WriteLine(string.Join(",", arr));
이동하는 달팽이
Console.Clear() = 콘솔 화면을 지움
Console.SetCursorPosition() = 콘솔 화면의 특정한 위치로 커서를 옮김
Thread.Sleep() = 스레드 정지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int x = 1;
while (x<50)
{
Console.Clear();
Console.SetCursorPosition(x, 5);
if (x%3==0)
{
Console.WriteLine("__@");
}
else if (x%3==1)
{
Console.WriteLine("_^@");
}
else
{
Console.WriteLine("^_@");
}
Thread.Sleep(100);
x++;
}
무한 반복하며 이동하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool state = true;
while (state)
{
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key)
{
case ConsoleKey.UpArrow:
Console.WriteLine("위로 이동");
break;
case ConsoleKey.RightArrow:
Console.WriteLine("오른쪽으로 이동");
break;
case ConsoleKey.DownArrow:
Console.WriteLine("아래로 이동");
break;
case ConsoleKey.LeftArrow:
Console.WriteLine("왼쪽으로 이동");
break;
case ConsoleKey.X:
state = false;
break;
}
}
무한 반복하여 이동하며 글자를 원하는 위치에 출력하기
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
int x = 5;
int y = 5;
bool state = true;
while (state)
{
Console.Clear();
Console.SetCursorPosition(x, y);
Console.Write("@");
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key)
{
case ConsoleKey.UpArrow:
y -= 1;
break;
case ConsoleKey.RightArrow:
x += 1;
break;
case ConsoleKey.DownArrow:
y += 1;
break;
case ConsoleKey.LeftArrow:
x -= 1;
break;
case ConsoleKey.X:
state = false;
break;
}
}