1580, 9/79 회원가입  로그인  
   geniusevil
   geniusevil의 가벼운 c언어 배우기 1

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=433 [복사]


geniusevil의 가벼운 c언어

저는 c언어 고수는 아닙니다. 다만 아직 초보티를 못벗었기 때문에 더욱 더 초보님들의 힘든점을 채워주고 바라는점을 만족시켜줄 수 있다고 생각합니다.

그리고 무거운 내용이 아닌 가벼우면서도 c의 핵심은 다 짚어주는 강좌를 써보고싶네요.

만약 c언어 초보가 아니라면 안보셔도 됩니다.

저는 Microsoft Visual C++이라는 프로그램을 사용합니다. 윈도우에서 구동되는 프로그램이라 편하고 디버그모드도 강력하게 지원해서 제일 괜찮은 컴파일러라고 생각합니다. 무지 비싸기 때문에 어둠의 경로로 구하시길 바랍니다.. 흐흐흐..

어둠의경로란 당나귀나 프루나 등등.. Microsoft Visual stdio 6.0을 받으셔도 되고 Microsoft Visual C++를 받으셔도 됩니다. 정 못구하시겠으면 제 싸이홈피('   http://www.cyworld.com/01028852864  ')에 Board-Warehouse 가시면 '체험판'이 있습니다. 기능제한이 좀 있고 날짜제한도 있으니... 왠만하면 정품 다운받아서 하세요 ^^

------------------------------------------------------------------------------


1일째 - 기본적으로 알아야할것



Visual C++을 실행하고 상단 좌측에 도구상자에서 종이가 빛나는 모양을 누릅니다. 그러면 작업창이 하나 뜹니다. 그 상태에서 Ctrl + S를 누르면 저장이됩니다.
그리고 저장할 폴더를 찾아가서 파일명.c 라고 입력하고 확인을 누릅니다.
예를들어 abcd라는 파일을 만드려면 abcd.c라고 해야합니다 꼭 .c를 붙여야 해야합니다.
.c를 붙이지 않으면 C언어로 작성할수 없습니다!

주의! - 꼭 파일명에 .c를 붙여서 저장할것

이제 예제를 따라하면서 C언어를 배워봅시다

예제 1
1: #include <stdio.h>
2:
3: main()
4: {
5:          printf("sevil의 가벼운 C언어"); //이 부분에서 문장을 출력
6: }

프로그램설명 : sevil의 C 라는 문장을 출력하는 프로그램이다. (너무 쉽다고 실망하지 마세요 ㅋㅋ)

주의! - 여러분이 예제와 똑같이 컴파일러에 입력하신다면 오류가 날것입니다. 예제엔 행번호(1:,2:)가 있기때문입니다.

이 행번호는 프로그래밍 소스가 아니라 여러분의 이해를 돕기위해 번호를 붙여놓은것입니다. 절대 컴파일러에 행번호를 입력하지맙시다.


1행은 #include <stdio.h>는 '전처리기 지시자'라는 것입니다.
이것은 프로그램 내에서 헤더파일에 있는 함수를 사용할 수 있게 해줍니다
[printf() 함수는 stdio.h 헤더파일에 정의되어있습니다.] 그렇기에 전처리기 지시자로 stdio.h를 입력해준것입니다.

stdio는 standard Input output의 약자로서 입출력 함수들이 정의되어있는 헤더파일입니다.


헤더파일의 종류는 무지 많고 이것들을 다 알 필요는 없으나 필요할 경우에 msdn 검색해서 얻을수 있을 정도는 알수 있게 해야 빠른 프로그래밍이 가능할 것입니다.
지금은 헤더파일이 뭔지 이해할 필요는 없고 그냥 헤더파일 안에 정의되어있는 함수를 쓰려면 헤더파일을 꼭 전처리기 지시자로 불러와야한다는 정도만 알면 됩니다.


3행은 main은 프로그램의 시작이자 몸 역할을 합니다. 지금은 그냥 메인이라는 정도만 알아둡시다. 프로그램 핵심의 대부분은 이 main() 안에 들어갑니다.


