반응형

전체 652

2차원배열 동적할당

2차원 배열의 동적할당은 1차원 배열의 동적할당과 달리 생각해야 할 부분이 있다. 단순히 방법만 알아도 사용하는데 지장은 없지만, 복잡한 알고리즘내에서 계산을 하다 보면, 왜 기본이 중요한지 느끼게 된다. 그래서 기본을 설명하려 한다. 사전필요지식 2014/02/11 - [프로그래밍/C언어] - 이중포인터에 대한 이해 C언어 2013/11/28 - [프로그래밍/C언어] - C언어 포인터에 대한 이해(1) 2014/01/12 - [프로그래밍/C언어] - C언어 포인터에 대한 이해(2) 2014/01/13 - [프로그래밍/C언어] - C언어 포인터에 대한 이해(3) 2014/02/28 - [프로그래밍/C언어] - 동적배열 자료구조의 시작 먼저 1차원 배열과 2차원 배열의 정적할당을 할 경우의 메모리내에서는 ..

드로잉 기초연습 얼굴 여러각도

그림을 그리고 싶다는 생각은 오래전부터 해왔는데, 아직까지 실력은 그대로다. 물론 연습을 안해서 그렇다. 나의 특별한 습관인지 아니면 모든 사람이 그러는지 모르지만, 무슨 공부든 목차의 처음부터 차례대로 하지 않으면 뭔가 제대로 안 하는 것 같아서 아예 시작을 안했던 것 같다. 이젠 나름의 경험으로, 이런 습관은 장점보다는 단점이 많다고 결론 내렸다. 첫째로, 이런 특성의 사람들은 어떤 분야에 대해 공부를 하게 되면 현재까지 그 분야에 기본적인 맛보기 없이 그 분야를 시작하게 되고, 그 분야에 대한 공부를 하지 않으면 아예 모르는 상태로 있기 때문에, 모 아니면 도 형식의 지식을 갖게 된다. 물론, 지식이 홍수처럼 범람하는 인터넷 세상에서 너무 많은 지식에 노출되는 것은 자칫하면, 다양한 분야를 아는데 ..

카르노맵 (카노맵)

지난 시간에 최소항, 최대항을 살펴보고 카노맵과 연관 관계를 설명하였다. 최소항, 최대항에 대한 자세한 이해보다 카노맵과 연관지어 카노맵을 푸는 전략적인 방법 중심으로 설명하겠다. 2015/05/22 - [컴퓨터구조] - 최소항과 최대항, 카르노맵(카노맵) 다시 간단하게 최소항은 입력단의 논리곱의 조합을, 최대항은 입력단의 논리합의 조합을 나타낸다고 설명했다. 이 최소항, 최대항의 가지 수는 부울 함수의 변수의 가지 수에 따라서 정해져 있고, 이 항들을 맵으로 만든 것이 카노맵이다. 각각의 최소항 또는 최대항(최소항의 보수)은 카노맵에서 항이라고 부른다.(이부분은 필수주항 파트에서 다룰 것이다.) 2개의 변수 X,Y를 갖는 카노맵의 기본개념을 나타낸다. m은최소항을 뜻하고 첨자의 숫자는 최소항 비트조합의..

컴퓨터구조 2015.05.26

최소항과 최대항, 카르노맵(카노맵)

