기타 강좌

헷갈리거나 질문사항 등이 있으면 아래 메일 주소로..
indistinct4869.gmail.com.png  
정체불명 강좌 ver.4개의벽.시작의반
안녕하세요 저도 c언어에 대해 거의 문외한 이지만 아직
printf함수를 쓰는것도 어려워하시는분들이 많으신거 같아 한번 강좌를 써보려고 합니다
제가 쓰는 강좌의 내용은 모두 틀릴수 있는 내용이고 보증도 하지 않습니다
틀린내용을 일부러 적을수도 있으니 이점 감안하시고 보시기 바랍니다.
자 이정도면 부담없이 쓰거나 해도 괜찮겠죠?
강좌의 이름에 대해서 프로그래밍을 하면서 넘어야 할 벽들이 몇개있는데
루프, 함수, 포인터, 가상함수와 다형성 그리고 수학과 영어라고 합니다
이것들을 모두 정복하신다면 어딜 가나 프로그래밍에 대해서는 꿀리지 않을겁니다 ^^;
자 첫시간이니깐 우선 간단한 소개부터 해보도록 하지요
우선 개발툴로는 Visual Studio 2008을 사용하기로 하구요
언어는 c언어를 골랐습니다
visual studio 2008은 마이크로스프트 홈페이지에서 무료로 Express버젼을 배포하기도 하고
90일 평가판으로 Professional버젼이나 Team Suite를 배포하기도 하므로 찾아서 설치를 하도록 합시다
다음은 visual studio 2008링크입니다
http://www.microsoft.com/express/download/
노란색 바탕에 Visual C++2008이라고 적힌곳에서 korean또는 영문판으로 쓰시려면 english를 선택하시고 다운로드를 누르시면 됩니다
자 설치는 알아서 하시구요~

 자 그럼 콘솔 화면에 아주 간단한 프로그램부터 만들어 봅시다
파일-새로만들기-프로젝트-왼쪽패널에서 Visual C++를 선택하시고-다시 Win32를 선택하시고-win32 콘솔응용프로그램-이름적고-확인-새 창이 뜨면 다음-빈프로젝트-마침을 누릅니다

그리고 솔루션탐색기에서 소스파일을 오른쪽 버튼으로 클릭합니다 그리고 추가-새항목을 누르시고
왼쪽패널에서 코드를 선택하시거나 Visual C++를 선택하시고 c++를 선택하고 이름적으시고 확인을 누릅니다

그러면 cpp파일이 하나 생성될텐데요
 (c프로그램을 짜면서 cpp확장자를 쓰는 이유는 문법이 편리하기 때문입니다 예를들어서 c언어에서는 변수선언을 가장 위쪽에 해야 한다거나 하는 제한이 있지만 c++는 그런게 없고
더군다나 모든 c문법을 포함하기 떄문에 cpp에다가 c문법으로 프로그래밍 하셔도 아무문제가 없습니다
하지만 cpp방식의 문법을 c확장자에 적으시고 컴파일 하신다면 오류가 한줄에 두개꼴로 뜰지도 모른답니다;;
)
여기다가 간단한 프로그램을 적어봅시다
그리고 F5또는 Ctrl+F5또는 디버그툴바에서 디버깅시작을 눌러봅시다
int main(){} 컴파일도 잘되고 링킹도 잘되고 오류도 안뜨고 경고도 뜨지 않았습니다 그런데 켜졌다가 바로 꺼지는 쓸모없는 프로그램이군요
c언어는 절차지향적 언어이므로 어디서 시작되고 어디서 끝나야 할지가 정해져야 할텐데요
main이라는 함수에서 시작해서 main이라는 함수로 끝나게 됩니다
함수라는 용어가 나왔으니 함수는 어떤 모양을 하고 있는지 잘 봅시다
int main(){}
여기에서 int는 함수의 리턴 타입이구요 main은 함수이름입니다 그리고 main옆에()는 인자값으로 뭘 받을지 선언하는 곳인데요
이렇게 말로만 설명하면 헷갈리니 함수를 한번 만들어 봅시다
이름은 abszzang로 리턴타입은 int형식으로 인자역시 int형식으로 만들어봅시다

