본문 바로가기

분류 전체보기

(55)
[Java] 클래스와 객체 1. 클래스와 객체의 정의 클래스란 객체를 정의해 놓은 것으로 객체를 생성하는 데 사용된다. 객체란 현실 세계에 존재하는 실제 사물이나 개념을 뜻하며 각 객체는 속성과 기능에 따라 다르다. 클래스가 설계 도면이라면 객체는 그 설계 도면을 이용해서 만든 제품이다. 예를 들어, 클래스가 붕어빵 기계라면 객체는 붕어빵인 셈이다. *클래스 이름의 맨 앞글자는 항상 대문자이다. *클래스는 ①사용자가 정의 클래스가 있고, ②라이브러리로 제공되는 클래스가 있다. 사용자 정의 클래스 라이브러리 제공 클래스 (예. System, Scanner... 등) *객체 이름은 대문자로 쓰지 않는다. 대문자로 해도 에러가 나지는 않지만 암묵적인 약속임. 2. 객체의 멤버: 속성과 기능 객체는 속성과 기능으로 이루어져 있다. 예를 ..
[C언어] call by value와 call by reference 함수에 매개변수로 값을 넘겨주는 방식에는 두 가지가 있다. 1. call by value(값에 의한 호출): 매개변수를 통해 값만 넘겨준다. 즉, 원본 값을 복사한 복사 값만 넘겨준다. 2. call by reference(참조에 의한 호출): 매개변수를 통해 주소값을 넘겨준다. 즉, 원본 자체를 넘겨준다. 두 변수 a, b의 값을 바꾸는 swap함수로 이해해보자. #include void swap1(int, int); //call by value void swap2(int*, int*); //call by reference int main(void) { int a = 3, b = 8; int* pa = &a; int* pb = &b; swap1(a, b); printf("a:%d b:%d\n", a, ..
[C언어] 포인터 - 개념, *연산자, 배열, 동적할당 1. 포인터 개념 포인터란? 어떠한 변수의 주소를 저장하는 자료형이다. 포인터의 크기는 운영체제의 bit 수에 따라 달라진다. 운영체제가 32bit라면 포인터는 4byte, 운영체제가 64bit라면 포인터는 8byte의 고정 크기를 가진다. 2. 포인터 연산자 포인터는 별(*)을 붙여 사용한다. ①(자료형)(*) (변수) ex) int* pa = &a; 주소를 저장하는 변수의 선언 방법이다. *은 자료형 쪽에 붙일 수도 있고 변수 쪽에 붙일 수도 있다. 어디에 *을 붙이는지는 개발자의 취향 차이. ②(*)(변수) ex) *pa = 8; 해당 주소에 들어있는 원본 값에 접근하는 방법이다. 변수 앞에 별을 붙이면 주소를 저장하는 변수 pa의 원본 값 a에 접근할 수 있다. (아래 예제 코드 참고) #incl..
[C언어] 구조체 - 개념, 구조체 선언, 변수 선언 1. 구조체의 개념 구조체란 서로 관련이 있는 임의의 자료형의 값들로 구성된 사용자 정의 타입이다. 즉, 관련 있는 자료라면 자료형이 달라도 상관없다. 자바와 파이썬 같은 객체지향 언어의 클래스와 성격이 비슷하다고 한다. 2. 구조체 선언과 변수 선언 다음은 은행 정보와 관련된 구조체 선언 예시이다. 은행 정보에는 예금주, 계좌번호, 잔액, 이율, 비밀번호가 들어갈 것이다. #include struct account { char name[20]; //예금주 명 (19자리까지 저장가능) int account_number; //계좌번호 double balance; //잔액 double interest; //이율 int password; //비밀번호 }myaccount; //main 밖에 적었으므로 전역변수 ..
[C언어] 정렬 알고리즘 (삽입정렬, 퀵정렬, 합병정렬) 정렬 알고리즘 중 삽입정렬, 퀵정렬, 합병정렬에 대해 알아보자. 1. 삽입정렬(Insertion sort) 삽입정렬은 정렬된 수와 정렬할 수를 나누어서 모든 수가 정렬된 수가 될 때까지 과정을 반복하는 알고리즘이다. 삽입정렬의 과정은 다음과 같다. 1. 정렬된 수와 정렬할 수로 섹션을 나눈다. (처음에는 정렬된 수가 없기 때문에 가장 정렬할 수의 가장 첫 번째 수를 둔다.) 2. 정렬할 수를 들어 올려서 (실제로 들어 올리는 건 아니지만 그렇다고 생각하고) 정렬된 수와 비교한다. 정렬된 수보다 작으면 정렬된 수를 한 칸 뒤로 보내고 그 자리에 들어 올린 수를 둔다. 비교가 끝나면 그 수는 정렬된 수에 포함된다. 3. 모든 수가 정렬된 수가 될 때까지 위 과정을 반복한다. 참고 유튜브 링크: https:/..
[C언어] 정렬 알고리즘 (버블정렬, 선택정렬) 컴퓨터는 한 번에 두 개의 수만 비교할 수 있다. 컴퓨터상에서의 대표적인 정렬방법인 버블정렬과 선택정렬에 대해 알아보자. 1. 버블정렬 버블정렬의 과정은 다음과 같다. 1. 첫 번째 숫자와 두 번째 숫자를 비교한다. 더 작은 수가 앞에, 큰 수가 뒤에 오도록 위치를 바꾼다. 2. 두 번째 숫자와 세 번째 숫자를 비교한다. 3. 세 번째 숫자와 네 번째 숫자를 비교한다. . . . 4. 마지 막번째 수를 비교할 때까지 위 과정을 반복한다. . 5. 위 과정을 마치면 제일 큰 수가 맨 뒤로 가있을 것이다. 그러면 잘 정렬된 맨뒤의 수를 빼고 나머수들로 위 과정을 반복한다. 더 이상 비교할 나머지 수가 없으면 정렬 끝! #include int main(void) { int arr[10] = { 10, 8, 3..
[C언어] 탐색 알고리즘 (순차탐색, 이진탐색) 알고리즘이란? 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것. 한마디로 문제 해결방법을 공식화한 형태라고 할 수 있다. 탐색 알고리즘에 대해 알아보자. 1. 순차탐색 배열의 순서대로 확인하면서 값을 찾는 방법이다. 매우 단순한 탐색방법이며 웬만하면 이 방법을 사용한다고 한다. 그러나 찾는 값이 맨 끝에 있다면 모든 값을 다 비교해야 하기 때문에 비효율적이다. #include int main(void) { int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int key = 8; int index; for (int i = 0; i < 10; i++) { if (key == arr[i]) index = i; } printf("%d는 a..