/********************************************************************************
 
 
 
                     제작자: 신대용
 
                     제작일: 2005년 5월 7일
 
                     제작시작시간: 04시 05분
                     여기까지 제작시간: 1월 20일목요일 11시 35분(도중에 이런저런일이;;)

 

                     종료일: 2006년 1월 18일 7시 43분;;(ㅎㅎ 어쩌다 보니)
  
 
********************************************************************************/
 
Hierarchy
 
//Hierarchy가 무엇일까?
//Hierarchy가 없다면?
//Hierarchy의 예
 
 
 
1.Hierarchy가 뭐야?
계층제, 상급제, 계층이라고 사전에 나와있다. 생뚱맞네여;
말그대로 계층 구조 라는겁니다.
아.. 한문이라 말 그대로가 안되는군요... 한문이 이래서 싫습니다. 한문을 알아야만하거든요
1 단계,2단계 이런식으로 단계가 있는겁니다. 게임에서 레벨같은거죠, 레벨 1에서 한번에 7,80으로 점프할순 없죠 1,2,3,4 ... 이런식으로 점차 단계가 올라가다가 레벨이 다운되면 바로 밑 레벨로 가는 안좋은 경우도 생기죠^^
 
계단도 계층 구조랍니다. 1층에서 5층을 가려면 한층 한층 올라가야 하죠
또 3층에서는 2층과 4층 자신의 바로 위와 아래만 갈수있답니다.
5층에 올라가려면 4층에 가야지만 5층에 올라갈수있죠?
1층에 가려면 2층에 가야지만 1층으로 갈수있고요
 
어떤 것들을 계층구조로 만들어 놓으면 이렇게 자신의 바로 위와 아래만 접근할수있답니다.
그렇데 좋은점은 자신은 자신의 바로 위와 아래만 신경쓰면 된다는거예요 그 이하나 그이상에 있는것은 신경쓰지 않아도 되죠^^
아파트 4층에사는 저는 5층에서 시끄럽게 굴지 않으면 되고 3층에 폐가 되도록 뛰어다니지만 않으면 되죠, 6층이나 2층에 사는 사람은 신경쓰지 않아도 돼요^^
 
회사도 계층구조로 되어있어요 사장,부장,과장,대리 대충 이렇게 되어있다고 쳐볼까요?
사 장님이 "매출을 100% 늘려" 라고 부장님에게 지시하면 부장님은 어떻게 해서라도 해 내야겠죠? 여러가지 준비를 해서 과장님한테 지시하고 과장님도 대리에게 지시를 할거예요 그럼 대리는 시키는 대로 수단과 방법을 가리지 않고 지시한것을 해내야죠 하지만 부장님은 대리가 어떻게 일을 처리했는지 세세하게 알필요없죠 과장이 알아서 보고를 할테니까요 사장님도 과장이 어떻게 일을 처리했는지 몰라도 돼고요 역시나 부장이 보고를 할꺼예요^^ 만약에 대리가 일을 잘못했다면 대리는 과장님한테 혼나고 과장은 부장님에게 부장은 사장님에게 혼나겠지만요^^
 
컴퓨터의 구조도(눈에 보이는 구조 말고요^^) 계층 구조로 되어있답니다. low level에서 하는일을 high level에서는 신경쓰지 않아도돼요. 컴퓨터의 low level은 일반인이 이해하기에는 불가능 할정도로 상당히 복잡하답니다. 하지만 우리는 아무렇지 않게 컴퓨터를 쓰고있죠?^^ 다 계층구조 때문이랍니다.
 

2.Hierarchy가 없다면?
 큰일나죠.. 렙 1짜리 검사가 렙업 다한 법사한테 단검 들고 댐비는 꼴입니다.
108계단 맨위에서 맨 아래로 점프하면 다리 부러지는걸로 안끝나죠 ㅎㅎ
 
컴퓨터는 이미 개인이 혼자 개발하기에는 불가능에 가까울 정도로 복잡해져 있습니다.
 아무리 유능한 사람이라고해도 모든 부분에 능할수는 없죠 , 그나마 계층적으로 설계되어 있기 때문에 자기가 개발하는 부분과 인접하지 않는 부분은 신경쓰지 않아도 되기 때문에 컴퓨터 개발이 진행될수 있는 것 입니다. ^^ 프로그래밍도 마찬가지고요ㅎ
 

//1차로 여기까지 씀;

 구조에는 Hierarchy 이외에도 많은 구조들이 있고 Hierarchy 만으로는 부족한 부분이 있어서  Hierarchy만이 쓰이는 경우도있고 다른것들과 같이 쓰이는 경우도있어요. 그리고 어떤경우에서는 Hierarchy가 안좋을 때도 많답니다. 절대적이란건 없으니까요^^

 

 

3.Hierarchy의 예

 'Hierarchy는 보통 순차적으로 단계를 밟아야 하는 곳에 들어가는 경우가 많다'라고 하면 저 스스로 한 70점 정도 줄수있겠네요.(아쉽게도 아직 실력이 부족해서ㅎㅎ)

 프로그래밍에서는 컴파일 과정이 비슷하게 맞네요. (컴파일이란 우리가 만든 고급언어 소스를 기계가 이해할수있는 0,1로 이해 할수있는 이진파일로 바꿔주는 과정이예요)

컴파일과정은 각 단계별로 나뉘어져 있어서 일반적으로는 한번에 하지만 순차적으로 각 단계별 작업을 할 수도있어요. 나중에 가면 그렇게 하는 것이 왜 좋은지도 배우실수있어요

 가장 유명한 Hierarchy는 Internet OSI 7 Layer라는게 있는데요 인터넷을 구성하는 장비,처리등을 7개의 Layer(층)으로 나눠 놓은거예요. 각각의 Layer가 담당하는 기능은 다르고 인접한 Layer끼리만 신경을 쓰기 때문에 좀더 간단하게 인터넷을 개발할 수있게 되었어요. OSI 7 Layer는 개념적인 규정에 맞춰서 하드웨어나 소프트웨어들을 개발하기 때문에 2계층 하드웨어를 만드는곳에서는 1,2,3계층만 주로 신경쓰면되고 5계층의 프로그램을 만드는 프로그래머는 5,4계층만을 주로 신경쓰면 되는거랍니다.(인터넷 중에 Web은 5,6,7계층을 5계층으로 통합해서 처리)

OSI 7 Layer는 나중에 많이 접하실태니 여기서 다룰필요는 없을꺼 같네요 ㅎㅎ

 

 

 

