노무현 대통령 배너

Double-J's World

blog logo image

Double-J's World » Search » Results » Articles

c와 관련된 글 3개

  1. 2008.07.14 [C 박살내기] #3 변수? / Double-J
  2. 2008.01.29 [C 박살내기] #2 Hello World~! / Double-J
  3. 2008.01.04 [C 박살내기] #1_프로그래밍이란.. 2 / Double-J

Double-J's World » Programming/C / C++

[C 박살내기] #3 변수?

Double-J | 2008. 7. 14. 11:05

아...정말 귀차니즘 포스팅이 또 돌아왔습니다.ㅎ;

아무래도 저는 정기적인 포스팅 체질이 아닌가봐요.ㅎ;

아~ 참고로 체계적인 Language공부를 하시고 싶은분은 아무래도 전문 클럽,카페나

책을 통해 배우시는 편이 훨씬 좋으실꺼에요~ 저는 그냥 프로그램 돌리면서

이정도 맥락이구나~~하는정도이니..^^;

두 번째 포스팅에 이어 세번째! 변수에 대해 알아 볼까 합니다.

변수(Variable)이란?? 일단 문맥적 뜻을 알아보면 (네이버 사전을 참고했습니다.^^)

사용자 삽입 이미지

사전적 의미는 위와 같습니다. '변하기 쉬운' 이란 뜻이죠 그리고 이걸 수학이나 컴퓨터 분야에서

명사로 '변수'라고 쓰는것이고요 말그대로 '변할 수 있는 수(data)' 입니다. Language에서는

숫자 뿐만아니라 문자나 문자열등이 들어가기도 합니다.

조금더 정리하자면 프로그래머가 메모리상의 일정공간을 무슨무슨 용도로 사용하겠다! 라고 지정하는것

입니다. 그것을 간단하게 변수 지정으로 사용할수 있는것이죠.^^

프로젝트 만드는 법은 다 아실꺼고 간단한 예제 프로그램을 보겠습니다.

사용자 삽입 이미지

(1) 부분은 변수 선언 부분 입니다. 변수를 사용하려면 먼저 선언부터 하셔야 합니다.

변수를 선언 하는 방법은 Data Type을 먼저 기술해주고 한칸 띄고 사용자가 사용할 변수 이름을

적어 주는것입니다. 첫번째 부분을 보시면 알겠지만 int i;Data Typeint 라는 것을 알 수 있고

변수 이름은 i 라는 것을 알 수 있습니다.

int 는 (integer,정수) 의 약자 입니다. 정수 형 값을 입력할때 쓰는 것이고 메모리상에 4Byte(32bit)의 공간을

사용자가 쓸 공간으로 잡아주게 됩니다. 그리고 이공간의 이름은 i 라고 해두는 것이죠

char 라는 Data Type (Character, 문자)의 약자 로 1Byte(8bit)크기의 문자 하나 를 입력 받을

공간을 할당해줍니다. 당연히 크기는 1Byte를 잡아주겠죠? 물론 이름은 c라는 이름을 가지고요..

(2) 부분은 변수에 특정값을 대입,할당 하는 부분입니다. 사용자가 만든 공간에

실제 들어갈 값 을 넣는 것이죠 .

한가지 짚고 넘어갈 것은 C Language의 특성중 하나는 기본적으로 위에서 아래로 차례대로

실행된다는 점입니다. 물론 제어문이나 분기문, 반복문등으로 순서가 바뀔수는 있지만

그것은 사용자가 일부로 프로그램의 흐름의 순서를 바꾸고 싶을때 사용하는것이고

별다른것이 없다면 일단 위에서 아래로! 입니다.

그러면 (1), (2) 를 실행하면서 변수상의 데이터가 바뀌는 것을 보겠습니다.

편의상 i, c의 크기를 같게 그렸지만 실제로 i의 크기는 c의 4배입니다.


사용자 삽입 이미지

위는  int i; 와 char c; 가 실행된 상황을 나타내어 보았습니다. 메모리상에 임의의 공간을