함수를 호출하기전에 함수가 선언되어 있어야 오류가 뜨지 않습니다
그래서 main함수 위쪽에다가 적어줘야 겠지요?

int abszzang(int a){
 return a+10;
 }
자 이렇게 하면 함수 하나가 완성 되었습니다
이 함수를 main함수 위에 적어주고..

 int abszzang(int a){
  return a+10;
  }
 int main(){
  }
만들었으니 한번 호출 해봐야겠지요?
 int abszzang(int a){
  return a+10;
  }
 int main(){
 abszzang(10);
  }
자 결과가 예상이 되십니까? abszzang라는 함수를 호출하면서 인자값으로 10을 넘겨주었구요
그 값을 int형 a로 받아서 a에다가 10을 더한뒤에 호출한 그 지점으로 돌려보내줍니다
그런데 실행해보시면 아시겠지만 아무것도 뜨질 않죠 ;;; 화면에 출력하는 함수를 사용해서 화면에 뜨게 할수가 있는데요
그 함수는 바로 printf()함수입니다 이 함수는
printf("출력하고싶은 글들~"); 이런식으로 사용하시면 되구요
printf("출력하고싶은 글들~n")~뒤에 한줄 띄고싶으면 n를 적어주시면 됩니다
printf("출력하고싶은 숫자:%d",10);이러면 %d있는부분에 10이 10진수형으로(%d를썻으므로) 출력이 되구요
printf("출력하고싶은 숫자:%d",a);이러면 %d있는 부분에 a의 변수값이 10진수형태(%d를썻으므로)로 출력이 됩니다
printf("출력하고싶은 숫자:%d",abszzang(10));이렇게 하면 %d있는곳에 abszzang함수를 호출해서 리턴된 값이 abszzang(10)이자리로 오게 되고 그 값이 10진수형으로 출력이 되겠죠?
여기에서는 10을 인자값으로 줬으니 10에 10을 더한 20이 출력이 될겁니다

printf함수를 사용하기 위해서는 함수를 abszzang처럼 정의를 해줘야 하는데 우리가 정의하기는 아직 이르므로 이미 정의되어있는것을 쓰려면
코드 가장 윗부분에 #include<stdio.h>라고 적어줍시다(이것은 컴파일 하기 전에 하는 전처리기이므로 세미콜른을 붙일 필요가 없습니다)
그리고 system()함수를 위해서 #include<stdlib.h>라고 정의해 줍시다
stdio.h파일안에 printf를 정의해놓았는데요 헤더파일에 관한것은 조금 있다가 다시 배워보도록 합시다
어떻게 생겼는지 궁금하신분들은 #include<stdio.h>라고 적으시고 stdio.h부분을 오른쪽 버튼으로 클릭해서 stdio.h문서 열기를 클릭해보시기 바랍니다

그런데 문제가 또 있지요 디버깅하지 않고 시작이 아니라 그냥 실행을 하면 켜졌다가 출력이 끝나고 눈깜짝할새보다 더 빠른시간안에 꺼져버리는 문제가 있지요
그럴때에는 system()함수를 사용합니다 system 함수는 인자값으로 도스 명령어를 받아서 그 명령어를 실행해주는 함수인데요
pause라는 명령어를 적어주면 계속하려면 아무키나 누르세요라는 문구와 함께 키가 입력될때까지 대기하게 됩니다
그럼 한번 전체 소스를 적어볼까요?
#include<stdio.h>
#include<stdlib.h>
 int abszzang(int a){
  return a+10;
  }
 int main(){
 printf("아방스 출격! %d", abszzang(10))
 system("pause");
  }
