C#교과서 마스터하기 9. 제어문 종류 와 조건

min seung moon·2021년 7월 10일
0

C#

목록 보기
9/54
post-thumbnail

https://www.youtube.com/watch?v=uGM4YY1d1V8&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=24

1. 제어문

  • 제어의 흐름
  • 실행 순서

01. 조건문(Decision / Conditional Statement; 선택문(Selection))

  • if ~ else문, switch ~ case문

-1. 조건문(Conditional) : Branching

  • 조건을 판단한 후 조건에 따라 분기하여 수행

_1. if문

  • 조건을 만족하면 문장을 실행하고 다음 라인을 수행
  • if문의 조건을 만족하지 않으면 수행을 한번도 하지 않음
  • 형식

_2. if ~else문 : 3항 연산자와 비슷

  • 형식
  • 조건을 만족하면 조건 다음의 문장1을 수행하고 조건을 만족하지 않으면 else 다음의 문장 2를 수행

_3. 다중 if문

  • 형식

_4. switch 문 : 다중 선택자 : Switching

  • 여러 개의 case구문을 사용하여 여러 조건 처리
  • 형식
  • switch와 case그리고 default 키워드를 사용하여 다양한 조건 처리


_5. 조건문 선택 가이드 라인

  • 단일 조건의 단일 블록의 코드를 실행하고자 할 때에는 if문 사용
  • 하나의 조건에 다라서 서로 다른 2개의 코드 블록을 실행하고자 할 때에는 if/else문 사용
  • 여러 개의 조건에 다른 여러 구문을 처리하고자 할 때에는 if/else if/ else문 사용
  • 좀 더 복잡한 조건을 처리하거나 할 때에는 중첩 if문 사용
  • 하나의 변수의 값에 따른 여러 개의 구문을 처리하해야 하는 경우에는 switch문사용

02. 반복문(Iterative Statement)

  • for문, while문, do문, foreach문

-1. for문

  • 초기식부터 조건식(종료식)을 만족하는 동안 간격(Step)만큼 반복 실행
  • [시작값(counter)], [최종값(counting to)], [증가값(increment counter)]을 설정하여 반복적인 수행을 할 수 있는 문장
  • 규칙적인 증가를 하는 경우에 많이 사용
  • 형식
    • 한 문장 이상인 겨웅에는 '{'와 '}' 기호를 이용하여 문장을 묶어준다
  • 예시
using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            // 0부터 9까지 반복
            for (int i = 0; i < 10; i++)
            {
                WriteLine(i);
            }
            // for문 안에서 선언된 변수는 블록을 빠져나가면 소멸
            for (int i = 0; i < 10; i++)
            {
                WriteLine(i);
            }
            WriteLine(i); // error
                          // 구문 안에서 여러 개의 변수 선언 가능 : 추천 안함
            for (int i = 0, j = 0; i < 10 && j < 20; i++, j += 2)
            {
                WriteLine(i);
                WriteLine(j);
            }

        }
    }
}

-2. 이중 for문

  • 구구단
using System;
using static System.Console;

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

using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 1; i <= 9; i++)
            {
                for (int j = 2; j <= 9; j++)
                {
                    Write($"{j} X {i} = {j * i} \t");
                }
            }
        }
    }
}

  • 별찍기
using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Write("*");
                }
                WriteLine();
            }
        }
    }
}

using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 5; i >= 1; i--)
            {
                for (int j = 1; j <= i; j++)
                {
                    Write("*");
                }
                WriteLine();
            }
        }
    }
}

using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <= (5-i); j++)
                {
                    Write(" ");
                }
                for (int j = 1; j <= i; j++)
                {
                    Write("*");
                }
                WriteLine();
            }
        }
    }
}

using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 5; i >= 1; i--)
            {
                for (int j = 1; j <= (5-i); j++)
                {
                    Write(" ");
                }
                for (int j = 1; j <= i; j++)
                {
                    Write("*");
                }
                WriteLine();
            }
        }
    }
}

-3. while

  • 조건이 만족하는 동안 코드 블록을 0번 이상 수행
  • 사전-검사 논리 제어 루프
  • [조건만족]이 true인 동안은 문장을 반복하고 false일 경우에는 while문 다음의 문장을 수행
  • 조건을 먼저 확인하기 때문에 한 번도 수행하지 않는 경우도 있다.
  • 형식
  • 예시
using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            while(i < 10)
            {
                WriteLine(i);
                i++;
            }
        }
    }
}


-4. do

  • 조건이 만족하는 동안 코드 블록을 1번 이상 수행
  • 선 실행 후 조건 처리
  • 특징
    • 사후-검사 논리 제어 루프
    • [반복문장]을 수행한 후에 [조건만족]을 확인
    • [조건 만족]이 맞던, 틀리던 [반복 문장]을 한번 수행
  • 형식
  • 예시
using System;
using static System.Console;

namespace testProject
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            do
            {
                WriteLine(i);
            } while (i != 0);
        }
    }
}

-5. foreach문 : foreach ... in

  • 배열 또는 컬렉션과 같은 데이터에 데이터가 있는 만큼 반복
  • 배열의 요소를 다루는데 유용한 구문
  • 배열 / 컬렉션 내의 모든 요소 탐색

03. 기타(점프문; Jumping; Loop-Jumping)

-1. continue문 : 외곽 루프(the smallest enclosing loop)의 제어로 전달

  • for문, while문, do while문의 반복중에 continue문을 만나면 조건을 판단한 후 다음 구문을 수행
  • 다시 조건식으로 이동하는 명령문
  • continue문은 다음 반복위치로 이동
  • 예시

-2. break문

  • for, while, do while문의 반복중인 반복구문을 강제적으로 종료하는 경우에 사용
  • 반복문을 빠져나오는 명령문
  • break문은 반ㅂ고문을 빠져나간다
  • 예시

-3. goto문 : 사용 안함

  • 무조건 분기문
    • 레이블을 만들어 놓고 해당 레이블 위치로 이동시킬 수 있는 기능을 제공
    • 스파게티 코드를 만들 가능성이 있음
    • C/C++/C# 포함, Java는 goto제거
    • 지난 20년간 프로그래머들은 goto문을 사용 안함을 권장

-4. return문

  • 탈출, 반환

05. 블록(Block) : scope 이해

profile
아직까지는 코린이!

0개의 댓글