본문 바로가기
C#/Basic Syntax

[C#] 6. 제어문 if/else, switch, for, while, foreach 등

by 가든가든 2022. 9. 20.
728x90

제어문

제어문은 프로그램 실행 순서를 제어하거나 프로그램 내용을 반복하는 작업 등을 처리할 때 사용하는 구문으로 조건문과 반복문으로 구분합니다.

제어문 설명 종류
순차문 기본적으로 모든 실행문은 순서대로 실행됩니다.  
조건문(선택문) 조건의 참 또는 거짓에 따라 서로 다른 명령문을 실행할 수 있는 구조이며, 조건문은 다른 말로 분기문 또는 비교 판단문이라고 함. - if 문(조건 하나비교)
- else 문 (조건 분기)
반복문 특정 명령문을 지정된 수만큼 반복해서 실행할 때나 조건식이 참일 동안 반복시킬 때 사용함. - for 문 (구간 반복)
- do 문 (선행 반복)
- while 문 (조건 반복)
- foreach 문 (배열 반복)
기타 - break 문 : 반복문 내에서 반복을 중지함
- continue 문 : 반복문 내에서 그다음 반복문으로 이동
- goto 문 : C#에서 자주 사용하지는 않지만, 레이블(레이블 이름과 콜론(:)으로 만듦)로 지정된 곳으로 직접 이동 시킵니다.
 

if 문

단문

단문을 사용하는 if (조건식) 문장; 형태는 한 줄로 쓰거나 바로 그다음 줄에 작성할 수 있습니다. 또는 괄호를 사용할 수도 있습니다. 복문이면 반드시 블록 기호인 중괄호({})가 있어야 합니다.

//Case 1
if (1 == 1) Console.WriteLine("안녕");

//Case 2
if (1 == 1)
	Console.WriteLine("안녕");

//Case 3
if (1 == 1) {
	Console.WriteLine("안녕");
}

복문

if (1 == 1) {
	Console.WriteLine("안녕");
	Console.WriteLine("반가워");
}

Else문

else 문은 단독으로 사용할 수 없고 if 문 다음에 else 문이 오는 구조입니다.

if 문 조건이 거짓일 때 원하는 실행문을 실행할 수 있습니다.

if (1 == 1) {
	Console.WriteLine("안녕");
	Console.WriteLine("반가워");
} else {
	Console.WriteLine("반갑지 않아");
}

switch 문

switch 문은 표현식 값이 값1 ~값n 중 하나와 일치하면 해당 실행문을 실행하고, 일치하지 않으면 default 실행문을 실행합니다.

int x = 3;

switch (x)
{
	case 1:
		Console.WriteLine("1 입니다.");
		break;
	case 2:
		Console.WriteLine("2 입니다.");
		break;
	case 3:
		Console.WriteLine("3 입니다.");
		break;
}

for 문

for 문은 특정 구문을 여러 번 반복해서 실행할 때 사용합니다. for 문 형식은 다음과 같습니다.

for (초기식; 조건식; 증감식;)
{
     실행문;
}

for 문을 사용하여 ‘안녕하세요.’ 세 번 출력하기

using System;

namespace Day4_Main
{
    class Day4
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("안녕하세요.");
            }
        }
    }
}

1부터 5까지 짝수의 합

using System;

namespace Day5_Main
{
    class Day5
    {
        static void Main(string[] args)
        {

            int n = 5; // 5의 짝수 숫자 더하기
            int sum = 0;
            for (int i = 1; i <= n; i++)
            {
                if (i % 2 == 0) // i / 2 의 나머지가 0인 경우
                {
                    sum += i; // sum = sum + i
                }
            }
            Console.WriteLine(sum); //6 출력
        }
    }
}

1~100 더하기

using System;

namespace Day5_Main
{
    class Day5
    {
        static void Main(string[] args)
        {
            //1 ~ 100 까지의 합 구하기
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                sum += i;
            }
            Console.WriteLine(sum);
        }
    }
}

while 문

while 문은 조건식이 참일 동안 문장을 반복 실행합니다.

while 문으로 ‘안녕하세요’ 여러번 출력하기

using System;

namespace Day6
{
    public class Day6
    {
        static void Main(string[] args)
        {
            int count = 0;
            while (count < 3) //count = 0, 1, 2 실행
            {
                Console.WriteLine("안녕하세요");
                count++;
            }
        }
    }
}

피보나치 수열을 while 문으로 표현하기

using System;

namespace Day6
{
    public class Day6
    {
        static void Main(string[] args)
        {
            /*int count = 0;
            while (count < 3)
            {
                Console.WriteLine("안녕하세요");
                count++;
            }*/
            int first = 0;
            int second = 1;
            while (second <=20)
            {
                Console.WriteLine(second);
                int temp = first + second;
                first = second;
                second = temp;
            }
        }
    }
}