소스의 길이가 길지 않으니 직접 입력해보시는것을 춫현합니다~

 잠깐상식:주석을 사용하려면 //또는 /* */를 사용합니다 //는 //뒤의 한줄전체를 주석처리하는것이구요
  /* */는 /*와 */사이에 있는 문장들을 모두 주석처리 하라는 겁니다 소스코드에 설명을 적을때 쓸수도있지만
  소스코드를 잠시 지울때도 쓸수 있답니다. 단 주의할점은 /* */ 주석을 쓸때에 중첩해서 주석안에 주석을 /* /**/*/이렇게 적으시면 두번째에 있는 /*가 주석처리되어서 가장 끝에 있는 */가 알수없는 문자가 되어서 에러가 나게 된답니다.

여기까지 이해가 되셨다면 시작의 반은 온거라고들 하더군요 ^^;

 잠깐상식:위에서 printf함수 안에서 abszzang를 적을때에 a까지 또는 av정도까지만 입력하고 컨트롤 스페이스바를 누르면 자동완성기능을 쓸수 있답니다;;

자 여기까지 왓으니 이제 사람들에게 배포를 해봐야 겠지요?
실행파일이 생성되는 위치는 아까 프로젝트 만드실떄에 이름적는 칸 아래쪽에 위치의 경로로 가보세요
예:C:Documents and Settings정체불명My DocumentsVisual Studio 2008Projects
 그안에 프로젝트이름으로 된 폴더가 있을겁니다
 그 폴더로 가신 뒤에 debug폴더 안에 실행파일이 있을건데요 그게 우리가 컴파일하고 링킹한 실행파일인겁니다
 용량을 보시면 30kb정도 될텐데요 놀랍지 않나요 고작 몇번 타자 쳤을뿐인데 ;ㅂ; 벌서 30kb라니 컴파일러가 일을 많이 했나보군요~

 자 이번에는 밋밋한 하얀네모박스 아이콘 대신에 수제 아이콘을 한번 만들어 봅시다
 우선 32x32 ico파일을 준비해주세요 마음에 드는것으로 아니면 직접 그림판에서 32x32크기의 비트맵 파일을 만들고 복사하실수도있습니다
 자 우선 그림판으로 ico파일을 열어주시구요 그걸 32x32크기만큼 복사합니다 그리고
 Visual Studio 2008로 오셔서 솔루션 탐색기에서 리소스 파일을 오른쪽 버튼으로 클릭하신다음에
추가-리소스-Icon을 클릭하세요 그다음에 복사한 아이콘을 붙여넣기 하면 된답니다 그리고 단축키 Ctrl+s로 저장을 하시고 컴파일을 하시면~~됩니다

자 이번에는 헤더파일에대해서 알아보도록 합시다
아까 만든 소스를 우선 봐 볼까요?
#include<stdio.h>
#include<stdlib.h>
 int abszzang(int a){
  return a+10;
  }
 int main(){
 printf("아방스 출격! %d", abszzang(10))
 system("pause");
  }
만약에 stdio.h라는 파일안에 그냥 문자 //abszzang 만 들어가 있다면 저 소스코드는 다음과 같습니다
//abszzang
#include<stdlib.h>
 int abszzang(int a){
  return a+10;
  }
 int main(){
 printf("아방스 출격! %d", abszzang(10))
 system("pause");
  }
대충 헤더 파일이 어떻게 인클루드 되는지 이해가 가시나요? 이해가 안 간다면 직접 만들어 봅시다
솔루션탐색기-소스파일-추가-새항목-헤더파일-이름적고 엔터를 누릅시다 여기서는 이름을 abszzang로 합니다
그리고
 int abszzang(int a){
  return a+10;
  }
이부분을 그 헤더파일에 잘라서 붙여넣기를 하시면
cpp파일에는
#include<stdio.h>
#include<stdlib.h>
 int main(){
 printf("아방스 출격! %d", abszzang(10))
 system("pause");
  }
그리고 헤더파일에는
 int abszzang(int a){
  return a+10;
  }
