언어 52

[C] 난수 발생

int rand(void) 는 C에서 기본적으로 제공되는 난수발생 함수이다. 0부터 RAND_MAX 까지의 수 중에 난수가 발생한다. 이 함수는 seed를 이용해서 난수를 발생시키는데, 처음에 srand 함수로 특정한 값으로 초기화 된다. 일정 범위 내의 난수를 발생시키기 위해서는 modulo 연산을 주로 사용한다. v1 = rand() * 100 // 0~99 까지의 난수 발생 v2 = rand() %100 + 1; // 1~100까지의 난수 발생 v3 = rand() % 30 + 1985 : 1985 ~2014 까지의 난수 발생 하지만 modulo 연산을 통해 특정 범위의 난수를 발생시키면 완전히 분산된 난수를 발생시키지는 못한다. c++ 사용 설명서에 나오는 예시를 보면 /* rand example..

언어/C&C++ 응용 2021.08.03

[C] LNK1168 에러

프로젝트를 빌드 후 실행을 시키려고 하는데 LNK1168: 프로젝트명.exe을(를) 쓰기용으로 열 수 없습니다. 라는 에러가 떴다. 이 에러는 이미 이 exe 파일이 실행되고 있으면 발생하거나, 백신 프로그램이 실행을 막았거나, 디렉토리 권한의 문제일 수 있는데, 1. 백신 프로그램을 끈다. -> 안됨. 근데 백신 프로그램이 내 프로젝트 실행을 막을 수 있으므로 꺼놓기 추천 2. 디렉토리 권한 변경 속성 > 읽기전용에 V 자로 체크되어 있으면 해제 -> 역시 되지 않음 3. 이미 실행중 작업 관리자에 보면 백그라운드 프로세스에 콘솔창이 떠있는게 있을 수도 있고, 사용자로 들어가서 돌고 있는 프로세스 중에 있을 수도 있고 세부 정보에 떠있을수도 있다. 그래도 못찾겠다면 cmd로 들어가서 tasklist 라..

언어/C&C++ 응용 2021.08.03

[C] Visual Studio scanf 해결

error C4996 'scanf'에 에러가 뜨는 경우가 있다. Visual Studio에서 SDL 검사를 하면서, scanf 가 보안 취약점이 있으니 scanf_s 를 사용하라고 강요(?) 한다. 에러에서 _CRT_SECURE_NO_WARNINGS를 사용하라고 추천해준다. 이 문제를 해결하는 덴 여러 방법이 있다. 1. 추천한대로 scanf_s를 사용해도 된다. scanf_s("%d", &n, sizeof(n)); 인자는 차례대로, 포맷 스트링, 변수 주소, 변수의 사이즈이다. stack overflow를 방지하기 해서 크기를 받는다. 2. _CRT_SECURE_NO_WARNINGS를 사용한다. 코드 위에 #define _CRT_SECURE_NO_WARNINGS 를 추가해준다. 3. SDL 검사를 끈다..

언어/C&C++ 응용 2021.08.02

[C++] ENUMS, Constructor, Destructor

