C# 반복문(while, do, for, foreach)

jin_112·2022년 7월 13일
0

공부

목록 보기
10/10

- while (참 일때 동안 반복)

while 문의 기본 형태

while (조건식) {
	//반복 실행될 코드
}

조건식은 if문과 마찬가지로 true 또는 false가 반환되어야 한다. while문의 특징은 조건식이 참일 때 동안 계속해서 반복하여 코드를 실행한다 만약 반복하다 조건식이 거짓이 되면 루프(반복되는 부분)를 빠져나온다. 그러나 조건식이 계속 참이라면 루프를 빠져나오지 못하고 계속 반복하게 되는 무한루프에 빠진다.

while문을 사용하여 num이 10보다 커질때까지 반복하는 예제

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num=1;
            while (num < 10)
            	Console.WriteLine("num:{0}",num++);
        }
    }
}
//콘솔창
num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .

만약 num 값을 증가하는 부분을 빼버린다면

while (num <= 10)
                Console.WriteLine("num: {0}", num);

결과

num: 1
num: 1
num: 1
num: 1
num: 1
num: 1
...

num의 값이 1에서 항상 머무르기 때문에 조건식을 항상 만족하고 num의 값을 출력

do~while(한번은 먼저 실행 후 반복)

do {
	//반복 실행될 코드
} while (조건식); //여기서 주의할것은 마지막에 세미콜론이 붙는다는 것이다.

조건식을 먼저 검사하고 코드를 실행하는 while문과는 달리 do~while문은 먼저 한번 코드를 실행시키고 그 다음에 조건식을 검사한다.

꼭 기억해야 할 것은, do while문을 사용하면 조건식을 만족하든 만족하지 않든 반드시 한번은 실행이 된다는 것이다.


using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = 1;
            	do {
                	Console.WriteLine("num:{0}",num++)
                } while (num <= 10);
        }
    }
}
num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .

결과를 보면 while 문을 사용했을 때의 결과와 다른게 없다.
그러나 우리가 프로그램을 만들다 보면 우선 검사하고 나중에 실행하는 while문이 아닌 먼저 실행하고 나중에 검사하는 do~while 문이 필요할때가 있다.
꼭 한번은 실행시키고 검사를 해야 하는 상황이 발생했을때 유용하게 쓰인다.

for(참이 될 때까지 반복)

for문은 while문과 같이 특정 조건을 만족할때까지 반복에 쓰인다. 비교해보면 for문은 while 문보다 쓰기도 쉽고, 초기화부분과 증감부분이 따로 놀지도 않는다. while문과 for문을 비교해보면

for(초기식; 조건식; 증감식) {
    // 반복해서 실행될 코드
}
초기식;

while(조건식) {
    // 반복해서 실행될 코드
    증감식
}

초기식에는 반복을 실행하기 전 반복문에서 사용 될 변수를 초기화 하는 부분이다.
조건식은 그대로 반복 여부를 결정하는 부분이고, 증감 식은 반복문을 빠져나오기 위하여 어느 변수의 값을 감소시키거나 증가시키는 부분을 말한다.
아래는 while문, do~while문에 쓰였던 예제를 for문으로 다시 구현한 것이다.

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int num = 1; num <= 10; num++)
                Console.WriteLine("num: {0}", num);
        }
    }
}

결과

num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .

(for문의 실행흐름) 초기식 - 조건식 - 코드실행 - 증감식 - 조건식 - 코드실행 - 증감식 ...

초기식에 num이란 변수가 선언되고 1이란 값으로 초기화된다. 이 초기식은 단 한번만 실행되고 여기서 선언된 num이란 변수는 for문이 끝나면 알아서 소멸한다. 그 다음에 조건식을 거친다.
num이 10보다 작거나 같으면 조건을 만족하고 코드 실행부로 넘어간다. 그 다음 코드가 실행되고 증감식으로 넘어가 num의 값이 1만큼 증가한 뒤에 다시 조건식으로 돌아와 검사하고 코드가 실행되고 증감식으로 넘어가는것을 반복한다. 그러다 조건을 만족하면 for문으로 빠져나온다.

foreach (순회하며 차례대로 접근)

동일한 성격의 변수들이 일렬로 서있다고 생각하면 된다. 간단히 변수 여러개를 한곳에 가져다가 붙였다고 생각하면 쉽다.

기본적인 foreach문의 형태는

foreach (변수 in 배열 혹은 컬렉션) {
    // 실행될 코드
}
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int [] arr = {1, 2, 4, 5, 6, 8, 9, 22, 10};
            
            foreach (int i in arr)
            	Console.Writeline("i: {0}", i);
        }
    }
}

결과

i: 1
i: 2
i: 4
i: 5
i: 6
i: 8
i: 9
i: 22
i: 10
계속하려면 아무 키나 누르십시오 . . .

foreach문은 배열에 담겨있는 각각의 데이터를 순회하면서 변수 i 에 집어넣는다.
그 전에 int에 [ ]가 붙고 괄호 내에 데이터들이 각각 콤마를 기준으로 하여 등장한다
여기서 각각의 데이터들을 '요소'라고 부른다.

반복문의 중첩

while, for, do~while 문은 if문 처럼 중첩이 가능하다. for문 안에 for문이 사용 될 수도 있고, for문 내에 while 문이 사용 될 수도 있다. 상황에 따라서는 for문이 3번이상 중첩 될 수 있다. 그 중에서 많이 쓰이는 중첩이 for문의 중첩이다.

for(...; ...; ...) {
    for(...; ...; ...) {
        ...
    }
}

for문을 두번 사용하여 구구단을 출력한 예제

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int a = 2; a < 10; a++)
            {
                for (int b = 1; b < 10; b++)
                {
                    Console.WriteLine("{0} * {1} = {2}", a, b, a * b);
                }
            }
        }
    }
}

결과

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
...
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
계속하려면 아무 키나 누르십시오 . . .

for문을 두번만 사용하였는데 반복을 72번 수행해서 구구단을 출력하였다

profile
hello there

0개의 댓글