※ 연관글 목록 무료 마인드맵 FreeMind 설치하기 핫키로 배우는 FreeMind 무료 마인드맵으로 생각 정리하기 Freemind로 마인드맵 작성하기 FreeMind 번역 수정 및 추가하기 FreeMind 속성 기능 활용하기 지도를 표시하는 마인드맵 마인드맵 찾기/바꾸기 마인드맵에 이미지, 파일, 링크, 구름 삽입하기 보안 기능으로 더욱 똑똑해진 마인드맵 브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기 마인드맵 노드 복제 기능 사용하기 프리마인드 편집 메뉴 돌아보기 마인드맵 포맷(서식) 완전정복 마인드맵 탐색 요령 익히기 마인드맵과 시간관리 마인드맵 필터 기능 사용하기 프리마인드 사용팁 공유 마인드맵 공유와 협업하기 마인드맵 내보내기/불러오기 프리마인드 1.0.1 한글 번역 ..
OOP는 Object-Oriented Programming(객체 지향 프로그래밍)의 약자로 현재 프로그래머 들이 즐겨사용하는 대부분의 프로그래밍 언어에는 OOP개념이 포함되어 있습니다. VB .Net 또한 OOP 시각으로 프로그램을 만들어 가는 것이 효과적이며 VB 언어에 가장 적절한 프로그래밍 방법입니다. 초기의 프로그래밍 언어가 프로그램을 데이터와 처리 방법으로 나누는 절차적(procedural) 프로그래밍이었다면 GUI(Graphic User Interface) 기반의 사용자 환경과 수많은 이벤트에 대응해야하는 비절차적 환경에 적절한 OOP는 프로그램을 여러 객체로 나누고 이들 객체 간의 상호 작용을 기술하는 방식으로 프로그래밍합니다. 절차적 프로그래밍 언어로는 C, FORTRAN, COBOL을 들..
좋은 품질 또는 안정성 있는 프로그램이란 다양한 사용자에 의해서 발생하는 다양한 상황에서도 예상할 수 있는 결과를 내는 프로그램입니다. 프로그래머가 생각하고 준비한 범위에서는 잘 동작하지만 그 이외의 경우에는 결과를 예상할 수 없는 프로그램을 좋은 프로그램이라 할 수 없습니다. 중요하게 기억해야할 점은 "완벽함"이 아니라 "예측 가능함"입니다. 철저한 프로그램 설계와 꼼꼼한 코딩으로 모든 경우의 수를 대비한 프로그램을 작성한다면 더욱 좋겠지만 이런 과정은 기간, 인원등 자원의 투입을 수반하게 되어 있고 코드의 크기와 비용이 커짐과 동시에 버그의 출현 가능성도 높아지게 마련입니다. 이러한 "예측 가능성"을 높여주는 대비책이 바로 실행중 예외 처리입니다. 비주얼베이직의 예외 처리 방법은 이전 버전 부터 사용..
지난번 포스팅에서 오픈 소스 사이트에서 아주 고전적인 Turbo-C 2.0을 다운로드할 수 있으며(http://sourceforge.net/projects/borlandtubroc/files/Borland%20Software/) 더 간단하게는 TCC - Tiny C Compiler(http://bellard.org/tcc/)를 활용할 수 있음을 말씀드렸습니다. 이번 포스팅에서는 소스코드를 작성하기에 유용한 jEdit 텍스트 편집기에서 콘솔창을 열어서 간단한 C 프로그램을 직접 컴파일하며 편리하게 학습할 수 있는 방법을 다룰까 합니다. jEdit 편집기에 대해서는 아래의 글들을 참고해 보세요.2015/03/05 | 무료 텍스트 편집기 jEdit 한글판 배포2015/03/03 | BeanShell과 매크로,..
제가 처음 C언어를 공부할때는 터보 C 2.0을 가지고 C언어도 공부하고 심지어 업무에도 사용했던 기억이 있습니다. 도트(dot) 프린터로 연속 용지를 가지고 인쇄하던 시절 터보 C 2.0으로 업무에 활용하여 도넛 그래프를 업무 보고에 사용했던 기억이 새롭습니다. 혹시나 해서 찾아보니 누군가 오픈 소스 프로젝트를 올려놓는 소스포지(sf.net)에 Turbo-C 2.0과 3.0을 올려두었군요. 교육용 목적으로 올려두었다는데 참고할만 합니다. http://sourceforge.net/projects/borlandtubroc/files/Borland%20Software/Turbo-C 2.0을 다운로드 받으셨다면 tc.exe를 실행하시면 아래와 같은 화면을 통해서 최근의 이클립스나 비주얼스튜디오 같으 IDE가 ..
프로그램이 길어지고 복잡해 질수록 연관성 있는 코드를 별도의 묶음으로 분리해 놓으면 프로그램의 가독성이 높아지는 것은 물론이고 해당 코드가 필요한 곳에서는 언제든지 호출하여 사용할 수 있으므로 재사용성을 높이고 오류의 가능성을 최소화하는 효과를 가져올 수 있습니다. 이렇게 특정 기능을 수행하는 단위로 분할하여 묶어 놓는 작업을 모듈화라고 하며 아래의 VB.Net 콘솔 프로젝트의 기본 코드에서도 확인할 수 있지만 모든 프로그램은 하나 이상의 프로시저로 구성된다 할 수 있습니다. Module Module1 Sub Main() End Sub End Module VB.Net은 서브 프로시저와 함수(function) 두가지 형태의 프로시저(Procedure)를 정의해서 사용할 수 있습니다. 서브 프로시저와 함수는..
데이터 정렬(Sort)과 탐색(Search)은 컴퓨터 시스템의 가장 기본적인 기능으로 데이터베이스, 웹 검색, 단순 입력창에 이르기까지 다양한 영역에서 사용하는 것이므로 꼭 알아두어야 할 개념입니다. 퍼스널 컴퓨터가 등장하기 이전 부터 데이터 정렬은 여러 형태로 발전되어 왔는데 예전에는 메모리가 크지 않은 환경이었으므로 이런 제약적인 환경에서도 활용할 수 있는 알고리즘부터 최대한 검색 시간을 줄이기 위하여 검색을 감안하여 정렬된 데이터로 보관하는 기법까지 다양한 알고리즘이 존재합니다. 이런 알고리즘의 복잡도는 O(빅오 Big-Oh)로 표시합니다.■ 버블 정렬(Bubble sort)한쪽 방향으로 이동하면서 인접한 두원소를 비교하여 그 방향 맨 끝에 가장 큰수 또는 가장 작은수를 배치하고 다음번에는 동일 방..
이전 포스팅 트리(Tree)의 개념에서 트리의 기본적인 개념과 실제로 많이 사용하는 이진트리에 대해서도 자세하게 살펴 보았습니다. 이번 포스팅에서는 트리의 운행 방법(traversal)과 관련된 알고리즘을 다루겠습니다. 위의 그림과 같은 이진 트리의 모든 노드를 방문하는 방법에는 3가지가 있는데 트리의 각 노드를 방문하는 방법을 트리의 운행(traversal) 또는 순회라 하고 크게 3가지 방법으로 나뉩니다. 각각의 방법은 다양한 형태로 응용하기 때문에 그 기법을을 꼭 알아두셔야 합니다. 트리(Tree)의 개념에서 이진트리의 각 노드는 Left 링크는 자식 노드를 가리키고 Right 링크는 형제 노드를 가리키도록하여 어떤 차수의 트리도 이진 트리로 표현할수 있다고 했는데 각 노드를 언제 방문하는가에 따라..
트리(Tree)는 가장 기본적인 자료구조의 하나로 실제로도 많이 사용하지만 매우 중요하기 때문에 최근까지도 매년 한 문제 이상을 꼭 출제하는 분야입니다. 개념과 연관 알고리즘을 잘 알아두셔야 합니다. 트리 구조는 그래프(Graph, 꼭지점과 변으로 구성)의 한 종류로 1개 이상의 노드로 구성되며 사이클이 없는(acyclic graph) 그래프로 임의의 두노드간에 하나의 경로만이 존재합니다. 각 노드는 서로 중복되지 않는 원소로 구성된 부속트리(subtree)를 가질 수 있습니다. 트리 구조는 나무를 거꾸로 뒤집어 놓은 형태이며 최상위 노드는 Root(뿌리) 노드라 하고 레벨 1입니다. 루트 노드 아래로 한 단계씩 레벨(깊이)을 가지며 자식(child) 노드가 없는 노드를 leaf(잎)노드 또는 termi..
진법은 수를 표현하는 방법을 나타내는 것으로 일상 생활에서 일반적으로 사용하는 진법은 10진법입니다. 십진수 2345는 다음과 같이 표현 할 수 있습니다. 위의 식은 각 진법을 지수 형태로 표현한 것입니다. N진수를 10진수로 변환하는 방법은 위의 식과 같이 N진수의 각 자릿수에 해당하는 밑수 N(base)을 n제곱한 값에 각 자리의 값을 곱한 결과를 합산하는 것입니다. 모든 밑수의 의 값은 1입니다. 반대로 10진수를 N진수로 변환하는 방법은 아래의 그림과 같이 십진수를 N으로 나누면서 더이상 나누어지지 않을 때까지 나머지를 계산하고 그 결과를 배열하면 됩니다. 2진수는 맨 우측부터 3자리씩 묶으면 8진수로 4자리씩 묶으면 16진수로 손쉽게 변환 할 수 있습니다. 이런 특성 때문에 컴퓨터에서 2진수, ..
연산자(Operators)는 식별자와 리터럴 등을 대상으로 연산을 지시하는 문법 요소로 연산 대상의 개수에 따라 연산 대상을 한개만 취하는 단항 연산자(Unary Operator)와 연산 대상으로 2개를 취하는 이항 연산자(Binary Operator)로 나눌 수 있습니다. 단항 연산자에는 +, -, Not 3가지가 있습니다. +, - 단항 연산자는 연산 대상에 +1 또는 -1을 곱한 결과와 같고 Not은 연산 대상의 논리값을 True/False간에 뒤집는 결과를 가져옵니다. 특수한 단항 연산자로 연산 대상의 데이터형을 가져오는 TypeOf 연산자와 연산 대상의 주소를 가져오는 AddressOf 연산자도 있습니다. * 산술 연산자^ : 지수 연산. a^b 는 a를 b제곱한 결과로 2^4는 2*2*2*2의..
앞서 작성한 VB.Net 언어 이해하기에서 VB.Net 언어 구성 요소의 하나로 리터럴을 설명하면서 다양한 데이터 타입을 언급했고 변수 뒤에 특수 문자를 붙여 데이터 타입을 지정하는 방법을 다루었습니다. 데이터 타입 또는 자료형은 특정한 저장 장소에 있는 정보를 어떠한 형태로 인식할 것인가를 다루는 것으로 컴퓨터에 저장되는 정보는 0과 1이라는 디지털 형태로 보관하는 특성상 그 값을 문자로 인식할지 아니면 숫자로 인식할지, 숫자 중에서 정수 인식할지 아니면 실수로 인식할 지에 따라 다양한 해석이 있을 수 있습니다. 다음은 VB.Net의 데이터형을 정리한 것으로 저장소의 크기와 값의 범위를 확인해 둘 필요가 있습니다.Boolean : True , FalseByte : 0~255(1 byte) 메모리의 내용..
흐름 제어(Flow Control)라는 용어는 프로그램의 처리 과정에서 그 흐름(Flow)을 순차적으로 진행시키는 것 뿐만아니라 일정 횟수나 조건을 만족할 동안 반복하거나, 조건에 따라 처리 내용을 바꾸거나, 특정 값에 따라 처리할 내용을 지정하는 것등을 포함합니다. 프로그램의 시작부터 종료까지 그리고 특정 이벤트의 발생시점부터 종료까지 큰 흐름 또는 작은 흐름으로 수행하는 제어들이 모여 하나의 프로그램을 구성하므로 VB를 활용하여 프로그램을 작성하고 싶다면 이 부분에 대해서는 꼭 알아두셔야 합니다. 1. If 조건문If문은 조건에 따라 문장을 처리해야할 때 사용하며 가장 가단한 사용 방법은 아래의 예와 같이 "If 조건 Then 처리문장"의 형식으로 한 줄에 특정 조건을 만족할 때의 처리 문장을 간단하..
아들의 이번 질문은 머리를 "콩"하고 쥐고 박고 싶은 문제입니다, 시간이 들지만 조금 집중하면 프로그램을 읽고 답할 수 있는 수준의 문제인데 아직 C언어 초보인 것을 감안하면서 차분하게 설명해 보겠습니다. 다음 프로그램의 출력 결과는 무엇인가? int x[10],y[10]; int i,j; int n = 10; for (i = 0; i < n; i++) x[i] = i + 1; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { y[j] = x[(i + j) % n]; } for (j = 0; j < n; j++) x[j] = y[j]; } printf("%d %d %d\n", x[3], x[6], x[9]); ① 10 3 6② 7 10 3③ 8 1 4④ 9 2 ..
아이 때문에 문제를 풀어보기는 하지만 "정말 어렵구나"하는 탄식이 절로 나옵니다. 이럴때는 머리 좋은 사람들이 얼마나 부러운지......그럼에도 불구하고 생각을 조금 집중하면 천재가 아니어도 풀수있는 문제들이 있습니다. 이번에 아이가 질문해온 문제는 아래와 같습니다. * 네 명의 선생님 A, B, C, D 와 다섯 명의 학생 E, F, G, H, I 가 세 개의 조로 나누어서 봉사활동을 하기로 하였다. 다음과 같은 조건으로 세 개의 조 1, 2, 3으로 나눈다고 할 때, 아래 질문에 답하시오.(1) 각 조는 반드시 세 명으로 구성되어야 한다.(2) 각 조에는 적어도 한 명의 선생님이 포함되어 있어야 한다.(3) E와 H는 같은 조에 배치되어야 한다.(4) D와 F는 같은 조에 배치되어서는 안된다.(5) ..