목록프로그래밍 (29)
cyphen156

이 글에서는 .NET 8과 Winforms를 사용하여 계산기와 로그인창, 숫자 맞추는 게임을 만든다. 1. 기본 개념익히기 맨처음 WindowsForms 앱 템플릿으로 프로젝트를 생성하면 다음과 같은 화면 구성을 만들 수 있다. 완벽하게 일치하는 것은 아니지만 어느정도 안드로이드 앱 만들때의 경험을 되살려서 여기에 써먹을 수 있을것 같다. Form1.cs[디자인]에서는 안드로이드 XML파일과 같이 화면 구성을 담당하는 파일이다. 도구상자에서 UI구성에 필요한 요소들을 디자인 창에 드래그 & 드롭으로 추가할 수 있다. Form1.cs파일은 디자인 파일과 연동되어 실제 화면 로직에서 여러 이벤트들이 발생했을 때 처리되는 로직들을 담당할 클래스파일이다. 추가된 요소들을 속성 창을 통해 제어하거나 직접 코드 수..

C++의 namespace와 C#의 네임스페이스 설명에 대해서 거의 비슷하게 되어 있어서 둘이 같은 역할을 하는 것 인줄 알았는데 아니었다. C++에서의 namespace는 cpp파일 또는 헤더 파일 내에서 정의된 여러 변수들, 메서드 등의 중복만을 방지하기 위한 정의였다면, C#에서의 namespace는 이 기능을 넘어선 패키징의 개념이 포함되어있었다. 그렇기 때문에 C/C++에서의 #include, 자바나 자바스크립트에서 제공하는 import라는 작업 대신 using 'namespace'를 통해 사용할 클래스 파일을 '불러오고', 변수나 메서드의 중복 또한 방지해준다. 조금 더 나아가자면 import문에서는 파일 경로를 찾아 해당 파일을 참조할 수 있는 기능이라면, using은 같은 폴더 내부의 cs..

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..

이번에 .Net에 대해 배우기 전에 C#에 대해 정리하고 넘어갈 예정이다. 사실 나는 GC(Garbage Collector), VM(Vitual Machine) 환경을 별로 좋아하지 않는다. 오히려 싫어하는 편이다. 하지만 프로젝트 진행을 위해서 배워볼 예정이다. C#은 MicroSoft에서 C/C++를 자바와 유사한 형태로 개발한 언어이다. 유니티때 스크립팅을 통해 잠깐 해봤던 기억을 떠올리면 플랫폼에 종속되지 않는, 가상 머신위에서 돌아가는 객체지향 컴파일 언어라고 기억된다. 하지만 실제로 사용해보면 컴파일 언어와 인터프리터 언어 둘 사이의 어딘가에 있는 것과 같은 느낌을 받은 언어라고 생각한다. 이런 C#의 핵심적인 특징이라면 단언코 .Net이라는 프레임 워크라고 할 수 있다. MS는 .Net을 통..

개인 문제풀이임으로 오답이 있을 수 있습니다. 1부터 n까지의 합을 구하되 그 합이 입력 정수를 넘지 않아야 한다는 조건 하에서 최댓값을 구하는 문제다. 이 문제에 대해 위와 같이 소스코드를 작성한 걀거ㅣ, 그림에서 보듯이 잘못된 값이 출력되고 있다. Visual C가 제공하는 디버거를 이용하여 이 문제를 해결하라. 조사식 창을 열어 i, max, sum 변수를 입력하고 루프를 돌 때마다 개별 변수 값이 어떻게 변화하는지 추적하고 루프를 빠져나갈 때의 값이 어떻게 변화하는지도 추적해야 한다. 추적 과정에 사용된 화면을 모두 캡처해서 하나의 파일로 제출하라. #include int main() { int i, max, sum = 0; printf("Enter the maximum number.\n"); s..

뭔가 챕터 제목부터가 어려워보입니다. 근데 막상 해보면 그냥 이론적인 내용과 어떻게하면 내가 작성한 코드의 문제점을 찾고 수정하는지에 관한 안내 내용이므로 부담없이 그냥 천천히 읽어보면 됩니다. 디버그는 뭘까? 버그(Bug)즉 벌레를 없앤다는 것인데 프로그램의 오류를 버그라고 부르고, 이를 찾아내서 고치는 것을 디버그라고 합니다. 프로그램 오류를 버그라고 부르게 된 이유는 아주 옛날에 컴퓨터에 벌레가 한마리 들어가서 오작동한 적이 있었고, 이 사건 이후로 프로그램 오류를 버그라고 부르게 되었다고 합니다. 디버깅을 하는 가장 간단한 방법은 연필로 끄적여보는것 입니다. 차근차근 프로그램의 동작 순서를 노트에 적어 가면서 변수가 어떻게 변하는지를 추적해서 프로그램 동작 논리에 모순이 없는지를 확인하고, 예상치..

개인 문제풀이임으로 오답이 있을 수 있습니다. 다음 중첩 루프의 실행 결과를 예측해 보고 실제 실행 결과를 출력하여 비교하라. for (i = 0; i = 1; j--) { printf("%d %d\n, i, j); } } #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int i, j; for (i = 0; i = 1; j--) { printf("%d % d\n", i, j); } } return 0; } 1부터 n까지의 합을 구하되 그 합이 입력 정수를 넘지 않아야 한다는 조건 하에서 최댓값을 구하라. > Enter a maximum number. >..

프로그램의 흐름 프로그램의 실행 흐름에는 순차, 선택, 반복이라는 세 가지의 구조가 있습니다. 이 중 우리는 이전 챕터에서 프로그래밍에 있어서 조건에 따른 선택이라는 흐름 구조를 배웠습니다. 이번에 공부할 내용은 특정한 명령을 반복해서 실행시키기 위한 반복 구조입니다. 반복 구조 프로그램에서 특정한 명령을 반복해서 사용해야 할 때, 사용자의 수고로움을 줄이기 위해 개발되었습니다. 반복문에는 while과 for문이 있으며 loop문이라고도 합니다. 반복문에는 항상 반복을 제어하기 위한 변수가 존재하는데 저는 이것을 반복조건문이라고 부릅니다. 반복조건문에는 1. 초기식, 2. 조건식, 3. 증감식으로 세가지 요소가 존재합니다. 반복문은 이 세 요소중 조건식에 해당하는 내용이 false가 될 때 까지 명령을 ..