i라는 이름과 c라는 이름으로 지정해 준 것이죠

사용자 삽입 이미지

위는 i = 100; 과 c = 'a'; 가 실행된 상황을 보여줍니다. 할당문은 임의의 공간에 위와같이

실제 값을 넣어주게 됩니다.

사용자 삽입 이미지


다음은 i = 3; 이 실행된 상황입니다. 대입하려는곳에 임의의 다른 값이 있어도 이전 값은 삭제 해버리고

제일 나중에 실행된 할당문의 값이 저장되는 것이죠.

마지막 printf문은 어떻게 실행될까요? 다음과 같습니다.

사용자 삽입 이미지


일단 저번에도 설명드렸지만 printf는 큰따옴표 ("  ") 안에 있는 내용을

출력하는 함수라고 알려드렸습니다.

그안에 %d는 뒤의 변수의 내용을 10진수 형태로 출력해라. 라는 것이고

%c는 뒤의 변수의 내용을 문자 형태로 출력해라. 라는 것입니다.

대응되는 순서는 뒤에 기술된 변수의 순서대로 차례로 대응됩니다.

물론 쉼표( , ) 로 구분되어 있어야 합니다.

자 그러면 출력 내용을 예상 하실수 있으시겠죠?^^ 물론 벌써 돌려보신 분들도 계실겁니다.

사용자 삽입 이미지

위와 같이 나오네요. 아...그런데 뒤에 자동으로 붙은 Press any key to continue...이 문장이

바로 붙어서 지저분해 보이죠? 이럴때 어떻게 해야될까요?ㅎㅎ

이전 포스팅에 해답이 있습니다..뭐 너무 간단해서 알려드리는것도 별 의미가 없다는 ㅡ,.ㅡ

오늘은 간단히 여기까지 하겠습니다. 시간 나시는 분들은 변수 이름짓는 법이나

Data Type에 대해서 찾아보심도 괜찮을듯 싶습니다.^^





(go to top)

Double-J's World » Programming/C / C++

[C 박살내기] #2 Hello World~!

Double-J | 2008. 1. 29. 23:37

아하~~ 실로 오랜만에 포스팅하네요 ㅡ.ㅡ;

이놈의 귀차니즘은..정말..;;; 꾸준히 포스팅 하시는 블로거님들 보면
정말 대단하다는 말밖에 안나옵니다.ㅎ;

아무튼 오늘은 프로그래밍 첫단원의 대명사 !! 이름하여
Hello World~! 출력하기! 입니다.ㅎㅎ

사실제가 첫글에 포스팅할때 이 예제를 썼었죠~ 간단한 개요를 설명하느라
가져다가 썼습니다. ㅡ.ㅡㅋ

자~시작하겠습니다.


사용자 삽입 이미지

흔히들 많이 쓰는 개발도구인 Visual Studio 에 포함되어있는 Visual C++ 6.0 입니다.
버전은 현재 2005 까지 나왔구요.^^ MS가 만든 이 Tool 외에도 몇가지 더있습니다.
갑작스레 저는 유명한 Bolando밖에 생각이 안나는군요..ㅎ; 무료 컴파일러도있습니다.^^;

참고로 Bolando 나 MS가 제공하는 이 툴은 IDE(Integrated Development Environment)
라고 불립니다. 굳이 번역하면 통합개발환경 입니다.^^ 통합개발환경이란.. 원래 프로그램을
만들려면 소스를 작성해야되는 에디터, 컴파일러, 라이브러리등등..
많은 요소가 있어야합니다. 옛날에는 이러한작업을 사람이 한번씩 다해줬구요
하지만 통합개발환경에서는 프로그램자체가 그모든걸 포함하고있고
메뉴몇번클리이나 단축키만으로 한번에 이루어집니다. 이러한 개발환경을
아울러 통합개발환경이라고 합니다.^^ 아무튼 저는 MS의 Visual Studio 6.0을
사용하겠습니다.