만 남게 되겠죠? 이제 cpp파일에 abszzang.h를 인클루드 시키는데 자신이 직접 만든 include파일은 <>로 묶는게 아니라 ""로 묶어야 한답니다
그래서 cpp파일의 소스는 다음과 같이 되겠죠
#include<stdio.h>
#include<stdlib.h>
#include"abszzang.h"
 int main(){
 printf("아방스 출격! %d", abszzang(10))
 system("pause");
  }

 여튼 정체불명의 강좌 시작의 반 편은 여기서 마치도록 합시다~ 다음편을 기대해 주세요

Comment '6'
  • ?
    Last H 2009.05.08 10:20
    printf 부분을 어려워 하시는 분들을 위한 강좌치곤 너무 앞서 나간거 같군요.
  • ?
    정체불명 2009.05.08 14:12
    흠.. 그런가요? 쉽게 쓴다고 썻는데 그렇군요... 도대체 몇일만에 첫 답글인지.. 여튼 감사합니다 ^^;
    쉽게쉽게 써보도록 노력하겟습니다 혹시 궁금한점이 있으시거나 이와같은 조언,할말 등이 있으면 indistinct4869@gmail.com으로 연락주시기 바랍니다
  • ?
    창조자 신 2009.05.16 12:08
    너무 앞서나간건가? 대충 이해가 갈 것 같은데..?
  • ?
    창조자 신 2009.05.16 13:49
    ;;쿠도군 아닌데;; 창조자 신인데;; 역시 쿠도 신이치가 더 나았나? 하지만 비번을 까먹었어요 ㅠ.ㅠ
  • ?
    정체불명 2009.05.16 13:10
    오~ 쿠도군~! 답글 달아주엇군요 고마워요
    역시 쿠도군은 능력이 뛰어나서 알아듣나 보오
    그래도 아무래도 좀 더 쉽게 해야 사람들이 알아들을듯;;;
    여튼 답변 감사하오
  • ?
    ShiningStar 2009.06.09 16:52

    include = 포함 이란 뜻입니다 ㅎㅎ 잘기억해주세용 ㅎ


List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 917
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 808
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [변수의 종류] 2 -Zennys- 2009.06.13 2771
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [변수의 정의] 2 -Zennys- 2009.06.13 2758
C언어 [ - Zennys -] 제니스의 C언어 강좌 [ 프로그램의 구조 ] -Zennys- 2009.06.13 1984
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [컴파일러] 4 -Zennys- 2009.06.13 1981
C언어 [ - Zennys -] C언어의 기초 ... 8 file - Zennys - 2009.06.08 1861
기타 3D MAX 2008 - subdivison 모델링 1 아방스 2009.05.28 1980
기타 그래픽 드라이버 삭제 및 재설치 방법 1 아방스 2009.05.28 3099
기타 클로버 자동업데이터기 사용법 4 file fgdr147 2009.05.21 2023
C언어 정체불명 입문자를 위한 요약노트 01 12 정체불명 2009.05.16 2015
C언어 정체불명 강의노트 개발툴의 설치 2 정체불명 2009.05.16 2249
기타 바이러스 제작 모험기 : 상편.shutdown명령어! 4 file 창조자 신 2009.05.16 3779
기타 인스톨 팩토리 사용법~ 5 file Skybound 2009.05.11 3780
기타 [VB6 강좌] 1~5강 강의평가 2 독도2005 2009.05.05 2257
C언어 락발라드 구구단~ file 정체불명 2009.05.02 2566
C언어 스릴 쇼크 서스펜스!!!!!!!! 정체불명 2009.05.01 1969
C언어 시작의반 6 file 정체불명 2009.05.01 2172
기타 게임제작 관련 학과들 7 아방스 2009.03.12 3061
기타 [VB6 강좌] 제5강 - 제어문 1 독도2005 2009.02.26 2665
기타 [VB6 강좌] 제4강 - 변수와 데이터형 1 독도2005 2009.02.25 2080
XpressEngine XE1.1.5로 업후 위젯들이 문제를 일으킬때 수정방법 아방스 2009.02.21 3040
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19