4. 맺으며...

 

 처음에 프로그래밍을 공부하시는 분들은 Hierarchy가 어딧냐고 하실꺼예요 눈에 보이는 구조로도 있지만 주로 눈에 안보이는 구조로 되어있답니다. 그리고 Hierarchy를 실제로 피부로 느끼는것은 글쎄요 언제가 될까요 ㅎㅎ 컴퓨터의 구조라는게 사용자가 그것을 느끼지 못하면 못할수록더 잘 만들어진거니까ㅎㅎ

 정리하자면 Hierarchy는 일반 사용자는 몰라도 되지만 이미 사용하고 있어야 하고 프로그래머는 알고있어야 합니다. 이것을 통해서 더 쉽게 프로그래밍을 할수있고 필요할 때에는 Hierarchy적으로 프로그램을 만들어야 하니까요^^

 

 오랜만에 예~~~~전에 써놓은거 마저 썼는데 ㅎㅎ

역시 전 매일매일 쓰는건 안되나 봐요 한번에 쫙! 써야 하는데 ㅎㅎ

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser

/********************************************************************************
 
 
 
                     제작자: 신대용
 
                     제작일: 2005년 5월 7일
 
                     제작시작시간: 오후 10시 59분

                     제작종료시간: 오후 11시 42분

                     


                     알고넘어가야할것:변수는 하나의 값만 저장할수있다.
 
 
 
********************************************************************************/

 

월요일날 저희 학교 1학년들의 두번째 씨언어 테스트가 있답니다.

 

제 후배가 메신저에서 안된다며 질문을 했는데 어떤 실수를 했는지 살펴보겠습니다.^^

 

후배:

#include  <stdio.h>
//표준입력에서 글자를 하나씩 읽어서 영문자의 개수를 출력하는 프로그램을 작성하라
//
main()
{
        int c;
        c = getchar();
        while(c!=EOF){
                if((c>='A')&&(c<='Z'))
                        c++;
                c=getchar();
        }
        printf("개수:%d\n",c);
}


후배:오빠 여기서 모틀렷어요?ㅋㄷ

후배:앗알겟다

나:ㅋㅋㅋ

나:만화책 보고있었어 ^^

후배:ㅋㅋ오빠

후배: int n=0;

후배:하나더쓰고

후배:출력에서 콤마뒤에 n으로 바껏든데

후배:안되요 ㅋㅋ왜그럴까요?ㅋ

 

 

 

여기까지가 대화 내용이었습니다.

자 과연 무엇이 틀렸을까요? 처음 소스에서 후배가 말한대로 한후 문제가 해결됐을까요?

 

주석을 달면서 하나하나 따라가 보겠습니다. 안보셔도 되요^^

#include  <stdio.h>  //표준 입출력 함수를 사용하려면 include를 해야겠죠?
//표준입력에서 글자를 하나씩 읽어서 영문자의 개수를 출력하는 프로그램을 작성하라
//
main() //머 이렇게 축약시켜도 됩니다.

{
        int c; //외부로 부터 문자를 입력 받기 위해서 c라는 변수를 만들었네요
        c = getchar(); //입력을 받고
        while(c!=EOF){  //입력 받은 값이 입력의 종료를 나타내는 EOF가 아니라면
                if((c>='A')&&(c<='Z')) //입력 받은값이 대문자 A 와  Z 사이의 값이라면
                        c++; //c라는 변수의 값을 1증가
                c=getchar(); //입력을 받고 while문의 처음으로 갑니다.
        }
        printf("개수:%d\n",c); //c의 값을 출력
}

무엇이 문제라고 생각하세요?

 

 

문제 분석을 해볼까요?

표준입력에서 글자를 하나씩 읽어서 영문자의 개수를 출력하는 프로그램을 작성하라

글자를 하나씩 읽어서 -> 문자를 하나씩 입력 받는걸 말하는것이겠죠? getchar라는 함수가 떠올라야 합니다. scanf의 경우 엔터를 입력해야하니깐 좀 비효율적이죠

영문자의 갯수를 출력  -> 입력 받은 값이 영문자일경우 들어온 영문자의 갯수를 1증가 시켜야겠죠?

 

사용할 함수는? getchar 혹은 문자를 하나씩 입력받게 해주는 함수들

사용할 변수는? getchar로 입력 받은 문자를 저장할 변수, 영문자의 갯수를 저장할 변수

 

어때요? 어디서 실수를 했는지 아시겠나요?

 

변수가 하나 부족합니다.^^ 그래서 후배는 변수를 하나더 만들었죠

그런데 바꾸지 않은 부분이

c++;

이부분이었답니다. 나중에 해결 하게 됐죠

c라는 변수는 입력 받은 문자를 저장하는 변수이니까 거기에 1을 더해봤자 의미가 없습니다^^

입력 받은 영문자의 갯수를 저장할 변수에 1을 더해 줘야 하죠^^

 

 

변수는 말이죠~~

 

한번에 한가지만 저장할수있어요~

int형이면 한가지 숫자만  포인터 변수는 한개의 메모리 주소만^^

저장해야할게 2가지라면 변수는 2개만들어줘야해요^^

 

변수에서 중요한것이 무엇인지 다시한번 보자!

 

 

type (자료형)

자료형 , 타입, 종류라고 번역되죠 자료형이 라고 말할께요

int type의 변수에는 int만 넣어야 해요 float type을 넣으면 에러 

"친구"라는 type의 변수에 "적"이라는 type의 값을 넣으면 안되겠죠?

 

한번에 한가지만 저장할수있다

변수 하나는 자기 type에 해당하는 자료를 하나만 저장할수있어요

int a;

a=1;

a=10;

이라고 하면 a에 처음에 들어있던 1은 사라지고 10이 들어가는거예요^^

 

 

(이 밑은 구조체를 모르면 보지 마세요)

"어라 이상하다 struct로 만들어진 구조체는 여러개를 저장할수있는데요?'

라는 질문을 하실수있는데요 구조체 역시 구조체자체를 여러개 저장하고있을순 없어요^^

struct s{

        int a;

        int b;

};

struct s newtype;

이런 구조체가 있다면(구조체는 기본자료형을 붙여놓은거예요)

구조체 s 형으로 만든 구조체 변수 newtype는

newtype.a 에 자료를 하나

newtype.b 에 자료를 하나 저장할수있잖아요?^^ a,b에 각각 두개씩 저장할순없어요^^

 

 

 

시험볼때 문제가 나오면 제가 한것처럼 대강 필요한게 뭔지 적어보시면 좋아요^^

