본문 바로가기

(비정기) Dlbo's Post

객체지향 이야기 2. 그럼 객체는 뭔데? 객체란 뭐.... 별거 아니구요. "데이터를 중심으로 무언가 행동을 하는 주체" 입니다. 기존의 절차지향에서는 "데이터"란 단지 "다뤄야 할 대상"이었지만, 객체지향에서는 "객체"가 "데이터"를 가지고 있고, "주체적으로 다른 객체와 대화하는" 형태입니다. 이 객체들간의 대화나 상호 작용이 프로그램이 된다고 전 포스트에 써두었지요? 인간이라는 객체의 형상화입니다. (원래 포토샵으로 해두었으나 날라갔습니다. 죄송 ㄱ-;) 인간은 "이름, 성별, 키, 몸무게, 나이"라는 데이터를 가지고 있고, "말하기"라는 동작을 통해 자신의 데이터를 다른 인간객체에게 알려주거나, 다른 인간객체의 데이터를 수집합니다. 그리고 다른 인간객체와의 상호작용을 통해 "때리"거나, "걷어차"거나.... ....... 예시가 좀 격한.. 더보기
객체지향 이야기 1. 객체지향이 뭐야? 갑작스레 시작하는 객체지향 이야기. 그것도 시리즈물 이에요 -_-; --------------------------------------------------------------------------------------------------- 처음 프로그래밍이 탄생한 순간, 기계에 천공카드를 원하는 규칙에 맞춰 뚫어서 넣어 컴퓨터를 가동하던 그 때. 무식하게 느린 컴퓨터이지만 복잡하고 귀찮은 계산들을 손쉽게 처리해 주었기에, 수많은 사람들이 열심히 천공카드에 하나 하나 구멍을 뿅 뿅 뚫어가며 프로그램을 만들었습니다. 이 후, 기계어 단위로 0, 1을 직접 우겨넣다 못해, 어셈블리 언어가 생겼지요. 정말 단순했습니다. 그냥 순서대로 컴퓨터가 해야 할 일을 프로그래머가 알아먹을 수 있도록 기계어와 1 :.. 더보기
코드 컨벤션. 코드를 구성해 나가는 자신만의 방식. 1. - 언어별 코딩 타입. 각자 프로그래머 마다 자신만의 코딩방식을 가지고 있습니다. 그리고 그 방식은 언어에 따라 차이가 나기도 하지요. class what{ public static void main(){ System.Out.println("이건 뭥미?"); } } 자바 특유의 코딩 스타일입니다. 이클립스에서도 코드 컨벤션을 이런 타입으로 지원하고 있고, 자바의 특징점인 "내부 무명 클래스(Inner Anonymous Class)"에도 적합한 코딩 스타일입니다. #include using namespace std; void main() { cout 더보기
Recursion Vs Iteration. -> Iteration win! int what(int a) { if (a == 0) return a; else return what(a - 1); } int main() { what(10); } .... "뭡니까 저건 -_-;?" 하는 질문이 나올 법한 이상한 코드입니다. .... 이건 어떄요? int main() { int i; for (i = 0; i < 10; i++) } .... 같은 코드에요. 왠진 아시죠?-_-; 근데 제목이랑 관련이 있어 보이기도 하고 아니기도 하고... 속도도 별 차이 없어보이는데... 왜 붙여놨을까요? if문의 비교 횟수는 물론, 반복 실행 횟수도 같습니다. 그.렇.지.만 Iteration이 압도적으로 빠릅니다. 지금이야 데이터가 훨씬 적지만, 대충 10만개만 되도 차이가 확연히 날 겁니다. C언어 -.. 더보기
주로 사용할 프로그래밍 언어를 고를 방법! 프로그래밍 언어는 정말 가지각색 입니다. 절차지향을 외치는 C언어, 객체지향을 외치면서 껍데기만 객체지향, 내부는 객체지향을 은근히 파괴하는 면이 있는 Java, 객체지향과 절차지향을 마음대로 왔다갔다 거릴 수 있도록 설계된 C++, Java의 단점을 상당수 커버하기 위해 나온 C#, 머리 빠개지도록 굴려야 프로그램 하나 나오는 Assembly. #include int main() { printf("헬로우요 C언어 -_-!\n"); return 0; } C언어의 Hello World! 코드입니다. 간략하지요? 이 C언어의 장점은 '스피드'와 '하드웨어 컨트롤링'입니다. OS들을 보면 C언어로 만들어진 것이 많지요. 윈도우 95~98, me와 리눅스가 C로 만들어져 있습니다. 윈도우즈 me의 환상적인 부팅.. 더보기
Lonewolf dlbo - 포스팅 계획. 내일부터 제대로 된 첫 포스트를 올리게 되겠군요. 저는 주로 "컴퓨터의 구조"와 "프로그램의 동작 원리", 그리고 "숏 코딩"과 "프로그래밍 언어론"으로 구성된 포스트가 주를 이루게 될 것입니다만..... "세미나"가 있다면 세미나를 우선적으로 올릴겁니다. -_-)_b 잇힝~ 이번 주는 출근해서 마감까지 못 끝-_-낸 일을 마쳐야 하니 첫 포스트는 상당히 부실할지도 모릅니다; 역시 사람은 부지런해야 하나봅니다 ㄱ-;; 더보기
프로그래머들의 지적 유희? 장난? 직장 상사에게 혼나는 법? main(n){gets(&n);putchar(n%85+5);} 하암... 비주얼 스튜디오 6.0, 혹은 gcc나 ANSI C 표준을 따르는 컴파일러에서 작동하는 코드입니다. (비주얼 스튜디오 닷넷은 ANSI C 표준이 아닙니다.) 아 참, 저게 뭐하는 거냐구요? ....... 두 개의 한자리 양의 정수를 입력받아 합을 출력하는 프로그램 입니다. ....... 직장 상사한테 뺨때기 한대 맞기 딱 좋죠? 것도 합이 두 자리 수가 되면 답이 안나와요. -_-; 두 자리 수가 될 경우 나오게 하는 방법이 있긴 하지요. printf를 활용 하되, 좀 색다른 방법을 써야 합니다. .... 저 코드가 어떻게 돌아가느냐구요? ....... C언어 표준을 따르니 돌아가지요 뭐 -_-; #include 를 빼도 gets와.. 더보기
프로그래밍 언어? 외국어? 흔히들 많이 하는 오해. "프로그래밍은 이과 과목이고, 이과 애들이 압도적으로 잘 해." ........ 전혀 그렇지 않습니다. 프로그래밍은 "컴퓨터와 대화하는 과정"이고, 프로그래밍 언어는 "컴퓨터와 대화하는 언어"입니다. 한마디로, "프로그래밍 언어"란 "외국어"의 일종이라는 겁니다. 프로그래밍 언어의 간략화가 맺어낸 가장 간략한 베이직언어. 정말 "영어로 컴퓨터와 대화하는" 느낌을 받을 수 있습니다. 아주 귀찮은것 하나하나 조차 직접 구현할 필요 없이 OCX를 끌어다 쓴다거나 함으로써 처리가 가능하니까요. 자.... 다들 그러시죠? "영어는 문과가 훨씬 잘해." 라고. 뭐..... 전 여태까지 이과쪽 사람들이 영어를 훨씬 잘하는걸 봐 와서 이게 틀렸다고 생각하지만...;; 영어를 문과쪽 사람들이 더.. 더보기
프로그래밍의 이해 - C언어와 함께하는 Hello World!? #include void main() { printf("Hello World!\n"); } 이전 포스트보다 좀 더 간단한 예제. Hello World! 혹은 Hello C! 라고 불리우는 예제입니다. 이번에 새로 나온건 '\n'. 그리고 전에는 printf() 내부에 "" 이후 콤마로 구분해 출력 형식에 집어넣을 변수가 있었는데 이번엔 사라졌지요? printf()함수의 특성은 ()안에 인자(함수 구동시 사용하는 인풋)의 갯수가 무한대라는 것입니다. 최소 1개(""로 쌓인 출력할 문장), 최대 무한대. 뭐... 사실 최대 갯수가 정해져 있긴 하지만, 그걸 다 넣을 정도라면 차라리 여러 줄로 나눠 쓰는게 보기에도 편하고 쓰기에도 편하답니다. printf() 내부에 이번엔 "Hello World!\n"만 들어.. 더보기
프로그래밍으로 다가가는 한 걸음. 프로그래밍을 이해하기. 프로그래밍은 자기가 직접 세계를 만들어나가는 과정입니다. 그런데 막상 다가가면 다들 어렵다고 물러서더라구요. 단지 우리가 생활할 때 취하는 행동들을 자세하게 늘어놓는 것일 뿐인데 말이지요. 가령 예를 들면, "두 수를 입력받아 출력하는 프로그램을 작성하라." 라고 했을때, 우리는 가장 기본적인 부분부터 처리해 나가야 합니다. 일단 프로그램의 뼈대를 갖춰주어야지요. void main() { } 프로그램의 뼈대. "난 프로그램이다아~~"라고 외치는 void main()이 만들어졌습니다. 이제 저 대괄호({와 })사이에 하나하나의 명령을 기술해야 하지요. 자. 입력을 받아야 하죠? 입력과 출력에 관한 부분은 stdio.h 라는 파일에 기술되어 있습니다. 사용하기 위해 이 친구를 불러들여야 합니다. #inclu.. 더보기