최소항(minterm)과 최대항(maxterm) 이란 디지탈 논리회로에서 맵 간략화를 위해 필요한 사항이다. 다시말해, 카노맵(또는 카르노맵) 이놈을 알기 위해서는 최소항, 최대항을 이해해야 한다. 최소항?, 최대항?.. 용어에 의미를 두고 해석을 하면 도통 감이 안 잡힌다. 원서 번역서를 읽으면 도통 무슨 말인지 모르게 써있는 경우가 꽤 있다. 그래서 경험을 비추어 이해하기 쉬운 방향으로 설명을 해보려 한다. X와 Y 두 개의 입력이 있다고 하자. (이는 부울 함수의 X, Y 항이다.) 이 두개의 입력의 조합 방법은 2^2=4가지 경우다. 다음과 같다.(X' 는 X의 보수를 뜻한다.) XY X'Y XY' X'Y' 위 항들이 최소항이다. 논리 곱에 대한 조합 방법이라 생각하면 된다. 이는 디지털 논리 게..

컴퓨터구조 2015.05.22

미로찾기 알고리즘(recursive)-재귀

미로찾기 알고리즘의 종류는 여러가지가 있다. 이 글은 그 중에서 가장 기본이 되는 재귀(recursive) 알고리즘에 관한 글이다. 재귀의 특징은 직관적으로 알아보기 쉽다는 이점이 있다. 재귀는 Stack을 사용하기 때문에 깊이가 깊어지면 overflow 에러가 날 가능성이 높아진다. 하지만, 간단한 문제에 대해서는 재귀의 유혹을 뿌리치기 힘들다. 이전에 알아봤던 깊이 우선 탐색은 미로찾기 알고리즘(재귀)의 원형이 된다. 2014/02/26 - [프로그래밍/알고리즘] - 하노이탑 재귀호출 알고리즘 2013/06/05 - [프로그래밍/알고리즘] - 탐색-깊이우선탐색, 너비우선탐색 오래전 포스팅한 내용이라... 예를 들어보면. 위와같은 길이 있다고 하자. 1.어두운 블럭은 벽으로 막혀 있다고 가정하고, 하얀..

[조합논리회로] 드모르간의 법칙, 함수의 보수, 쌍대성, 일치이론

드모르간법칙은 부울식에서 보수를 얻기위해 사용한다. 다음은 or연산에 대한 드모르간 법칙이다. 드모르간 법칙 보수에 관한 내용은 아래 글을 참고 하세요. 2014/02/23 - [컴퓨터구조] - 보수의 개념과 컴퓨터연산에서의 활용 2진연산에서 1의보수는 0, 0의 보수는 1로 NOT연산을 한 것과 같다. 표현식은 위에 바(bar)를 사용하고 이는 그 식의 보수를 구하는 것과 같다. 다음은 AND연산에 대한 드모르간 법칙이다. 위 두 식은 서로 쌍대성이다. 쌍대성은 아래 글을 참고 하세요. 2015/04/29 - [컴퓨터구조] - [조합논리회로] 논리게이트,기본 논리회로 진리표, 부울대수 표현의 쌍대성에서 바(bar)의 변화는 없다는 것에 주의하자. 이런 법칙들을 이용해서 부울식을 간단하게 할 수 있다. ..

컴퓨터구조 2015.05.08

자료구조 -트리(Tree) C언어

트리의 특징 2차원적 구조를 가짐. 이에 반해 자료구조 배열, 연결리스트, 스택, 큐...등은 1차원 선형적 구조를 갖음. 2014/02/28 - [프로그래밍/C언어] - 동적배열 자료구조의 시작 2014/03/20 - [프로그래밍/C언어] - 자료구조 - 연결리스트[linked list] C언어 2014/03/21 - [프로그래밍/C언어] - 자료구조 스택(stack) C언어 2014/03/22 - [프로그래밍/C언어] - 자료구조 큐(Queue) C언어 용어정리 차수 - 자식 노드의 개수 잎 - 자식 노드가 0인 노드 서브트리(sub Tree) - 트리 내부의 작은 트리 포리스트(Forest) - 트리가 여러 개 모인 것. 레벨(level) - 루트에서 그 노드까지의 거리를 말함.(루트레벨 :1) 높..

부모클래스의 멤버변수 초기화

자식 클래스에서 부모의 멤버변수를 초기화하여 사용하고 싶을 경우는 멤버 초기화리스트(멤버이니셜라이져)의 사용이 필수다. 초기화하는 방법에 앞서, 상속에 관한 이해가 필요하다. 클래스는 그 클래스의 속성을 표현하는 데이터들의 집합이다. 함수는 그 데이타에 대한 작업을 하는 도구다. 클래스의 객체를 생성하여 객체가 차지하는 메모리 공간의 크기를 재보면 멤버변수의 사이즈의 합과 같다. 함수가 얼마나 많든지 간에 객체의 크기는 멤버변수만의 총 사이즈다. 2015/04/28 - [프로그래밍/c++] - [C++]멤버이니셜라이져(멤버초기화리스트) 다음은 부모클래스와 상속관계에 있는 클래스의 객체를 생성하여 그 크기를 출력하는 코드다. 너무 당연한 결과다. circle의 멤버변수는 int형 num 하나로 4byte,..

프로그래밍/cpp 2015.04.29

[조합논리회로] 논리게이트,기본 논리회로 진리표, 부울대수

논리 게이트(logic gate) 디지털회로는 2진정보를 다루는 회로다. 디지털 회로의 기본이 되는 회로를 논리 게이트(logic gate)라고 한다. 디지털 회로는 트랜지스터(transistor)와 직접회로(intergrated circuit)의 연결들로 구성된다. 다시 말해 이런 회로들의 기본이 되는 회로가 논리게이트다. 2진 논리 2진 논리는 2개의 값만 취하는 2진 변수, 다시 말해 0과 1만 취하는 변수에 관한 관한 수학적 논리 연산에 관한 논리를 말한다. 기본적인 2진 논리 연산은 AND, OR, NOT 연산이다. AND는 곱, OR는 합, NOT은 부정을 뜻한다. 연산 기호는 일반 산술 연산 기호와 같다. 연산의 유사성은 있지만 같지는 않다. 2진 논리는 0 아니면 1만을 다루기 때문이다. ..

컴퓨터구조 2015.04.29

[C++]멤버이니셜라이져(멤버초기화리스트)

멤버 초기화 리스트(Mmber Initialization List)라고한다. 생성자의 역할인 멤버변수의 초기화를 대신할 수 있다. 보통 멤버 이니셜라이져라고 부르는데 꼭 사용해야 하는 경우는 4가지가 있다. 1. 상수 멤버의 초기화 (C++11의 경우는 상수멤버변수 선언과 동시에 그냥 초기할 수 있음.) 2. 레퍼런스 멤버 초기화 3. 객체멤버의 초기화 4. 부모클래스의 멤버변수초기화 1, 2, 3번은 비슷한 맥락에서 이해될 수 있다. 4번의 경우는 상속과 객체생성 메커니즘에 대해 잘 이해해야 이해할 수 있다. 2015/04/29 - [프로그래밍/c++] - 부모클래스의 멤버변수 초기화 멤버이니셜라이져 문법 아래는 일반적인 멤버 초기화 방법이다. 아래는 멤버 이니셜라이저 문법을 사용하였다. 두 경우 결과..

프로그래밍/cpp 2015.04.28
반응형