본문 바로가기
TIL

11.08 (TIL)

by 오랑이귀엽다 2023. 11. 8.

조건문

주어진 조건식의 결과에 따라 프로그램의 제어 흐름을 변경하는 제어문

 

1) if문

조건식의 결과에 따라 실행 여부를 결정하는 조건문

2) else 문

if 문에서 조건식이 거짓일 경우 실행할 코드를 지정하는 조건문

3) else if 문

if 문의 조건식이 거짓일 때, 새로운 조건식을 사용하여 실행 여부를 결정하는 조건문

else 문은 생략이 가능

4) 중첩 조건문

하나의 조건문 안에 또 다른 조건문이 포함된 형태의 조건문

 

코드사용

조건1,2 //EX. 레벨, 스코어 등등 세부적

조건A,B //EX, 종류, 효과 등등 좀더 포괄적

 

if (조건식A or B)
{
        if (조건식1-1)
                            {
                                       // 조건식1-1이 참일 경우 실행할 코드
                            }
         else if (조건식1-2)
                            {
                                        // 조건식1-2가 참일 경우 실행할 코드
                            }
         else
                            {
                                        //조건식이 거짓일 경우 실행할 코드
                            }
}
else if (조건식B or A)
{
            if (조건식2-1)
                              {
                                        // 조건식2-1이 참일 경우 실행할 코드
                              }
             else if (조건식2-2)
                              {
                                         // 조건식2-2가 참일 경우 실행할 코드
                              }
              else
                              {
                                          // 조건식이 거짓일 경우 실행할 코드
                              }
}
else
{
    // 조건식이 거짓일 경우 실행할 코드
}

 

5) switch 문

switch문은 변수나 식의 결과에 따라 다른 코드 블록을 실행하는 제어문

case문을 사용하여 변수나 식의 결과에 따라 실행할 코드를 지정

 

코드사용

switch (변수나 식)
{
    case 값1:
        // 값1이 나온 경우 실행되는 코드
        break;
    case 값2:
        // 값2가 나온 경우 실행되는 코드
        break;
    // ...
    default:
        // 모든 case문에 해당하지 않는 경우 실행되는 코드
        break;
}

 

6) 3항 연산자

if 문의 간단한 형태로, 조건식의 결과에 따라 두 값을 선택하는 연산자

(조건식) ? 참일 경우 값 : 거짓일 경우 값;

 

코드 예시

int ?? = ??;
int !! = !!;

# 삼항 연산자
string result = ( ?? >= !! ) ? " 가능" : "불가능";
Console.WriteLine(result);

# if else 문
if ( ?? >= !! )
{
    Console.WriteLine("가능");
}
else
{
    Console.WriteLine("불가능");
}

 

반복문

일련의 명령문을 반복해서 실행하는 제어문

 

1) for 문

for문은 초기식, 조건식, 증감식을 사용하여 반복문을 작성

초기식은 반복문이 시작될 때 단 한 번 실행

조건식은 반복문이 실행될 때마다 평가되며, 참(true)인 경우 반복문이 계속 실행

증감식은 반복문이 실행될 때마다 실행

 

for (초기식; 조건식; 증감식)
{
    // 조건식이 참인 경우 실행되는 코드
}

 

간단예시

 

for (int i = 0; i < 10; i++)  // 여기서 int i는 for안에 존속되서 for끝나면 사라짐
{
  Console.WriteLine(i);
}

int i = 0;
for (i = 0 ; i < 10 ; i++)  // 여기서는 int i 가 밖에 있으므로 for가 끝나도 사용가능
{
    Console.WriteLine(i);
}

 

2) while 문

while문은 조건식이 참(true)인 동안 코드 블록을 반복적으로 실행

 

while (조건식)
{
    // 조건식이 참인 경우 실행되는 코드
}

 

간단예시

 

int i = 0;
while (i < 10)
{
    Console.WriteLine(i);
    i++;
}

 

3) for 문 vs while 문

for 문은 반복 횟수를 직관적으로 알 수 있고, 반복 조건을 한 눈에 확인할 수 있어 가독성이 좋다.

while 문은 반복 조건에 따라 조건문의 실행 횟수가 유동적이며, 이에 따라 코드가 더 간결할 수 있다.

어떤 반복문을 사용할지는 코드의 흐름에 따라 상황에 맞게 선택

 

4) do-while 문

while문과 비슷하지만, 조건식을 검사하기 전에 먼저 코드 블록을 한 번 실행하는 점

 

do
{
    // 조건식이 참인 경우 실행되는 코드
}
while (조건식);

 

간단예시

 

int sum = 0;
int num;