어떤 함수가 필요하고 어떻게 해결할건지 어떤 변수를 사용할지를 적어보면

나중에 빠뜨리고 실수하는게 좀 줄어들수있어요 ^^

 

그럼 또 내일 뵈요 ㅎㅎ

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser

/********************************************************************

정의,선언,할당 3단계(define , declear, allocation )

글쓴이: 신대용

시작 : 2005 5월 5일 11시

끝 : 2005 5월 7일 3시 51분

 

*******************************************************************/

 

오늘 이야기 할 것은 씨언어라기보다는 프로그래밍을 하기위해서, 프로그래밍 개념을 잡기 위한 거니깐 잘들어야 해여^^

이 개념이 잘 잡혀 있으면 , variable(변수), function(함수), object(객체)에 대한 것을 공부할 때 좀더 편하게 대할 수 있어요^^

정의가 가장중요한데요 프로그래밍이란게 이것저것 정의 하는 것이기도 하고 처음에 프로그래밍 공부하시는 분들이 문법(Syntax)이 왜 존재 하는지도 잘모르시는데 그 해답도 된답니다. 선언과 할당은 변수와 객체공부하는대 도움이 될꺼예요^^

 

 

1.정의

컴퓨터는 바보 라고 했죠? 아는게 전혀 없답니다. 갓난 아기와 같아요^^

그런데 갑자기 아기한테 "안방으로 기어가서 엄마 향수좀 가져다 줄래?"말하면 -_- 쌩뚱맞져?

 

아기는 안방이 뭔지도 모르고, 향수가 뭔지도 모르고 가지고 오는게 뭔지도 모르고 지가 기어다니는지 뛰어다니는지도 모르고 아는건 오직 엄마 ^^

아빠한테도 "엄마" ^^ 아빠라고 부르는게 얼마나 기쁘면 TV광고로도 나오겠어요 ㅎㅎ

그런데 컴퓨터도 마찬가지랍니다.  다른 컴퓨터랑 통신을 어떻게 할지도 모르고 자기 몸에(본체에) 뭐가 붙어있는지도 모르고, printf가 뭔지도 모르고^^

그래서 윈도우도 설치하는거고 드라이버(지금은 몰라도돼요)도 설치하고 #include<stdio.h>라고 써주는거랍니다. ^^

 

우리는 인식하지 못하지만 상당히 많은 것이 그리고 엄청나게 세세하게 정해져 있답니다.

참의 반대는 거짓이다, A는 65라는 값으로 저장할 것이다,  + 는 덧셈을 하는 것이다, / 는 나누기를 한다. 이런 것에서부터

간단히는 말할 수 없는, 한가지를 정의하기위해서 수백,수천페이지에 달하는 양으로 정의 되어있는것도 있습니다.

이런것들이 무궁무진하게 있죠, 아....겁먹지 마세요 나중에 이야기 하겠지만 hierarchy(계층)하게 컴퓨터는 만들어져서 몰라도 0.1g의 문제도 없어요^^

지금까지 그래왔던것처럼 앞으로도 그럴꺼고요^^

 

1.1 정의란?

음 이런이야기를 하는 이유는 "정의"라는 것을 설명하기 전에 간단한 예를 봤던거예요

그럼 정의라는 단어가 무얼 말하는걸까 볼까요?

정의(定義) , 어떤 개념의 내용이나 용어의 뜻을 다른 것과 구별할 수 있도록 명확히 한정하는 일, 또는 그 개념이나 뜻.

이라네요^^  쉽게보자면 "나는 귀엽다" 라고 정하는거죠 ^^, 말이 안된다고요?(당연한데-_-;) 물론 말이 안되겠지만 정의라는 것은 신이 말하는것과 같습니다.

그렇다고 하면 그런거죠(쳇), "전지현은 안이쁘다", 물론 말 안돼죠!!! 그런데 그렇다고 하면 그런 겁니다ㅜㅜ

컴퓨터앞에선 프로그래머가 신이죠? 그럼 컴퓨터는 그것에 따르는겁니다^^ "왜?" 라는 반문은 절대로 있을순 없습니다.

앞으로 여러분이 컴퓨터를 공부하게 될 때 "왜?"라는 의구심을 가지고 공부하게 될텐데요 이렇게 "정의" 된것에 대해서는 "아~ 그렇구나" 라는생각과함께

"앞으로는 이렇게만 하자"라는 생각을 가지고 있으시면 쓸데없는 고민은 안하셔도 됩니다. (물론 1+1=2 라는 것처럼.... 이것을 증명하는 것은 어렵죠^^)

정의는 마음대로 할 수 있고 일단 정의 되면 그에 따라야만 한다.

 

 

1.2 정의의 예

그럼 정의라는게 컴퓨터를 사용하는입장에서 어떻게 알 수 있을까요?

 

가장 원초적으로 CPU마다 다르게 어떤 일을 어떻게 할것인지가 "정의"되어있습니다. 그래서 INTEL,AMD  CPU에서 돌아가는 프로그램을 MAC에서 돌리면 안돌아갑니다.

그리고 윈도우와 리눅스도 다르게 정의 되어있어서 윈도우용 프로그램이 리눅스에서 안돌아갑니다^^

 

프로그래밍 상황에서도 볼까요?

#include <stdio.h>라는 것은 왜 쓸까요?

그 이유는? printf를 쓰기 위해서? 맞아요^^ #include라는 건 다른 파일을 자기 소스에 붙여넣으라는 건데 stdio.h파일에는 입력과 출력에 관련된 함수들이 정의되어(만들어져)(2009년 5월 10일 수정) 선언되어 있답니다^^(정의는 다른곳에 되어 있습니다. 이는 Linking과정을 보시면 알 수 있습니다.)(함수가 아직 뭔지 모르신다면 그냥 "명령" 이라고 생각하고 읽으셔도 되요^^)

프로그래밍이라는 것이 이런저런 것들을 정의 해 나가는 거랍니다.^^

int a; 이런것도 (type)   (variable name) 이런식으로 사용할 변수를 선언 한다라고 정의 되어 있어서 할 수 있는거예요 물론 int도 정의 되어있죠^^

정의라는건 죽어도 그대로 해야하는거니깐 inta; 이런식으로 하면 안되는거에요^^

함수를 만드는것도 정의라고 보면 좋아요. 함수의 형식역시 정의 되어있는데

(return type)  (function name)(parameter list){

        contents//2009년 3월 24일 수정

statements

}

이대로 해야해요^^ 이 형식대로 여러분만의 함수를 정의 해야 한답니다^^

 

 

