프로그래밍 / C++ / 언리얼

Programming 45

[C++] 자료구조 - 배열(Array)

배열의 개요 배열(Array)은 같은 타입으로 된 여러 개의 객체를 한 번에 다루고자 할 때 사용한다. 아래 그림처럼 메모리 상에서 배열은 각 원소가 연속적으로 배치된다. int grade1; int grade2; int grade3; // ... int grade30; 각 반마다 학생 수를 담는 변수를 선언한다고 해보자. 딱 봐도 뭔가 좋지 않다. 만일 학생 수가 30명이 아니라 100명이라면? 1000명이라면? 코드를 읽기도 매우 힘들어질 것이고, 작성하는 것도 쉽지 않을 것이다. 위의 예시를 배열로 바꿔보면 아래와 같다. 훨씬 더 간결해지고 보다 직관적으로 표현이 가능해진것이다. int grades[30]; 배열의 초기화 • 배열의 초기화는 { }을 사용한다. • 모든 원소에 대해 초기값을 지정하지..

[C++] 객체지향 심화.

클래스의 구성요소 클래스란? 자료저장 + 자료처리 = 변수 + 함수 특정한 용도를 수행하기 위한 변수와 함 수를 모아 둔 틀(설계도) 객체란? 오브젝트라고 불리우며, 그 틀(설계도)를 이용하여 찍어낸 개체(변수, 메모리 상의 공간) 사용자 정의 타입 데이터 멤버 데이터를 저장한다. 필드(Field)라고도 한다. 멤버 함수 타입의 기능 부분이다. - 메소드(Method)라고도 한다. 내부 타입 클래스 안에 다른 클래스를 만들거나, 열거형, 혹은 타입 별칭을 지정할 수 있다. 멤버 템플릿 템플릿을 작성할 수도 있다. 클래스 범위 클래스 범위는 클래스의 데이터 및 멤버함수가 이 규칙을 가진다. 멤버 함수를 정의할때 일반한수와 달리 클래스 범위 연산자 ::를 사용해야 한다. 그 이외에 지역범위, 파일범위, 함수..

[C / C++] 객체지향 언어 왜 필요한가?

객체 지향 프로그래밍 개요. 현대 프로그래밍의 패러다임으로 잡혀있고, 절차지향의 한계점을 극복하기위해 나타남. 절차지향 프로그래밍의 한계 데이터끼리 다루는 함수가 분리되어 있다. - 함수 내부에서 포인터로 데이터를 다뤄야 하는 불편함이 있다. 함수의 이름을 다르게 작성해야 한다. - 전역 이름공간을 사용하기에, 함수마다 이름을 다르게 지어주어야한다. 프로그램을 확장하기 불편하다. - 프로그램에 수정사항이 생기면, 포인터로 데이터 처리한 것들을 일일이 바꾸어주어야한다. 객체지향 4대 개념. 캡슐화 - 클래스(Class)를 통해 변수와 함수를 하나의 단위로 묶는 것을 의미한다. - 특징 : 이 클래스를 선언하고, 해당 클래스의 인스턴스를 통해 클래스 안에 포함된 멤버 변수와 메소드에 쉽게 접근할 수 있다. ..

[C / C++] printf함수 구현 (putchar, putc) 이용

#include #include void myprintf(const char* format, ...) { va_list args; va_start(args, format); while (*format) { if (*format == '%') { format++; if (*format == 0) // %다음에 0이나올수도 있으니 예외처리를 해준다. { break; } char* str; // 문자열 출력을 위한 char 타입 1차원 배열 선언 int val; // 정수형 출력을 위한 int 타입 변수 선언. switch (*format) { case 'c': val = va_arg(args, int); putchar(val); break; case 'd': val = va_arg(args, int); in..

[C / C++] 문자열 주요함수 구현.

공통구현 컴파일 오류 방지를 위해서 공통으로 define _CRT_SECURE_NO_WARNINGS을 선언하고, C언어의 입출력을 담당하는 헤더파일인 stdio.h를 선언해준다. 1. strcpy() #define _CRT_SECURE_NO_WARNINGS #include char* strcpy(const char* s1, char* s2) { while (*s1 != NULL) { *s2 = *s1; // 역참조를해서 값을 꺼내서 비교를 한다. ++s1; ++s2; // str = str[0]이랑 같은뜻이다. 주소의 첫번째부터 1씩 더해주면 배열의 인덱스가 늘어난다. } return s2; // 최종적으로 str2를 반환한다. } int main() { //[strcpy] : 문자열 복사하기 const..

[C언어] 백준 2588문제 풀이

#include int main() { int firstNum; int secondNum; scanf("%d %d", &firstNum, &secondNum); int a = (secondNum % 10); // 5 int b = (secondNum / 10) % 10; // 38 % 10 -> 8 int c = (secondNum / 100); // 3 int d = firstNum * secondNum; printf("%d\n", a * firstNum); printf("%d\n", b * firstNum); printf("%d\n", c * firstNum); printf("%d\n", d); } 입력은 472, 385이고, 첫번째 수와 두번째수의 각 자리수의 곱셈을 결과값으로 도출해야한다. 문제 ..

[Github] Git 개념과 명령어 정리

Git의 개요 버전 관리 시스템 버전 관리 시스템이란? 파일의 변화를 기록해서 특정 지점을 불러올 수 있는 시스템을 말한다. - Git은 분산형 버전 관리 시스템 (Distributed Version Control System) - Git은 스냅샷을 이용해서 버전 관리함. 로컬 중앙집중형 분산형 내 컴퓨터에서만 버전 관리 서버에서만 버전 관리 내컴퓨터 + 서버에서 버전관리 Git의 작업흐름 Modified → Staged → Committed Modified : 수정한 파일을 아직 데이터베이스에 커밋하지 않은 상태, 수정만 일어난 상태 Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태. Committed : 데이터가 로컬데이터베이스에 안전하게 저장됐다는것을 의미한다. 버전 관리를 한 상..

Programming/Github 2022.04.19

[C++ ] 구조체

구조체란? - 변수를 모아 놓은 집합체 - 특정 변수들이 무언가의 하위 개념으로 묶일 수 있을 때 studentName[10], studentAge[10], studentKorScore[10] .... 학생의 'XXX' 이름, 나이, 국어점수, 석차 등등을 '학생' 이라는 구조체로 묶어서 사용 구조체와 비교 - 구조체 : 데이터(자료형)을 실제로 쓰이는 데이터끼리 묶어서 추상화 - 배열 : 속성이 동일한 여러개의 데이터를 같은 이름과 순서를 지정한 연속된 번호로 서로 연관되어 있음을 표시함으로써 추상화함 - 함수 : 프로세스(코드)를 특정 기능 단위로 묶어서 추상화 구조체 정의 - 구조체가 사용되는 함수의 앞에 정의한다. (해당 함수의 바깥쪽 앞(위)) // main함수 앞에다!! struct score..

[C++] rand(), 삼항연산자 이용

// 실습1. 3 ~ 7 사이의 랜덤한 숫자를 출력하는 프로그램을 작성하자. // 실습2. 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자. // 실습3. 프로그램을 실행하면 내부적으로 1 ~ 10 사이의 숫자가 정답으로 정해진다. // 유저가 1 ~ 10 사이의 숫자를 입력하면 맞으면 true, 틀리면 false를 출력한다. (숫자 맞추기 게임) #include #include using namespace std; int main() { // 실습1 srand(time(NULL)); // 다양한 난수를 위해 time함수를 사용 int number = rand() % (7 - 3 + 1) + 3; // 랜덤값을 담을 변수 선언 cout bNum; // 큰 값 입..

[C++] 여러가지 연산

#include #include #include using namespace std; /* [연산자] 데이터를 가공(연산)하는 모든 명령에 필요한 것들 1) 어떤 종류의 연산자들이 있는지? 2) 우선 순위 : 어떤 순서로 연산이 진행되는지? 3) 결합 순서 : 좌측부터 연산하는 연산자, 우측부터 연산하는 연산자 1. 사칙연산 : 산술연산자 + : 더하기 - : 빼기 * : 곱하기 / : 나누기11 / 3 => 3 % : 나머지11 % 3 => 2 *, /, % > +, - 2. 대입연산자 = : 왼쪽 항의 값을 대입한다. (복사한다) 3. 복합대입연산자 += : a += b;=> a = a + b; -= : a -= b;=> a = a - b; *= : a *= b;=> a = a * b; /= : a ..

반응형