목록프로그래밍 (25)
cyphen156
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/5oqjt/btsJs9kXxyB/QFQrr9PwRbfWikBN4vihu1/img.jpg)
백준과 같이 간단한 소스코드 파일 한개로 디버깅 해도 될 규모의 작은 프로젝트를 일일이 비주얼 스튜디오로 개발하는게 상당히 귀찮기도 하고 비주얼 코드에 익숙한 유저들을 위한 글이다.우선 VS Code에서 C/C++소스 코드를 디버깅하려면 VS Code 내에서 Extension C/C++(필수)와 Visual Studio (20XX) | GCC/G++ | MinGW중 하나가 필요한데나는 Windows 64bit 운영체제, Visual Studio 2022가 설치되어 있으므로 해당 환경에 대한 추가작업을 진행하겠다. 1. VS Code내에서 다음 Extension을 설치한다.2. Visual Studio installer를 켜고 자신의 VS 20XX버전을 선택 - 수정을 들어가 C++을 사용한 데스크톱 개발..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6AyrC/btsJbL6Y6OS/HprenKBsX2V3GHJfQogZn0/img.jpg)
윈도우즈 운영체제는 문자 집합을 사용할 때 두가지의 방식을 사용한다.하나는 Multi Byte Character Set이며 다른 하나는 UniCode Character Set이다. 이전까지는 문자 변수를 사용할 때 영어로만 사용했기 때문에 이 두 문자 집합에 대해 생각하지 않고 그냥 사용했지만 앞으로 만들 프로그램에서는 한글 입력, 출력 등을 필요로 하기 때문에 두 문자 집합에 대한 차이를 분명하게 인식하고 사용해야 한다. Multi Byte Character Set영어는 1바이트 아스키 코드를, 다른 국가 언어(한국어, 중국어 등)의 언어는 2바이트 이상의 메모를 사용하여 완성형 코드를 사용하는 방법. 필요한 경우에만 2바이트 문자열을 사용하기 때문에 메모리 효율성이 좋지만 문자를 처리할 때 복잡성이 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cduKhI/btsIHGRFmj2/u0N9XS5AkBABmFw9zl4h61/img.jpg)
취업전 코드 활용 재활 겸 다 까먹은 윈도우즈 32API 복습용 글쓰기 윈도우즈 32 API는 마이크로 소프트에서 Windows 운영체제를 위한 타겟플랫폼 개발을 지원하기 위해 만든 API이자 SDK이다.프로젝트의 생성은 다음 스크린샷을 따라 생성하면 된다.맨 처음 프로젝트를 생성하고 나면 확인해 볼 것은 딱 3개다. 1. 프로그램의 메인 시작점인 Win32API.cpp2. 프로젝트 내의 리소스들을 관리하는 Resource.h와 Resoruce.rc3. 프로그램이 빌드되었을 때 표시될 아이콘인 Winc32API.ico와 small.icoWin32API.cpp프로젝트명.cpp파일로 프로그램의 메인 진입점이 된다. React에서의 app.js/index.js에 해당하는 파일이다.처음 메인파일을 열어보면 뭔가..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4q9qA/btsBb7J3wve/hMppfl9zYikDCaaMnbPCu1/img.jpg)
C#의 역사에 대한 모든 사항은 MS에서 제공하고 있습니다. C#의 역사 - C# 가이드 - C# | Microsoft Learn C#의 역사 - C# 가이드 - C# 이 언어의 초창기 버전은 어떤 모습이었으며 이후 어떻게 변했는가? learn.microsoft.com 이 글에서는 일부 기능과 핵심 변경사항에 대해서만 서술합니다. C# 1.0 Delegate: C#에서 delegate는 메서드에 대한 참조를 저장할 수 있는 타입입니다. 다른 언어의 함수 포인터와 유사하지만, 타입 안전성과 객체 지향적 특성을 갖는다. 사용법 (//뒤의 내용은 사용자 지정인수이다.) delegate //return_type //function_Name (//props); 예제 코드를 보면 publisher에는 TestMet..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6tCJC/btsA9O36Aah/WVBknrDzb7b0M0vjCJt4R0/img.jpg)
이 글에서는 .NET 8과 Winforms를 사용하여 계산기와 로그인창, 숫자 맞추는 게임을 만든다. 1. 기본 개념익히기 맨처음 WindowsForms 앱 템플릿으로 프로젝트를 생성하면 다음과 같은 화면 구성을 만들 수 있다. 완벽하게 일치하는 것은 아니지만 어느정도 안드로이드 앱 만들때의 경험을 되살려서 여기에 써먹을 수 있을것 같다. Form1.cs[디자인]에서는 안드로이드 XML파일과 같이 화면 구성을 담당하는 파일이다. 도구상자에서 UI구성에 필요한 요소들을 디자인 창에 드래그 & 드롭으로 추가할 수 있다. Form1.cs파일은 디자인 파일과 연동되어 실제 화면 로직에서 여러 이벤트들이 발생했을 때 처리되는 로직들을 담당할 클래스파일이다. 추가된 요소들을 속성 창을 통해 제어하거나 직접 코드 수..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lj0SR/btsA31bTLln/mJv7k6jPVWzLccE3Zbqry1/img.jpg)
C++의 namespace와 C#의 네임스페이스 설명에 대해서 거의 비슷하게 되어 있어서 둘이 같은 역할을 하는 것 인줄 알았는데 아니었다. C++에서의 namespace는 cpp파일 또는 헤더 파일 내에서 정의된 여러 변수들, 메서드 등의 중복만을 방지하기 위한 정의였다면, C#에서의 namespace는 이 기능을 넘어선 패키징의 개념이 포함되어있었다. 그렇기 때문에 C/C++에서의 #include, 자바나 자바스크립트에서 제공하는 import라는 작업 대신 using 'namespace'를 통해 사용할 클래스 파일을 '불러오고', 변수나 메서드의 중복 또한 방지해준다. 조금 더 나아가자면 import문에서는 파일 경로를 찾아 해당 파일을 참조할 수 있는 기능이라면, using은 같은 폴더 내부의 cs..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YAaUx/btsA8pI6uc1/vvLE1wIJvI4bK4aCILn46k/img.jpg)
C#또한 어쨋든 C/C++를 객체지향으로 체계한 것이기 때문에 자료형이나 문법적인 체계와 같이 큰 틀에서는 다른게 없다. C#이 C/C++와 가장 큰 차이점은 자바의 JVM에 해당하는 .NET이라는 가상환경 속에서 프로그램이 실행된다는 점, 이 가상환경에서는 메모리를 프로그래머 대신 관리해주는 GC(Garbage Collector)의 존재이다. 문법적인 차이(C++ -> C#) 클래스 인스턴스에서 포인터사용 제거(Object->data) -> new/delete를 통한 인스턴스 관리, 포인터 대신 참조 사용 요소만큼 반복하기 for(item : arr) -> for(int item in arr) Array 클래스 int arr[5] = {1, 2, 3, 4, 5}; // 배열의 길이 .Length arr..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vf5iJ/btsA6Uh4Yqp/csbuOHGrCzYKbed8ziQSJ0/img.jpg)
이번에 .Net에 대해 배우기 전에 C#에 대해 정리하고 넘어갈 예정이다. 사실 나는 GC(Garbage Collector), VM(Vitual Machine) 환경을 별로 좋아하지 않는다. 오히려 싫어하는 편이다. 하지만 프로젝트 진행을 위해서 배워볼 예정이다. C#은 MicroSoft에서 C/C++를 자바와 유사한 형태로 개발한 언어이다. 유니티때 스크립팅을 통해 잠깐 해봤던 기억을 떠올리면 플랫폼에 종속되지 않는, 가상 머신위에서 돌아가는 객체지향 컴파일 언어라고 기억된다. 하지만 실제로 사용해보면 컴파일 언어와 인터프리터 언어 둘 사이의 어딘가에 있는 것과 같은 느낌을 받은 언어라고 생각한다. 이런 C#의 핵심적인 특징이라면 단언코 .Net이라는 프레임 워크라고 할 수 있다. MS는 .Net을 통..