일단 프로그램을 시작한다음에는 프로젝트를 생성하는 습관을 들이는것이 좋습니다.
어느 프로그램이든지요.. 막바로 소스파일부터 생성할수는 있지만 나중에 습관 잘못들이면
더 불편하니 제대로 해보지요~

사용자 삽입 이미지
프로그램의 File -> New... 를 누르면 프로젝트 생성창이 뜹니다. 화면에서처럼 Ctrl + N
눌러도 상관없습니다.
사용자 삽입 이미지

사진 사이즈가 작아서 잘 안보이네요.ㅎ; New를 눌러서 새로운 프로젝트 생성창이 뜨시면
위와 같은데 그중에서 상단의 탭이 Projects 에 있는지 확인하시고 아래서 세번째
Win32 Console Application 을 선택하세요. 이는 콘솔환경에서 프로그래밍 하고자 함 입니다.
그리고 우측의 Location : 부분의 ... 버튼을 클릭하세요

사용자 삽입 이미지
그러면 다음과 같이 프로젝트를 어느곳에 만들지 지정하는 창이 뜨는데 저는 다음과 같은경로에
미리 폴더를 만들어 두었습니다. 그리고 OK^^

사용자 삽입 이미지
그리고 나서 위와 같이 Project name 에 생성할 프로젝트 이름을 써주세요 그러면 아까 경로에
덧붙여져서 그이름과 똑같은 이름이 경로에 써질꺼에요~ 이 이름의 폴더가 새로 만들어지는것이지요

사용자 삽입 이미지
이상이 없으시다면 다음과 같이 어떤 종류의 콘솔어플리케이션을 만들것인지 선택하게됩니다.
세번째 메뉴를 선택하시면 기본적으로 Hello World라는 문자를 출력하는 기본 소스가 생성되는데
저희는 처음부터 코딩해보기로 하죠~^^ 첫번째 empty project 선택후 Finish!!
그러면 처음엔 거의 변화가 없습니다. 왼쪽에 먼가 바뀐것 같긴 하지만요^^
다시 File -> New 또는 Ctrl + N 을 눌러보세요^^

사용자 삽입 이미지
그러면 아까는 기본적으로 탭이 Projects부분이 떴는데 이번에는 Files에 가있죠??
이제 지금만든 프로젝트에 자신이 생성할 파일이 어떤 형식인지 지정하고 실제로 만드는 순서입니다.
5번째 C++ Source File 을 선택하고 오른쪽 File 이라 되있는곳에
hello_world.c 라고 적어보세요~ 파일이름을 정하는 순서죠^^ 그리고 OK^^

사용자 삽입 이미지
무언가 아까보다 더 큰 변화가 있죠? ㅎㅎ 가운데 메모장 마냥 무슨 창이 하나 떴습니다.
바로 이것이 hello_world.c 라는 소스 파일을 작성할 부분입니다.
그러면 다음화면과 같이 똑같이 코딩해보세요~! 설명은 차차 해드리겠습니다.^^

사용자 삽입 이미지
자~! 이 소스입니다.!!

사용자 삽입 이미지
이제 실행을 시켜봐야겠죠?? 상단에 보시면 Build - > Build hello_world.exe 를 클릭하셔도되고
옆에 나와있는 단축키를 실행시키셔도됩니다. 이메뉴를 누르시면 컴파일이 완료되고 에러가 없으면
실행파일을 만들어주게 됩니다.^^

자~ 여기서 컴파일 이란? 사람이 알아먹을수 있게 만들어진 C를 포함한 여러 프로그래밍언어들..
이러한 소스파일을 컴퓨터가 알아먹을 수 있게 번역해주는 작업을 컴파일 이라고 합니다.
이러한 작업을 해주는 녀석을 컴파일러 라고 하구요^^

사용자 삽입 이미지
컴파일(compile)빌드(build)는 위쪽 단축아이콘에도 있습니다.^^ 마우스를 갔다 대면
설명이 나오니 참고하세요.^^

