본문 바로가기
C#/이론

[예제로 배우는 C# 프로그래밍] 반복문

by 단월໒꒱ 2022. 7. 3.

 

C# 반복문

 

 

for 반복 구문

 

  for 구문은 루프 안에 있는 문장들을 반복적으로 실행할 때 사용한다.

 

  for 루프는 일반적으로 카운트 변수를 이용하여 일정 범위 동안 for 루프 안의 블럭을 실행한다.

 

 

  다음 예제는 0부터 9까지 10번의 출력을 반복하는 코드이다.

 

 

class Program
{
    static void Main(string[] args)
    {
        // for 루프
        for (int i = 0; i < 10; i++)
        {
           Console.WriteLine("Loop {0}", i);
        }
    }
}

 

 

 

foreach 반복 구문

 

  foreach 구문은 배열이나 컬렉션에 주로 사용하는데, 컬렉션의 각 요소를 하나씩 꺼내와서 foreach 루프 내의 블럭을 실행하는 기능을 한다.

 

 

  다음 예제는 문자열 배열을 foreach를 사용하여 각 문자열 요소를 하나씩 출력하는 코드이다.

 

 

static void Main(string[] args)
{
    string[] array = new string[] { "AB", "CD", "EF" };

    // foreach 루프
    foreach (string s in array)
    {
       Console.WriteLine(s);
    }
}

 

 

 

for vs foreach

 

  C#에서 for과 foreach를 비교한다면 주로 성능적 측면과 코드 가독성 측면을 고려한다.

 

  성능적 측면에서 보면, for이 경우에 따라 약간 빠를 수 있지만 대부분의 경우 성능적인 차이는 크지 않다.

 

  코드 가독성 측면에서 보면, foreach는 for보다 훨씬 간결한 코드를 제공한다.

 

  특히, 루프에서 가장 많이 사용되는 배열의 경우, foreach가 내부적인 최적화를 거쳐 for 루프와 동일한 성능이므로 더 간결한 foreach를 사용하는 것이 낫다.

 

  다음 예제는 다차원 배열을 처리하는 코드이다. 다차원 배열을 처리할 경우, for 루프는 배열 차수만큼 여러번 루프를 돌려야 하지만, foreach는 아래와 같이 단순히 한 루프 문장으로 이를 처리할 수 있어 편리하다.

 

 

static void Main(string[] args)
{
    // 3차배열 선언
    string[,,] arr = new string[,,] { 
            { {"1", "2"}, {"11","22"} }, 
            { {"3", "4"}, {"33", "44"} }
    };

    //for 루프 : 3번 루프를 만들어 돌림
    for (int i = 0; i < arr.GetLength(0); i++)
    {
        for (int j = 0; j < arr.GetLength(1); j++)
        {
            for (int k = 0; k < arr.GetLength(2); k++)
            {
                Debug.WriteLine(arr[i, j, k]);
            }
        }
    }

    //foreach 루프 : 한번에 3차배열 모두 처리
    foreach (var s in arr)
    {
        Debug.WriteLine(s);
    }
}

 

 

 

while 반복 구문

 

  while 구문은 while 조건식이 참인 동안 계속 while 블럭을 실행할 때 사용한다.

 

  

  다음 예제는 while문을 사용하여 1부터 10까지 숫자를 출력하는 코드이다.

 

 

static void Main(string[] args)
{
    int i=1;

    // while 루프
    while (i <= 10)
    {
       Console.WriteLine(i);
       i++;
    }
}

 

 

 

do while 반복 구문

 

  do ~ while 구문은 while문과 거의 비슷하지만, 마지막 while 조건식까지 가기 전에 do ~ while 사이의 블럭을 미리 한번 실행한다는 점에서 차이가 있다.

 

 

static void Main(string[] args)
{
    int i=1;

    // do ~ while 루프
    do
    {
       Console.WriteLine(i);
       i++;
    } while (i < 10);
}

 

 

 

반복 구문 예제

 

  다음 예제는 콘솔로부터 Q가 입력되기 전까지 계속 키 입력을 받아들인 후, 그동안 입력된 키들을 foreach 루프를 써서 출력하는 코드이다.

 

 

using System;
using System.Collections.Generic;

namespace MySystem
{
    class Program
    {
        static void Main(string[] args)
        {
            List<char> keyList = new List<char>();
            ConsoleKeyInfo key;
            do
            {
                key = Console.ReadKey();
                keyList.Add(key.KeyChar);
            } while (key.Key != ConsoleKey.Q); // Q가 아니면 계속

            Console.WriteLine();
            foreach (char ch in keyList) // 리스트 루프
            {
                Console.Write(ch);
            }
        }
    }
}

 

 

 

 

댓글