2.선언

int a;

이런 것이 선언 이랍니다. 정의 되어 있는 것을 사용하겠다고 말 그대로 "선언"하는 거죠. 일반 변수들을 선언 할 때 자동적으로 운영체제에서 메모리를 할당해준답니다. 많은 경우에 선언과 할당이 동시에 일어난답니다.

중요한건 정의가 선언 보다 먼저 올 수 없어요. int 라는게 정의 되어있어야지만 int 형변수 a를 만들 수 있는 것이랍니다^^물론 할당도 정의,선언 보다 먼저 나올 수 없죠^^

 

define하고 declear하고 헷갈리실수 있어요 그런데 반드시 구분할 수 있으셔야해요^^

//2009년 3월 24일 주석 

여기서 말하는 define은 #define의 전처리가 아닙니다. 정의를 말하는 것 입니다.

 

3.할당

할당이라는건 또 무슨 소리일까요? 할당이라는건 영어로 allocation인데요, 메모리에서 우리가 사용할 양을 정하는거예요. 운영체제인 XP나 리눅스 같은녀석한테

"야! 나 10메가만 줘", "야 나 abc라는 변수  int 로 만들꺼니깐 메모리줘"이렇게 말하는거죠 필요한 만큼만 달라고해야지  그이상달라고 하면 낭비랍니다.

 

3.1 메모리는 비쌌다.

예전에 스폰지(KBS에서 하는 TV프로그램)에서 본건데요 예전에 누군가가 이런말을 했답니다

"미래의 가정용 컴퓨터는  640KB(킬로바이트) 면 충분할 것이다"

누굴까요? ㅎㅎ 빌게이츠랍니다-_- 희대의 사기꾼인 ㅎㅎ(컴퓨터 공부하면 할 수록 빌게이츠가 싫어질꺼예요 ㅎㅎ)

640KB면 요즘 나오는 500만화소 디카로 찍은 사진 한 장보다도 작은 용량이죠 ㅎㅎ

예전에는 메모리의가격이 매우 매우 비쌌어요 물론 지금도 그렇답니다. 지금은 별로 안한다고요?

메모리에도 종류가 많아요, 빠른 메모리 일수록 비싸답니다. CPU에 붙어있는 메모리는 정말 비싸요(이 이야기는 나중에^^)

지금의 컴퓨터는 1+2를 한다고 하면 1하고 2를 메모리에 반듯이 넣어야 한답니다. 컴퓨터로 사진을 본다면 그 사진도 메모리로 가야하고, 음악도 마찬가지라서 음악을 듣는다면 그 음악이 메모리에 들어가요, 게임도 마찬가지고요^^ 모든 작업은 메모리와 시피유로 가서 처리된답니다^^

그런데 옛날에는 메모리의 가격이 비싸서 컴퓨터에 메모리를 많이 실을 수 없었어요 그로인해 많은 문제도 일어났죠

640KB메모리를 가진 컴퓨터에서 1MB짜리 책을 볼려면 어떻게 해야할까요? 혹은 자신이 만든 프로그램이 1MB의 메모리를 사용한다면?

그래서 메모리를 아주 조금사용하면서 해야할 작업을 빠르게 완수하는 프로그램을 작성하는 것이 중요했어요(옛날에 컴퓨터는 작업용으로 주로쓰였죠^^ 비싸서)

지금처럼 메모리가 많을 때는 뭐가 문제냐고요?  메모리가 많아짐에따라 할 수 있는것도 많아졌고 사람들이 원하는것도 메모리를 더 많이 쓰게 되었거든요

요즘 한창 인기있는 게임들이 필요로 하는 메모리는 수십 메가에서 수백메가 까지해요 저같은 경우 평상시 컴퓨터를 할때 음악을 켜놓고 익스플로러를 10개 정도 실행시켜 놓고 바탕화면은 좋아하는 자우림이나 스타들 사진으로 하고 메모장 1,2개 켜놓고 메신저도 켜놓고 그밖에 여러 프로그램을 켜놔요 더욱이 게임할 때 이런 프로그램은 끄지도 않고 하죠^^

또 핸드폰이나 PDA등에서는 적게는 1M미만 많아도 256메가 정도밖에 안해서 문제랍니다.

 

3.2 할당의 예1

전 결코 여려분의 머리속에 자그마한 짜증을 만들어드리고 싶지는 않아요 ㅎ

간단한것만 살펴보자고요^^

또 등장하는

int a;

선언문 이죠? 나 int 만큼의 메모리를 a라는 이름으로 쓸래! 라고 말하는거예요^^선언문하면 메모리에 4만큼이 할당된답니다. 아 재미있는건요 우리들이 지금 많이 쓰고 있는 컴퓨터는 32bit컴퓨터거든요? 32bit가 4바이트예요 그래서 4바이트 짜리인 int를 처리하는 속도가 제일 빠르답니다. 이제곧 64비트 컴퓨터가 대중화되면 8바이트가 제일 빠르겠죠? 그 때는 int가 8바이트예요 옛날 16비트 컴퓨터때는 int가 16비트 였답니다^^

이렇게 선언과 할당이 동시에도 일어나지만

동적할당이라는 부분에가면 정의, 선언 , 할당이 단계별로 이루어진답니다.^^

그 부분은 나중에 ^^

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser

/********************************************************************************

 

 

 

                     제작자: 신대용

 

                     제작일: 1월 18일 화요일

 

                     제작시작시간: 20시 36분

                     여기까지 제작시간: 1월 20일목요일 11시 35분(도중에 이런저런일이;;)

 

 

 

 

********************************************************************************/

 

 

1)함수의 형식

많은 분들이 함수를 어렵다고 하시는데 그건 함수의 형식을 외우지 않아서입니다.

C언어는 '언어'입니다. 따라서 문법이 있습니다. 이것을 지키지 않으면 안되는 것이죠^^

 

함수의 형식을 볼까요?

리턴 타입     함수이름(   인수들   ){

         함수의 내부

}

함수의 이름 (Name):

함수의 이름은 보통 그 함수가 하는일과 관련지어 정합니다. 그렇게 함으로써 함수가 하는일을 쉽게 알수있고 그 함수속에서 무슨일을 하는지 몰라도 되는 이점이 있습니다.함수의 이름역시 이름 명명법을 따릅니다. 첫글자는 영문으로 시작하며 특수문자는 사용할 수 없습니다. 빈칸도 안된답니다.

함수의 인수(Parameters,인자) :

