목록분류 전체보기 (98)
알버트의 개발하는 블로그
이번 시간에는 코딩 문제에서 많이 쓰이는 기법 중에 하나인 '재귀 함수'에 대해서 익혀보겠습니다. 함수는 함수 안에서 자기 자신을 호출할 수 있습니다. 재귀는 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법입니다. 처음에는 좀 이상해 보이지만, 사실 재귀는 정말 효과적이고 흥미로운 프로그래밍 기법입니다. 3가지 예제를 통해서 재귀 함수에 대해서 익혀보도록 하겠습니다. 재귀 함수로 팩토리얼 구하기 팩토리얼의 정의는 n! = n * (n-1)! 입니다. (단, n이 0일땐 n!은 1) 위의 정의에선 n!을 정의하는데 (n-1)! 가 다시 사용된 것을 알 수 있습니다. 이를 코딩을 통해서 함수로 구현해보겠습니다. #include long factorial(int n) { printf("factor..
이번 시간에는 클래스의 객체가 생성될때 생성되는 생성자함수와 소멸될 때 소멸되는 소멸자 함수를 배워보겠습니다. 소멸자 함수는 생성자 함수와 다르게 객체가 소멸될 때 실행되는 함수입니다. 따라서 만약 클래스에서 동적으로 할당된 메모리가 있다면 소멸자 함수에서 메모리 해제를 해줄 수 있습니다. 간단한 예제를 통해서 생성자 함수와 소멸자 함수를 익혀보겠습니다. 생성자 소멸자 함수 예제 #include #include using namespace std; class Member { private ://Member 클래스의 객체들 생성 char *name;//포인터로 생성해서 동적 할당 int age; public : Member(const char *name, int age) { this->name = new ..
이번 시간에는 상속에 대해서 배워보겠습니다. 상속이라는 것은 c++에서 제공하는 클래스와 연관이 깊은 기능입니다. 사실 상속처럼 객체와 연관이 깊은 부분은 자바같은 객체지향 프로그래밍 언어에서 더 많이 쓰이긴 합니다. 하지만 c++에서도 제공하는 기능이랍니다. c++에서 제공하는 클래스와 상속에 대해서 짧게 짚고 넘어가보도록 하겠습니다. 상속이란? 상속이란, 말 그대로 부모의 재산을 자식이 그대로 갖다 쓴다는 것을 말합니다. 부모님이 돌아가시면 자식이 그 재산을 물려받는 것처럼, 부모의 재산(변수, 함수) 등을 자식이 그대로 갖다 쓸 수 있는 것을 말합니다. 그래서 자식 클래스는 부모 클래스의 재산을 그대로 갖다 쓸 수 있습니다. 즉, 상속이란 부모 클래스에서 정의한 모든 멤버 변수와 함수를 자식 클래스..
Static (정적) 멤버 변수란? 이번 시간에는 클래스의 멤버 변수 중에 하나인 static 멤버 변수에 대해서 알아보겠습니다. 클래스 멤버 변수는 크게 정적(static) 멤버 변수와 인스턴스 멤버 변수로 구분할 수 있습니다. static이란 뜻은 '고정된'이란 뜻을 가지고 있습니다. 즉, 한번 선언되면 쭉 그 자리에 박혀있다는 뜻입니다. 정적 멤버 변수는 현재 클래스의 객체가 최초로 생성될 때 딱 1번만 메모리에 생성되고 초기화가 되고 그 자리에 쭉 고정되어 사용되어 집니다. 그래서 같은 클래스로 생성되는 모든 객체가 공유해서 사용할 수 있습니다. static 멤버변수와 다르게 인스턴스 멤버 변수는 현재 클래스로 생성되는 모든 객체에서 각각 독립된 메모리를 가집니다. Static 멤버 변수 쓰는 법..
이번 시간에는 우리가 c에서 클래스를 생성했을 때 자동으로 함께 생성되는 생성자 함수에 대해서 자세히 살펴보겠습니다. 생성자 함수란? 생성자 함수는 말 그대로, 클래스가 생성됐을 때 함께 '생성'되는 함수입니다. 저번 시간에 클래스를 선언할 때 이렇게 선언된다고 하였는데요. class 클래스명 { [접근 권한 지정자:] //생략 가능, 생략시 private이 기본 접근 권한으로 사용된다. 클래스 멤버 변수 선언;...; [접근 권한 지정자:] [생성자 함수] 클래스 멤버 함수 선언... }; 이 구조에서 [생성자 함수]가 눈에 띄실 겁니다. 클래스를 생성할 때 자동으로 생성되는 생성자 함수는 주로 클래스변수들의 초기화에 많이 사용됩니다. 생성자 함수의 규칙 단, 생성자 함수를 쓸 때는 규칙이 있습니다. ..
이번 시간에는 c언어에서 제공하는 기능 중에 하나인 클래스(class)에 대해서 한번 배워보겠습니다. 클래스란? 클래스는 구조체처럼 다양한 변수를 포함할 수 있습니다. 하지만 클래스는, 구조체와는 다르게 함수도 포함할 수 있습니다. 구조체는 단지 그 안에 자료형만을 포함하고 있었습니다. 하지만 클래스는 자료형을 포함할 뿐 아니라 그 안에 함수(메소드)까지 포함하고 있습니다. 클래스의 구조를 살펴보면, class 클래스명 { [접근 권한 지정자:] //생략 가능, 생략시 private이 기본 접근 권한으로 사용된다. 클래스 멤버 변수 선언;...; [접근 권한 지정자:] [생성자 함수] 클래스 멤버 함수 선언; ...}; 이와 같은 구조를 가지게 됩니다. 구조체랑 비교해보면 struct 구조체명 { 구조체..
이번 시간에는 좀 간단한 프로그램을 코딩해보겠습니다. 제가 자주 이용하는 '코딩도장'(http://codingdojang.com/)이라는 사이트에서 가져온 문제인데요. 원하는 숫자의 개수만큼 숫자를 입력하고 그 숫자들의 평균을 구해주는 프로그램입니다. 먼저, 원하는 숫자의 개수만큼 숫자를 입력하려면 메모리 동적 할당을 통해서 숫자만큼의 배열을 생성해주어야 할 것입니다. 코딩과 실행 결과 대표사진 삭제 사진 설명을 입력하세요. 코딩을 해보면 이와 같습니다. 숫자의 개수를 받는 변수 n, 합을 저장할 변수 sum, 평균을 저장할 변수 average가 선언합니다. scanf를 통해서 n의 값을 입력받습니다. 그리고 나서 이 부분이 이 코딩의 핵심이라고 볼 수 있습니다. 바로 int *array = new in..
이번 시간에는 c언어에서 제공하고 있는 구조체와 구조체의 변수에 대해서 간단히 배워보겠습니다. 구조체란? 우리가 프로그램에서 실제 처리할 데이터는 대부분 하나의 자료형으로 구성되지 않습니다. 여러 가지 자료형으로 자료를 받아야 하는 경우가 많이 있는데요. 구조체란 이처럼 여러 자료형을 받기 위해서 만들어진 하나의 자료형이라고 보시면 됩니다. 즉, 구조체란 여러 자료형을 묶어서 프로그램에서 사용할 새로운 자료형을 만드는 것을 말합니다. 사용자가 정의해서 쓰기 때문에 사용자 정의 자료형이라고도 부릅니다. 구조체를 선언하는 방법은 struct 구조체이름{ 구조체 멤버 변수(필드); ...; }; 이렇게 선언해주시면 하나의 구조체를 만들 수 있습니다. 구조체이름의 첫글자는 보통 대문자로 선언해주는게 관례입니다...