목록Programing Language (103)
완숙의 블로그
지금까지 배운 데이터 타입은 정수, 실수, boolean, 문자열, list 였다. 그런데 정수, 실수는 단순한 데이터 타입이므로, 결국 여러 정보를 넣을 수 있는 것은 String, List이다. 그런데 String은 입력할 때에 숫자와 문자를 섞어 넣을 수 있지만, 요소에 접근해 수정할 수 없으므로 우리가 여러 정보를 넣어 처리할 수 있는 것은 리스트가 전부다. 그런데 파이썬은 목적에 맞는 다양한 데이터 타입을 제공한다. Summary Collection Mutable Ordered Duplication Notation Description Empty Collection string no yes yes [ ] "simple string" s = '' or s = "" list yes yes yes [..
컴퓨터를 통한 문제 해결을 위해서 우리는 정수, 실수, 문자열 등을 프로그램 실행중에 만들어서 사용하였다. 하지만 실제 큰 프로그램들은 수시간 수년동안 쌓여진 데이터를 취급하는 목적으로 사용하며, 이 경우 컴퓨터의 전원이 꺼져도 유지되는 디스크의 화일 사용은 필수적이다. 파일 열기, 닫기 Python과 같은 프로그래밍 언어에서는 화일을 열고 닫는 문법을 제공하는데, 연 화일은 반드시 닫아야 한다. 열기만 하고 닫지 않은 화일은 프로그램의 동작시에 작업한 내용이 제대로 반영이 안되거나, 최악의 경우는 화일에 오류가 생겨서 사용이 불가할 수도 있다. Python에서 화일을 여는 문법은 open() 함수이다. 반대로 닫는 문법은 close() 함수이다. file = open('filename.csv&#..
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 이전에 클래스를 다뤘던 글을 다시 기억해보자. What is Class? 우리가 클래스를 사용하는 이유는, 쉽게 말해, 어떤 물체를 정의해서 사용하는 것이 더 합리적이라는 판단이 들어서 이다. 함수만 가지고서 무언가를 만들기 보다는, 내가 물건을 정의하고 그 물건들을 실제로 만든뒤, 물건들로 다른 활동을 하는 것이 보다 쉽기 때문이다. 이전에 사용했던 사진을 다시 사용해보면, 간단하게 이렇게 정의할 수 있다. 물체를 정의하기 위해 만들어진 것이 클래스, 그 클래스를 기반으로 만들어질 대상이 객체, 실제로 만들어져 구체화 된 물체를 인스턴스라 부른다. 그럼, 상속의 개념은 왜 필요할까? 위의 클래스 예시에서 리모컨 설계도는 굉장히 ..
friend 두개의 클래스가 있을 때, 서로 만들어진 모든 멤버변수, 멤버함수를 공유하기 위해서 우리는 friend 라는 키워드를 사용할 수 있다. a 객체가 b 객체를 친구로 선언한다면 b객체는 a객체의 모든 변수와 함수값을 갖다가 사용할 수 있다. private 까지 사용 가능하다!!!! #include using namespace std; class Point{ private: int x; int y; public: Point(): x(0), y(0){} Point(int _x, int _y): x(_x), y(_y) {} void setXY(int _x, int _y){ this->x = _x; this->y = _y; } int getX() const { return this->x; } int ..
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다. 그렇다면 이 만들어진 객체를 클래스 밖의 함수에서 input으로 받는다면 어떻게 해야할까? 보통 클래스를 함수의 input parameter로 받을 때, reference로 받는다. 그 이유는 클래스가 저장되어 있는 메모리공간의 절약을 위해서이다. const 외부 함수에서 내가 만든 객체를 부를 때, callbyreference로 값을 가져왔다면, 함수 내에서 값이 변경될 수 있다. 그렇기 때문에 함수를 만들 때, input 파라미터 앞에 const 를 달아준다. void print(const Point& pt){ // 함수내용 } 그런데, 이 함수내에..
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다. for for i in [1,2,3,4,5,6,7,8,9]: print(i, end = " ") >> 1 2 3 4 5 6 7 8 9 range() range(limit): 0에서 limit - 1까지를, 1씩 증가하는 형태의 값으로 돌려 준다. range(start, end): start에서 end까지를, 1씩 증가하는 형태의 값으로 돌려 준다. range(start, end, step): start에서 end까지의 값을 돌려 주는데, 숫자의 증가폭을 step만큼으로 한다. Example print..
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다. 그런데 함수로 계속해서 나눠서 하는데 한계가 찾아온 것! 함수에 들어가는 입출 파라미터가 특정 데이터 타입에 연관되어 필요하다는 사실을 알아냈다. 실제로 우리가 어떤 물건을 생각해 보면, 해당 물건(객체)는 물건의 용도에 따라 할 수 있는 행동(method)가 정해져 있다. 따라서 우리는 어떤 객체인지를 밝히고, 그 객체가 할 수 있는 함수를 정의해 놓는 것이 보다 실제적인 접근이다. 이 때 클래스 의 개념은 신이 무언가를 만들때 어떻게 만들지 생각해놓은 설계도 라 생각하면 된다. Class 생성 방법 Member data 실제 세상에 비유하면 물체를 만드는 행위에 해당..
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다. 처음에 배열의 크기를 지정하고 선언하는 정적 배열(static Array)이 있고, 배열의 크기를 유동적으로 조절할 수 있는 동적 배열(Dynamic Array)이 있다. 배열도 함수 포인터와 마찬가지로, 특정 배열을 내가 선언하게 되면 배열의 이름으로 선언해준 변수는 포인터 이다. 정적배열 (Static Array) 메모리 공간에서 배열 원소의 배치 #include using namespace std; int main(){ int ary[3] = {1, 2, 3}; cout