4행과 6행에 있는 {} 괄호는 main의 시작과 끝을 나타냅니다.


5행은 printf()함수를 이용하여 문장을 출력합니다. printf()함수의 기능은 서식문자열이나 변수의 내용을 출력하는것입니다. 이 함수는 stdio.h파일에 정의되어있습니다.
사용방법은 서식문자열의 경우 printf("문장");입니다. 변수의 내용을 출력할 경우에는printf("[변환지정자]", 변수명); 변환지정자는 나중에 설명할것입니다.


5행의 //문장 <- 이 부분은 '주석'이라고 하여 프로그램에 영향을 주지않습니다. 즉 프로그래머가 소스를 보는 사람들을 위해 설명을 해놓은 것입니다. 자신이 프로그래밍 해놓고 어떻게 짰는지 잊어버렸을때도 있습니다. 어려운 구문에서는 주석을 다는 습관을 기릅시다 ^^

5행 맨 끝에 보면 ;(세미콜론 이라고 한다)를 찍어놓은걸 볼수 있는데 c언어에서는 일반문 한 행이 끝날때 세미콜론으로 구분합니다. (세미콜론을 안해주는것도 있습니다. 그것은 문의 종류에 따라 다릅니다.) 만약 ; 을 찍어야 하는곳에 ;가 없다면 컴파일러는 오류를 출력할것입니다.

참고! - 문 이란 한 행의 문장을 말합니다.



----- 컴파일하기 -----
(설명은 Visual C++ 프로그램 기준으로 설명했습니다)

예제 1에 적힌것들은 '소스'라고 합니다. 그런데 이것은 프로그램이 아니죠 그냥 두면 글자일 뿐입니다.

이것을 프로그램으로 만들어서 작동시켜주는 과정을 컴파일이라고 합니다.

소스 - > 프로그램. 해주는것이 컴파일이지요.

제가 하는데로 잘 따라하셨다면 F5 키를 누르면 오류 없이 컴파일 될것입니다.

오류가 있다면 아래에 있는 창에 오류가 뜰것이구요.

오류를 없애는걸 디버그라 합니다. 디버그 하는방법은 차후에 설명할것입니다.

오류없이 컴파일이 됐다면 Ctrl + F5를 누르고 확인 확인을 누르면 프로그램이 실행될겁니다 ^^

여러분이 만든 프로그램은 저장했던 폴더의 Debug 폴더에서 보실수 있습니다.




예제 2
1: #include <stdio.h>
2:
3: main()
4: {
5:         int before, after, value;        //변수를 선언합니다
6:         before = 10;                //before변수에 10을 저장합니다
7:         after = 30;                //after변수에 30을 저장합니다
8:         printf("이 프로그램은 변수와 변수의 크기를 계산합니다\n");
9:         value = before + arter;        //before와 arter을 더한 값을 value에 저장합니다
10:         printf("두 변수를 더한 값은 %d 입니다" , value);        //value 변수에 저장된 값을 출력합니다
11: }

주의! - 자신의 컴파일러에 적을때 행번호는 안적는거 아시죠?

1행 - 4행은 이미 배웠으므로 아실거라 생각합니다.


5행 변수를 선언합니다.
변수란 상자와 같은것입니다. 값을 담을수도 있고 글자를 담을수도 있습니다.

int before, after, value;

위는 int형 변수 (변수의 유형은 여러가지가 있는데 int형은 정수를 담당하는 변수유형입니다 나중에 유형들에 대해 자세히 배웁니다)를 선언한 것입니다.


6행과 7행에 있는 변수 = 숫자; 의 형태는 변수에 값을 저장해주는겁니다. 변수는 상자라고 했죠? 상자에 무엇을 넣을까 정의해주는겁니다.


