전체 글42 이것이 C#이다 챕터 ~5 using System;using static System.Console;namespace ConsoleApp3{ class MainApp { //프로그램 실행이 시작되는 곳 static void Main(string[] args) { if (args.Length == 0) { WriteLine("사용법: hello.exe "); return; } WriteLine("hello, {0}! , args[0]"); } }} - using은 c#의 키워드 중 하나로 그 뒤에 따라오는 system을 사용하겠다는 것이.. C# 2024. 10. 30. 데이터 시각화, 머신러닝 import pandas as pd import matplotlib.pyplot as plt def people() -> None: data = load_csv("../data/dataset/gender.csv") # CSV 파일 로드 size = [] # 성별 인원수를 저장할 리스트 name = input('지역 이름을 입력하세요') # 지역 이름 입력 for idx, row in data.iterrows(): # 데이터프레임을 행 단위로 반복 if name in row.iloc[0]: # 입력한 지역 이름이 첫 번째 열에 존재하는지 확인 m = 0 # 남성 수 초기화 f = 0 # 여성 수 초기화 .. AI 2024. 10. 11. QT 6 프로그래밍 챕터 12~20 ◆ CP12.QMainWindow를 이용한 GUI구현- 지금까지 다룬 방식은 QWidget을 이용해 한 개의 윈도우 환면만 존재하는 방식으로 GUI를 구성하였다. 하지만 기능이 복잡하고 사용자게엑 많은 기능을 제공해야 하는 경우 GUI 구현 시 QWidget 보다는 QMainWindow를 이용해 GUI를 구현하는 것이 사용자에게 직관적인 GUI를 제공할 수 있다.- QT는 MDI(Multi Document Interface) 방식을 구현할 수 있다. MDI 방식은 QMdiArea 클래스를 이용해 구현할 수 있다. ◇ QMdiArea 클래스를 이용한 MDI 기반의 GUI 예제- 이 예제의 소스코드는 2개의 클래스로 구현되어 있다. MainWindow 클래스는 QMainWindow 클래스를 상속받는 위젯 클.. C++ QT 2024. 10. 10. QT 6 챕터 9~11 ◆ CP9.Signal and Slot- QT는 이벤트를 처리하기 위한 메커니즘으로 시그널(Signal)과 슬롯(Slot)을 사용한다. 예시로 어떤 버튼이 클릭했다는 행위는 QT에서 시그널(Signal)이라고 한다. 그리고 시그널이 발생하면 호출 하는 함수를 슬롯(Slot)함수라고 한다. 시그널이라는 이벤트가 발생하면 시그널과 연결된 슬롯 함수가 호출된다.- 시그널이란 어떠한 상황에서 발생하는 이벤트이다. QT의 모든 이벤트 처리는 시그널과 슬롯이라는 메커니즘을 사용한다.- QT의 시그널 슬롯을 사용하면 여러 개의 쓰레드구조의 프로그램을 개발할 때에도 쓰레드를 사용하지 않고 간단하게 채팅프로그램을 구현할 수 있다.- QT에서 제공하는 모든 GUI 위젯은 미리 정해진 다양한 시그널을 가지고 있다.- 시그널.. C++ QT 2024. 10. 10. QT 6 프로그래밍 챕터 6~8 ◆ CP6.Layout- QWiget 클래스의 setGeomerty() 멤버 함수를 이용해 GUI 상에서 특정 X,Y좌표로 위젯을 배치하게 되면 윈도우의 크기가 변경될 때 위젯의 위치가 변경되지 않는다. 하지만 레이아웃을 이용하면 윈도의 크기가 바뀔 때마다 동적으로 GUI 상에 위젯들의 크기도 동적으로 변경된다.- 윈도우의 크기가 변경되면 레이아웃은 위젯들을 최적의 위치에 정렬되어 일관된 크기의 모양을 유지할 수 있게 해준다.- 주로 사용되는 레이아웃◇ QHBoxLayout- 위젯들을 가로 방향으로 배치할 수 있다.QHBoxLayout *hboxLayout = new QHBoxLayout();QPushButton *btn[6];QString btnStr[6] = {"One", "Two", "Three",.. C++ QT 2024. 10. 10. QT 챕터 5(2) ◆ CP6.Layout- QWiget 클래스의 setGeomerty() 멤버 함수를 이용해 GUI 상에서 특정 X,Y좌표로 위젯을 배치하게 되면 윈도우의 크기가 변경될 때 위젯의 위치가 변경되지 않는다. 하지만 레이아웃을 이용하면 윈도의 크기가 바뀔 때마다 동적으로 GUI 상에 위젯들의 크기도 동적으로 변경된다.- 윈도우의 크기가 변경되면 레이아웃은 위젯들을 최적의 위치에 정렬되어 일관된 크기의 모양을 유지할 수 있게 해준다.- 주로 사용되는 레이아웃대표사진 삭제사진 설명을 입력하세요.사진 삭제사진 설명을 입력하세요. ◇ QHBoxLayout - 위젯들을 가로 방향으로 배치할 수 있다.QHBoxLayout *hboxLayout = new QHBoxLayout();QPushButton *btn[6];QSt.. C++ QT 2024. 10. 8. QT 6 프로그래밍 챕터 5. Qt GUI Widgets Widget- Qt에서 버튼, 체크박스, 라디오 버튼 등을 Widget이라 한다.QCeckBox 와 QButtonGroup- widget.h#ifndef WIDGET_H#define WIDGET_H#include #include //QCheckBox오브젝트 선언#include //QButtonGroup오브젝트 선언class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); ~Widget();private: QButtonGroup *m_chk_group[2]; QCheckBox *m_exclusive[3]; QCheckBox *m_non_exclusive[3];private s.. C++ QT 2024. 10. 7. QT 6 프로그래밍 챕터 3~4. CMake, QMake CMake를 이용한 프로젝트 빌드- CMake는 프로젝트를 쉽게 빌드하기 위해서 제공하는 툴이다.CMake를 이용한 Console 어플리케이션 구현.Console 어플리케이션은 GUI가 없는 어플리케이션을 의미한다.- CMakelist.txt는 프로젝트를 빌드하기 위한 프로젝트 파일이다.cmake_minimum_required(VERSION 3.16)project(cp3-cmake LANGUAGES CXX) #프로젝트의 이름과 사용된 언어가 c++ 언어임을 명시한다.set(CMAKE_AUTOUIC ON)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17) #c++17이상 버전을 사용한다.set(CMAKE_C.. C++ QT 2024. 10. 7. c++ 챕터 13 클래스 상속- 기초클래스 (base class)라고 부르는 클래스로부터 모든 메서드와 멤버들을 상속받아, 새로운 파생 클래스(derived class)를 만들 수 있게 한다.- 상속을 통하여 다음과 같은 일들을 할 수 있다. 1. 기존의 클래스에 기능을 추가할 수 있다. 2. 클래스가 나타내고 있는 데이터에 다른 것을 더 추가할 수 있다. 3. 클래스 메서드가 동작하는 방식을 변경할 수 있다.- 어떤 클래스를 다른 클래스로부터 상속할 때, 오리지널 클래스를 기초 클래스라 하고, 상속받는 클래스를 파생 클래스라 한다.tabtenn0.h 예제#ifndef TABTENNO_H#define TABTENNO_H#include using std::string;// 간단한 기초 클래스class TableT.. C++ 2024. 10. 7. C++ 챕터 12 동적 메모리 할당- 프로그램 실행 중에 필요한 만큼 메모리를 할당하고 해제하는 방식이다.- 메모리 효율성: 동적 메모리 할당을 사용하면 메모리 낭비를 줄일 수 있다.- 유연성: 동적 메모리 할당은 컴파일 시점에 메모리 크기를 결정하지 않고, 프로그램 실행 중에 유연하게 메모리 크기를 조절 할 수 있도록 한다. 이는 데이터 크기가 가변적이거나 예측하기 어려운 상황에서 특히 유용하다.new, delete 연산자와 클래스- new와 delete연산자를 사용해서 동적 메모리 할당 및 해제를 수행한다.- new: 힙(heap)영역에 메모리를 할당하고, 그 메모리의 시작 주소를 반환한다. 클래스 객체를 생성할 때는 생성자를 호출하여 객체를 초기화한다.int* p_int = new int; .. C++ 2024. 9. 27. C++ 챕터 11 연산자 오버로딩- C++ 연산자들에 다중적인 의미를 부여하는 것이다.- 객체도 기본 자료형처럼 덧셈,뺼셈 같은 연산들을 가능하게 해준다.- 연산자를 오버로딩하려면, 연산자 함수(operation function)이라는 특별한 함수를 사용해야 한다. operatorop(argument-list) - 여기에서 op는 오버로딩할 연산자를 나타내는 기호이고 op는 적법한 C++ 연산자여야 한다.(@처럼 새로운 기호는 안된다.) - 그러나 operator [ ] ( ) 함수는 [ ]가 배열 인덱스 연산자이기 때문에 오버로딩할 수 있다. - POS1 + POS2라는 연산이 있는데 이 때 POS1과 POS2가 기본 자료형 변수라면 그냥 덧셈을 하겠지만 객체라면 .. C++ 2024. 9. 26. C++ 챕터 10 (Class) Class객체의 속성(데이터)와 기능(함수)을 정의하는 틀.클래스를 사용하여 복잡한 프로그램을 더욱 효율적으로 관리하고, 코드의 재사용성을 높일 수 있다.클래스의 구성 요소: 데이터를 저장하는 멤버 변수와 특정 기능을 수행하는 멤버 함수클래스를 사용하여 객체를 생성할 수 있고 각 객체는 클래스에서 정의된 멤버 변수와 멤버 함수를 가지고 있으며 이를 통해 데이터를 저장하고 기능을 수행할 수 있다.정보 은닉과 접근 제어- public, private, protected 접근지정자를 사용하여 클래스에서 외부에서 접근 가능한 부분과 그렇지 않은 부분을 구분할 수 있다.- 클래스에서 중요한 데이터를 외부로부터 보호하고, 의도하지 않은 변경을 방지하기 위해 정보 은닉을 사용한다.- 멤버 변수 private으로 중요.. C++ 2024. 9. 25. 이전 1 2 3 4 다음