728x90

프로그래밍 138

C#에서 배열(Array), 이차원배열, 다차원배열, 가변배열 선언

C#에서의 문법은 C++에서의 문법과 다르다. C#에서의 문법을 알아보자 배열(Array) 1. 일반 배열 선언,초기화방법 string[] array = new string[3]{"Hello","World","Taek"}; 타입 이름 = new 타입[크기] { 초기화할 내용 }; 이다. 다른 방법들도 있지만 가장 읽기 편하므로 이 방법만 기억하자. 이 방법이 제일 길어서 이 방법만 제대로 알면 다른방법은 언제든지 외울 수 있을것이라 생각된다. 2. 이차원 배열 선언, 초기화 방법 string[,] array = new string[2,3] { {"Hello","World","Taek"}, {"Hello","World","Taek"} }; 다 똑같은데, [ , ]가 다르다 패턴으로 생각해보자. 3. 다차원..

프로그래밍/C# 2023.06.15

Static 키워드가 동작하는 시점(compile Time,Run Time)

C#에서 코드를 작성하면 Static키워드가 도대체 뭘까? 하는 생각이 든다. 첫 줄부터 써있기 때문이다. Static void Main(string[] args) 바로 Main함수에도 써있다. 따라서 사용새가 많아 보이는 Static이 무엇인지 가볍게 알아보자 일단 우리가 프로그램을 실행하기까지 과정이 있다. 1. Editor Time - 내가 코드를 작성하는 시점 2. Compile Time - 프로그램을 컴파일 하는 시점 ( build - link - compile 과정이 이루어진다.) 3. Run Time - 프로그램이 메모리에 올라가서 실행되는 동안을 얘기한다. 따라서 동작순서는 1 -> 2 -> 3 이다. 이때 Static키워드가 붙어있는 클래스, 메소드는 컴파일 타임과 런타임 사이에 메모리에..

프로그래밍/C# 2023.06.15