do
{
    Console.Write("숫자를 입력 (0 입력 시 종료): ");
    num = int.Parse(Console.ReadLine());
    sum += num;

while (num != 0);

Console.WriteLine("합계: " + sum);

 

5) foreach문

foreach문은 배열이나 컬렉션에 대한 반복문을 작성할 때 사용

 

foreach (자료형 변수 in 배열 또는 컬렉션)
{
    // 배열 또는 컬렉션의 모든 요소에 대해 반복적으로 실행되는 코드
}

 

간단예시

 

string[] inventory = { "검", "방패", "활", "화살", "물약" }; // 스트링의 배열입니다.

foreach (string item in inventory)
{
    Console.WriteLine(item);
}

 

6) 중첩반복문

간단예시

 

for (int i = 2; i <= 9; i++)
{
    for (int j = 1; j <= 9; j++)
    {
        Console.WriteLine(i + " x " + j + " = " + (i * j));
    }
}

 

7) Break & Continue

break는 반복문을 중지시키는 역할

continue는 현재 반복을 중지하고 다음 반복을 진행하는 역할

 

간단예시

 

for (int i = 1; i <= 10; i++)
{
    if (i % 3 == 0)
    {
        continue; // 3의 배수인 경우 다음 숫자로 넘어감
    }

    Console.WriteLine(i);
    if (i == 7)
    {
        break; // 7이 출력된 이후에는 반복문을 빠져나감
    }
}

 

배열

동일한 자료형의 값들이 연속적으로 저장되는 자료 구조

 

1) 1차원 배열

동일한 데이터 유형을 가지는 데이터 요소들을 한 번에 모아서 다룰 수 있는 구조

인덱스를 사용하여 요소에 접근 가능

선언된 크기만큼의 공간을 메모리에 할당받음

 

// 배열 선언
데이터유형[] 배열이름;

// 배열 초기화
배열이름 = new 데이터유형[크기];

// 배열을 한 줄로 선언 및 초기화
데이터유형[] 배열_이름 = new 데이터_유형[크기];

// 배열 요소에 접근
배열이름[인덱스] = 값;
값 = 배열이름[인덱스];

 

간단예시

 

int[] itemPrices = { 100, 200, 300, 400, 500 }; //배열선언 및 초기화
int totalPrice = 0;  

for (int i = 0; i < itemPrices.Length; i++)  // Length는 이어지는 데이터의 갯수 = 5 (0~4)
{
    totalPrice += itemPrices[i];
}

Console.WriteLine("총 아이템 가격: " + totalPrice + " gold");

 

2) 다차원 배열

여러 개의 배열을 하나로 묶어 놓은 배열

행과 열로 이루어진 표 형태와 같은 구조

2차원, 3차원 등의 형태의 배열을 의미

C#에서는 다차원 배열을 선언할 때 각 차원의 크기를 지정하여 생성

 

간단예시1

 

// 2차원 배열의 선언과 초기화
int[,] array3 = new int[2, 3];  // 2행 3열의 int형 2차원 배열 선언

// 다차원 배열 초기화
array3[0, 0] = 1;
array3[0, 1] = 2;
array3[0, 2] = 3;
array3[1, 0] = 4;
array3[1, 1] = 5;
array3[1, 2] = 6;

// 선언과 함께 초기화
int[,] array2D = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };

 

간단예시2

 

// 3차원 배열의 선언과 초기화
int[,,] array3D = new int[2, 3, 4] 
{
    { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } },
    { { 13, 14, 15, 16 }, { 17, 18, 19, 20 }, { 21, 22, 23, 24 } }
};

 

3) 2차원 배열을 사용하여 게임 맵을 구현

 

컬렉션

컬렉션(Collection)은 자료를 모아 놓은 데이터 구조를 의미

컬렉션은 배열과 비슷한 자료 구조

배열과는 다르게 크기가 가변적

C#에서는 다양한 종류의 컬렉션을 제공

사용하기 위해서는 System.Collections.Generic 네임스페이스를 추가

1) List

List는 가변적인 크기를 갖는 배열

List를 생성할 때는 List에 담을 자료형을 지정

 

2) Dictionary

3) Stack

4) Queue

5) HashSet

 

배열과 리스트

리스트는 동적으로 크기를 조정할 수 있어 배열과는 다르게 유연한 데이터 구조를 구현할 수 있습니다.

하지만, 리스트를 무분별하게 사용하는 것은 좋지 않은 습관

1. 메모리 증가

2. 데이터 접근 시간 증가

3. 코드 복잡도

 

 

'TIL' 카테고리의 다른 글

11.10 (TIL)  (0) 2023.11.10
11.09 (TIL)  (0) 2023.11.09
11.07 (TIL)  (0) 2023.11.07
11.06 (TIL)  (0) 2023.11.06
11.03 (TIL)  (0) 2023.11.03