8행의 printf()함수는 배운것이기때문에 설명하지않겠습니다. 앞으로는 배웠던 내용에 대해선 언급하지 않겠습니다.
그런데 거의 끝쪽을 보시면 \n이라는게 있습니다. 이것은 개행을 명령합니다.
엔터를 친 효과가 나지요. 컴파일러에서 엔터를 친다고 해도 프로그램 결과에서 줄이 바뀌지 않습니다 \n을 하셔야 줄이 바뀝니다.


9행은 변수 = 변수 + 변수; 를 쓴것인데 변수끼리는 여러가지 연산이 가능합니다 연산의 종류는 5가지인데 아래에서 배우게 됩니다.


10행에선 value에 저장된값을 출력합니다 %d 는 변환지정자 라고 하여 정수를 출력하는 변환지정자입니다. value와 연결되어 값을 출력합니다.
변환지정자의 종류는 다음에 배우게됩니다.


이해가 가시겠죠? ^^

.
.
.
.
.

----- 꼭 외워야 할것! ------

연산의 종류.

+ : 아시죠? ^^ 덧셈입니다.                예) 30+20 = 50

- : 이것도 물론.. ^^ 뺄셈입니다.        예) 50-10 = 40

* : 우리가 쓰던 X와 모양이 다르죠? 하지만 곱셈입니다        예) 30*20 = 600

/ : 나눗셈입니다.         예) 60/20 = 3

% : 이것은 '나머지'연산입니다. 값과 값을 나눈 나머지이지요.        예) 10%3 = 1

++ : 값을 1 증가시킵니다        예)5++ = 6

-- : 값을 1 감소시킵니다        예)5-- = 4

+,-,*,/,%,++,-- 등을 연산자라고 합니다


-----------------------------------------------------------------------------


오늘 강좌는 처음이니까 짧게 마치겠습니다^^ 이해가 다 되실지 모르겠네요?

모르겠다 싶으면 언제든 질문하세요. 댓글로 질문하셔도 되고 제 싸이홈피에 오셔서 질문하셔도 됩니다^^



