절차지향 프로그래밍
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());
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("찾지 못했습니다.");
}
}
}
'C#' 카테고리의 다른 글
19.C#_WinForm - ImageViewer ( 이미지뷰어 ) (0) | 2009.08.28 |
---|---|
18.C#_WinForm - CheckedListBox ( 체크 리스트박스 ) (0) | 2009.08.28 |
17.C#_WinForm - 윈폼 창 정렬 (0) | 2009.08.27 |
16.C#_WinForm - WinForm WebBrowser (2) | 2009.08.27 |
15.C#_WinForm - StatusStrip(상태표시줄) (0) | 2009.08.27 |
Comments