본문 바로가기

프로그래밍119

c# 비동기 프로그래밍 async, await C#에서 async와 await 키워드는 비동기 프로그래밍(Asynchronous Programming)을 지원하기 위한 핵심 요소입니다. 이 키워드들을 사용하면 비동기 작업을 쉽게 작성하고 관리할 수 있습니다. 이를 위해선 동기와 비동기에 대한 기본적인 이해가 필요합니다.   프로그래밍 동기와 비동기동기와 비동기에 대해선 프로그래밍을 배워본 사람이라면 그 개념을 잘 모르더라도 한번쯤은 들어봤을 단어일 것입니다. 저 역시도 계속 들어왔던 단어지만 그 개념은 아예 모르고 있었으니 말ks-factory.tistory.comasync메서드나 람다 표현식에 사용되어 비동기 작업을 정의할 수 있게 합니다. async 키워드는 메서드 선언에 사용됩니다.async 메서드는 Task 또는 Task 반환형을 가집니다. .. 2024. 10. 1.
c# 튜플? Tuple? 튜플(Tuple)은 서로 관련된 여러 개의 값을 하나의 데이터 구조로 묶을 수 있는 C#의 유용한 기능입니다. 튜플을 사용하면 여러 값을 반환하거나 데이터 그룹을 쉽게 전달할 수 있습니다. C# 7.0부터 튜플이 언어 수준에서 개선되었고, 보다 간편하게 사용할 수 있게 되었습니다. 튜플은 여러 개의 값을 하나의 그룹으로 묶어서 처리할 수 있는 데이터 구조입니다. 각 값은 순서대로 저장되며, 서로 다른 데이터 타입을 가질 수 있습니다.  튜플 선언과 초기화   튜플 요소에 이름을 지정할 수 있습니다. 이를 통해 코드를 더 읽기 쉽게 만들 수 있습니다.  보통 메서드는 한개의 값을 반환하는데 튜플은 메서드에서 여러 값을 반환하는 데 유용합니다.  튜플 분해튜플의 각 요소를 개별 변수로 분해할 수 있습니다. .. 2024. 8. 1.
c# 인덱서? Indexer? 인덱서의 특징과 예제 인덱서(Indexer)는 C#에서 클래스나 구조체의 객체를 배열처럼 접근할 수 있게 해주는 프로퍼티의 일종입니다. 인덱서를 사용하면 객체 내부의 데이터 컬렉션에 대해 배열의 인덱싱 구문([])을 사용하여 요소에 접근할 수 있습니다. 이는 객체의 사용성을 향상시키고, 코드의 가독성을 높여 줍니다.인덱서의 특징인덱서는 this 키워드를 사용하여 정의됩니다.인덱서는 하나 이상의 매개변수를 받을 수 있으며, 보통은 하나의 매개변수를 사용합니다.인덱서는 일반적으로 public으로 선언되어 외부에서 접근 가능합니다.get과 set 접근자를 사용하여 인덱서의 읽기와 쓰기 동작을 정의할 수 있습니다.활용 상황인덱서는 다음과 같은 상황에서 유용하게 사용될 수 있습니다:내부 컬렉션 또는 배열의 데이터에 쉽고 직관적으로 접.. 2024. 5. 3.
c++ 25. 포인터?? 포인터의 개념과 예제 코드 처음 c언어를 배우시는 분들에겐 무덤과도 같은 포인터입니다. 많은 분들이 포인터 때문에 포기하는 경우들이 많아서 인데요. 사실 개념과 기본적인 사용 방법은 어렵지 않지만 이해하는데 많은 분들이 어려움을 겪는 녀석입니다. C++에서 포인터는 변수의 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리의 특정 위치에 직접 접근할 수 있으며, 이를 통해 데이터를 효율적으로 처리하고 관리할 수 있습니다. 포인터는 C++의 중요한 기능 중 하나로, 다양한 고급 기능과 밀접한 관련이 있습니다. 포인터의 개념 포인터는 기본적으로 데이터가 저장된 메모리의 주소를 가리키는 변수입니다. 포인터를 사용하면 변수에 직접 접근하는 대신 변수의 주소를 통해 간접적으로 데이터에 접근할 수 있습니다. 이러한 특성 덕분에 포인.. 2024. 4. 18.
c# LINQ?? LINQ의 특징과 예제 LINQ (Language Integrated Query)는 C#과 같은 .NET 언어에서 데이터 소스에 대해 쿼리를 수행할 수 있도록 하는 프로그래밍 모델입니다. LINQ는 다양한 데이터 소스 (예: 배열, 컬렉션, XML, 데이터베이스)에 대해 일관된 쿼리 경험을 제공합니다. LINQ를 사용하면 쿼리를 읽기 쉬운 방식으로 작성할 수 있으며, 컴파일 타임 검사와 자동 완성 같은 IDE 기능의 이점을 누릴 수 있습니다. 여기서 쿼리는 데이터를 검색하고 제어하기 위해 데이터베이스나 정보 시스템에 요청하는 명령어라고 보시면 됩니다. 여러 쿼리 언어들이 있는데 LINQ 역시 이런 쿼리 언어들 중 하나입니다. 쿼리를 통해 데이터베이스나 다른 정보 시스템과 상호작용하면서, 필요한 정보를 효율적으로 추출하고 조작할.. 2024. 4. 16.
c++ 24. 구조체 struct C++에서 구조체(structure)는 여러 데이터 항목을 하나의 단위로 묶는데 사용됩니다. 이러한 구조체는 관련 데이터를 그룹화하여 더 효율적인 프로그램 관리를 가능하게 합니다. 구조체는 일반적으로 사용자 정의 데이터 타입으로서, 다양한 데이터 타입의 변수들을 포함할 수 있습니다. 구조체를 사용함으로써의 이점은 아래와 같습니다. 데이터 그룹화: 구조체는 관련된 데이터 항목들을 하나의 단위로 묶어주어, 데이터 관리를 쉽고 효율적으로 만듭니다. 예를 들어, 학생에 관한 정보(이름, 학번, 점수 등)를 구조체로 묶으면 각 학생의 정보를 개별적으로 관리하기보다 더 체계적으로 다룰 수 있습니다. 타입 안전성: 구조체를 사용하면 사용자 정의 데이터 타입을 생성할 수 있으며, 이로 인해 타입 체크가 가능해져 프로그.. 2024. 4. 16.
함수?? 메서드?? 무슨 차이가 있을까?? 프로그래밍 언어를 조금 공부해보신 분들은 한번쯤은 들어보셨을 함수와 메서드. 이 두 용어는 종종 혼용되어 사용되곤 하지는데요. 아마 대부분의 분들은 공부하시면서 둘다 기본적으론 그 기능은 똑같다고 배우셨을것 같네요. 저 역시도 마찬가지였는데. 하지만 이 둘의 개념은 다릅니다. 물론 그 개념에 대해 모른다고 해서 프로그래밍을 하지 못하는 것은 아니나 어떠한 차이점이 있는지에 대해 알아둠으로써 더 효율적인 구조를 작성할 수 있는 기반이 될 수도 있기에 함께 알아보도록 하겠습니다. 함수(Function) 함수는 어떤 작업을 수행하는 코드의 묶음입니다. 일반적으로 입력을 받아서 처리하고, 결과를 반환합니다. 함수는 독립적으로 존재할 수 있으며, 특정 객체나 클래스에 종속되지 않습니다. 예를 들어, 파이썬에서 p.. 2024. 4. 15.
SOLID 객체 지향 프로그래밍 설계 원칙 SOLID는 객체 지향 프로그래밍과 설계에서 중요한 다섯 가지 원칙을 나타내는 약어입니다. 각 글자는 특정한 설계 원칙을 의미하며, 이 원칙들을 통해 더 유지보수가 쉽고, 확장 가능하며, 이해하기 쉬운 코드를 작성할 수 있도록 도와줍니다. 게임 개발에 있어서도 이 원칙들은 코드의 복잡성을 관리하고, 대규모 프로젝트에서 효율성을 높이는 데 기여할 수 있습니다. 예시는 c# 1. Single Responsibility Principle (SRP) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 합니다. 즉, 클래스를 변경하는 이유는 오직 하나여야 합니다. 예를 들어, 게임 캐릭터의 이동 로직과 그래픽 표현을 분리하여 각각의 클래스로 관리하는 것이 이 원칙에 부합합니다. 예시: 게임 내의 인벤토리 시스템을 .. 2024. 4. 13.
c++ 23. Array 컨테이너 c++의 컨테이너 중 배열 컨테이너를 배열 대신 사용할 수 있습니다. C++11부터 사용할 수 있으며, 배열의 크기를 타입의 일부로 만들어 컴파일 시간에 크기가 결정됩니다. 먼저, std::array를 사용하기 위해 헤더를 포함해야 합니다. 사용 방법은 아주 쉽습니다. array 배열명으로 아래 예제처럼 바로 초기화도 가능합니다. 배열의 크기는 선언 시 를 통해 지정되며, 이는 arr이 int 타입의 요소 5개를 가지고 있음을 나타냅니다. 이 array 컨테이너의 장점은 아무래도 바로 배열의 크기를 알 수 있다는 것입니다. 따로 배열의 크기를 알기위한 작업이 필요가 없이 size()를 활용하시면 됩니다. array의 장점 타입 안전성: std::array는 배열의 크기를 타입의 일부로 포함하여, 컴파일 .. 2024. 4. 3.
c++ 22. 다차원 배열 다차원 배열은 기존의 1차원의 배열 즉 가로 또는 세로(보통은 가로로 표현)로 한 줄로만 구성된 배열이 아닌 가로와 세로를 포함한 그 이상의 배열로 구성된 것을 말합니다. 그림에서 보듯 1차원은 일반 주택을 나열한 것에 비유할 수 있고, 2차원 배열은 아파트에 비유할 수도 있겠네요. 더불어 2차원 이상의 배열도 쓰이긴 하지만 3차원 이상은 잘 쓰이지 않습니다. 가독성이나 구조적으로도 굉장히 복잡해지니깐요. 아래의 그림은 4,6의 크기를 가진 2차원 배열입니다. 4행 6열의 2차원 배열이죠. 각 요소에 접근하기 위한 방법은 1차원 배열과 비슷합니다. 다만 두 개의 인덱스가 필요합니다. 만약 1행 2열에 있는 요소(값)을 가져오고 싶다면 배열명[1,2]로 접근하면 됩니다. 먼저 선언 방법을 보도록 합시다. .. 2024. 3. 28.
c++ 21. 1차원 배열의 크기 찾는 법 배열의 크기는 배열을 선언 시에 작성하게 되는데 이 크기를 알고 있다면 문제가 없지만 이 배열의 크기를 모른다면 배열의 인덱스를 벗어나는 문제가 빈번히 발생할 수 있습니다. 특히 함수로 배열을 전달할 때는 배열의 크기 정보가 전달되지 않으므로, 배열의 크기를 따로 매개변수로 전달하거나 다른 방법을 사용해야 합니다. 배열의 현재 크기를 몰라도 크기를 알 수 있는 방법에 대해 알아보도록 하겠습니다. sizeof(arr)은 배열 arr의 전체 크기를 바이트 단위로 반환합니다. sizeof(arr[0])은 배열의 한 요소의 크기를 바이트 단위로 반환합니다. 따라서 sizeof(arr) / sizeof(arr[0])는 배열의 전체 요소 수, 즉 배열의 크기를 나타냅니다. 위 방법의 경우 지역 내에서 배열의 정보를.. 2024. 3. 28.
비쥬얼 스튜디오 스크립트내 모든 변수 이름 또는 단어 한번에 변경 방법 코드를 작성하다보면 뜻하지 않게 변수의 이름을 변경해야할 경우가 있습니다. 하지만 이미 작성된 스크립트의 양이 많고 변수의 이름이 빈번이 사용이 되었다면 일일이 수정하기란 여간 번거로운 일이 아닙니다. 그래서 비쥬얼 스튜디오엔 이러한 단어를 한번에 다른 단어로 대체할 수 있는 기능을 제공하고 있습니다. num이라는 변수를 다른 이름으로 대체해야할 경우 단축키 ctrl+f를 누릅니다. 창 오른쪽 위에 검색창이 뜹니다. 그 후 찾고자 하는 단어를 입력하시고 왼쪽의 화살표를 눌러주세요. 바꾸기 창에 num 단어를 바꾸고자 하는 단어로 입력합니다. 그 후 현재문서라고 써있는 부분을 클릭하면 여러 옵션들이 있습니다. 프로젝트내의 모든 변수를 다 바꾸려면 현재 프로젝트로 설정하시면 됩니다. 그리고 모두 바꾸기 버튼.. 2024. 3. 27.
반응형