ENUMS 값에다가 이름을 붙여주는 것 어떤 상태 같은 것을 지정할 때 유용하게 사용된다. int A = 0; int B = 1; int C = 2; int main(){ if(val==A){ // whatever }else if(val==B){ // whatever } } 위와 같이 만들어도 되지만 이렇게 할 경우, 매우 복잡하고, 또 각 지정값의 변동 가능성도 있다. enum Example{ // 기본적으로 int형으로 0, 1, 2... 이런식으로 배정이 된다. A, B, C; // can align numbers to each names too D=4; }; enum Example2: float{ // 이렇게 특별히 type을 지정해줄 수 있긴 하다. F=7.2; E=4.5; }; int main..

언어/C&C++ 기본 2021.07.02

[C++] Static

Static의 의미 1. class 밖에 선언된 static: means linkage to the symbol would be static. translation unit에서만 visible할 것 2. class 안: 그 변수가 모든 그 class의 instance 들에 의해 공유될 것 1. class밖에 선언된 static static int s_Var (s_는 conventionally 사용되는 static var 표시) 컴파일러는 이 translation unit에서만 static 요소의 정의를 찾으려 할 것이다. 예를 들어서 두 개의 소스파일에 각각 s_Var이라는 변수를 static하게 선언하면 문제없이 컴파일된다. 하지만 한 소스파일 (혹은 두 소스파일 모두) s_Var 변수에 static선..

언어/C&C++ 기본 2021.07.01

[Java] interface, exception, collections

interface 선언: interface (keyword) interface는 class의 특별한 케이스이다. - field는 존재할 수 있다. interface라고 명시된 케이스에서 필드는 무조건 상수로 표현 (public static final 이 붙음) public 어디서든 접근 가능, static 인스턴스 없이 사용 가능, final 상수 필드 - method 존재 인터페이스의 모든 method는 abstract method (선언만, 정의x) ( public abstract 가 붙음) abstract method가 있어서 abstract 하기 때문에 인스턴스를 만들 수 없음 대신 interface를 구현해서 class를 만듬 - 다중 구현(implement)이 가능, 클래스는 다중 상속(ext..

언어/Java 2021.06.25

[Java] this, super, overriding, final, 추상 클래스, 다형성, dynamic binding

System.out.println() System: class의 일종 (=java.lang.System) api로 제공되는 것, java.lang라는 패키지 안에 있는 System 이라는 클래스 java.lang을 생략한다는 것 = import java.lang.System; 이 생략되어 있다는 얘기 ===> 컴파일러가 삽입해줌 "."은 연산자, 앞에는 class 혹은 instance를 가리키는 reference, 뒤에는 field/method out: static field (instance가 없기 때문) System.out 이 . 앞에 있기 때문에 class 혹은 instance이란 걸 알 수 있다. (instance임, 컴파일러가 알아서 만듬) println()은 System.out이라는 insta..

언어/Java 2021.06.25

[Java] 접근 제어자, 상속, is-a관계

Access Modifier (접근 제어자) - package 와 관련 - 총 4종류의 access modifier 존재 1. public (keyword로 존재) 접근에 제한이 없다, 패키지와 상관없이 class가 public이더라도, constructor가 public이 아니면, class에만 액세스 가능하고 다른 패키지에서 인스턴스 생성 불가(생성자 호출이 불가능해서) 따라서 기본 constructor(constructor를 코드에 명시하지 않은 경우 자동 삽입되는)는 public형임. 2. protected (keyword로 존재) 3. default (keyword로 사용x, 다른 키워드가 없으면 기본 적용) 같은 패키지 내에서는 자유롭게 access 가능, 다른 패키지에서는 access 제한 ..

언어/Java 2021.06.25

[Java] Java란?

구조적 프로그래밍과 객체지향적 프로그래밍 1. 구조적 프로그래밍: - 기능별로 나누어서 모듈을 통해 프로그래밍한다. - 장점: 빠르다, 구현이 쉽다 - 단점: 유지보수가 비싸다 2. 객체지향적 프로그래밍 - 현실세계를 묘사해서 프로그래밍한다. - 장점: 빠른 변화에 빠르게 적응할 수 있다. 객체지향적 프로그래밍 어떻게 하면 현실 세계를 묘사할 수 있을까? 1. 구성요소 파악 ex) 은행: 은행직원, 지점, 은행업무 등등 만약 구조적프로그래밍(기능별 분류) 이었다면 은행업무: 예금>입,출금/ 대출>담보,신용 2. 구성요소 간 데이터 흐름 파악 구성요소를 어떻게 프로그램으로 표현하는가? 클래스를 이용해서 현실과 비슷하게 만든다. 즉, 구성요소의 상태(데이터 값)와 행위(행동) 파악해 이를 변수와 메소드로 만..

언어/Java 2021.06.25

[C++] Class

Class https://www.youtube.com/watch?v=2BP8NhxjrO0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb&index=18&t=14s Class란? 데이터와 기능들을 묶기 위한 것. Class를 정의하고 instance를 만들어보기 #include #include using namespace std; class Human { //definition of Human string name; int age; }; // need a semicolon at the end int main(void) { Human a; //객체(object, instance) 선언 a.name = "Tara"; a.age = 26; } 이렇게 하면 a.name과 a.age에 에러..

언어/C&C++ 기본 2021.06.25