do while 반복문으로 최소 한 번은 실행하기

using System;

namespace Day6
{
    public class Day6
    {
        static void Main(string[] args)
        {
            //do while 문 사용하기
            int count = 0;
            do
            {
                Console.WriteLine("안녕하세요");
                count++;
            } while (count < 3); //count = 0, 1, 2 총 3번출력
        }
    }
}

1에서 100까지 3의 배수이면서 4의 배수인 정수 합 구하기

using System;

namespace Day6
{
    public class Day6
    {
        static void Main(string[] args)
        {
            
            //1에서 100까지의 3의 배수이면서 4의 배수인 정수의 합
            int sum = 0;
            int i = 0;
            do
            {
                if (i % 3 == 0 && i % 4 == 0)
                {
                    sum += i;
                }
                ++i;
            } while (i < 100);
            Console.WriteLine(sum);
        }
    }
}

foreach 문으로 배열 반복하기

foreach 문은 배열이나 컬렉션 같은 값을 여러개 담고 있는 데이터 구조에서 각각의 데이터가 들어 있는 만큼 반복하는 반복문입니다.

문자열에서 문자 하나씩 뽑아 출력하기

using System;

namespace N_foreach
{
    internal class @foreach
    {
        public void foreachEx()
        {
            string str = "ABC123";

            foreach (var c in str)
            {
                Console.WriteLine(c);
            }
        }
    }
}

break 문

반복문(for, while, do)를 빠져나올 때는 break 문을 사용합니다.

using System;

namespace N_Break
{
    internal class Break
    {
        public void BreakEx()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("현재 i의 값은 = "+ i);
                break;
            }
        }
    }
}

첫 번째 cw 실행되고 break로 빠져나와 다음 i 값이 출력되지 않는걸 확인 할 수 있었습니다.

using System;

namespace N_Break
{
    internal class Break
    {
        public void BreakEx()
        {
            for (int i = 0; i < 10; i++)
            {
                if (i == 5)
                    break;
                Console.WriteLine("현재 i의 값은 = " + i); 
            }
        }
    }
}

i 가 5일 경우 break 를 실행하는 조건문을 넣어 사용해보니

i 값이 4까지는 출력되지만 i 값이 5일때 break로 반복문이 빠져나오는 걸 확인 할 수 있었습니다.

continue 문으로 코드 건너뛰기

using System;

namespace N_Break
{
    internal class Break
    {
        public void BreakEx()
        {
            /*for (int i = 0; i < 10; i++)
            {
                if (i == 5)
                    break;
                Console.WriteLine("현재 i의 값은 = " + i); 
            }*/
            for (int i = 0; i < 5; i++)
            {
                if (i == 3)
                    continue;
                Console.WriteLine("현재 i의 값은 = " + i); 
            }
        }
    }
}

i 가 3일 경우 continue 문이 실행되어 [현재 i 값은 = 3]이 건너뛰어 지는거를 확인 할 수 있었습니다.

goto로 프로그램 흐름을 원하는 대로 바꾸기

goto 구문은 특정 레이블로 이동하는 기능을 합니다. C#에서 레이블은 콜론(:) 기호를 레이블 이름 뒤에 붙여 만듭니다. 이렇게 만든 레이블 코드는 평상시에는 주석처럼 아무 의미 없는 코드로 사용하지만, goto 구문 뒤에 레이블을 지정하면 해당 레이블로 이동하는 기능을합니다.

using System;

namespace N_goto
{
    internal class @goto
    {
        public void gotoEx() // goto는 특정 영역으로 이동하는 기능이다.
        {
            Console.WriteLine("시작");
        Start:
            Console.WriteLine("0, 1, 2 중 하나 입력 : _\\b");
            int chater = Convert.ToInt32(Console.ReadLine());
            if (chater == 1)
            {
                goto Chapter1; //1 입력시 Chapter1 영역으로 이동
            } else if (chater == 2)
            {
                goto Chapter2;
            } else if (chater == 3)
            {
                goto End;
            }
            Chapter1: // 1 입력 받은 경우 여기서 시작
            Console.WriteLine("1장입니다.");
            Chapter2: // 2 입력 받은 경우 여기서 시작
            Console.WriteLine("2장입니다.");

            goto Start;

            End:
            Console.WriteLine("종료");
        }
    }
}
728x90

'C# > Basic Syntax' 카테고리의 다른 글

[C#] 8. 함수  (0) 2022.09.29
[C#] 7. 배열  (1) 2022.09.22
[C#] 5. 연산자  (0) 2022.09.19
[C#] 4. 콘솔 입/출력, Convert 클래스, var 키워드  (0) 2022.09.18
[C#] 3. 문자/문자열/논리 데이터 형식 사용해보기  (0) 2022.09.15