이렇게 build까지 끝나면 실행을 해봐서 눈으로 봐야겠죠? 위쪽 단축아이콘중에
느낌표 표시를 누르거나 ...단축키는 Ctrl + F5 입니다.
아니면 Build 메뉴에 보면 느낌표 해가지고~ Execute 어쩌구~ 해가지고있는게 있어요~ㅎ
그걸 클릭하시면 짜잔!

사용자 삽입 이미지
다음과 같은 창이 뜨면서 결과를 볼 수 있습니다.
자~그러면 간단한 소스이지만 한번 분석을 해볼까요??

사용자 삽입 이미지
아까 코딩했던 소스입니다. 지금 이 소스는 크게 두부분으로 나누어져있습니다.
1번의 # 하고 어쩌구~ 하는부분과 제가 화면에 주황색 박스쳐져있는부분입니다.^^

1번은 보통 전처리문이라고 합니다.
형식은 #include <포함할파일이름>
이렇게되구요 소스가 컴파일되기전에 <> 이안에 있는 파일의 내용을 가져와 같이
컴파일 합니다.^^
참고로 stdio.h 파일은 Standard C에서 제공하는 헤더 파일입니다.
저안에 기본적으로 쓸 입출력함수들이 정의되어있지요~
Standard Input / Output (표준입출력)... 단어는 외우기쉽죠?^^

일단은 C프로그램을 짜주기위해서는 무조건 #include <stdio.h> 를 써준다고 외워두세요
손에 익혀서 계속 쓰다가 나중에 헤더파일이 무엇하는놈이지 알게되면
아하~! 할겁니다.^^

그리고 중요한건 void main()으로 시작해서 처음의 중괄호( { ) 부터 마지막 중괄후 ( } ) 까지..
가 가~~자~~앙~! 중요합니다. 메인(main)함수라고 하는데요 C언어는 무.조.건.
메인함수부터 시작합니다. 일단 형식은 이렇게 써주는구나 하고 외워두세요
나중에 사용자함수 설명할때 다시 차근차근 설명해드리겠습니다.^^//

아무튼 그렇게 해놓고 저 중괄호 안쪽 부분에 자신이 코딩하고 싶은 것을 써주면되는것입니다.
2번을 보시면 printf(""); 이렇게 있죠? 이게 한 문장입니다.

C언어는 한문장을 세미콜론( ; )으로 구분합니다. 이건 다음 포스팅때 실험해보겠습니다.^^

printf() 라는 함수는 쌍따옴표(" ")로묶인부분을 화면에 출력해라! 라고 명령을 내리는
함수입니다.

자꾸 함수 ~ 함수 ~ 하니깐 처음 보시는 분은 헷갈리실듯..ㅎ;
그냥 printf() 쓰고 그안에 쌍따옴표 찍고!! 다시 그안에 자신이 칠 문장을 치면
바로~ 모니터로 나온다고 알아두세요^^

그리고 쌍따옴표 안에 \n 요거 있죠? 이건 커서를 다음줄로 개행(new line)하라는
뜻입니다. 결국 Hello World 라는 문장을 출력하고 커서는 다음 칸으로 이동하라는 거죠
마치 저희가 메모장이나 워드프로세서 에서 글쓰다가 엔터 치는것처럼요^^

한번 그부분 지우고 쳐보세요~~ 시스템에서 기본적으로 출력해주는
Press any to key continue 라는 문장이 바로 붙어서 나올겁니다.ㅎㅎ

아~~ 짧은 프로그램 인데 여러가지 설명이 많이 들어가네요..^^;
이미 알고계시거나 프로그래밍에 도가 트신분들께는 이런 포스팅 보여드리기가 많이
부끄럽네요..^^;

아무튼 처음 접해보시는 분들~~많이 도움되시길..^^
그럼 다음엔 C언어에서의 문장구분 잠깐 실습해보고
좀더 계산적인(?)프로그램을 만들어볼께요..ㅎㅎ


(go to top)

Double-J's World » Programming/C / C++

[C 박살내기] #1_프로그래밍이란..

Double-J | 2008. 1. 4. 16:41

아직 공학도 3학년을 마친 내가 이런글을 포스팅하는 자체가

