반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발꿈나무

[C# 교과서] 4. C# 기초(3) - 제어문, 조건문, 반복문 본문

C# 기초

[C# 교과서] 4. C# 기초(3) - 제어문, 조건문, 반복문

HYOKYE0NG 2022. 1. 13. 15:50
반응형
제어문 소개 및 if/else 문

 

제어문

제어문은 프로그램 실행 순서를 제어하거나 프로그램 내용을 반복하는 작업 등을 처리할 때 사용

 

  • 순차문: 기본적으로 모든 실행문은 순서대로 실행
  • 조건문(선택문): 조건의 참 또는 거짓에 따라 서로 다른 명령문을 실행 (EX)if문, else문, switch문
  • 반복문: 특정 명령문을 지정 수만큼 반복하거나 조건식이 참일 때 동안 반복 (EX) for문, do문, while문, foreach문

 

조건문: if문과 가지치기

if(조건식 1)
{
	조건식 1을 만족할 때 실행할 실행문;
}
else if(조건식 2)
{
	조건식 1을 만족하지 않고, 조건식 2를 만족할 때 실행할 실행문;
}
else
{
	조건식 1,2를 모두 만족하지 않을 때 실행할 실행문;
}

else if와 else절은 생략가능

using System;

Class Grade
{
	static void Main()
    {
    	 int score = 60;
         
         if(score >= 90)
         {
         	Console.WriteLine("Good");
         }
         else if(score >= 70)
         {
         	Console.WriteLine("Normal");
         }
         else
         {
         	Console.WritelINE("Bad");
         }
    }
}

// result: Bad

 

if(조건식)
	실행문;

만약 실행문이 한 줄이라면 중괄호 생략 가능

 

중첩 if문

using System;

Class IfNested
{
	static void Main()
    {
    	string name = "C#";
        int version = 8;
        
        if(name == "C#")
        {
        	if(version == 8)
            {
            	Console.WriteLine($"{name} {version}");
            }
        }
    }
}

//result: C# 8

 

if문으로 한 번에 조건 여러 개 처리하기

&&와 || 연산자를 사용하여 하나 이상의 조건을 함께 처리 가능

int number = 1234;
if(number >= 1000 && number == 1234)
{
 	Console.WriteLine("모두 참이라면 실행");
}
if(number >= 1000 || number == 12345)
{
	Console.WriteLine("하나라도 참이라면 실행");
}

/*
<result>
모두 참이라면 실행
하나라도 참이라면 실행
*/

 

 

조건문: switch 문으로 다양한 조건 처리하기

 

switch문 소개

표현식 갑이 값1 ~ 값n 중 하나와 일치하면 해당 실행문을 실행, 일치하지 않으면 default 실행문을 실행

default 레이블은 생략 가능

switch(표현식)
{
	case 값1: 실행문1; break;
    case 값2: 실행문2; break;
    ...
    case 값n: 실행문n; break;
    default: 실행문; break;
}
using System;

Class SwitchExpression
{
	static void Main()
    {
    	int x = 2;
        
        switch(x)
        {
        	case 1:
            	Console.WriteLine("This is 1");
                break;
            case 2:
            	Console.WriteLine("This is 2");
                break;
        }
    }
}

//result: This is 2

 

입력 값에 따른 출력 구문을 switch 문으로 선택하기

입력값이 정수인 경우

using System;
using System.Console;
//원래 System.Console.WriteLine인데 System.Console을 using시켜줌으로써 그냥 WriteLine()만 써도 됨

Class Switch
{
	static void Main()
    {
    	WriteLine("가장 좋아하는 프로그래밍 언어는? ");
        Write("1. C\t");
        Write("2. C++\t");
        Write("3. C#\t");
        Write("4. Java\t");
        int answer = Convert.ToInt32(ReadLine());
        
        switch (answer)
        {
        	case 1:
            	WriteLine("C 선택");
                break;
            case 2:
            	WriteLine("C++ 선택");
                break;
            case 3:
            	WriteLine("C# 선택");
                break;
            case 4:
            	WriteLine("Java 선택");
                break;
            default:
            	WriteLine("보기에 없는 답입니다.");
                break;
        }
    }
}

/*
<result>
가장 좋아하는 프로그래밍 언어는?
1. C	2. C++	3. C#	4. Java
3 (enter)
C# 선택
*/

 

입력값이 문자열인 경우

using System;

Class SwitchWeather
{
	static void Main()
    {
    	Console.WriteLine("오늘 날씨는 어떤가요? (맑음, 흐림, 비, 눈, ...)");
        string weather = Console.ReadLine();
        
        switch (weather)
        {
        	case "맑음":
            	Console.WriteLine("오늘 날씨는 맑군요.");
                break;
            case "흐림":
            	Console.WriteLine("오늘 날씨는 흐리군요.");
                break;
            case "비":
            	Console.WriteLine("오늘 날씨는 비가 오군요.");
                break;
            default:
            	Console.WriteLine("혹시 눈이 내리나요?");
                break;
        }
    }
}

/*
<result>
오늘 날씨는 어떤가요? (맑음, 흐림, 비, 눈, ...)
안개 (enter)
혹시 눈이 내리나요?
*/

 

 

반복문(for 문)을 사용하여 구간 반복하기

 

for문으로 반복하기

gor문은 특정 구문을 여러번 반복해서 실행할 때 사용

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

for문의 기본 구조는 다음과 같다.

초기식부터 조건식까지 증감식 크기만큼 증가 또는 감소시키면서 작업 명령문을 반복하여 실행

 

for문을 이용하여 'Hello' 세 번 출력하기

using System;

Class ForDescription
{
	static void Main()
    {
    	for(int i = 0; i < 3; i++) //i가 0, 1, 2일 때 실행
        {
        	Console.WriteLine("Hello");
        }
    }
}

/*
<result>
Hello
Hello
Hello
*/

 

짝수 합 구하기

using System;

Class ForSumEven
{
	static void Main()
    {
    	int n = 10
        int sum = 0;
        
        for(int i = 1; i <= n; i++)
        {
        	if(i % 2 == 0)
            {
            	sum += i;
            }
        }
        
        Console.WriteLine($"1부터 {n}까지 짝수의 합: {sum}");
    }
}

//result: 1부터 10까지 짝수의 합: 30

 

for문을 사용하여 별표 기호로 삼각형 만들기

using System;

class ForTriangle
{
    static void Main()
    {
        for(int i = 0; i< 5 ; i++) //행 반복
        {
            for(int j = 0; j < i; j++) //열 반복
            {
                Console.Write("*");
            }
            Console.Write("\n");
        }
    }
}

/*
<result>
*
**
***
****
*/

 

무한 loop

프로그래밍에서 무한 루프(Infinite Loop)는 루프를 멈추지 않고 계속 실행하여 프로그램을 종료하지 않음을 의미

잘못 작성한 코드로 무한 루프가 발생하면 프로그램에 심각한 문제가 생기기 때문에 주의해야 함

using System;

Class InfiniteLoop
{
	static void Main()
    {
    	for( ; ; )
        {
        	Console.WriteLine("무한루프");
        }
    }
}

/*
	<result>
    무한루프
    무한루프
    무한루프
    ...
    (생략)
*/

 

구구단을 가로로 출력하기

using System;

class TimesTable
{
    static void Main()
    {
        for(int a = 2; a < 10; a++)
        {
            Console.Write($"{a}단\t");
        }
        Console.WriteLine();
        
        for(int i = 1; i < 10; i++) //행(세로) 출력
        {
            for(int j = 2; j< 10; j++) //열(가로) 출력
            {
                Console.Write($"{j}*{i}={i*j}\t");
            }
            Console.WriteLine();
        }
    }
}

 

 

while문과 do문, foreach 문으로 반복 처리하기

 

while문

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

while(조건식)
{
	조건식이 참일 때까지 실행할 문장;
}

while 문의 기본 구조는 다음과 같다.

 

while 문으로 'Hello' 여러 번 출력하기

using System;

Class WhileDescription
{
	static void Main()
    {
    	int i = 0;
        while(i < 3)
        {
        	Console.WriteLine("Hello");
            i++;
        }
    }
}

/*
	<result>
    Hello
    Hello
    Hello
*/

 

while 문을 사용하여 짝수 합 구하기

using System;

Class WhileSumEven
{
	static void Main()
    {
    	int i = 1;
        int sum = 0;
        while(i <= 100)
        {
        	if(i % 2 == 0)
            {
            	sum += i;
            }
            i++;
        }
        Console.WriteLine($"1부터 100까지 짝수의 합: {sum}");
    }
}

//result: 1부터 100까지 짝수의 합: 2550

 

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

// 피보나치 수열: 1 1 2 3 5 8 13 21 ...
using System;

class WhileFibonacci
{
    static void Main()
    {
        int first = 0;
        int second = 1;
        while (second <= 20)
        {
            Console.Write($"{second}  ");
            int temp = second;
            second += first;
            first = temp;
        }
    }
} 

// result: 1  1  2  3  5  8  13

 

 

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

 

do while

do
{
	실행문;
} while(조건식);

 

do while 문을 사용하여 'Hello' 세 번 출력하기

using System;

class DoWhile
{
    static void Main()
    {
        int i = 0;
        do
        {
            Console.WriteLine("Hello"); //실행문
            i++; //증감식
        } while (i < 3); //조건식
    }
}

/*
<result>
Hello
Hello
Hello
*/

 

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

using System;

class DoWhileDemo
{
    static void Main()
    {
        int i = 1;
        int sum = 0;
        do
        {
            if(i % 3 == 0 && i % 4 == 0)
            {
                sum += i;
            }
            i++;
        } while (i < 101);
        
        Console.WriteLine($"1부터 100까지 3과 4의 배수의 총 합: {sum}");
    }
}

//result: 1부터 100까지의 3과 4의 배수의 총 합: 432

 

foreach 문으로 배열 반복하기

 

foreach

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

foreach (항목 in 항복들)
{
	실행문;
}

 

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

using System;

class ForEach
{
    static void Main()
    {
        string str = "ABC123";

        foreach(char c in str)
        {
            Console.Write($"{c}  ");
        }
        Console.WriteLine();
    }
}

//result: A  B  C  1  2  3

 

 

break, continue 문으로 반복문 제어하기

 

break 문

break 문은 반복문(for, while, do)을 빠져나올 때 사용됨

 

무한루프 빠져나오기

using System;

Class BreakInfiniteLoop
{
	static void Main()
    {
    	int number = 0;
        while (true) // 무한루프
        {
        	Console.WriteLine(++number);
            
            if(number >= 5)
            {
            	break; //무한루프 탈출
            }
        }
    }
}

/*
<result>
1
2
3
4
5
*/

 

break문을 사용하여 while 문 빠져나오기

using System;

class WhileBreak
{
    static void Main()
    {
        int goal = 22;
        int sum = 0;

        int i = 1;
        while (i <= 10)
        {
            sum += i;

            if (sum >= goal)
            {
                break;  // 반복문 탈출
            }

            i++;
        }

        Console.WriteLine(
            $"1부터 {i}까지의 합은 {sum}이고, 목표치 {goal}이상을 달성했습니다.");
    }
}

//result: 1부터 7까지의 합은 28이고, 목표치 22 이상을 달성했습니다.

 

continue 문

continue 문을 사용하면 일부 코드 실행하지 않고 건너뛸 수 있음

 

continue 문으로 코드 건너뛰기

using System;

class ForIfContinue
{
    static void Main()
    {
        for (int i = 1; i <= 5; i++)
        {
            if (i % 2 == 0)
            {
                //[!] 현재 반복 중지 후 다음 반복으로 이동
                continue; // 짝수 건너뛰기
            }
            Console.WriteLine(i); // 1, 3, 5
        }
    }
}

/*
<result>
1
3
5
*/

 

반응형
Comments