반복문

for, foreach, while, do while 4가지의 반복문이 있습니다.

전부 조금씩 다르니 포인트를 잘 잡아야 합니다.


1. for
for (int i = 0; i < length; i++)
{
	//반복될 문장
}

(for문의 기본형태)

위 코드는 for문의 기본형태입니다.

코드에서 보면 괄호 안에 지금까지와는 다르게 적혀있는 조건을 볼 수 있는데요.

각 부분으로 나누어 보자면

for (초기화식 ; 조건식 ; 증감식) 으로 보시면 됩니다.

int i라는 변수를 0에서부터(초기화식) ; length(=길이)보다 작을 때까지{조건식) ; 하나씩 올려준다(증감식)

로 해석할 수 있습니다.

 

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
        }

    }
}

(이해를 돕기 위한 예시코드)

위 코드를 실행해보면 

위 사진과 같은 결과가 나옵니다.

0에서 부터 시작된 int i 가 10보다 작을 때 까지 하나씩 증가 되면서 출력 된 것을 알 수 있습니다.

 

기본 형태라고 적어뒀지만 그 형태에 집착하지 말아야 합니다.

이유는 초기화식;조건식; 증감식 의 변화가 가능하기 때문인데요

코드로 보자면

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 10; i >= 0; i -= 2)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
        }

    }
}

과 같이 for문의 모든 식이 달라지는 것을 확인할 수 있습니다.

결과


1-2 이중(다중) for문

if(조건문)에서 보여드렸던 if문 안에 if문이 들어갈 수 있는 것을 기억하시나요?

for문 역시 마찬가지로 for문안에 for문이 들어갈 수 있습니다.

코드로 보겠습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 2; i < 10; i++)
            {
                for(int j = 1; j < 10; j++)
                {
                    Console.WriteLine($"{i}X{j}={i*j}");
                }
                Console.WriteLine();
            }
            
        }

    }
}

다중for문의 i반복문(외(外)반복문) 이 2일 때 j반복문(내(內)반복문)은 1~9까지 전부 돌고

다시 외반복문으로 돌아와서 i에 1을 더해 3이 되고 j가 1~9까지 도는 것

이 과정들이 i가 10이 됨과 동시에 내외반복문이 모두 종료되며 끝나는 것 입니다.

 


2. foreach

foreach문을 알려면 먼저 배열을 알아야 합니다.

하지만 배열은 나중에 다루게 될 부분이라 이번에는 대략적인 부분만 짚고 넘어가겠습니다.

배열의 기본적인 형태는 

int[] Array = {0,1,2,3,4,5};

int타입의 [배열] 배열이름 = {배열의 인자들}

배열의 내부의 인자들은 반드시 선언시 {중괄호}를 사용해서 만들어주어야 합니다.


이 배열을 foreach문을 통해서 내부 인자들을 출력해볼 것인데요.

foreach (변수타입 변수이름 in 배열)
{
	//Console.WriteLine(변수이름)
}

foreach의 기본형태

기본형태에서 변수 타입은  int, char, String 등이 올 수 있습니다.

※ 보통 var이라고 하는 컴파일러가 컴파일링 할 때 알아서 변수타입을 지정하는 유동적인 형태의 변수타입을 사용합니다.

변수이름은 우리가 편하게 알아볼 수 있는 이름 을 사용하면 됩니다.

(Ex : 배열의 인자가 숫자라면 num, 문자열이라면 str 등) 

배열에는 우리가 미리 선언한 배열의 이름을 사용해주시면 됩니다.

 

이해를 돕기 위해 예시코드를 보겠습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] intArray = { 0, 1, 2, 3, 4, 5 };

            foreach (var num in intArray)
            {
                Console.WriteLine($"num : {num}");
            }
            
        }

    }
}

예시코드에서는 배열을 먼저 선언해주고 foreach문에서 intArray에 있는 인자들을 차례대로 꺼내와

변수 num에 담아서 출력한 모습입니다.

출력된 모습


3. while

while문은 특정 조건을 만족할 때 까지 반복하는 문장입니다.

아래는 while문의 기본형태입니다.

while(조건)
{
	실행할 문장
}

if문에서 배웠던 것 처럼 while문에도 조건이라는 부분이 붙어있습니다.

조건 부분에 들어갈 연산자는 Boolean값이 나오는 연산자를 사용해야합니다.(관계연산자, 논리연산자 등)

while문은 조건이 True일 때 반복을 지속하며 False일 때 반복문을 빠져나온다는 것 입니다.

만약 조건 코드를 잘못하여 조건이 계속 True가 나오게 된다면 무한루프에 빠지게 되는 것 입니다.

 

↓ 무한루프

더보기
int a = 0;

while(a<10)
{
	Console.WriteLine(a); //무한히 0이 출력됨
}

※ 코드가 길어졌을 때 무한루프에 빠지게 된다면 심한 경우 컴퓨터에 큰 무리가 갈 수 있습니다.

무한루프 시 모습

↓ 무한루프 해결

더보기
int a = 0;

while(a<10)
{
	Console.WriteLine(a);
    	a++; //루프가 한번 돌 때 a의 값을 1씩 증가시켜 a가 10이 될 때 종료시킴
}

int 변수 a 가 1씩 증가하면서 a가 10이 될 때 조건이 False가 되면서 반복문을 탈출함

 

조건이 True, False인 만큼 Boolean타입을 넣어서 탈출 할 수도 있습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool tBool = true;
            int num = 0;

            while(tBool)
            {
                Console.WriteLine(a);
                num++;
                if (num == 10) 
                {
                    tBool = false;
                }
            }
        }

    }
}

Boolean 타입의 변수 tBool을 True로 사용하기 위해 선언한 뒤 조건에 넣었습니다.

이때 조건이 계속 true가 되는 것 입니다. 우리가 전에 배운 if문을 사용하여 int변수 num이 10이 될 때

Boolean 타입의 변수 tBool 을 False로 바꿔주어 반복문을 탈출 시킨 것 입니다.


4. do while

do while문은 기본적으로 while문과 동일하나 차이점이 있습니다.

우선 do while문의 기본형태입니다.

do{
	실행코드
}while(조건);

do : 실행하고

while : 반복하고

조건 : 조건을 검사한다.

이렇게 먼저 한번 실행을 진행하고 반복으로 넘어가면서 조건을 검사해 반복해주는 코드입니다.

예시로 보겠습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            do
            {
                Console.WriteLine($"{n+1}회 실행");
                n++;
            } while (false);
        }

    }
}

코드를 보시면 일부러 while조건 부분을 false로 반복문이 실행되지 않도록 해두었습니다.

하지만 결과를 보시면

이처럼 한번은 무조건 실행되는 모습을 볼 수 있습니다.

이후 조건을 검사했는데 false라 더이상 반복을 진행하지 않은 모습역시 확인할 수 있습니다.

기본적으로 while문과 동일하나 한번은 무조건적으로 실행시켜주어야 할 때 사용하면 좋은 코드입니다.

'C#' 카테고리의 다른 글

[C#_8] 메서드 method  (0) 2021.10.02
[C#_7] 반복문 제어 (Break, Continue, goto)  (0) 2021.09.29
[C#_5] 조건문 (if, else, switch)  (0) 2021.09.23
[C#_4] 출력문, 입력문, 연산자, 문자열 보간  (0) 2021.09.21
[C#_3] 변수, 자료형  (0) 2021.09.12

+ Recent posts