2011. 6. 2. 12:58

제어문


* if문

   조건에 따라 문자을 실행 합니다.
if(논리값)
{
문장1;  //논리값이 true 값일때 실행
}
[else
{
            문장2;  //논리값이 false 값일때 실행
}]


int x =5;

if(x < 0)
      Response.Write ("음수");
else
      Response.Write ("양수");
else
      Response.Write ("0");

* switch문

  if 문이 하나의 조건을 보고 실행할 문장을 결정한다면, switch 문은 변수가 가지는 값에 따라 실행할 문장을 결정합니다.
if문을 여러개 써서 다중 조건을 비교해야하는 경우라면 switch 문을 쓰면 간단하게 구현 할 수 있습니다.


-> if 문과 논리 값
   C++ 언어에서 논리값을 표현할 때, false 는 0 값, true 는 0 이 아닌 값으로 나타냅니다. C#에서는 논리형과 정수형 사이에 형 변환을 허용하지 않기 때문에, 정수 값이 논리값을 대신할 수 없습니다. 다음과 같은 코드는 허용되지 않습니다.

    if(x) // C#에서는 허용안됨.

  마찬가지로 정수 값을 비교할 때, 반드시 다른 값과 비교해주도록합니다. 예를 들면 0 값과 비교해서 조건이 true 또는 false 값을 갖도록 사용합니다.

     if ( x !=0)
{
       Console.WriteLine("0이 아닙니다.");
}


switch 문 기본 형식은 변수값과 각 case 문에 있는 값을 비교해서 같으면, 그 case 문에 해당하는 문장을 싱행합니다.
조건에 맞는 겨웅가 없을경우 , default 문에 있는 문장을 싱행합니다.

switch (var)
{
        case value1 : 문장 1;
                             break;
        case value2 : 문장 2
                             break;
        case value3 : 문장3
                             break;
}


예)
string s = Request["Number"];
        int n = int.Parse(s);
        switch (n)
        {
            case 1: Response.Write("one 선택");
            break;
            case 2: Response.Write("two 선택");
            break;
            case 3: Response.Write("three 선택");
            break;
            default: Response.Write("선택 항목에 없습니다");
            break;
        }


break 문은 현재 case 문에서 코드 실행을 끝내고 swith 문을 벗어나라는 의미입니다. 모든 case 문은 반드시 break 문으로 끝나야 하며, 그 다음 case 문에 있는 코드를 여속해서 실행하는 것을 허용하지 않습니다.
default 문은 모든 case 문에 있는 값을 점검한 결고, 조건에 맞는 경우를 찾지 못한 경우에 실행됩니다.


string 형과 같은 문자열 비교

        switch(str)
         { 
               case "apple" : Response.Write("apple"); break;
               case "orange" : Response.Write("orange");break;
               default : break;
         }



* while문
    조건의 논리 값이 true 값을 갖는 동안 반복해서 실행하며, false 값이 되면 루프를 종료합니다. 

//while 문
     while(논리 값)
         {
             문장 1;   //논리값이 true 인 동안 반복 실행할 문장.
         }

// do while 문
        do
        {
             문장 1;   
         } while(논리 값)   //최소 한번 실행 후에 논리값 검사



  

   예)1
        int count = 0;
        while (count < 100)
        {
            Response.Write("count = " + count + "<br>");
            count++;
        }


예)2
 do while 문은 일단 코드를 실행한 후 나중에 조건을 확인하기 때문에 , 무조건 한번은 실행하고 조건에 맞지 않으면 루프를 벗어납니다.
        int count = 0;
        do
        {
            Response.Write("count = " + count + "<br>");
            count++;
        } while (count < 3);



* for 문
   보통 몆번 실행 할 것인가 정해진 경우에 사용하며, 변수 값을 사용해서 반복 실행을 제어 합니다.
for문 내에서 직접 변수를 선언해서 사용할 수도 있고 아예 값 초기화 과정을 생략할 수도 있습니다. 물론 이런 경우 for 루프를
돌리기 전에 변수 값을 가지고 있어야 할 것입니다.

for(변수 초기화; 논리값(변수 값 검사) ; 변수 값 변화)
{
     문장 1;
}


//for 문 사용 예
for(int count = 0; count<3; count++)
{
    Console.WriteLine("count={0}",count);
}

//count 값을 2씩 증가시키기 위해서는 다음을 사용할 수 있습니다.
int count = 0;
for(; count < 5; count+=2)
{
   string str = String.Format("count={0}.({0}<5)={1}",count,count<5);
   Response.Write(str + "<br>");
}

//for 문을 중첩 사용
for(int x=0; x<3; x++)
for(int y=0; y<3; y++)
{
    Response.Write("x= "+ x + "y = " + y);
}




-> 무한 루프
  for 문에 들러가는 모든 문장을 생략하면 반복을 종료하지 못하고 계속 루프를 돌게 되는데, 이런 경우 무한 루프라고 합니다.
무한 루프란 반복 실행을 멈추지 않고 계속해서 실행하는것을 말합니다. 

 //모두 생략할 경우, 무한 루프

for( ; ;)
{}

while 문에서도 저건에 오는 논리 값이 false 값이 되면 벗어나도록 되어 있는데, 만약 true 값을 지정해 버리면 계속해서 반복
실행하게 됩니다.

// True 값을 준 경우, 무한 루프
while(true)
{}

이렇게 무한 루프를 만드는 경우, 반듯시 반복 코드 안에 루프를 벗어날수 있도록 break 문이 존재해야 합니다.
그렇지 않으면, 결코 끝나지 않는 프로그램이 만들어 질것입니다. 


foreach 문

배열이나 콜렉션에서 순서대로 값을 가져와 반복해서 수행할 때 이용합니다. 

      
      
  string[] arr = { "Apple", "Banana", "Orange" };
        foreach (string str in arr)
        {
            Response.Write(str + ",");
        }

break 문과 continue 문


* break 문 루프를 벗어나라. 
    int i = 0;
    while( true )
    {
        if ( i == 5 ) break;
        Response.Write( ++i + ", "  ); // 1 2 3 4
    }


* continue 현재 실행중은 반복문을 멈추고 다음 반복문을 계속하라.
   
for ( int count = 0; count < 10; count++ )
    {
        if ( count % 2 == 0 ) // 짝수인 경우
            continue;
        Response.Write( count + ", "  ); // 1 3 5 7 9
    }