간단히 설명하면 함수가 외부로부터 받아들이는 값을 인수, 혹은 인자라고 부릅니다. 외부에서 받아들이는 값이 없으면 void라고 써놓거나 비워 두세요, 인수로 들어온값은 변수에 대입되어 함수이 내부에서 사용되게 됩니다. 이부분을 상당히 어려워 하시는 분이 많아 이후에 좀더 자세하게 다루겠습니다.

리턴 타입(Return type) :

함수는 return 문을 이용하여 어떤 값(return value)을 함수를 부른 대상에게 알려줄 수 있습니다. return type은 결과값의 type과 동일 해야합니다. 만약 결과(return value)가 int라면 리턴타입도 int이어야 하고 반대로 리턴타입이 int라면 결과(return value)도 int이어야 합니다.  리턴타입을 명시해주지 않으면 일반적으로 int가 리턴타입으로 적용이 됩니다만 타입을 명시해 주지 않는 것은 좋은 프로그래밍 습관이 아닙니다.

*리턴값==결과값?!

"함수는 return 문을 이용하여 어떤 값(return value)을 함수를 부른 대상에게 알려줄 수 있습니다." 라고 말했습니다. 보통 입문서에서는 이 return 값을 결과값이라고도 합니다.  하지만 엄연히 결과값이라기 보다는 return value,리턴값이라고 말하는 것이 좋습니다.^^ 그차이는 많은 예제를 통해서 보여드리겠습니다.

 

 

형식에 맞는 함수의 예

예1)

int triple(int number){

    return number*3;

}

예2)

triple(int number){

    return number*3;

}

예3)

int multiple(int n1, int n2){

     return n1 * n2;

}

예4)

float div(float n1, float n2){

   return n1 / n2;

}

예5)

void print_hello(void){

     printf("Hello World!");

}

예6)

int print_hello(void){

     printf("Hello World!");

}   

형식이 틀린 함수의 예

예7)

int 1tri ple(int number){

    return number*3;

}

 

예8)

babo라는 형식이 없을경우

babo triple(int number){

    return number*3;

}

예9)

void triple(int number){

    return number*3;

}

 

 

예제 설명

예1)

이름 triple, 인수는 하나 int 형식의 값을 number라는 변수에 넣어서 사용한다.  return 문을 이용해서 number에다가 3을 곱한 값을 결과로 반환한다. 리턴 타입은 int 이다.

예2)

예1과 같지만 함수앞에 리턴타입 int를 명시하지 않았다. 형식에는 맞지만 매우 안좋은 스타일이다. 절대로 이렇게 하지 말기를 권장하며 상황에 따라 문법에 맞지 않다고 할 수 있다.

예3)

이름 multiple, 인수는 두 개 콤마( , )를 이용해서 구분한다. , int 형식의 값 2개를 받는다. 만약 호출할 때 하나라도 없으면 에러를 낼 수 있다. return 문을 이용하여 두값을 곱해서 결과로 반환한다.리턴 타입은 int이다.

예4)

이름 div, 인수는 두 개 , float형식이다. 두수(정수든 실수든)의 나눗셈의 결과는 float이므로 리턴타입으로 float를 사용하였다. rerurn type을 int로 하면 에러나 경고가 발생한다.

예5)

이름 hello_print, 인수는 없다. 인수가 없다는 것을 인수 부분에 void라고 써서 나타낸다. return type역시 어떤 형태의 결과 값도 나타내지 않는 다는 것을 나타내기 위해 void를 사용한다.  내부에서는 화면에 글자를 출력하는 pritnf문을 이용하여 화면에 문구를 출력한다.

주의 할 것은 여기서 말하는 return type, return value(리턴타입,리턴값)이 함수가 종료하면서 자신을 호출한 상대에게 알려주는 값이지(그래서 결과값이라 안하고 리턴값이라한다) 함수가 어떤일을 하고 나타내는 결과의 전부는 아니라는 것이다. 함수는 자신을 호출한 대상에게 리턴값을 알려줄 수도 있고 화면에 글을 출력할 수도있는등 많은 일을 할 수 있다.

예6)

예5와 같지만 리턴타입을 int로 썼다. 이 예제가 보여주는 것은 return value 가 없으면 return type은 의미가 없어진다는 것이다. 하지만 return value가 없을 때(return 문을 값없이 사용하는 경우는 함수를 종료한다는 의미로 쓴다 이럴 경웨 return value는 없지만 return 문은 존재 하게 된다)  void라고 명시해주는 것이 발생할지도 모르는 문제들을 막을 수 있다. return type이라는 것은 소스를 실행파일로 만들어주는 컴파일러,프로그래멍게 이 함수의return value 가 존재하는지 존재한다면 어떤 type을 가지는지 알려주는 기능을 하기 때문이다. 적어도 자신이 만든 함수를 다른 프로그래머가 이용할 때 혼란을 주어서는 안되겠죠?

예7)

함수의 이름이 잘못되었습니다. 함수의 이름에는 빈칸도, 앞에 숫자가 와서도 안돼겠죠?

예8)

함수의 리턴타입으로 없는 자료형(type)을 지정해주어서는 안됩니다. 물론 babo라는 type이 있으며, 동시에 return value가 babo type이면 지정해 주어도 됩니다.

예9)

return value가 있는데도 return type으로 void를 써주어서는 안됩니다.

 

여기까지 기초적인 형식의 문제였습니다. 그럼 계속해서 함수를 어떻게 사용하는지 알아보겠습니다.

 

 

 

2)함수의 사용

 

우선 함수를 사용한 예를 보겠습니다.

 

예10)

#include <stdio.h>

 

int main(void){

 

    printf("Hello World!");

 

    return 0;

}

 

 

결과:

 

Hello World!

 

 

 

해설:

1번 예제는 많은 프로그래밍 책에 있는 Hello World!출력 예제이고

'#include <stdio.h>'라는 것은 stdio.h라는 파일에들어 있는 함수들을 사용하겠다는 말입니다.

C언어는 main이라는 함수에서 부터 시작을 합니다.

printf라는 것은 화면에 글자를 출력하는 함수고 "Hello World!"라는 문구를 출력하라는 말입니다.

함수를 호출 하는 방법은 이렇듯 함수의 이름과 함수의 인자를 넣어주면 되는 것입니다.

 

함수이름(인자들)

 

return문은 함수를 종료 시키면서 함수의 결과값을 함수를 부른 대상에게 알려줍니다. return 문은 다음예제에서 살펴 보겠습니다.

 

 

 

 

 

 

예11)

