언어 자료구조 알고리즘/Escort C#

[C#] 2.2.2 식과 문

언제나휴일 2016. 4. 1. 16:46
반응형

 C#에서 수행해야 할 논리적 코드를 표현하는 방법에는 연산자 이외에도 식과 문을 제공하고 있습니다. 수행해야 할 코드에서 값이나 변수, 속성, 리터럴, 연산자, 함수 호출 등의 코드 조각을 식(Expressions)이라 합니다. 그리고 수행해야 할 코드를 세미콜론 단위로 구분하여 표현하는데 이를 문(Statements)이라 부릅니다. 결국, 문을 구성하는 것이 식이라 할 수 있습니다.

 

 식에는 단순히 변수이름을 사용하는 것과 리터럴 상수를 사용하는 것, 메서드 이름과 인자를 사용하는 것이 있습니다.

 

static void Main(string[] args)

{

    string s = string.Empty;

    s = "Hello"; //리터럴 상수 사용

    string s2 = s; //변수 이름을 사용

    Console.WriteLine(s2); //호출문

}

 

 문에 종류에는 선언문과 연산 구문과 같이 단순구문과 조건(선택), 반복문, 점프(분기), 예외 처리문 등과 같이 블록을 구성하여 블럭 내에 수행해야 하는 절차를 표현하는 문이 있습니다. 그리고 C#의 조건문과 반복문은 C언어와 C++과 다르게 조건에 사용하는 식의 연산 결과가 반드시 bool형이어야만 합니다.

 


[그림 9] 조건식에 bool 형식이 아닌 형식을 사용했을 때의 오류 화면

 

static void Main(string[] args)

{

    int i = 0; //선언문

    Console.WriteLine("수를 입력하세요.."); //호출식()

    try //예외 처리문의 try 블록

    {

        i = int.Parse(Console.ReadLine());

        if ((i % 2) == 0) //조건문

        {

            Console.WriteLine("입력한  수 {0}는 짝수입니다..", i);

        }

        else

        {

            Console.WriteLine("입력한 수 {0}는 홀수입니다. ", i);

        }

 

        int sum = 0;

        for (int index = 1; index < i; index++) //반복문

        {

            sum += index;

        }

        Console.WriteLine("1~{0}까지의 합은 {1}입니다.", 1, i, sum);

    }

    catch (Exception e) //예외 처리문의 catch 블록

    {

        Console.WriteLine("예외가 발생하였습니다. {0}", e.Message);

    }

}

 

 

 

 

if - else

 

 조건식으로 bool 형식이 올 수 있으며 조건식의 결과에 따라 수행 여부를 결정합니다. 조건이 참일 때 수행하는 구문만 정의할 때는 else 부분을 생략할 수 있습니다.

 

class Program

{

    static void Main(string[] args)

    {

        Console.WriteLine("이름을 입력하세요.");

        string name = Console.ReadLine();

 

        if (name != string.Empty) //이름을 입력하였을 때

        {

            Console.WriteLine("{0}의 주소를 입력하세요. ",name);

            string addr = Console.ReadLine();

 

            if (addr != string.Empty)//주소를 입력하였을 때

            {

                Console.WriteLine("{0}의 주소는 {1}입니다. ", name, addr);

            }

        }

        else //이름을 입력하지 않았을 때

        {

            Console.WriteLine("이름을 입력하지 않았습니다.");

        }

 

    }

}

 

 

 

switch

 

 여러 가지 경우의 코드에서 원하는 코드만 수행할 수 있습니다. 각 경우에 수행할 코드는 case문을 사용하며 일치하는 case문부터 시작합니다. 그리고 break문을 만나면 switch문을 빠져나갑니다. case문으로 표현하지 않은 때에 수행할 코드는 default문을 사용합니다.

 

 그리고 C언어와 C++언어와 다르게 문자열을 사용할 수 있어 개발에 편의성을 높였습니다. 또한, C언어와 C++과 다르게 case문에 수행할 코드가 있을 때에는 break문을 명시해야 합니다.

 

static void Main(string[] args)

{

    string name = string.Empty;

    Console.WriteLine("이름을 입력하세요..");

    name = Console.ReadLine();

 

    switch (name)

    {

    case "홍길동": Console.WriteLine("휘리릭~"); break;

    case "강감찬":

    case "을지문덕 ": Console.WriteLine("이랴~"); break;

    default: Console.WriteLine("음냐뤼~");     break;

    }

}

 

 

 

 

while , do while

 

 while문과 do while문은 조건식이 참일 동안 반복해서 수행합니다. if문과 마찬가지로 조건식은 bool 형식이 와야 합니다. 그리고 반드시 한 번은 수행해야 한다면 do while문을 사용할 수 있습니다.

 

 반복문을 수행 도중에 빠져나가려고 할 때에는 break문을 사용합니다. 또한, 반복문의 수행 도중에 반복문 시작으로 가고자 할 때는 continue문을 사용합니다. for문을 이용하여 반복문을 표현할 때도 break continue에 대한 사항은 같습니다.

 

static void Main(string[] args)

{

    int i = 0;

    while (i < 10)

    {

        Console.WriteLine("{0}", i);

        i++;

    }

 

    do

    {

        i++;

        Console.WriteLine("do-while:{0}", i);

    } while (i < 10);

}

  

 

 

for

 

 while문 처럼 조건식이 참일 동안 반복해서 수행합니다. 반복문을 수행하기 전에 초기화와 반복문에 조건을 변화시키는 부분이 있어서 초기 구문을 생략하는 개발자의 실수가 줄어듭니다.

 

static void Main(string[] args)

{

    for(int i = 0; i<10; i++)

    {

        Console.WriteLine("for:{0}", i);

    }

}

 

foreach

 

 배열과 같은 컬렉션에 있는 각 요소에 대해 같은 작업을 수행할 때 사용됩니다. 사용자가 정의한 형식을 foreach문에서 사용하려면 GetEnumerator, MoveNext,Reset,Current 멤버가 있어야 합니다. 이 부분은 8장 인터페이스와 컬렉션에서 다루겠습니다.

 

static void Main(string[] args)

{

    int[] arr  = new int[]{2,3,4,5,6};

    foreach (int i in arr)

    {

        Console.WriteLine(i.ToString());

    }

}

 

반응형