[C#] 클래스(Class) 두번째 시간

클래스 특징 1. 캡슐화 - 캡슐화는 클래스 안의 필드를 private 또는 protected로 외부에서 접근하지 못하도록 처리하는것을 말한다. 2. 상속 - 부모 클래스와 자식 클래스를 만들어서 부모 클래스에 정의된 필드와 메서드를 자식 클래스에서 사용할 수 있도록 처리하는것을 의미한다. * 부모 클래스 = 슈퍼클래스, 부모클래스, 베이스 클래스 라고도 불린다. * 자식 클래스 = 서브클래스, 자식 클래스, 파생 클래스 라고도 불린다. 3. 다형성 - 메서드가 동일한 이름으로 다양한 기능을 수행할 수 있도록 처리하는것을 의미한다. 4. 추상화 - 클래스를 정의할 때, 공통된 필드와 메서드를 부모 클래스로 정의해서 중복사용을 줄이는 것을 의미한다. 사용예시 가장 아래쪽 예제에 몬스터를 3가지 종류로 준비..

프로그래밍/C# 2023.06.13

[C#] 클래스(Class) 첫번째 시간

클래스 논리가 객체를 중심으로 이루어진다. 예를들어 게임을 만들기 위해서 여러사람들이 코드를 짜게되면 코드가 제각각으로 나오게되는데 이런 상태에서 게임을 만들게 되었을때 절차지향이면 다 다르게 설계가 된다. 객체지향으로 설계를 하게되면 규격이 통일되기 때문에 유지보수가 좋다. Dog 클래스 생성하며 알아보기 아래 코드를 보면 cat과 dog가 있는데 dog만 보도록 해보자 cat은 구조체이다. 개를 생각하면 어떤것이 떠오르는가? 이름, 짖는 소리, 색 이런것들이 떠오른다. 이것들을 변수로써 Dog class에 넣어주게 되면 앞으로 Dog 클래스를 선언할때 해당 내용들은 자연스럽게 따라오게 된다. 클래스의 선언 Dog babyDog = new Dog(); Dog adultDog = new Dog(); 이런..

프로그래밍/C# 2023.06.13

Function, Library, API, Frame work, 컬렉션(C#), 컨테이너(C++)

배열같은 데이터 타입을 컬렉션 혹은 컨테이너 라고 한다. 배열과 같이 변수를 여러개 할당해서 사용하려면 기존의 데이터 타입만으로는 부족하다. 그래서 배열과 같이 메모리 공간을 여러개 할당하는 형태의 변수가 필요한데, 이렇게 메모리 공간을 여러개 할당하는 형태의 변수를 컬렉션(C#) 또는 컨테이너(C++)라고 한다. 프로그래머들이 말하는 자료구조에 해당한다. Function - 함수 : 함수라는것은 프로그램을 동작하도록 하는 기본 단위 library - 라이브러리 : 일정한 동작을 구현하기 위해서 비슷한 역할을 하도록 하는 함수를 모아놓은것(함수의 집합) API - API : 일정한 동작을 구현하기 위해서 비슷한 역할을 하도록 하는 라이브러리를 모아놓은것(라이브러리의 집합) - 일반적으로 공식문서와 함께 ..

프로그래밍/C# 2023.06.13

[C#] C#에서 함수 사용하는 4가지 방법

C# 에서는 함수를 4가지 방법으로 사용이 가능하다. C++에서 Call by value와 Call by reference에 대한 개념이 있다면 문법을 익히면 금방 사용할 수 있을 것으로 생각된다. 설명과 아래 코드를 참조하면 좋다. CallFunc001 ~ 004까지 4가지 방법으로 함수를 사용해보았다. *static 이 앞에 붙는 이유는 main함수에도 static이 붙어있기 때문이다. *static이 붙어있는 함수와 붙어있지 않는 함수는 읽는 순서가 다르기 때문에 고려하여 써야한다. 1번 방법 : Call by value를 이용한 방식으로 보통 C++에서 사용했던 함수 사용방식과 같다. //Main에서 호출 CallFunc001(str); //함수 생성 static void CallFunc001(s..

프로그래밍/C# 2023.06.13

[C/C++] 이차원 배열 이해하기 + 숫자 슬라이드 퍼즐_예제

이차원 배열 char char2_[5][5] = //행[5], 열[5] { {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, }; 이건 char형 2차원 배열이다. ' '를 붙여줘야 하는것으로 생각된다. Ex) char char3 = '1'; 그냥 위 배열 그대로 출력했더니 역시나 아무것도 안나오는 모습. 아래 코드에서는 뒤쪽에서 *문자를 대입을 해주므로 문제없이 출력이 된다. #include using namespace std; void Desc002(); void swap(int*a,int*b); int main() { Desc002(); } //다차원 배열 void Desc002() { char char2_[5][5] = //행[5]..

[C/C++] 매개변수로 배열을 받을때는 사이즈도 함께 받자.

함수에서 배열을 가져다 쓰고싶을 수 있다. 이때는 배열의 크기도 함께 매개변수에 추가하여 보내주어야 한다. 함수 내에서 정수형태로 입력을 그냥 해줘도 상관은 없지만, 유지보수할때 놓칠 가능성이 높다.(내생각) 배열을 포인터를 통해 받게되면 포인터는 배열의 가장 앞쪽 [0]번째 인덱스 주소만을 가르키고 있기 때문에 배열 전체의 사이즈를 알 수 없다. 따라서 배열 크기를 넘어서는 값을 참조하게 될경우, 다른 메모리를 덮어 써버릴 수 있다. (예전에는 이런문제들 때문에 블루스크린등 문제가 많이 발생했었다고 한다.) #include using namespace std; void ArrayFunc(int* ptrArray); void ArrayFunc2(int* ptrArray, int arraySize); in..

[C,C++] 기본 3가지 정렬(선택정렬, 버블정렬, 삽입정렬)

1. 선택정렬 {0,1,2,3,4,5} : 여기서 숫자는 인덱스 자리를 표현한다고 가정 {21,59,36,99,17} : 여기서 숫자는 값이라고 가정 루프를 돌아서 가장 작은 값을 찾은 뒤 0번째 인덱스와 교환한다. (현재 21이 들어있는 자리와 5가지 숫자중 가장 작은 값이 교환된다.) (이때 교체는 가장 작은숫자를 선택하여 한번만 이루어진다. -> 선택정렬) 그 다음 1번째 인덱스자리에 같은 루프가 돌고, 반복하게 되면 오름차순으로 값이 정렬된다. void selectionSort(int arr[], int size) { int minIndex; int i, j; for (i = 0; i < size-1; i++) { minIndex = i; // i번째 인덱스자리에 가장 작은 값을 넣겠다는 의미 f..

[C/C++] 문자열 할당 및 출력하기 예제

char형 배열과 문자열 char형 배열의 경우 문자열을 입력해줄 수 있다. 그러나 배열의 특성상 선언 이후에 배열의 크기를 늘려줄 수 없다. ex) char string_[15] = "Good morning!"; 을 할경우, 배열의 크기가 15로 정해져서 16번째에 새로운 배열을 추가할 수 없다. 16번째에 무언가 글자를 추가해주고 싶다면, 배열 전체를 복사하여 크기가 16으로된 배열에 복사를 하여 사용하여야 한다. char형 배열을 선언시 문자열을 입력하게되면 끝에는 NULL값이 자동으로 들어간다. char string_[] = "Good morning!";을 하게될 경우 글자수는 공백포함 13이지만, 끝에 NULL값이 자동으로 들어가서 14가 배열의 최종 크기가 된다. *NULL - C++에서는 '..

728x90