허당 레몬도리
Published 2008. 10. 8. 13:29
S.O.A 강의 - 2 가. 언어유형/C#
반복문 > 함수 > class > file > dll

반복되는 작업을 하나의 이름으로 등록해 놓고 호출하는 방법

1. 반복문

  - while, do while, for
     단일 for   /  다중 for
     - 출력반복을 하기 위한 문장
     - 코드 단일화

   <형식>
     for(초기값; 조건; 증감/증가식)
     {
     명령;
     }
     int    i = 1;

      while(i<3)
      {
        Consloe.WriteLine("{0}",i);
        i++;
       }
---->for 

    <ex>
     for(int i=1;i<3;i++)
    {
     console.WriteLine("{0}",i);
     }

초기화 -> 조건 -> 명령 -> 증감 -> 조건(true)

                 -> 명령 ->증감 ->조건(true)

                 -> 명령 ->증감 ->조건(true)

                 -> 명령 ->증감 ->조건(false)

  - 무한루프
     for(;;){명령;} // 명령이 계속 돈다.

  - 다중 for 문
     for (){} - for (){}
    <형식>
    for (;;)
          {
             for (;;)
             {
             }
           }

    <ex>
    for(int i=1;i<=2;i++)
    {
          for(int j=1;j<=3;j++)
          {
               Console.Write("abc");
          }
     }

   입력용 - while, do while ,

      while (조건)  // 조건에 만족할때까지 수행 ex)카드로 돈을 찾을때
          {
            명령;
          {
      do   // 명령을 실행 후 조건을 만난다.  ex)기차표 예매 후 취소
          {
          명령;
         }while(조건);   

  출력용 - for

  - if()조건문
     -단일 if와 다중 if 가 있다.    
<형식>
     if (조건 )
     {
      명령;
     }

      -만일 조건이 만족하면 명령을 수행
    <ex> 만일 (a가 10보다 크면)

         {
          크다라고 출력하자
          }
         if (a > 10)
         {
          Console.WriteLine("크다");
         }  //{}없을경우 첫문장만 True로 인식한다.

      <형식>
     if(조건)
     {
         true 명령;
     }
     else
      {
       false명령;
      }

     -- 다중if --
    <형식>

     if(조건)
     {
         true 명령;
     }
     else if(2조건)
      {
       false명령;
      }
     else if(3조건)
      {
       false명령;
      }

     <ex>
     //문제 : 입력한 수가 양수이면 그 수에 +100
     //입력한 수가 음수이면 그 수에 -100
     //나머지는 0이라고 출력

      int a = Convert.ToInt32(Console.ReadLine());
      if (a > 0)
      {
           Console.WriteLine("{0}",a + 100);
       }
       else if (a < 0)
       {
            Console.WriteLine("{0}", a - 100);
       }
       else
       {
            Console.WriteLine("0");
       }
- 선택문 //if 의 범위를 줄위기 위해 if와 함께 사용된다.
     switch(조건) ----- int
     {
          case  선택 값:
                     명령;
                     break;
          default:
                    명령;
                    break;
     } 
※ go to 문을 권장하지 않는다.
                 
2. 함수 
  - ()를 가지고 선언과 동시에 &을 갖는다.
  - 선언된 함수는 호출 시에만 명령을 수행하고 호출이 끝나면 다시 돌아간다.    (binding)
  - binding된 함수는 메모리를 차지하지 않는다.

  <형식>  void형과 dataType형이 있다
     - void형
       접근지정자 키워드 void함수이름(매개변수)
       {
         명령; //단, 키워드와 매개변수는 선택적
       }

    <ex>
     public static void test() 
     { 

     }

    <실전>

using System;
using System.Collections.Generic;
using System.Text;

namespace Day1017
{
    class ETest
    {
        public void Test2()   //static이 없다.
        {
            Console.WriteLine("내용4");
        }
        public static void Test()
        {
            Console.WriteLine("내용3");
        }
    class FunClass1
    {
        public static void Test()
        {
            Console.WriteLine("내용1");
            Console.WriteLine("내용1");
            Console.WriteLine("내용1");
            Console.WriteLine("내용1");
            Console.WriteLine("내용1");
        }
        public static void GTest()
        {
            Console.WriteLine("내용2");
        }

        public static void Main(String[] args)
        {
            Test();  //내용1
            GTest();  //내용2

            ETest.Test();  //내용3

            //class명.멤버
            ETest t1= new ETest();
            t1.Test2(); //내용4
        }
    }
}
}

//static 선언을 하자마자 주소번지 준비,주소가 있기때문에 바로 Test()로 부르지만 
//static 없을 경우는 주소번지가 없기 때문에 ETest t1 = new ETest(); 를 사용하여 불러서 출력한다

      - 함수 호출시에는 함수이름만 부른다.
    <ex> Test();
    단, void 함수는 return 키워드가 없다.
    void 함수는 스스로 결과값을 출력 및 저장한다.

 - 매개 변수를 가진 함수를 호출할 때는 반드시 매개 상수를 대입후 호출한다.
static void test(int b)
{

}

-묵시형 변환을 할 수 있을까?
당연히 할수 있다.

  <실전 OverLoad>

using System;
using System.Collections.Generic;
using System.Text;

namespace Day18
{
    class Overtest1
    {
        public static void Test(int a)
        {
            Console.WriteLine("Int {0}", a);
        }
        public static void Test(float a)
        {
            Console.WriteLine("Float {0}", a);
        }
        public static void Test(double a)
        {
            Console.WriteLine("Double {0}", a);
        }
        public static void Test(char a)
        {
            Console.WriteLine("Char {0}", a);
        } //오버로드시에 해당 데이터 매개인자가 없을 경우 알아서 묵시형변환하여 출력된다. 

          //double형을 묵시형 변환 되었을때 int로 출력하게 하려면 에러 출력 변환되지 않는다. 
        public static void Test(string a)
        {
            Console.WriteLine("String {0}", a);
        }
        public static void Main(String[] args)
        {
            Test(3);
            Test(3.14f);
            Test(3.14);
            Test('A');
            Test("abc");

        }
    }
}

※ 이런 오류
자료는 있지만 {}로 자료 배열을 하지 않을경우 에러는 없지만 자료는 출력되지 않는다.
디버거 : {} 값 배열에 관련된 오류
         디버거 창에서 오류 클릭 후 <확인> 하면 오류줄을 지칭해준다.
} 더 있을경우 네임스페이스 에러

===============================================================================

datatype형의 함수

<형식>
접근지정자 키워드 datatype함수 이름(매개 변수)
{
return datatype의 상수;
}
- 함수이름을 호출하면 datatype의 상수를 리턴해준다.
- 값을 리턴하기 때문에 호출 시 에는 그 값을 받을 변수가 있어야 함.
가장 중요한 것은 함수를 선언 시에는 반드시 해당 함수의 자료형과 리턴하는 상수가 자료형이 일치하여야 한다.

<ex>
public static int test()
{
return 100;
}
int a = test();  // 값 : 100

 3. class  -> 사용자 DataType
            user가 자주 사용하는 DataType들을 
            class라는 키워드를 이용하여 하나의 이름으로 등록하는 것   
     -접근 지정자 / class멤버 변수와 메소드 / 지역, 전역
     class의 목적 : 은닉된 멤버 변수에게  (private 변수)
                     오픈된 멤버함수가  (public형 메소드)
                      값을 전달 및 변경하고 (public void setUserName())
                      리턴한다.(public datatype getName())
                      - 형 변환을 막기 위함

4. file

5. dll
※ dll > file > class > 함수 > 반복문 : dll은 file을 포함하고 file은 class를 포함하고 class는 함수를 포함하고 함수는 반복문을 포함한다.

profile

허당 레몬도리

@LemonDory

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!