Copyrightⓒ2006 geniusevil( http://www.cyworld.com/01028852864 ) .All rights reserved
↑ 혹시나 퍼가시려면 ^^;;; 이 표시만 안지우시면 퍼가셔도 됩니다

  Hit : 10389     Date : 2006/01/06 01:09



    
빈대 설명이 쉽게 쉽게 나가니까 재밌는데, 그림까지 있으면 금상첨화~~! 'ㅅ' 2006/01/06  
prosper 전처리기에 대한 부연설명과 stdio.h 가 standard Input out 약자라는정도 등의 자세한 설명이 조금 아쉽습니다. 2006/01/06  
geniusevil 태그가 안되서 그림을 넣을수가 ^^;;.. prosper님 standard Input out 추가했어요 감사합니다. 2006/01/06
wkddkstjd 설명이 차근차근해서 좋아요~~ 2006/01/06
prosper 오타가 있는데 ㅠㅠ; output ;;;;; 2006/01/06  
X-line 쵝오!! 2006/01/07  
prosper 사족: #included 선언에서 <> 와 ""로 구분되어 지는것은 왜그럴까요? 또한 <>안의 파일은 어디에 있어야 하나요? 그 위치는 어떻게 바꿀수있을까요? 2006/01/08  
prosper 그리고 마지막으로 C는 언제 어디서 누가 어떻게 왜 만들었나요? 카피라이트에 대한 카피레프트 운동은 어떻게 생각하세요? 2006/01/08  
geniusevil <>,""로 구분지어지는것은 <>은 표준헤더파일이며 ""는 사람들이 만든 비표준헤더파일입니다 2006/01/08  
geniusevil <>안의 파일은 VC 98 폴더의 Include 폴더에 있습니다 2006/01/08  
geniusevil c언어를 제작한 사람은 리치 외 몇명이고 1971년에 만들어졌습니다 2006/01/08  
geniusevil 카피라이트는 저작권을 인정하는겁니다 2006/01/08  
geniusevil 카피레프트는 그에 반하여 정보의 독점을 통한 과도한 부의 구축을 방지하기위해 생겨난 운동입니다. 2006/01/08  
geniusevil 저는 카피레프트의 힘을 믿고 오픈소스의 힘을 실감했습니다. 카피레프트에 찬성하고 프로그래머는 저작권 외에도 먹고살만한 방법은 있을것 같군요 2006/01/08  
wantstar 와우 ^^ 처음 c언어를 배우는사람에게 많은 도움이 될것같네요 2006/01/10  
P 30*20=60?! 2006/01/10
geniusevil 헉 오타네요 600 --;; 2006/01/11  
빈대 안녕하세요 ^^ 저는 Turbo C를 쓰는 사용자 입니다. 비쥴은 돈이 없어서 못사겠습니다. 어둠의 경로는 너무 느립니다. 2006/01/12  
ljyskyjjang 파일구리 강츄~ㅋㅋ 2006/01/12  
ss 헤더파일이라고도 하고 독자디스크라고도 하는 include 2006/01/18
sajangcm 전 솔직히 Dev-C++을 추천 2006/01/18
summleo 음 내용좋습니다만 초보를 위해서 캡쳐 해서 설명하면 더욱더 좋은 내용일것 같습니다. 2006/01/19  
geniusevil 음... 게시물에 HTML태그가 안먹혀서 그림을 넣을수가 없었어요 :) 2006/01/19  
sajangcm 고맙 2006/01/26  
whanaks Microsoft Visual C++ <<다운받는곳좀알려주세여ㅠㅠ 2006/10/21  
sos34e 아 힘들어 2007/02/06  
need help 죠기 sevil님 저 Visual C++사용잔대요 F5를 누르니깐 Debug에서 exe파일을 발견할수 없다고 나와요 ㅠ 1,2,3이런거 다 지웠는데ㅠ 어떻하죠? 2007/08/16
decembre25 위디스크 가세요...속도 쵝오...캐시가 몇십원 들지만....ㅋ 2007/09/29
iamfanatic c가 만들어진것에 대한설명은 해커스쿨의 중학교만화에도 나와있습니다. 2008/01/21  
iamfanatic 정말 좋은 도움이 되었네요 해커스쿨 만화강좌의 내용을 여기서 보충하고 갑니다. ^^ 2008/01/21  
1420   리눅스와 도스[5]     H.R.T
12/18 9746
1419   임베디드 시스템란?[3]     X-line
12/18 8400
1418   편리하지만 정말 모르시는 단축키..[20]     blue21
12/21 9353
1417   pharming attacks[2]     prosper
12/28 7407
1416   정보보안전문가(해커)의 종류..;;[15]     H.R.T
12/29 11212
1415   정보통신 인터넷 용어..(모르시는 분들만..+참고..)[19]     H.R.T
12/29 16415
1414   cmos비밀번호 푸는 방법[25]     idl0521
12/29 19871
1413   알툴즈 프로그램의 광고없애기![13]     kgt2001sus
01/01 8496
1412   원격종료....[39]     bsjzzz
01/02 11684
1411   msn 쓰시는 분들을 위한 공짜로 용량 늘리기[5]     idl0521
01/02 8108
1410   초간단 리눅스 명령어, 기본적으로 꼭꼭 알아야 할 것[14]     빈대
01/04 9938
1409   커널 업그레이드 방법[2]     빈대
01/04 8264
  geniusevil의 가벼운 c언어 배우기 1[30]     geniusevil
01/06 10388
1407   geniusevil의 가벼운 C언어 배우기 2[10]     geniusevil
01/09 9363
1406     [re] ckdmsghcoh님 답변[6]     geniusevil
01/09 6493
1405   2.4.x에서 2.6.x 로 컴파일 할때 주의할점[2]     dadmi29
01/09 8861
1404   리눅스 방화벽의 종류...[4]     bsjzzz
01/12 13751
1403   * 보안에 대한 주요 FAQ[8]     dl4815
01/14 10730
1402   [펌]로그지우기[12]     khas
01/18 11209
1401   geniusevil의 가벼운 c언어 배우기 3[7]     geniusevil
01/19 10519
[1][2][3][4][5][6][7][8] 9 [10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com