#include <stdio.h>

 

int triple(int number){

    

    return number * 3;

}

 

int main(void){

    

    int result;

    

    result=triple(4);

    

    printf("%d\n",result);

 

    result= triple( triple(3) );

 

    prtinf("%d\n", result);

 

    return 0;

}

 

 

결과:

 

12

27

 

 

 

 

해설:

이번에는 새로운 함수를 만들었습니다.

triple이란 함수인데요 함수의 프로토 타입부분을 봅시다.(프로토 타입을 보면 함수가 무슨일을 하는지 알 수 있겠죠?)

 

int triple(int number)

 

함수의 이름

triple ,곱하기 3을 하는 함수라서 이런 이름을 붙였습니다.

이 함수의 결과값

int형태  

이 함수를 호출할 때 넣어주어야하는 값

int형태,  함수내부에서 이 값을 number라는 변수에 넣어서 처리

 

triple 함수의 내부:

 return number * 3;

return 문을 이용해서 number에다가 3을 곱한다음에 그 값을 결과값으로 넘깁니다.

 

Main 함수의 내부:

result = triple(4);

라는 부분이 있는데 이부분이 이 함수를 호출 하는 부분입니다. triple(4)의 결과를 result라는 변수에다가 넣으라는 말입니다.

"triple(4)" 이부분이 리턴값 12로 바뀐다고 생각하면 됩니다.

그 다음줄의 printf문은 result를 출력하라는 말입니다.(printf문의 사용법은 여기서 다루지 않겠습니다)

result= triple( triple(3) );

이 부분은 가장 안쪽에 있는 triple(3)부터 실행이 됩니다. triple(3)의 결과는 9가 됩니다. 9라는 결과 값이 다시 그 다음에 있는 triple함수의 인수로 들어갑니다.

triple( 9 )의 결과는 27,  이 값이 result에 들어갑니다.

result= triple( triple(3) );  ====>  result= triple( 9 ); ====> result= 9;

이렇게 생각하면 좀 쉽게 느껴지시나요?

함수의 리턴값(결과값)은 이렇듯 함수를 호출한 대상에게 넘어갑니다.  함수의 return type이라는 것은 이 결과값의 type,즉 정수형이냐(int) 실수형이냐(float)라는 것을 써 놓는 것입니다.

 

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser

음..... 지금에 와서 예전에 작성한 것들을 보니..... 많이 부족했다는 생각이 드는군요
그 떄는 "마스터 했다" 라는 자뻑에 취해 있었는데 지금에 와서 보니 ㅎㅎ
이명호 교수님 말씀대로 실력이 아니라 경지를 올려야 하는게 맞는거 같습니다. 더 높은 경지에 이르지 못하면 완전한 이해는 불가능 하군요 ㅎㅎ

/***********************************************************************

 

                               작 성 자   : 신대용

                               작성일자  : 2005년 1월 18일 화요일

                               작성시작시간 : 04시 29분

                               작성종료시간 : 05시 29분

 

************************************************************************/

 

이번건 그냥 재미 있게 읽어주세요

 

왜 씨언어를 배워야 할까?

 

 

일단 각 대학에서 처음에 씨언어를 가리키는 이유를 말하자면

 

C언어가 프로그래밍언어의 기초이므로 C언어를 많이 가리킨다.

 

 

 

그렇다면 왜 C언어가 프로그래밍 언어의 기초가 됐을까?

 

다른 많은 프로그래밍언어들이 C언어로 만들어졌거나 C언어를 모델로 했기 때문에 기초가 되었다.

 

 

그렇다면 왜 많은프로그래밍 언어들이 C언어로 만들어 졌거나 C언어를 모델로 했을까?

역사를보라

 

 

씨언어의 역사

 

그 이유는 당연한것이겠지만 C언어가 상당히 많은 프로그래머에 의해 사용되었기 때문이다.

 

C언어가 많은 사랑을 받은 이유는 C언어가 몇몇 장점을 가지고 있어서 인데

 

C언어 자체가 처음에는 정말 기초 적인것들만 정의 하고있었다.

 

또한 그 정의에 벗어나지만 않는다면 추가적인 확장이 가능했다.

 

그래서 C언어는 상당히 많은 유사 버전이 만들어졌고 C언어 이지만 서로 다른언어라고 할수있을 정도의 많은 C언어가 생겨날 정도였다.

 

미국표준협회ANSI에서 ANSI C 즉 표준 C를 정의 하였다.

 

이렇게 만들어진 C언어는 살아 있는 생명과도 같이 성장했다.

 

처음에 정의된 씨언어에서 점점 이것저것 새로운 프로그래밍 기술들과 이론들이 생겨날 때마다

 

C언어에다가 붙였다. C언어의 안좋은 면이 발견되면 씨언어의 구조 등을 수정했다.

//2009년 3월 24일 주석.

구조 등을 수정했다고 써 놓았는데 이는 구조등을 수정했다기 보다는 처음 공부하는 사람을 대상으로 C99를  구지 언급할 필요가 없을 것 같아서 대강 써 놓은 것이다. 자료를 옮기면서 지금 보니 오해의 여지가 있어 주석을 단다 C99에 대한 정보는 구글등을 통해서 알아주기 바란다.

 

C언어는 그래서 매우 강력하면서 매우 지저분한 프로그래밍 언어가 되었다-_-

 

71년인가 부터 지금까지 계속 수정에 수정을 거치고 있는 프로그래밍언어이기때문에

 

그 강력함은 이루 말할수없다.

 

72년인가 1년인가 이 C라는 프로그래밍언어로 PDP-11이라는 컴퓨터에서 돌아가는 UNIX라는 운영체제가 다시 만들어졌다.(사실상 이때부터가 유닉스의 시작이며 컴퓨터소프트웨어 기술의 발전이 시작된다)

 

씨언어의 강력함과 간결함이 유닉스를 우수한 운영체제로 만들었고 유닉스는 현대 운영체제의 기본이 되었다. 리눅스는 유닉스를 약간베껴서 PC용으로 만든거고 윈도우는 베꼈는데 잘못베낀데다가 몇개만 베껴서 어정쩌정한놈에다가 그림 입힌거다. -_-;;; 믿기 어렵겠지만 사실이다;;

 

C언어는 중급언어이다라는 말이있다

 

프로그래밍언어에는 기계가 바로 알아 들을수있는 기계어가 있는데 이는 0,1의 숫자의 조합이다.

 

이것을 영어 단어와 매치 시켜서 약간의 의미를 띄게 만든언어가 어셈블리이다.(그래봤자 별차이 없음)

 

