본문 바로가기
반응형
[C++ 임베디드 시스템 프로그래밍 시리즈] Day 7: 타이머와 카운터 사용법 타이머와 카운터의 개요임베디드 시스템에서 타이머와 카운터는 시간과 이벤트를 정확하게 측정하고 제어하는 데 사용됩니다. 타이머는 일정한 시간 간격을 생성하고, 카운터는 이벤트의 발생 횟수를 측정합니다. 오늘은 타이머와 카운터를 사용하는 방법을 학습하겠습니다.1. 타이머와 카운터의 기본 개념타이머(Timer): 설정된 시간 간격마다 인터럽트를 발생시키는 기능을 제공합니다. 주로 일정 시간 간격으로 작업을 수행할 때 사용됩니다.카운터(Counter): 외부 이벤트를 카운트하는 기능을 제공합니다. 주로 펄스 신호를 카운트하거나 이벤트 발생 횟수를 측정할 때 사용됩니다.2. 타이머 설정 및 사용타이머는 다양한 마이크로컨트롤러에서 제공되며, 설정 방법은 다를 수 있습니다. 여기서는 Arduino를 예로 들어 타이머.. 2024. 8. 1.
[C++ 마스터] Day 8: 배열과 문자열 배열 (Arrays)배열은 동일한 데이터 타입의 집합을 저장할 수 있는 연속된 메모리 블록입니다. 배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다. 1. 배열 선언과 초기화배열을 선언하고 초기화하는 방법은 다음과 같습니다:int numbers[5]; // 5개의 정수형 요소를 가지는 배열 선언int numbers[5] = {1, 2, 3, 4, 5}; // 배열 초기화 2. 배열 요소 접근배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다. 배열의 인덱스는 0부터 시작합니다.cout  3. 배열의 크기배열의 크기는 sizeof 연산자를 사용하여 구할 수 있습니다.int size = sizeof(numbers) / sizeof(numbers[0]);cout  4. 다차원 배열다차원 배열은 배열의.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 8: 디자인 패턴 심화 - 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 특정 클래스의 인스턴스가 하나만 존재하도록 보장하고, 그 인스턴스에 대한 전역 접근점을 제공하는 디자인 패턴입니다. 이는 전역 상태를 관리하거나, 리소스를 공유해야 하는 상황에서 유용합니다. 싱글톤 패턴의 특징유일한 인스턴스: 클래스의 인스턴스가 하나만 존재함을 보장합니다.전역 접근점: 유일한 인스턴스에 대한 전역 접근을 제공합니다.게으른 초기화: 인스턴스가 처음 필요할 때 생성됩니다. 기본 싱글톤 패턴 구현싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 여기서는 가장 일반적인 구현 방법을 소개합니다. 싱글톤 클래스 정의#include #include class Singleton {private: static Singleton* ins.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 8: Move semantics와 R-값 참조 Move Semantics와 R-값 참조의 중요성C++11에서 도입된 Move Semantics(이동 시멘틱스)와 R-값 참조는 자원의 이동을 통해 성능을 최적화할 수 있는 강력한 도구입니다. 특히, 객체의 복사가 빈번하게 발생하는 상황에서 큰 성능 향상을 가져올 수 있습니다. R-값 참조R-값 참조는 임시 객체와 같이 수명이 짧은 값을 가리키는 참조입니다. R-값 참조를 통해 객체를 복사하지 않고 이동할 수 있습니다. 이를 통해 불필요한 복사를 방지하고, 자원 관리 효율을 높일 수 있습니다.int&& rvalue = 10; Move Semantics이동 시멘틱스는 복사 대신 자원을 이동하는 기법입니다. 이동 생성자와 이동 할당 연산자를 사용하여 구현할 수 있습니다. 이동 생성자#include class.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 8: HTTP 프로토콜 개요 HTTP 프로토콜 개요HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받기 위한 프로토콜입니다. 클라이언트-서버 모델을 기반으로 하며, 주로 웹 브라우저와 웹 서버 간의 통신에 사용됩니다. HTTP는 텍스트 기반 프로토콜로, 요청(request)과 응답(response)으로 구성됩니다. HTTP의 주요 개념HTTP 요청HTTP 요청은 클라이언트가 서버에 리소스를 요청하는 메시지입니다. HTTP 요청은 다음과 같은 구성 요소로 이루어져 있습니다:요청 라인 (Request Line): 요청 메서드, 요청 URI, HTTP 버전으로 구성됩니다.요청 메서드 (Request Method): 클라이언트가 수행하려는 작업을 나타냅니다. 주요 메서드는 다음과 같습니다:GET: 리소스를.. 2024. 8. 1.
[C++ 게임 개발 시리즈] Day 4: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (1) 간단한 2D 게임 만들기오늘부터 3일에 걸쳐 간단한 2D 게임을 만들어보겠습니다. 이 프로젝트를 통해 2D 게임 개발의 기본적인 흐름을 이해하고, 게임 루프, 그래픽, 입력 처리 등을 다룰 것입니다. 이 게임은 플레이어가 움직이는 사각형 캐릭터를 조작하여 적을 피하는 간단한 게임입니다.프로젝트 준비프로젝트 설정Visual Studio에서 프로젝트 생성:Visual Studio를 열고, 새 C++ 빈 프로젝트를 생성합니다.프로젝트 이름을 Simple2DGame으로 지정합니다.SFML 설정:SFML 라이브러리를 설치하고 프로젝트에 포함시킵니다. 이전 날 설정한 SFML 설치 및 설정을 참조하세요.프로젝트 속성에서 Additional Include Directories에 SFML의 include 디렉토리를 추.. 2024. 8. 1.
[C++ 임베디드 시스템 프로그래밍 시리즈] Day 4: 기본 입출력 프로그래밍 기본 입출력 프로그래밍 개요임베디드 시스템에서 기본적인 입출력 프로그래밍은 매우 중요합니다. 입출력 핀을 통해 외부 장치와 상호작용하며, 다양한 센서와 액추에이터를 제어할 수 있습니다. 오늘은 GPIO(General Purpose Input/Output)를 사용하여 기본적인 입출력 프로그래밍을 학습하겠습니다.1. GPIO란?GPIO는 임베디드 시스템의 마이크로컨트롤러에서 중요한 역할을 하는 핀으로, 입력 또는 출력으로 설정하여 다양한 장치와 상호작용할 수 있습니다. GPIO는 버튼, LED, 센서 등의 장치와 연결되어 데이터를 송수신합니다.2. GPIO 설정GPIO 핀은 입력 또는 출력으로 설정할 수 있습니다. 입력 핀은 외부 신호를 읽고, 출력 핀은 신호를 외부로 보냅니다. Arduino에서 GPIO .. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 5: 범위 기반 for 루프와 초기화 리스트 범위 기반 for 루프 (Range-Based For Loop)범위 기반 for 루프는 C++11에서 도입된 기능으로, 컨테이너나 배열의 모든 요소를 쉽게 반복할 수 있도록 합니다. 이는 코드의 가독성을 높이고, 반복문을 간결하게 작성할 수 있게 해줍니다. 범위 기반 for 루프의 기본 구조범위 기반 for 루프의 기본 구조는 다음과 같습니다:for (declaration : range) { // 반복할 코드}declaration: 반복 변수 선언range: 반복할 범위 (컨테이너, 배열, initializer_list 등) 범위 기반 for 루프 예제다음 예제는 벡터의 요소를 출력하는 범위 기반 for 루프를 보여줍니다.#include #include int main() { std::vect.. 2024. 8. 1.
[C++ 마스터] Day 5: 조건문과 제어 구조 조건문 (Conditional Statements)조건문은 프로그램의 흐름을 제어하는 데 사용됩니다. C++에는 if, else if, else, switch 문이 있습니다. 1. if 문if 문은 주어진 조건이 참인지 확인하고, 참일 경우 해당 블록의 코드를 실행합니다.int a = 10;if (a > 5) { cout  2. if-else 문if 문 다음에 else 문을 사용하여 조건이 거짓일 때 실행할 코드를 지정할 수 있습니다.int a = 3;if (a > 5) { cout  3. else if 문여러 조건을 검사할 때 else if 문을 사용합니다.int a = 5;if (a > 5) { cout  4. 중첩 if 문조건문을 중첩하여 사용할 수 있습니다.int a = 8;if .. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 5: 메모리 관리 최적화 메모리 관리의 중요성효율적인 메모리 관리는 프로그램의 성능을 향상시키고 메모리 누수를 방지하여 안정성을 높이는 데 중요한 역할을 합니다. C++에서는 메모리 관리 기법을 통해 성능 최적화를 도모할 수 있습니다. 메모리 관리 최적화 기법1. 스마트 포인터 사용스마트 포인터는 메모리 관리를 자동화하여 메모리 누수를 방지합니다. C++ 표준 라이브러리는 다양한 스마트 포인터를 제공합니다.std::unique_ptr: 독점적인 소유권을 가진 스마트 포인터입니다.std::shared_ptr: 공유 소유권을 가진 스마트 포인터입니다.std::weak_ptr: std::shared_ptr의 순환 참조를 방지하는 약한 참조 스마트 포인터입니다. 예제 코드#include #include class MyClass {pub.. 2024. 8. 1.
반응형