Blog Content

    티스토리 뷰

    07.C#-Console 정리

    반응형
    C# 문법
    절차지향 프로그래밍
    1. 기본구조
         using System;
         public Class Name{
      Public Static void Main()
      {
              // input
              // process
              // Output
      }
     }
      이와  같은 기본적인 구조 형태로 이루어져 있다.
    2. 입 출력 문
         a. Constole.Read() 사용하여 입력 문 구성
         b. Console.Write() 사용하여 출력 문 구성

    3. Data Type / Variable / Constant
           
    4. Operators : 기호 연산자

    5. Statements

    6. Array : 동일한 타입들을 하나의 이름으로 묶어 놓은 것을 의미

    7. Function/Sub Procedure/Sub Routine(Method)

    8. Struct(구조체)  /  Enumeration(열거형)
        a.구조체 : 타입이 다른 변수들의 집합
          b. 열거형 : 가능한 값의 집합을 사용자가 직접 정의 하는 타입 의미

    9. Class(Built In)
          a. 구조체의 모든 기능 + 함수(메서드) 동작 기능 의미
              하며, 자동자의 설계도를 생각하면 간단하다.

    개체지향 프로그래밍
    1. Class : 자동차 설계도 의미
         a. Main Method : Entry Point
         b. Field : 자동차 부품
         c. Method : 자동차 동작
         d. Constructor : 조립/시동 걸기
         e. Destructor : 소멸자 를 말하며, 폐차/주차(요원)
         f. Property : 색상/크기/모양/...
         g. Indexer : 카탈로그, 객체를 마치 배열인 것처럼 사용
         h. Delegate :  a. 대리운전 (다중 메서드 호출)
                              b. 메서드를 가르키는 참조형으로 메서드의
                                  번지를 저장하거나 다른 메서드의 인수로
                                  메서드 자체 전달 시 사용

         i. Event : a. 사고 (메서드 수행결과)
                        b. 어떠한 사건 발생시 호출 되어야 하는 메서드 목록
         
         j. Attribute : 자동차 튜닝 의미

    2. Namespace : 자동차 브랜드
                                     
    3. Interface : 자동차 설계 표준

    알고리즘 (필수 : 무조건 외울 것)
    1. SUM, COUNT, AVG (합, 개수, 평균)
    2. MAX, MIN (최대값, 최소값)
    3. RANK (순위)
    4. MODE (나머지)
    5. NEAR (가까운 값)
    6. SORT (선택정렬)
        (선택 과 버블 정렬 비교)
         a. Selection Sort
              i. 비교하여 작은 것은 왼쪽
         b. Bubble Sort
              i. 인접한 (비슷한) 데이터 비교

         c. Quick Sort

    7. SEARCH / Binary Search

    8. MERGE

    9. GROUP


    자료구조
    1. STACK : LIFO (Last Input First Out)
         a. STACK Pointer(sp)
         b. Overflow : STACK이 꽉 찼을 때 (초과시)
         c. Underflow : 비어있을 때...
         d. STACK Size : STACK의 크기
         e. 접시 쌓는 모양

    2. QUEUE : FIFO (First Input First Out)
         a. 대기행렬, 인쇄대기, 은행 줄서기

    3. LINKED LIST : LIFO+FIFO
         a. 배열보다 느리다는 단점
         b. 삽입과 삭제가 용이하다. (추가, 삭제용이)

    4. TREE
         a. 이진 탐색 트리 : 작은 게 왼쪽/아래

    5. GRAPH
         a. 서울에서 부산까지 최적경로 따질 때

    6. HASHTABLE
         a. 키(Key)와 값(Value)의 쌍으로 데이터 저장
         b. 충돌이 발생할 수 있다.
              i. Hash["a"] = 1234;
              ii. Hash["aa"] = 5678; // a 도 5678 덮어씀
              

    객체지향 관련 용어
     Inheritance : 상속
         a. super/base/parent클래스의 기능을 sub/derived/child
             클래스에 상속
           b. 상속 : 이미 만들어진 클래스의 멤버들을 물려받아 새로운 클래스
                         정의 하는 기법 의미.

     Encapsulation : 캡슐화
         필드를 꽁꽁 숨겨라… Field는 무조건 private
         외부에 공개 시 public한 Property로 공개

    Override : 오버라이드
         부모의 멤버를 자식에서 재 정의

    Overload : 오버로드
         a. 메서드 다중 정의, 동일한 이름의 메서드를 여러 개 선언
           b. 오버로딩 : 메서드는 이름으로 구분되며 이름이 같더라도
                                  인수목록이 다르면 여러 번 매서드 정의 가능

    Abstraction : 추상화
         a. 부모 클래스에는 멤버명만 정의하고 실제 구현은 자식에서 생성
           b. 추상메서드 : 인수목록이 리턴 타입은 가지지만 본체는 가지지 않으며,
                                     세미 콘론으로 끝이 난다.

    Instance( 인스턴스) :  클래스로부터 개체를 생성해나는 단계

    Polymorphism : 다형성
         동일 개체를 호출하는 관점에 따라서 다른 일 수행
         부모 클래스의 인스턴스 호출시와 자식 클래스의 인스턴스시 다름
         오버라이드 == 다형성 의미.

    Seald Class : 봉인 클래스 -> 더 이상 상속되지 않는 클래스, 최종 클래스
                                메서드 앞에 사용시 메서드는 봉인되며 더 이상 재정의 불가

    Object Class :최상위 클래스 ->C#에서의 최상위 클래스, 시조(?) 클래스
                                 거대한 클래스들의 계층으로 구성
     
    Access Modifiers : 접근 한정자(=접근 제한자)
         private(전용) : this 내에서만 공개
         protected(제한적인 허용) : 자식에게만 공개
         public(공용) : 모두에게 멤버 공개
         
         internal(어셈블리) : DLL 파일내의 모든 멤버에게 공개
         protected internal(제한적인DLL) : DLL에서의 상속관계에서만…

    Static과 Instance
         a. Static : 정적 접근, 클래스로부터 객체를 생성하지 않고,
                         바로 사용 가능
         b. Instance : 메모리에 객체를 올린 후 사용, new 키워드 사용

    ---------------------------------------------------------------------------
    1. 비트연산자
    using System;

    public class 비트
    {
        public static void Main()
        {
            int a = 3;
            int b = 2;

            Console.WriteLine(a&b); //2
            Console.WriteLine(a|b); //3
            Console.WriteLine(a^b); //1
            Console.WriteLine(a!=b); //true
        }
    }

    2. 정렬(선택정렬)
    using System;

    public class 선택정렬
    {
        public static void Main()
        {
            int[] arr = { 1, 5, 3, 6, 2, 10 };
           
            for (int i = 0; i < arr.Length - 1; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i] > arr[j])
                    {
                        Swap(ref arr[i], ref arr[j]);
                    }
                }
            }
            foreach (var item in arr)
            {
                Console.WriteLine("{0}", item);
            }
        }
        private static void Swap(ref int i, ref int j)
        {
            int temp = i;
                i = j;
                j = temp;
        }
    }

    3. 시프트 연산자
    using System;

    public class 시프트
    {
        public static void Main()
        {
            int a = 40;
            int r = 0;

            r = a >> 3;
            Console.WriteLine(r);

            r = a << 1;
            Console.WriteLine(r);
        }
    }

    4. 증감연산자
    using System;

    public class 증감연산자
    {
        public static void Main()
        {
            int a = 3;
            int b = 5;
            int c = 7;
            int temp = ++a - --b * c--;

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

    5. 이진검색
    using System;

    public class 이진검색
    {
        public static void Main()
        {
            int[] data = { 1, 3, 5, 7, 9};
           
            Console.WriteLine("찾을데이터입력:");
            int Serch = Convert.ToInt32(Console.ReadLine());

            bool flag = true;
            int index = -1;
            int low = 0; int mid = 0; int high = 0;
            low = 0; high = data.Length - 1;
     
            //process
            while (low<high)
            {
                mid = (low + high) / 2;
                if (data[mid] == Serch)
                {
                    flag = true;
                    index = mid;
                    break;
                }
                if (data[mid]<Serch)
                {
                    low = mid + 1;
                }
                else
                {
                    high = mid - 1;
                }
               
            }
            //output
            if (flag==true)
            {
                Console.WriteLine("{0}를 {1}위치에서 찾았습니다",Serch,index);
            }
            else
            {
                Console.WriteLine("찾지 못했습니다.");
            }
        }
    }
    반응형

    Comments