여기까지가 저급언어이다.

 

그리고 저급언어 에서 벗어나 명령어가 좀더 의미를 갖게한( 이를테면 화면에 무엇을 출력해라 라고 하는 명령어는 basic이란언어에서는 print이다) 언어가 고급언어이다.

 

C언어는 분명 고급언어이다. 하지만 중급언어라고 불리우는 이유는 기계어처럼 하드웨어 적인 제어가 가능하며(심지어 C언어속에서 어셈블리어를 사용할수있다) 고급언어의 특징을 모두 가지고 있기 때문이다.

 

 

언어 이름의 유래

 

C언어 이름의 유래 100%사실

 

옛날에 B언어라는 언어가 있었다. 그걸 모티브로 해서 만든언어가 C언어다-_-;;

 

C++언어 이름의 유래 100% 사실

 

옛날에 C라는 언어가 있었다 거기에다가 1더했다는 의미로 증가 연산자++을 붙여 C++이되었다

 

C#언어 이름의 유래 80% 사실

 

옛날에 C++이라는 언어가 있었다 거기에다가 ++을추가해서

 

C++   
  ++

 

이라고 만들었다-_-;; (++두개를 합치면 #모양이 나온다)

 

프로그래머들은 상상할수없을 만큼 귀찮은게 많은 존재이다-_-; 믿기 힘들어도 진짜다

 

 

C++언어가 만들어진이유(공식 기록은아님)

 

 

C언어를 만든 데니스 리치라는 아저씨가 있었다.

 

이 아저씨가 C언어를 만들어 놓았더니 너나 나나 프로그래밍을 한다고 해서

 

프로그래머 인건비가 싸졌다(물론 이시절은 옛날이므로 그래도 비쌌다)

 

그래서 공부하기 힘든, 복잡한 프로그래밍언어를 만들었다.

 

-_-;;

 

C++언어와 C언어는 여기서 말하기는 좀 힘든 상당히 다른언어이지만

 

C++은 C언어에다가 다른 프로그래밍 이론울 억어지로 쑤셔 넣은-_-;언어이다.

 

그래서 위의 말이 맞지 않을수도 있지만 자세히 보면 없어될 기능들이 상당히 많다-_-

 

이 이야기는 데니스 리치와의 인터뷰에서 나온것이지만 그당시에는 끼치 영향이 너무 커

 

데니스 리치와 기자가 잡지에서 제외시켰고 한참후에 기자가 내놓았다고 인터넷에 올라온것이다.

 

 

하지만 아마 사실일것이다-_-;;

 

 

 

 

 

C언어언의 예상도

 

 

C언어어는 점점 사용빈도가 낮아지고 있다.

 

이유는 한 프로그램을 만들기에(실제로 우리가 사용하는) 너무 시간이 오래 걸린다는것이다.

 

하드웨어 제어에 상당히 능하지만 잘못 사용했다가는 시스템만 망가 뜨린다. (//주석// 생산성이 낮다)는 이유로 그것도 메리트가 낮아지고 있다.

//2009년 3월 24일 주석.

코딩하다 시스템을 망가뜨릴 실력이 있어야 가능하다-_- 아는 모 군은 quick  basic으로 하드를 날린적이 있다.

 


이유는 이게 다다. 근데 첫번쨰 이유를 보자면...

 

시간이 오래 걸리는 이유는... 타자를 많이 쳐야 한다는말이다.

 

일부 프로그래머들이 죽기보다 싫어 하는 일이다.

 

그리고 기업입장에서도 업무 효율이 낮아지기 때문에 별로 좋아 하지 않는다.

 

하지만 하드웨어제어나 속도가 중요시 되는 프로그램 제작에는 앞으로도 계속해서 쓰일것이다.

 

요즘에 나오는 C#이나 JAVA같은 프로그래밍언어는 전반적으로 느리다.

 

 

 

 

 

 

종합정리

 

 

C는 좋다.

강력한 성능을 가지고있다.

많은 프로그래밍언어가 C로 작성되었거나 C를 모티브로 한다.

하지만 업무효율이 낮다(타자를 많이 쳐야 한다)

앞으로도 많이 쓰일것이다.

C는 역시가 긴만큼 수많은 프로그램들이 C로 짜여져있다. 그것들을 공부하기 위해서라도

 

C는 반드시 해야한다-_-+

 

 

 

 

5시 26분 이다. 흠 이부분을 쓰면서 느낀건

 

누가 컴퓨터의 역사란 책 하나 안써주나 하는것이다.

 

컴퓨터의 역사는 도대체 정확하게 쓰인게 하나도 없다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser
신대용 2005-01-18 03:40:00 
조회 0  스크랩 0

/***********************************************************************

 

                        제작자: 신대용

                        제작일: 2005년 1월 18일 화요일(오늘 아침에 스터디 모임있을예정)

                        제작시작시간: 01시 1분

                        제작완료시간: 03시 41분

                      

                        주제:         플로우 컨트롤(1)

************************************************************************/

 

잡담.

한동안 강좌를 쓰지 않았다.

그 이유는 내 사이트를 완성 하자는 것 이었지만

어쩌다 보니 일이 이 상황까지 왔다.

요센 웹프로그래밍이 잘 안된다. 해도 금방 실증이 나버려서  ^^ 헤헤

이런저런 일이 있었지만 중요한건 "꾸준히" 이니깐 ^^

 

이 강좌는 내 소중한 사람들이 조금이라도 시간을 아껴 쓸수 있기를 바라면서 쓴다.

 

 

저는 일단 여러분을 프로그래밍을 처음 배우는 사람이라고 가정하고 강좌를 계속 할 것입니다. 그것이 오히려 강좌를 쓰는 저나 강좌를 보는 여러분이나 편할 것이라고 생각합니다.

자 그럼 강좌 시작합니다.

 

 

 

Flow control(플로우 컨트롤)?

 

 

오늘 부분은 그냥 읽으십시요 외울 필요없습니다.

 

어렵다고 다시 보거나 하지 마시고 그냥 쭉 읽어 주십시오.

 

 

Flow Control 이란건 다음에 어떤 명령이 실행될지 결정하는것 입니다.

 

명령의 흐름, 명령의 순서

 

실제 프로그래밍에서는  Flow Control을 신경쓰면서 프로그래밍 하지는 않습니다.

 

왜냐면 Flow Control이 프로그래밍의 일부이니깐요^^

 

동생이 있다고 가정해 봅시다.

 

동생한테 잔심부름을 시킵니다.

 

 

1. 슈퍼에 가서

2. 과자를 사와라

3. 아이스크림은 쮸쮸바가 있으면

4. 쮸쮸바를 사오고

5. 없으면 콘을 사와라

 

 

분명 명령이죠? 동생이 해야 할일을 하나씩 적었습니다.

 

실제로 컴퓨터는 한번에 하나씩 밖에 일을 못하니깐요^^ 바보죠 ㅎㅎ

 

만약 쮸쮸바가 있으면 4번 명령이 없으면 5번 명령이 실행됩니다.

 

명령의 흐름이 3번의 조건에 따라 결정됩니다.(여기서 조건은 쮸쮸바가 있느냐 없느냐)

 

이것이 바로 Flow Control입니다^^

 

 

명령의 흐름에는

 

순차, 분기, 반복이 있습니다. 물론 이것들은 하나씩 있는게 아니라 같이 섞여 있죠^^

 

순차는 하나씩 하나씩, 첫번째 명령,두번쨰 명령실행하는것이고 기본적으로 일어나는 일입니다.

 

분기는 첫번째 명령에서 갑자기 "어느 명령이 있는곳으로 가라"하면 그 명령이 있는 곳으로 가서 그 명령이 있는 곳에서 부터 명령을 시작하는 것입니다.

 

반복은 첫번째 명령 두번째 명령 다시 첫번째, 두번째 이런식으로 같은 명령을 반복해서 수행하는것입니다. 뭐 말하자면 두번째를 실행하고 첫번째로 분기 하는것이죠 ㅎㅎ

 

저의 하루를 이런 식으로 간단하게 나타내면

 

1.일어난다.

2.씻는다.

3.밥이 차려져 있는가?(조건)

4.그렇다면 밥을 먹는다.(참)

5.그렇지 않으면 밥을 직접 차려 먹는다.(거짓)

6.컴퓨터 공부를 한다.

7.배가 고프면(조건)

8.간식을 먹는다.(참)

9.잔다.(이 부분이 실행된후 1번으로 이동)

 

이렇게 나타낼수있겠네요. 1번에서 2번으로는 순차 적으로

3번 조건에 따라 4,5번중에 하나가 실행되고

7번에따라 8번이 실행되겠네요?(9번은 7번조건의 영향을 안받습니다)

 

중요한것은 3번 조건이 맞으면 4로 틀리면 5번으로 분기 한다는 것입니다.

이것을 조건 분기 라고 합니다. 요즘 프로그래밍에서는 보통 대부분이 그냥 분기는 없고 대부분 조건 분기 입니다.(일반적인 분기를 잘 사용하지 않는 이유는 나중에 말씀드리겠습니다.)

 

 

9번까지 실행이 되고나면 다시 1번으로 분기합니다. 이런 일이 계속 반복해서 일어나게 됩니다.

아무런 조건이 없으니 무한반복합니다. 무한 반복이라고 합니다.

 

방학동안만 이라는 조건이 있다면 방학동안만 이러한 생활이 반복 될수있습니다. 조건 반복이겠죠?

 

 

 

이렇게 해서 명령의 흐름에는 순차, 분기, 조건 분기, 반복, 조건 반복 있습니다.

 

 

프로그래밍에서 명령을 문(Statement)라고 합니다.

그래서 굳이 프로그램의 어떤부분을 말할때(순차는 기본적이므로 언급안합니다)

분기문, 반복문 이렇게 말하기도 한답니다.(대부분 조건이기에 조건이라는 말 역시 제외)

 

나중에 우리는 분기문으로는 goto

조건 분기문으로는 if, swtich등을 배울것이고

반복문으로는 for,while문등을 배울것입니다.

 

 

 

 

오늘 한것을 정리 하겠습니다.

 

Flow Control이란것은 프로그래머가 다음에 어떤 문(Statement)이 실행될지 조건문,반복문등을 사용하여서 조절 하는것 입니다.

 

한줄을 말하기가 이렇게 힘들다니 정말 몰랐습니다. 벌써 새벽 3시 38분이네요.

내일 약속있는데 ㅜㅜ

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser

예전에 싸이월드 페이퍼에 쓰다 만것들을 올려봅니~~

/***********************************************************************

 

                        제작자: 신대용

                        제작일: 2004년 10월 26일 화요일(시험있는날)

                        제작시작시간: 03시 47분

                      

                        주제:         스따뜨 !!!

************************************************************************/

 

 

 

 

/*      

 

 

흠. 돈이 없다.

 

 

사이트 만들려고해도 이것저것 해야할게 많아서 시간이 없다

 

(라기보다는.... 코딩하는게 귀찮다;;)

 

해서 일단 여기다가  강좌를 개시하려고한다.

 

일단 나도  C언어를 시작한지는 얼마 안된다..

 

하지만 "언어는 단지 언어 일 뿐" 이라는것을 확실히 보여주겠다.

 

그동안 읽은 책들과 앞으로 강좌를 써가면서 읽어야 할책들은 이미 어느정도 정해졌다.

 

 

 

 

 

나의 강좌는 Flow Control, Syntax, Memory등을 일단 중점적으로 생각하고있다.

                      (흐름제어,문법,메모리)

 

Flow Control과 Syntax가 코딩의 기초이며

 

Variable, Array, Pointer등을 Memory라는 것을 통해 배우게 될것이다.

(변수, 배열,포인터)

 

 

 

 

일단 강좌의 목표는

 

1.코딩의 기초를 닦는다

2.C언어를 배운다.

3.Pointer를 완전히 이해한다.

 

 

 

난 사람들이 왜 Pointer를 어려워 하는지 모르겠다.

 

포인터에대한 설명이 지금까지 너무 이유를 설명해주지 않아서 라고 생각한다.

 

난 포인터가 사용되어야 하는 이유를 정확하게 알려주고 이해를 도우려 한다.

 

 

내가 C언어를 공부하고있으면서 반드시 필요하다고 생각하는것은

 

고등학교사회시간에 배우는 "용어의 명확화"이다-_-

 

그래서 각종 책들에서 나오는 한국어 표기 대신 원어표기를 원칙으로 한다.

 

 

이것으로 시작 페이지를 마치고 난 오늘있을 시험을 대비해야겠다.

 

 

 

PS.

발행은 "내가 시간날때!!" 이다-_-

 

시간은 내가 열심히 살고있다면 난다.

 

하지만 열심히 안살고 맨날 겜이나 해싸코 그러면 안난다-_-;;

 

*/

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser