본문 바로가기
반응형

전체 글303

[라텍스] 시그마나 인테그랄 기호 밑에 문자 넣는 법 \underset 사용 2023. 4. 21.
[Java] 9. 자바 열거타입 총정리 열거타입은 서로 연관된 상수들을 모아놓은 집합입니다. 코딩의 모든 내용들은 '필요'에 의해 만들어진 것입니다. 열거타입도 필요해서 만든 것인데요. 먼저 열거타입의 정의방법에 대해 알아보고 나서, 어디에 사용되는지 알아봅시다. 열거타입 정의 방법 카페 메뉴에 해당되는 열거타입으로 정의하면 아래와 같습니다. public enum Cafe { AMERICANO, HOT_CHOCO, CHAMOMILE } 열거타입 변수는 아래와 같이 선언합니다. Cafe my_choice=Cafe.AMERICANO 각 값에는 1,2,3 이 자동으로 배정됩니다. 사용 예시 아래와 같은 switch 문을 작성한다고 합시다. menu=1 switch (menu) { case 1 : System.out.println("아메리카노를 선택.. 2022. 9. 20.
[Java] 8. 자바 배열 총정리 배열이란? 코딩에 등장하는 많은 개념들은 편리함을 위해 고안되었습니다. 배열도 코딩의 편리함을 위해 고안되었습니다. 어떤 목적으로 배열이 고안되었는지 알아봅시다. 배열이 없던 시절, 10명의 시험점수 데이터를 입력해야 하는 상황입니다. 아래와 같이 10개의 int형 변수를 선언해야 합니다. int student1=90; int student2=80; int student3=90; int student4=80; int student5=90; int student6=80; int student7=90; int student8=80; int student9=90; int student10=80; 이 코드를 보며 이런 생각이 들었습니다. 어차피 다 같은 종류에 데이터인데, 하나의 변수에 여러 값을 입력하도록 하.. 2022. 9. 6.
[Java] 7. 자바 점프문 총정리 자바 점프문은 두가지가 있습니다. break 문 continue 문 하나씩 알아봅시다. break 문 반복문인 for, while, do-while 문의 실행을 멈출 때 사용됩니다. break 문을 만나면 반복문을 빠져나옵니다. 보통 if 문과 함께 사용됩니다. 아래는 예시입니다. for(int i=1; i 2022. 9. 2.
[Java] 6. 자바 반복문 총정리 자바 반복문은 아래와 같이 세 정류가 있습니다. while 문 do-while 문 for 문 하나씩 알아봅시다. while 문 while 문은 아래와 같은 형식으로 사용합니다. while (조건식) { 명령문 } 조건식이 참인 경우 명령문이 무한히 반복해서 실행됩니다. do~while 문 while 문이 처음 실행될 때 조건식을 검사한 후 명령문을 실행할지 말지 결정합니다. do~while 문은 명령문을 먼저 실행한 뒤 조건을 검사합니다. 아래와 같은 형식으로 사용합니다. do{ 실행문 } while(조건식) for문 for문은 아래와 같은 형식으로 사용합니다. for(초기화식; 조건식 ; 증감식) { 명령문 } 조건식이 참인 경우 명령문이 무한히 실행됩니다. 증감식을 이용하여 조건식의 변수값을 바꿉니다.. 2022. 9. 2.
[Java] 5. 자바 조건문 총정리 자바 조건문에는 if 문과 switch 문이 있습니다. 조건문은 특정 조건을 만족할 경우 명령을 실행하도록 하는 문장을 말합니다. if문의 확장 버전인 if~else 문 if~else if~else 도 있습니다. if 조건문 if 문은 괄호 안의 조건식이 참인 경우 명령문을 실행합니다. 형식은 아래와 같습니다. if (조건식) { 명령문 } if~else 조건문 if 문 괄호 안이 거짓일 경우 else 의 명령문을 실행합니다. 형식은 아래와 같습니다. if(조건식) { 명령문 } else { 명령문 } if~else if~else 조건문 조건을 여러개로 나누고 싶은 경우 사용합니다. 형식ㅇ느 아래와 같습니다. else if 문은 원하는 만큼 만들 수 있습니다. if(조건식1) { 명령문 } else if.. 2022. 9. 2.
[Java] 4. 자바 연산자 총정리 데이터를 처리하여 어떤 결과를 만들어내는 것을 연산이라고 합니다. 덧셈, 뺄셈도 연산의 일종입니다. 연산자는 아래와 같이 여섯가지로 나뉩니다. 1.산술 2.증감 3.비교 4.논리 5.대입 6.조건 하나씩 배워봅시다. 1.산술 연산자 산술연산자는 덧셈,뺄셈,곱셈,나눗셈,나머지가 있습니다. 표로 정리하면 아래와 같습니다. 2.증감연산자 증감연산자는 변수의 값을 1증가시키거나 1 감소시키는 연산자입니다. 2++ 는 3과 동일합니다. ++2 도 3과 동일합니다. 그렇다면 ++2와 2++의 차이는 뭘까요? ++2와 2++의 차이는 다른 연산자와 함께 사용될 때 발생합니다. ++2는 증감연산을 먼저 수행하고 2++는 다른 연산을 먼저 수행합니다. 아래 표를 통해 확인해봅시다. 3.비교연산자 비교연산자는 두 값의 크.. 2022. 9. 2.
[Java] 3. 자바 문자열 총정리 String 타입 자바의 기본 타입 외에 자주 쓰이는 타입은 String 타입입니다. String 타입은 문자열을 저장할 때 사용됩니다. char와의 차이는? char 타입은 문자 하나만을 저장합니다. String 은 문장을 저장할 수 있습니다. 각각 선언해보면 아래와 같습니다. char ch='A'; String St="Hello"; char 타입은 작은따옴표를 사용하고 String 타입은 큰 따옴표를 사용합니다. 이스케이프 문자 역슬레시(\)가 붙은 문자를 이스케이프 문자라고 합니다. 이스케이프 문자는 특별한 기능을 합니다. \n (줄 바꿈) \t (탭 만큼 띄움) \" ("출력) \' ('출력) 문자열 안에 이스케이프 문자를 사용할 수 있습니다. 문자열의 덧셈연산 문자열을 덧셈연산하면 문자열이 연결.. 2022. 9. 2.
[Java] 2. 자바 기본 자료형 총정리 (타입) 자바 기본 타입 변수에 저장하려는 값의 종류를 타입 또는 자료형이라고 합니다. 타입이라고 부르겠습니다. Java에서 제공하는 기본타입은 아래와 같습니다. - 정수 - 실수 - 논리값 정수와 실수 타입은 메모리를 차지하는 길이에 따라 다시 나뉩니다. 정리하면 아래와 같습니다. 여러 타입이 있는 이유 정수형이 5개나 있는 이유는 메모리를 효율적으로 사용하기 위함입니다. 작은 숫자를 입력하는데 굳이 큰 메모리를 사용할 필요는 없습니다. 작은 정수는 short을 크기가 커지만 int 나 long 을 사용하여 메모리를 효율적으로 사용할 수 있습니다. 주의할 점 - long 타입을 입력할 때는 숫자 뒤에 L을 붙여야 함. (ex. long num = 300L;) - float 타입을 입력할 때는 숫자 뒤에 f를 붙.. 2022. 9. 1.
[Java] 1. 자바 변수 총정리 변수 선언 방법 변수는 이름입니다. 이름을 정하고, 이름에 어떤 값을 입력하는 방식으로 변수를 정의합니다. 자바에서 변수를 선언하는 방법은 아래와 같습니다. int x; C언어와 선언 방법이 같습니다. int 는 자료의 타입이고 x는 변수 이름입니다. 자바의 변수선언 방식은 아래와 같습니다. 자료타입 변수이름; 변수 생성 조건 자바에서 변수를 생성할 때 지켜야하는 몇가지 조검이 있습니다. - 변수는 문자로 시작 - $와 _ 로 시작하는 것은 가능 - 자바 예약어 사용 불가 (int, char, new, void, true 등) 변수에 값 대입 (변수 초기화) 변수를 선언하고 값을 입력하는 방법은 아래와 같습니다. int x; x=3; 변수에 값을 대입하는 것을 변수 초기화 라고 합니다. 변수 선언과 초기.. 2022. 9. 1.
[C++ 코딩문제] 소수 출력 문제 정수 N을 입력받고 N 이하의 소수를 출력하시오. 정답 - 이전 글인 소수판별 문제 답에서 확장함 - decideN 클래스 내에서 정의된 num 이 소수인지 판단하는데, 특정 값을 입력받아 소수인지 판단하는 함수가 필요했으므로 decideN2를 정의함 - num 보다 작은 수들에 decideN2 를 적용하고 소수일 경우 출력되게 함. #include using namespace std; class myprime { private: int num; public: myprime(const int num); int decideN(); // num이 소수인지 판단 int decideN2(int n); // 입력된 n이 소수인지 판단 void NumPrime(); // num이하의 소수 출력 }; mypri.. 2022. 8. 29.
[C++ 코딩문제] 소수 판별 문제 정수 N 을 입력받고 N이 소수인지 아닌지 판별하시오. (함수 대신 클래스를 사용하시오) 정답 - 소수면 1, 아니면 0이 출력 되도록 함. - 객체지향에 익숙해지기 위해 클래스를 사용했음 - 입력된 값을 num 이라고 하고. 2부터 (num-1)까지의 정수로 num을 나눈 나머지를 구함. 만약 나머지가 0이라면 약수가 존재하는 것이므로 소수아님. #include using namespace std; class isprime { private: int num; public: isprime(const int num); int decideN(); }; isprime::isprime(const int N) { num=N; } int isprime::decideN() { int a=0; if (num==1.. 2022. 8. 26.
[C++] 입력받기 C++에서 숫자가 문자를 입력받는 함수는 cin 입니다. 아래와 같이 사용합니다. int a; cin>>a; 아래는 숫자를 입력받고 입력받은 숫자를 출력하는 예시입니다. #include using namespace std; int main() { int a; cin>>a; cout 2022. 8. 26.
latex 여러줄 수식 왼쪽정렬 아래 그림 참고 2022. 8. 24.
[C++ 클래스의 이해] 4. 생성자와 맴버 이니셜라이저의 기능적 차이 생성자와 맴버 이니셜라이저는 객체의 맴버변수를 초기화하기 위해 사용됩니다. 어떤 클래스에서 volume 이라는 맴버변수를 초기화하는 상황을 가정하였습니다. 생성자와 맴버이니셜라이저 각각의 사용 예시는 아래와 같습니다. 생성자 tp(const float vol) //생성자 내용 { volume=vol; } 맴버 이니셜라이저 tp(const float vol) :volume(vol) //맴버 이니셜라이저 { } 생성자와 맴버이니셜라이저의 차이 생성자는 volume 이라는 변수를 선언한 뒤에 값을 입력합니다. 아래 과정이 수행되는 것입니다. int volume; volume=vol; 따라서 맴버변수인 volume 을 선언할 때 const 가 불가능합니다. 반면 맴버 이니셜라이저는 변수 선언과 동시에 초기화가 .. 2022. 8. 23.
[C++ 클래스의 이해] 3. 맴버 이니셜라이저란 무엇인가 클래스에서 객체를 생성할 때 맴버변수들의 초기화를 해야합니다. 지금까지 배운 방법은 두가지가 있습니다. - 초기화 함수를 정의 - 생성자 이용 초기화 함수는 클래스 안에 외부에서 접근가능한 맴버함수를 정의하는 것입니다. 함수 내용은 맴버 변수의 초기화입니다. 생성자 선언 방법은 함수와 유사한데 객체 선언과 초기화를 동시에 해준다는 이점이 있습니다. 오늘은 맴버 변수를 초기화하는 세번째 방법인 '맴버 이니셜라이저'를 배워봅시다. 맴버 이니셜라이저는 생성자와 함께 사용되므로, 지난시간에 만들었던 코드를 가져옵시다. 생성자를 이용하여 객체를 초기화하는 코드입니다. #include #include //strcpy 사용 using namespace std; class tp { private: char compan.. 2022. 8. 23.
[C++ 클래스의 이해] 2. 생성자란 무엇인가 생성자는 클래스에서 객체를 생성할 때 초기화를 편하게 해주는 함수입니다. 생성자를 이용하면 객체 생성과 초기화를 동시에 할 수 있습니다. 객체 생성 시 맴버변수들은 private 으로 분류하는 것이 일반적입니다. private 맴버들은 외부에서 접근하는 것이 불가능하기 때문에 값을 초기화 해주는 함수를 정의해야 했습니다. 상황을 이해하기 위해 예시를 하나 가져옵시다. 아래는 지난시간에 사용한 예시입니다. 이해를 돕는데 불필요한 코드는 생략했습니다. 주석 표시 부분을 보시면 됩니다. class tp { private: char company[20]; char prod_name[20]; float volume; public: void SetValue(const char * cp,const char* pr_n.. 2022. 8. 19.
[C++ 클래스의 이해] 1. 클래스와 객체지향이란 무엇인가 클래스가 무엇인지 이해하려면 원시 형태의 구조체 부터 시작해야 합니다. 사용자의 필요에 의해 구조체가 고안되고 발전한 역사적 맥락을 알아야 클래스를 제대로 이해할 수 있습니다. 모든 언어의 빅 히스토리를 다루려는 것은 아닙니다. 구조체와 클래스의 한정하여 설명할 것입니다. 백 퍼센트 정확한 역사적 맥락을 알 수 없고 제 지식의 한계도 있기 때문에 어느정도 상상력을 가미하여 흐름을 구성하였습니다. 구조체의 탄생 단일 자료를 관리할 때는 변수를 사용합니다. 한 사람의 키 정보를 입력하고 싶다면 변수 하나로 족합니다. float A_height=187.5; 개발자들은 같은 타입의 자료들을 관리하기 위해 배열이라는 것을 고안했습니다. 다섯 사람의 키는 아래와 같이 선언합니다. 각각을 변수로 선언하는 것 보다 훨.. 2022. 8. 19.
비주얼스튜디오 2022 MFC 설치방법 홈페이지에서 설치파일을 다운받아 실행 후 아래와 같이 체크하고 설치를 클릭합니다. 2022. 8. 18.
[C++] 클래스와 구조체의 차이 클래스와 구조체의 차이를 설명하기 위해 구조체를 하나 선언하겠습니다. struct person { char sex; int age; char job[20]; float height; float weight; }; 헬스장 회원정보를 저장하는 구조체입니다. 회원 한명의 구조체변수를 선언하는 방법은 아래와 같습니다. 이를 '초기화'라고 부릅니다. 초기 값을 입력했기 때문입니다. int main() { struct person kim={'M',28,"teacher",178,68}; }; 클래스는 구조체에서 몇가지 기능을 추가한 것이라고 할 수 있습니다. 선언방법은 아래와 같이 동일합니다. struct 대신 class 라고 적으면 됩니다. class person { char sex; int age; char jo.. 2022. 8. 18.
[C++] 구조체 안에 함수 정의하기 구조체 만들기 예제로 사용할 구조체를 하나 만들어봅시다. 헬스클럽 회원 구조체입니다. 회원 한명의 구조체 변수도 선언해주었습니다. #include using namespace std; struct person { char name[20]; char sex; int age; char job[20]; float height; float weight; }; int main() { person id1={"김지영",'F',23,"학생",164,56}; } 구조체 안에 함수 정의하기 구조체 안에 함수를 하나 추가할 것입니다. 체질량지수(BMI) 를 계산하는 함수입니다. 체질량지수는 자신의 몸무게(kg)를 키의 제곱(m)으로 나눈 값입니다. 구조체 안에 함수를 선언하면 아래와 같습니다. 코드에서 구조체 부분만 적었습.. 2022. 8. 18.
[C++] 메모리 구조 (코드, 데이터, 힙, 스택) 먼저 알기 : 저장장치 컴퓨터의 저장장치에는 램과 하드디스크가 있습니다. 컴퓨터에서 램과 하드디스크 용량을 확인하는 방법을 먼저 알아봅시다. 먼저 램입니다. 내컴퓨터에서 우클릭을 하고 속성에 들어가보면 '설치된 RAM' 옆에 값이 써있을겁니다. 저는 16GB라고 써있네요. 이 값이 램의 용량입니다. 하드디스크 용량은 내컴퓨터를 더블클릭해서 열면 알 수 있습니다. 장치 및 드라이브에 표시된 드라이브들이 하드디스크입니다. 램과 하드디스크를 구분하는 아주 좋은 예가 있습니다. 책상과 캐비넷 예시입니다. 램은 책상이고 하드디스크는 케비넷입니다. 케비넷에서 필요한걸 꺼내서 책상에 올려놓고 작업하듯, 하드디스크에서 원하는 프로그램을 램에 올려놓고 작업하게 됩니다. 책상이 클 수록 이것저것 더 많이 올려놓고 작업 할.. 2022. 8. 17.
[C++] 참조자가 함수의 매개변수인 경우 (call-by-reference) 함수를 호출하는 두가지 방식은 아래와 같습니다. Call-by-value Call-by-reference Call-by-value 는 입력된 변수의 값만 복사하여 매개변수에 저장하는 방식입니다. Call-by-reference 는 입력된 변수의 주소값을 전달받아, 함수 밖에 선언된 변수를 조작할 수 있게 합니다. Call-by-reference 는 아래와 같이 포인터를 이용하여 매개변수를 정의합니다. int myfun(int* var1) { 함수내용 } 참조자를 이용하여 동일한 기능 구현이 가능합니다. 함수를 아래와 같이 선언하여도 위와 동일한 의미를 갖습니다. int myfun(int &var1) { 함수내용 } 참조자를 함수의 매개변수로 사용하여 함수에 변수를 입력하면 변수의 값을 변경하는 함수를 만.. 2022. 8. 17.
[C++] 포인터 변수와 const 포인터 변수에도 const 선언을 하여 상수로 만들 수 있습니다. 이번 글의 목적은 아래 네가지 선언을 구분하는 것입니다. 1) const int a=3; 2) int a=3; const int* pa=&a 3) int a=3; int* const pa=&a 4) int a=3; const int* const pa=&a 1번은 a라는 변수를 변경이 불가능하도록 만든 것입니다. a=5 등 a에 다른 값을 대입할 경우 에러가 발생합니다. 2번은 int* pa 앞에 const가 붙어 있습니다. pa를 상수화 한 것은 아니고 *pa 를 상수화 한 것입니다. 따라서 *pa=5 등 *pa 에 다른 값을 대입할 경우 에러가 발생합니다. 3번은 pa 앞에 const가 붙어 있습니다. pa를 상수화한 것이고, pa에는 .. 2022. 8. 17.
[C++] 상수란 무엇인가 상수는 변경이 불가능한 데이터입니다. 변수는 변경이 가능한 데이터였습니다. 변수 : 변경 가능 상수 : 변경 불가 상수의 특징은 메모리 공간이 할당되긴 하나, 메모리 공간의 이름이 따로 없다는 것입니다. 무슨말인지 이해하기 위해 예를 하나 들겠습니다. 아래와 같이 선언해봅시다. int a=3; 위 코드를 실행하면 벌어지는 일을 살펴봅시다. 1) 3이라는 상수가 메모리에 저장 2) 4바이트 만큼의 메모리 공간 확보 후 a라는 이름 붙임 3) 2에서 확보한 공간에 3저장 위 단계의 1번에서 3이라는 상수를 일단 메모리 공간에 저장해야합니다. 이때 저장되는 메모리공간에는 이름이 따로 지정되지 않습니다. 이름이 없는 상수를 리터럴이라고 부릅니다. 이름이 있는 상수 위에서 분명 상수는 이름이 따로 없다고 했는데요.. 2022. 8. 17.
[C++] 구조체 배열이란 무엇인가 아래와 같은 구조체가 있다고 합시다. struct person { char name[20]; char sex; int age; char job[20]; float height; float weight; }; 헬스장 회원의 개인 정보를 담기 위해 만든 구조체입니다. 숫자나 문자를 하나씩 변수에 담아 사용할 때보다는 훨씬 편합니다. 하지만 회원이 수백명인 경우에 구조체를 수백개 선언하는 것이 힘이 듭니다. 또한 회원들을 몇개의 그룹으로 묶어서 관리하고 싶습니다. 이러한 기능을 구현할 방법이 없을까라는 고민에서 구조체 배열이 고안되었습니다. 구조체 배열 정의하기 구조체를 배열형태로 정의하면 수백개의 구조체도 하나의 선언으로 만들어낼 수 있습니다. 회원 세명의 구조체를 선언하면 아래와 같습니다. struct p.. 2022. 8. 17.
[C++] 구조체란 무엇인가 구조체가 필요한 이유 문자형과 숫자형 자료형만 있는 상황을 떠올려봅시다. 변수에는 문자 하나 또는 숫자 하나만 입력이 가능합니다. 10명의 키 데이터를 입력하고 싶다고 합시다. 숫자형 자료형만 있다면 변수 10개를 선언해야 합니다. 이와 같이 비슷한 자료를 편하게 저장하기 위해 만든 자료구조가 '배열'입니다. 배열을 이용하면 아래와 같이 10명의 키를 쉽게 입력할 수 있습니다. int height[10]={187,167,176,...}; 만약 서로 다른 형태의 자료를 묶어서 관리하고 싶은 경우는 어떻게 해야 할까요? 예를 들면 각 사람 별로 성별, 나이, 직업, 키, 몸무게를 묶어서 관리하고 싶은 것입니다. 이런 상황을 위해 만들어진 자료구조가 구조체입니다. 구조체 정의하기 구조체는 일종의 서식이기 때문.. 2022. 8. 16.
[C++] 함수의 인자로 배열을 입력하는 법 배열의 이름에는 배열의 주소가 저장되어 있습니다. 더 정확이 말하면 배열 첫 원소의 주소 입니다. 따라서 배열 이름은 포인터입니다. 함수에서 배열을 입력받으려면 매개변수를 포인터형으로 선언하면 됩니다. 배열의 이름을 입력하면, 배열의 첫번째 원소를 반환하는 함수는 아래와 같습니다. int my_fun(int* arr) { return arr[0]; } int* arr 을 보면 매개변수를 포인터형 변수로 선언한 것을 알 수 있습니다. 실제로 함수를 사용해봅시다. #include using namespace std; int my_fun(int* arr) { return arr[0]; } int main() { int arr[3]={10,20,30}; printf("%d",my_fun(arr)); } //출력.. 2022. 8. 16.
[C++] 함수의 인자전달 방식 함수의 인자전달 방식을 이해하기 위해 문제를 하나 풀어봅시다. 아래 코드의 출력 결과는 얼마일까요? #include using namespace std; void my_fun(int arg1) { int* B=&arg1; *B=3; } int main() { int A=5; my_fun(A); printf("%d",A); } 출력 결과는 얼마일까요? 5입니다. arg1 자리에 A가 입력될 때, A라는 변수의 값만 복사되어 입력됩니다. arg1=5 가 되는 것입니다. B는 arg1의 포인터이므로 *B에 3을 입력하면 agr1이 3으로 수정될 뿐이지 A가 바뀌지는 않습니다. 2022. 8. 16.
[C++] 함수의 값으로 주소를 입력받는 방법 함수에 입력값으로 변수이름을 입력하고 연산을 수행하여도 변수 자체의 값을 바꿀 수는 없습니다. 변수로 부터 값만 전달 받고, 전달받은 값을 이용하여 연산을 하기 때문입니다. 그러나 함수의 입력값으로 변수이름이 아니라 주소를 입력받으면, 함수에서 변수에 직접 접근이 가능해집니다. 먼저 함수 입력값으로 변수 이름을 입력받는 예시를 봅시다. #include using namespace std; int my_fun(int var1) { return var1=var-1; } int main() { int A=5; printf("%d \n",my_fun(A)); printf("%d",A); return 0; } //결과 //4 //5 함수에서 1을 빼는 연산을 수행해도 A값 자체가 바뀌지는 않습니다. 함수를 통해 .. 2022. 8. 16.
반응형