어쩌면 건방질지(?)모르는 이야기이다. 내가 그나마 아는 언어도..

C/C++ 을 조금 배웠을뿐인데..(학부에서 자바와 MFC도 배우긴했지만..사알~짝~ㅎ)

그래도 내 머리속에 있는 지식을 정리하는 목적이기도하고..

이제 프로그래밍쪽이나 컴퓨터공학이나 컴퓨터 과학 쪽으로 관심있는 분들에게

조금이나마 도움이 됬으면 하고 용기를 내어 포스팅~!


일단 프로그램언어의 종류는 꽤 많다. C, C++, java, php, asp, fortran...등등..

이중에서 내가 그나마 아는 분야는 C / C++ 쪽이다. java가 대세이긴 한데...

아직도 공부하면서 고민되는 부분이긴하다...실제로 주변에 많은 사람들도

JAVA와 DB(Data Base) 중심으로 공부를 한다...(아직도 난 패닉상태..ㅎ;)

아무튼 Web 기반 이든 아니든.. 리눅스기반이든..윈도우기반이든...그 환경을 막론하고

프로그래밍에서 말하는 Language 는 컴퓨터와 '대화' 하기 위해 만들어 진것이다.

아주아주 처음에는 이진수로 프로그래밍을 하였다... 컴퓨터가 이해할수있는 '기계어'이기 때문이다.

이 기계어는 이진수로 이루어져있다.. 그런데 이렇게 사람이 이진수로만 작업하다보니...

힘들기도하고 작업시간도 오래걸려서 이것을 점점 발전시켜서 자연어에 가까운 현재의

Language가 된것이다. 집중만 잘해서 관련도서를 잘 본다면 금새 이해가 가능하다.

(Programming Language 는 분류상 '인공어'이다. 하지만 소스 안에서
 사람이 이해할수 있는 단어들이 있어서 단지 자연어에 가깝다고 한것이다.
 이 포스팅을 읽는 분들이 Programming Language 는 자연어다! 라는
 오해를 하지 않았으면 한다.ㅎ;
 )

아무튼... 컴퓨터가 일련의 작업을 하기위해 명령을 해야 하는데

이것을 바로 프로그래밍 언어(Language)로 하는것이다. 프로그래머들이 이를 이용해

좀더 쉽게  Application을 만들어 놓은것을 일반사용자 (end-user)가 또 편하게 사용하는것이다.

단적인 예로 영어 밖에 모르는 미국사람에게 자신의 뜻을 이해 시키려면 영어로 얘기해야 할 것이다.

그 외국인에게 한국말로 "몇살이냐고!!" 를 외쳐봐도 못알아듣는다. ㅡ,.ㅡ

컴퓨터도 마찬가지이다.  아무리 영어로, 한국어로, 일본어..등등으로...

"컴퓨터 화면에 내가 원하는 문자를 출력해줘!!" 라고 외쳐봐도 컴퓨터는 묵묵부답이다.

물론 그런기능을 가진 Application 이 있다면 얘기가 다르겠지만 그런 end-user 의 입장은 논외로

하겠다. 컴퓨터가 이해할수있는 언어로 얘기를 해야 이놈이 알아 먹는다...ㅎ;

다음은 C 로 구성된 어느책에서나 볼수있는 출력문이다.

사용자 삽입 이미지

이 소스를 간단히 설명하면

컴퓨터 모니터에 'Hello World!' 를 출력해줘! 

라는 의미이다. 다음은 실행결과~!

사용자 삽입 이미지
이렇게 결과가 나오는것이다.

그런데....아까전엔 분명히 컴퓨터가 이해할수 있는언어는 이진수로 이루어진

'기계어' 뿐이라고 했다. 그런데 위의 소스에는 영어로되어있다.ㅡ.ㅡ;

거짓말을 한 것이 아니라. 저 과정은 '컴파일' 이라는 과정을 거쳐서 실행되기에

실행이 가능한것이다... 이에관한것은 나~중에~ 다시 포스팅을 하도록하겠다.

오늘은 여기까지~~*


(go to top)