<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>The Iz Blog</title>
	<link>http://theiz.egloos.com</link>
	<description>그 아이의 블로그</description>
	<language>ko</language>
	<pubDate>Sat, 29 Aug 2009 09:26:26 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>The Iz Blog</title>
		<url>http://md.egloos.com/img/samplelogo2.gif</url>
		<link>http://theiz.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description>그 아이의 블로그</description>
	</image>
  	<item>
		<title><![CDATA[ 우리들의 Google Night ]]> </title>
		<link>http://theiz.egloos.com/4503955</link>
		<guid>http://theiz.egloos.com/4503955</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e567c283d.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e567c283d.jpg');" /></div><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98de054485e.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98de054485e.jpg');" /></div>30분이나 늦게 간 구글 나이트엔<br><br>이미 저녁을 먹고 오프닝을 하고 있었다....<br><br>분위기는....<br><br>재미있는 강의와 그걸 즐기는 학생들의 모임인듯 했다<br><br>신나게 이야기하는 모습, 그에 반응하는 모습은<br><br>왠지 나도 그런 모습으로 만들고 있었다....<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98dd2c1128b.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98dd2c1128b.jpg');" /></div><br>오프닝에서 가장 인상적이었던 것은<br><br>요즘 대학생들이 대학생 답지 못하다는 것이었다<br><br>아이가 아이다운 생각과 행동을 할 때 그 아이가 순수하고 아이다워 보이듯<br><br>대학생도 대학생다운 생각과 행동을 해야하는데<br><br>그렇지 못하다는 것이었다....<br><br>4학년 2학기의 나로선 조금더 일찍 이런이야기를 듣지 못한것이 아쉬웠다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e8ce02d5d.jpg" width="375" height="500" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e8ce02d5d.jpg');" /></div><br><br>그리곤 Ice Breaking 시간이었다...<br><br>신문을 접어서 그 위에 올라가는 엠티의 전형적인 게임인데도 불구하고<br><br>역시 적극적인 사람들만 온듯<br><br>빼는 사람이나 싫어하는 기색을 볼 수 없었다....<br><br>아쉽게 3등으로 선물은 못받았지만<br><br>어느 엠티에서 했던 게임들(술먹기 전에 한 게임들) 보다&nbsp;재미있었다...<br><br><br>혹시 노정석이라는 사람을 아는지 모르겠다...<br><br>(사실 나도 이사람 이름만 듣곤 누군지 몰랐다...)<br><br>궁금한 사람은<br><a href="http://www.hacklib.com/Security/Story/postech.html">http://www.hacklib.com/Security/Story/postech.html</a><a href="http://kin.naver.com/detail/detail.php?d1id=1&amp;dir_id=106&amp;docid=51906&amp;qb=64W47KCV7ISdIO2VtO2CuQ==&amp;enc=utf8&amp;section=kin&amp;rank=1&amp;sort=0&amp;spq=0"></a><br>이 글을 읽어보자....마치 소설같다... ㅎㅎ<br><br>그의 인생 자체가 소설이다...<br><br>아니 소설보다 더 흥미진진하다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e00deaf67.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e00deaf67.jpg');" /></div>(이야기 듣는데 집중하면서 발로 대충 찍어서 흔들렸다...)<br><br>그의 인생의 원칙이다....<br><br>그는 물었다... 자기 자신에게 얼마나 솔직한지...<br><br>우린 10%의 꿈과 90%의 남의 시선으로 나 자신을 만든다...<br><br>그는 달랐다....<br><br>그저 하고 싶은것에 매달렸고<br><br>열정을 운운하기 보다<br><br>자신이 하고 싶은것을 한다면 열정은 자연히 생긴다고 했다...<br><br>해커로서의 인생에 있어서 구치소에도 갔었고 대학교 무기정학도 당했었다<br><br>정학기간엔 당구를 즐기며 미친듯 다마수를 늘렸고<br><br>레이스를 즐겨서 아마추어 경기에서 1등을 하기도 하고<br><br>인천공항 고속도로를 달리며 손에 꼽히는 속도를 내보기도 했단다...<br><br>창업과 성공, 실패를 거듭하고 그는 구글에 자릴 잡았다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e12b7152e.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e12b7152e.jpg');" /></div>(그가 하고 싶은 말인데 길어서 못 외워 적어왔단다... 그는 너무 인간적이다...)<br><br>꼭 하고 싶은 일을 찾으라고 했다...<br><br>성공해보고 실패도 해보라고 했다...<br><br>그의 인생 만큼이나 그의 이야기엔 빠져들 수 밖에 없었다....<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e8f7ea4b5.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e8f7ea4b5.jpg');" /></div><br><br>그의 이야기가 끝나고 잠시 쉬는 시간을 가졌다...<br><br>난 화장실로 달려갔다...<br><br>ToT(Testing on the Toilet)이 있는지 궁금했다!!!<br><br>소변기 앞에도~!!!!!!<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e2c2932a0.jpg" width="375" height="500" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e2c2932a0.jpg');" /></div>좌변기 앞에도!!!!!!!!!!<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e2e104dc6.jpg" width="375" height="500" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e2e104dc6.jpg');" /></div>ToT가 있었다!!!!!!!!!!<br><br>오!!!!!!!!!!!!!!!!!!<br><br>(그럼 있다고 그랬는데 설마 없을라고...)<br><br>내용은 영어라서 통과~~<br><br>나중에 물어본 사실이지만<br><br>저 ToT는 아무나 만들어서 제출을 하면 심사(??)정도의 과정을 거쳐서<br><br>전 세계로 구글로 배포된다고 한다...<br><br><br>또 마이크로 키친!!!!!<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e3bd17be6.jpg" width="375" height="500" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e3bd17be6.jpg');" /></div>구글에 가면 저런 마이크로 키친이 사방에 널렸다...<br><br>마음것!!!!!!!!!!!!!!!! 먹을 수 있단다!!!!!!!!!!!!!!!!!!!!<br><br>실제로 살 찌는 사람이 많다고 한다....<br><br>이것도 구글 오피스 투어를 하면서 들은 이야기지만<br><br>마이크로 키친과 특정 사원과의 거리가 어느정도를 벗어나면 안된다고 한다...<br><br>그게 구글 사규에 있단다...<br><br>그래서 실제로 마이크로 키친을 옮겨주거나 신설하는 일이 벌어지기도 한단다....<br><br><br>또 주변의 놀이기구들....<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e4393abba.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200908/29/60/b0065160_4a98e4393abba.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e46cc17a9.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e46cc17a9.jpg');" /></div>포켓볼 테이블도 탁구 테이블도 있다...<br><br>위도 있었는데 발로 찍어서 흔들려서 버리자.....<br><br>소파도 있고 안마기기도 있고<br><br>수유실도 있고 좌식 다실도 있다....<br><br>최고의 회사다......<br><br><br>짦은 휴식시간이 지나가고<br><br>구글의 제품 소개를 해줬다...<br><br>평소에 쓰던 구글 제품들과 안쓰던 제품들도 소개해줘서<br><br>왠지 써보고 싶은 마음을 갖게 했다.... ㅎㅎ<br><br>그리곤 또다른 경기!!!<br><br>iGoogle꾸미기를 했다...<br><br>모르는 사람들 앞에서 나서는 일이 별로 없는 나였지만<br><br>워낙 분위기가 후끈 후끈해서<br><br>iGoogle을 쓰고있는 내가 만들기로 했다....<br><br>으하하!!!<br><br>1등이다!!!!!!!!!!!!!!!!!!!!!!!!<br><br>상품으로 목베게를 받았다...<br><br>구글 티셔츠가 갖고 싶었지만...<br><br>아까한 신문지 접기 1,2등 팀이 다 가져가 버렸다... ㅠ.ㅜ<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e9203bbac.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98e9203bbac.jpg');" /></div><br><br>그리곤 구글 투어~<br><br>염재현님을 따라 투어를 했다..<br><br>(이분이 최연소 검색엔진 연구원이란다... 헉!! <span style="COLOR: #ffffff">27살</span> 이란다.... 부럽다... 구글에 취업하다니.. ㅠ.ㅜ)<br><br>인상적인 것들이 많았다...<br><br>(사진을 몇장 찍었지만 사진을 찍으면 안되는 공간이라 자삭..)<br><br>회의실 이름이&nbsp;가야, 발해, 백제&nbsp;이런식으로 한국어 이름으로 되어있었고<br><br>프린터기나 복사기들은 만두, 김밥, 잡채 같은 음식이름으로 되어있었다<br><br>구글은 뭐가 달라도 달랐다....<br><br>야경이 잘 보이는 곳으로 안내해 줬는데<br><br>테헤란로의 야경은 정말 멋졌다....<br><br><br>투어가 끝나고 계속 염재현님을 따라 테이블에 앉았다<br><br>나이도 비슷하고 1년밖에 안됐다고 하셔서<br><br>뜨끈 뜨끈한 정보를 들을 수 있을것 같았다....<br><br>회사에 대한 많은 이야기를 들었다...<br><br>거의 수평적인 직원구조와 상호평가제도<br><br>큰 문제가 없다면 집에서 일을 해도 상관 없고<br><br>우리나라의 가족적인 기업보다 더 편한 회사<br><br>다른 기업들이 할 수 없는 일들을 하고 있는 구글....<br><br><br>구글 신화와 야망이라는 책과 이런저런 선물들을 받아들고<br><br>아래 사진에 있는 포스터를 얻어서<br><br>난 구글 코리아를 나왔다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e94042c34.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200908/29/60/b0065160_4a98e94042c34.jpg');" /></div><br>구글에 취업하고 싶은 생각이 들었다....<br><br>지금 내가 취업하기엔 좀 늦었다...<br><br>내 실력이 뛰어나지도 않고 영어도 잘 못한다<br><br>하지만....<br><br>내일도 늦어있진 않을것이다...<br><br>2년? 3년? 후에라도 난 구글에 가고 싶다....<br><br>아니!!<br><br>구글에 가야겠다!!!!!!!!!<br/><br/>tag : <a href="/tag/google" rel="tag">google</a>,&nbsp;<a href="/tag/korea" rel="tag">korea</a>,&nbsp;<a href="/tag/night" rel="tag">night</a>,&nbsp;<a href="/tag/구글" rel="tag">구글</a>,&nbsp;<a href="/tag/나이트" rel="tag">나이트</a>			 ]]> 
		</description>
		<category>머릿속 이야기</category>
		<category>google</category>
		<category>korea</category>
		<category>night</category>
		<category>구글</category>
		<category>나이트</category>

		<comments>http://theiz.egloos.com/4503955#comments</comments>
		<pubDate>Sat, 29 Aug 2009 08:42:06 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Google Korea에 가는 길.... ]]> </title>
		<link>http://theiz.egloos.com/4503926</link>
		<guid>http://theiz.egloos.com/4503926</guid>
		<description>
			<![CDATA[ 
  <p>며칠전 구글 코리아 블로그에서 구글 나이트에 참석해보라는 글이 떴다...<br><br>뭔가 궁금하기도 했지만<br><br>무엇보다&nbsp;구글이라는 단어에 흥미를 느꼈다...<br><br>간단한 신청을 하고 기다려야 했다...<br><br>구글에서 하는 행사인데다가 100명만 초대한다는 말에<br><br>사실 기대는 하지 않았다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98d6bc9eeb0.jpg" width="500" height="573.949579832" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98d6bc9eeb0.jpg');" /></div></p>(다들 이렇게 삽입했길래... 나도 한번.. ㅋㅋ)<br><br>구글 나이트 바로 전날~!!! 메일이 도착했다... ㅎㅎ<br><br><br><br>당일...<br><br>6시 모임에도 불구하고<br><br>금요일에대한 교통체증과 구글 본사를 미리 구경하겠다는 생각에<br><br>2시부터 준비를 하고 3시 반도 안되었을때 난 이미 집을 떠나고 있었다...<br><br>이런....<br><br>예상대로 차가 별로 없었다...<br><br>4시 버스를 타야했다....<br><br>그래도 평소에 한시간이면 가는 거리기에 늦어야 두시간이면 충분히 가고도 남을거라 생각했다<br><br>버스는 거의 한시간을 제자리에 서있었고<br><br>모임시간인 6시를 5분이나 넘긴 후에 서울에 내려줬다....<br><br>급한 마음에 택시를 잡아 타고<br><br>구글코리아가 있는 강남 파이넨스 센터로 가자고 했는데<br><br>기사 아저씬 모르신단다... ㅠ.ㅜ<br><br>네비마저 모른단다... ㅠ.ㅜ<br><br>파이넨스 센터로 예상되는 건물 앞에 날 내려주시곤<br><br>무책임하게 떠나가셨다...<br><br>그리곤 물어 물어 여섯시 반이 되서야<br><br>구글 코리아에 도착했다...<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98db7c4a08c.jpg" width="500" height="667" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/29/60/b0065160_4a98db7c4a08c.jpg');" /></div><br/><br/>tag : <a href="/tag/구글" rel="tag">구글</a>,&nbsp;<a href="/tag/코리아" rel="tag">코리아</a>,&nbsp;<a href="/tag/google" rel="tag">google</a>,&nbsp;<a href="/tag/korea" rel="tag">korea</a>			 ]]> 
		</description>
		<category>머릿속 이야기</category>
		<category>구글</category>
		<category>코리아</category>
		<category>google</category>
		<category>korea</category>

		<comments>http://theiz.egloos.com/4503926#comments</comments>
		<pubDate>Sat, 29 Aug 2009 07:42:56 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #4 함수 ]]> </title>
		<link>http://theiz.egloos.com/4307973</link>
		<guid>http://theiz.egloos.com/4307973</guid>
		<description>
			<![CDATA[ 
  <p>우린 아직 함수를 배우지 않았지만 계속 접하고 있었다.</p> <p>지금까지 사용한</p> <p>printf()</p> <p>scanf()</p> <p>if()</p> <p>for()</p> <p>while()</p> <p>이것들이 모두 함수이다.</p> <p>이정도면 뭔가 감이 오지 않는가...?</p> <p>함수라는것들 뒤엔 모두 ()가 있다는 것이다.</p> <p>그 안에 무엇이 들어가든 일단 ()가 있다는것만 알고 다음내용을 보도록 하자</p> <p>&nbsp;</p> <p>그럼 도대체 함수는 무엇인가...?</p> <p>우리가 외우면서 쓰던 것들은 뭘 했나?</p> <p>어떤 일을 해주는 일종의 작은 프로그램 덩어리이다.</p> <p>그 덩어리들을 잘 모아서 조립해 놓으면 하나의 프로그램이 된다.</p> <p>printf()는 출력하는 일을</p> <p>scanf()는 입력받는 일을 하는 함수들이다.</p> <p>&nbsp;</p> <p>이해를 돕기위해 실생활의 예를 한번 들어보자...</p> <p>밥통이라는&nbsp;기계가 있는데 이것을 함수라고 보자</p> <p>밥통이라는 함수는 쌀과 물을 넣으면</p> <p>안에서 지지고 볶아서 밥을 만들어준다.</p> <p>그럼 그 밥통은 함수이고 쌀과 물이 입력이고 밥은 출력이다.</p> <p>뒤에서 함수와 비교해줄테니&nbsp;외우지는 말자...</p> <p>&nbsp;</p> <p>우리는 함수를 사용뿐만 아니라 만들기도 했다</p> <p>배우지도 않았는데 언제&nbsp;썼냐고~?</p> <p>우린 계속 main()을 만들어왔다.</p> <p>main()도 함수이다.</p> <p>그럼 main()에서 시작해보자</p> <p>&nbsp;</p> <p>void main(void) {</p> <p>}</p> <p>&nbsp;</p> <p>이렇게 썼던것을 기억할것이다.</p> <p>#1을 기억하는지 모르겠지만</p> <p>앞의 void는 없다는 뜻이고</p> <p>뒤의 void도 없다는 뜻이었다</p> <p>그럼 앞과 뒤의 차이는 뭔가...?</p> <p>앞의 void는 출력형식이고</p> <p>(출력 형식을 반환형이라고 부르겠다. 흔히 말하는&nbsp;return값, 그 타입을 말한다)</p> <p>뒤의&nbsp;()안에 있는 void는&nbsp;입력형식이다.</p> <p>(입력형식을 매개변수라고 부르겠다.&nbsp;함수의 인자 혹은&nbsp;parameter라고 부르기도한다.)</p> <p>둘다 아무것도 없다는 뜻은</p> <p>물이나 쌀도&nbsp;안넣고 밥도 안나온다는 뜻이다...</p> <p>아무것도 눈에띄는게 없으니 우리가 하나 만들어보자...</p> <p>&nbsp;</p> <p>#include&lt;stdio.h&gt;</p> <p>&nbsp;</p> <p>int sum(int, int);</p> <p>&nbsp;</p> <p>void main(void)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">int a = 2;</p> <p style="MARGIN-LEFT: 2em;">int b = 3;</p> <p style="MARGIN-LEFT: 2em;">printf("%d", sum(a, b));</p> <p>}</p> <p>&nbsp;</p> <p>int sum(int x, int y)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">return x + y;</p> <p>}</p> <p>&nbsp;</p> <p>전처리기(#으로 시작하는것)와 main()사이에 뭔가 하나 생겼다.</p> <p>&nbsp;</p> <p>int&nbsp;sum(int, int);</p> <p>&nbsp;</p> <p>앞에서 들은 바에 의하면 이게 함수이다.</p> <p>앞의 int는 정수형으로 출력을 하고</p> <p>뒤의 두개의 int는 정수형으로 입력한다는 것 같다.</p> <p>근데 내용이 하나도 없다...;;;</p> <p>그리고 main()이 끝나는 부분에 앞에서 본것과 거의 같은 문장이 하나 더 있다.</p> <p>&nbsp;</p> <p>int sum(int&nbsp;x, int y)&nbsp;{}</p> <p>&nbsp;</p> <p>이게 제대로 함수인것 같다.</p> <p>정확히 말하자면 위에서 본</p> <p>int&nbsp;sum(int, int); 이것은 선언부이다.</p> <p>int sum(int x, int y); 이렇게 정의부랑 똑같이 써도 상관 없다.</p> <p>프로토타입이라고 부르고, 내가 이런 함수를 뒤에 만들어 놨고 사용하겠다는 말이다.</p> <p>어디선가 많이 본듯하다...</p> <p>int a;</p> <p>이것과 같은 것이다.</p> <p>우리가 정수형 변수를 미리 선언해서 사용하겠다고 말하는 것과 같은 이치다.</p> <p>변수를 선언하는 것과 같다고?</p> <p>그럼 한번 더 생각 해 볼 수 도 있다.</p> <p>int a = 3;</p> <p>이렇게 선언과 할당을 동시에 하기도 하지 않는가...?</p> <p>함수도 이런게 가능 할까....?</p> <p>물론 가능하다~</p> <p>&nbsp;</p> <p>#include&lt;stdio.h&gt;</p> <p>&nbsp;</p> <p>int sum(int x, int y)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">return x + y;</p> <p>}</p> <p>&nbsp;</p> <p>void main(void)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">int a = 2;</p> <p style="MARGIN-LEFT: 2em;">int b = 3;</p> <p style="MARGIN-LEFT: 2em;">printf("%d", sum(a, b));</p> <p>}</p> <p>&nbsp;</p> <p>작은 프로그램을 짤때는 후자처럼 선언부와 정의부가 함께 있는&nbsp;후자를 선택해도 좋다</p> <p>하지만&nbsp;선언부(프로토타입)와 정의부가 따로 있는 전자를 추천한다</p> <p>여러가지 이유가 있는데 나중에 설명 하도록 하겠다.</p> <p>&nbsp;</p> <p>이제 진짜 함수가 어떻게 돌아가는지&nbsp;보자</p> <p>main()을 보자</p> <p>앞부분은 다 알테고</p> <p>&nbsp;</p> <p>printf("%d", sum(a, b));</p> <p>&nbsp;</p> <p>이부분을 보도록 하자.</p> <p>분명히 예전에 하던대로 정수형을 출력하는것인데</p> <p>숫자나 변수는 없고 함수가 나타났다.</p> <p>그래도 애러가 안나는 이유는 뭘까...?</p> <p>우리가 선언한곳을 보자</p> <p>int sum(int, int)</p> <p>반환형이 int형이기 때문에</p> <p>저 함수는 정수 값을 내보낼 것이기 때문에 문제가 없다.</p> <p>int a = 2; 의 a를 출력하는 것과</p> <p>int sum(int, int)의 sum(2, 3)을 출력하는것은 같다고 볼 수 있다.</p> <p>&nbsp;</p> <p>대체 그럼 sum()이라는건 어떻게 돌아가는 걸까?</p> <p>우리가 sum(a, b)라고 쓰면 어떤 일이 벌어지는 것일까...?</p> <p>이해를 돕기 위해 하나하나 풀어 써보자...</p> <p>sum(a, b)를 실행하게 되면 일단&nbsp;앞에서 선언한&nbsp;a와 b가 그 자리에 들어가게 된다.</p> <p>sum(2, 3)이 되고 함수의 정의부로 들어가게 된다.</p> <p>&nbsp;</p> <p>int sum(int x, int y)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">return x + y;</p> <p>}</p> <p>&nbsp;</p> <p>이 부분으로 이동하게 되는데</p> <p>아까 입력한 값들이 그 자리에 입력이 된다.</p> <p>&nbsp;</p> <p>int sum(int x = 2, int y = 3)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">return x + y;</p> <p>}</p> <p>&nbsp;</p> <p>x + y를 즉 2 + 3을 해서 5을 return해주게 된다</p> <p>return??</p> <p>이것이 반환해 주는 키워드이다.</p> <p>return x;&nbsp;라고 하면 x를 반환해 주는 것이다.</p> <p>x와 y를 보니 2와 3이기 때문에</p> <p>둘을 더해서 5가 반환되고</p> <p>다시 아까 썼던 자리로 돌아가게 된다.</p> <p>sum(a, b)의 자리에 5가 들어가게 되는것이다.</p> <p>그렇기 때문에 결과적으로</p> <p>&nbsp;</p> <p>printf("%d", sum(a, b));</p> <p>printf("%d", sum(2, 3));</p> <p>printf("%d", 5);</p> <p>&nbsp;</p> <p>이렇게 차례로 변하게 되는 것이다.</p> <p>그래서 출력은 5가 된다.</p> <p>잠깐...</p> <p>실컷 설명하고 났는데....</p> <p>대체 왜 함수를 쓰는지도 모르고 하고 있다....</p> <p>고작 더하기만 해주는 프로그램 만으로는 함수의 장점을 말 할 수 없다</p> <p>그래도 그냥 설명하련다...(이것은 금방 피부로 느끼게 될 것이다.)</p> <p>문제를 해결하는데 있어서 커다란 문제를 한번에 해결하기엔 쉽지 않다.</p> <p>우리가 수학문제를&nbsp;부분부분 풀어서 전체 문제를&nbsp;풀듯 해결해나가야 한다.</p> <p>Divide &amp; Conquer라는 말이 있다.</p> <p>나눠서 정복하라는 뜻으로 함수를 설명할때 이야기한다.</p> <p>그리고 함수를 만드는 일은 반복되는 일을 컴퓨터에게 시키는것과 같다...</p> <p>얼레?</p> <p>왠지 어디서 들어본것 같다...</p> <p>그렇다 반복문에서도 이런 이야기를 했다.</p> <p>규칙적인 일을 시킬때 우린 반복문을 사용한다.</p> <p>하지만 그 둘은 조금 다르다..</p> <p>함수는 프로그램안의 프로그램이다.</p> <p>메인함수가 하나의 프로그램이듯 우리가 만든 함수도 프로그램이다.</p> <p>우리가 필요한 순간이면 언제든 호출해서 사용할 수 있다.</p> <p>반복문은 반복문이 시작되고 끝나는 순간까지 같은 일을 반복하지만</p> <p>함수는 우리가 필요할때면 불러내 일정한 일을 시킬 수 있다.</p> <p>잘 이해가 안된다면...</p> <p>우리가 만들 계산기의 메뉴를 함수로 만들어보자...</p> <p><br /> #include&lt;stdio.h&gt;</p> <p>&nbsp;</p> <p>void printmenu(void);</p> <p>&nbsp;</p> <p>void main(void)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">printmenu();</p> <p>}</p> <p>&nbsp;</p> <p>void printmenu(void)</p> <p>{</p> <p style="MARGIN-LEFT: 2em;">printf("==========================\n");</p> <p style="MARGIN-LEFT: 2em;">printf("1. 계산하기\n");</p> <p style="MARGIN-LEFT: 2em;">printf("0. 끝내기\n");</p> <p style="MARGIN-LEFT: 2em;">printf("==========================\n");</p> <p>}</p> <p>&nbsp;</p> <p>이렇게 만들어졌다면</p> <p>우린 언제든 printmenu();라고 함수를 호출하면</p> <p>저 printf()네줄로 구성된 메뉴를 출력할 수 있다.</p> <p>피부로 느끼는게 가중 중요하다.</p> <p>기회가 되는대로 함수의 장점을 보여주도록 하겠다.</p> <p>함수에 대한 많은 내용을 했지만</p> <p>가장 중요한 내용이 남아있다.</p> <p>쉬운 내용으 아니지만 빼고 넘어갈 수 없는 부분이다.</p> <p>(이해가 안된다면 여러번 읽어보기도 다른 곳을 참고하기도 하자)</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p>			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://theiz.egloos.com/4307973#comments</comments>
		<pubDate>Thu, 16 Apr 2009 07:59:06 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #3.1 제어와 흐름++ ]]> </title>
		<link>http://theiz.egloos.com/4257856</link>
		<guid>http://theiz.egloos.com/4257856</guid>
		<description>
			<![CDATA[ 
  <p>사실 제어문을 아무렇지 않게 시작했지만<br /></p> <p>우리가 알아야 할것들이 많이 있다.<br /></p> <p>제어문 시작부분에 참과 거짓을 판별 할 수 있다고 했는데<br /></p> <p>C언어가 말하는 참과 거짓은 우리가 알고 있는것과 조금 다르다.<br /></p> <p>참과 거짓이 다르다는게 조금 이해가 안 될 수도 있지만<br /></p> <p>앞으로도 자주 쓰이기 때문에 잘 알아두는 것이 좋다.<br /></p> <p><strong>C언어에서의 거짓은 0이다.<br /></strong></p> <p>0이 거짓이라는 것이 이해가 잘 되는가...?<br /></p> <p>그럼 1이 참이라는 것인가?<br /></p> <p>맞다...<br /></p> <p><strong>0은 거짓이고 다른 모든것은 참이다.</strong><br /></p> <p>1도 참이고 75도 참이고 'K'도 참이다.<br /></p> <p>(변수부분에 보면 캐릭터는 상수로 존재한다.)<br /></p> <p>0만 거짓인것이다.<br /></p> <p>('0'은 거짓이 아니다 '0'은 48이다.)<br /></p> <p>물론 '\0', 즉 NULL문자는 0이고 거짓이다.<br /></p> <p>아래 프로그램을 실행시켜보기 전에<br /></p> <p>무한 루프에 빠진 프로그램을 끝내기 위해선<br /></p> <p>프로그램을 종료하는 버튼인 Ctrl + c를 알아두고 가자</p> <p>&nbsp;</p> <p>(이제 좀 알만하니&nbsp;include문이나&nbsp;main은 빼도&nbsp;눈치껏 알아보자..)</p> <p>&nbsp;</p> <p><strong>int j = 0;<br /> while(1) // 0이 아닌 모든것은 참이기 때문에 무한 루프에 빠진다)<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("%d",j);<br /> &nbsp;&nbsp;&nbsp;j++;<br /> }</strong></p> <p>&nbsp;</p> <p>이게 뭐가 중요한가 하겠지만 실제로 C언어 프로그래밍에서</p> <p>변수만 제어문의 인자로 넣어줘도 변수가 변하면서 제어문을 빠져나오기도 하고<br /></p> <p>입력을 받을때 아무것도 입력 받지 않으면 NULL문자가 들어오기 때문에<br /></p> <p>제어문에서 거짓으로 판별할 수도 있다.<br /></p> <p>예를 들면</p> <p>&nbsp;</p> <p><strong>for(i = 100; i; i--)<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("%d", i);<br /> }</strong></p> <p>&nbsp;</p> <p>이렇게 사용 될 수 있다는 것이다.<br /></p> <p>0(NULL 포함)이 거짓이라는것만 잘 알고 넘어가자</p> <p>솔직히 위와같은 코딩은&nbsp;안좋은 코딩이다...</p> <p>위에는 확실히 그럴일이 없겠지만 혹시 음수에서 무한하게 돌고 있을 수 있기 때문에</p> <p>음수부분을 아래처럼 처리해 주는게 좋다</p> <p>&nbsp;</p> <p><strong>for(i = 100; i &lt;0 ; i--)<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("%d", i);<br /> }</strong></p> <p>&nbsp;</p> <p>if()-else문에서 조금은 헷갈리는 문장이 생길 수 있다.</p> <p>&nbsp;</p> <p style="MARGIN-LEFT: 2em;"><strong>if()</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>if()<br /></strong></p> <p style="MARGIN-LEFT: 4em;"><strong>else</strong></p> <p style="MARGIN-LEFT: 6em;"><strong>printf("어디냐");</strong></p> <p>&nbsp;</p> <p>&nbsp;</p> <p style="MARGIN-LEFT: 2em;"><strong>if()</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>if()</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("어디냐");</strong></p> <p>&nbsp;</p> <p>위 코드를 이해할 수 있는가...?</p> <p>그냥 내용은 빼고 예를 들기위한 코드이다</p> <p>여기있는 else문은 if()문에대한 else문일까...?</p> <p>어떤 if()문이 거짓일때 "어디냐"가 출력될까...?<br /></p> <p>잠시 여기까지만 읽고 저걸 실행해 보자...<br /></p> <p>C언어를 계속 접해도 가끔 물어보면 저 문제가 헷갈리기도 한다<br /></p> <p>그러니까 직접 해보길 바란다<br /></p> <p>답은 아래있는 if()문이다<br /></p> <p><strong>else는 바로 앞에 있는 if()문에 붙게 되어있다<br /></strong></p> <p>이것에 대한것은 아마도 3학년쯤<br /></p> <p>언어론 시간에 배우게 될 것이다</p> <p>&nbsp;</p> <p>그리고 switch()문에서 잠시 나온<br /></p> <p>break라는 문을 생각해보자...<br /></p> <p>갑자기 말도 없이 나타난 break...<br /></p> <p>단어 자체 때문에 끝낸다거나 빠져나간다는 느낌이 들었다<br /></p> <p>어디서 얼마나 빠져나가는 것인지...<br /></p> <p>처음에 접하는 사람은 다 헷갈리게 마련이다.<br /></p> <p><strong>break문은 좀 특수한 문장으로 제어와 흐름을 중단하는 역할을 한다.</strong><br /></p> <p>앞에서 본 switch()문안에서나 반복문(for(), while(), do-while())문에서<br /></p> <p>뒷부분은 무시한채 반복을 종료하게 한다.</p> <p>&nbsp;</p> <p><strong>int j = 0;<br /> while(1) // 0이 아닌 모든것은 참이기 때문에 무한 루프에 빠진다)<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("%d",j);<br /> &nbsp;&nbsp;&nbsp;j++;<br /> &nbsp;&nbsp;&nbsp;if(j &lt;= 10)<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /> }</strong></p> <p>&nbsp;</p> <p>그리고 비슷한 놈이 하나 더 있다<br /></p> <p>continue라는 놈도 있다.<br /></p> <p>끝내는놈 말고 계속 하라는 놈이 또 있다~ ㅎㅎ<br /></p> <p>얘도 특수한 경우인데 반복문에서만 사용된다<br /></p> <p><strong>반복문에서 반복되는 문장들 중에 continue의 뒷 문장들을 다 지나치고<br /></strong></p> <p><strong>반복문의 머리로 올라가서 계속 반복할 것인지를 확인하게 된다.<br /></strong></p> <p>이해가 잘 안될 수도 으니 밑에 예제를 보자</p> <p>&nbsp;</p> <p><strong>int j = 0;<br /> while(1) // 0이 아닌 모든것은 참이기 때문에 무한 루프에 빠진다)<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("%d",j);<br /> &nbsp;&nbsp;&nbsp;j++;<br /> &nbsp;&nbsp;&nbsp;if(j &lt;= 10)<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /> &nbsp;&nbsp;&nbsp;if(j % 2 != 0)<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br /> &nbsp;&nbsp;&nbsp;printf("짝수");<br /> }</strong></p> <p>&nbsp;</p> <p>j를 2로 나눈것이 0이 아니면 "짝수"를 출력하지 않고<br /></p> <p>다시 while()문의 맨위 부터 다시 실행한다</p> <p>&nbsp;</p> <p>반복문을 계속 하고 있는데 그냥 넘어간 do-while()문에 대해 알아보자<br /></p> <p>반복문을 실행하는데 있어서 for()문이나 while()문이나 둘다 똑같이</p> <p>조건이 만족하면 반복될 내용을 한번도 실행하지 못하게 된다.<br /></p> <p><strong>적어도 한번은 실행되야 한다면 do-while()문을 사용하는 것이다.<br /></strong></p> <p>예를 들면 프로그램이 실행되고나서<br /></p> <p>메뉴를 출력하는 일이 그렇다.<br /></p> <p>프로그램이 실행되고나서 메뉴를 한번 출력해줘야<br /></p> <p>무언가 선택 할 수 있지 않겠는가...?<br /></p> <p>그리고 계산을 끝내고 다시 돌아온 다음에<br /></p> <p>메뉴를 출력해줘야 하기때문에 이럴땐 do-while()문을 사용한다.</p> <p>&nbsp;</p> <p><strong>int input = 0;<br /> do<br /> {<br /> &nbsp;&nbsp;&nbsp;printf("1.계산기");</strong></p> <p><strong>&nbsp;&nbsp;&nbsp;printf("0.종료");<br /> &nbsp;&nbsp;&nbsp;scanf("%d", &amp;input);<br /> }while(input);</strong></p> <p>&nbsp;</p> <p>do-while()은 while()문의 반복내용을 실행하고 조건을 검사한다고 생각하면 된다.<br /></p> <p>영어도 쉽지 않은가 while()문이지만 일단 do하고 while()문을 하니까~ ㅎ</p> <p>&nbsp;</p> <p>위에 나온 모든일을 단번에 할 수 있는 마법의 명령어가 하나 더 있다.</p> <p>goto문은 내가 가고 싶은 어디든 이름만 정해 두면 한방에 날라갈 수 있다.</p> <p>하지만!!!!!!!!!!!!!!!!!!!!!!!!!!</p> <p><strong>goto문은 사용해서는 안된다!!!</strong></p> <p>구조적인 언어에서 제어의 흐름을&nbsp;마음대로 바꾸기 때문에 우린 위에서 쓴</p> <p>제어와 반복문을 가지고 프로그램을 만들도록 하자...</p> <p>그래도&nbsp;goto문을 배워야 할것 같다면 책을 찾아보아라...</p> <p>대부분의&nbsp;책(99.99%)에도 사용하지 말라고 할것이고 쓰는 사람도 없다</p> <p>배워도 쓸일이 전혀 없다는 것이다.</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p>			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://theiz.egloos.com/4257856#comments</comments>
		<pubDate>Sun, 22 Mar 2009 14:03:55 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #3 제어와 흐름 ]]> </title>
		<link>http://theiz.egloos.com/4254651</link>
		<guid>http://theiz.egloos.com/4254651</guid>
		<description>
			<![CDATA[ 
  <p>우리가 만든 프로그램이&nbsp;여러 상황에 대처하기 위해선 제어문이 필요하다</p> <p>참이면 참이다 거짓이면 거짓이라는 것을 판별 할 줄&nbsp;알아야한다.</p> <p>그것이 나누어지고 나면 그에 따른 반응이 달라야 한다</p> <p>제어문에는&nbsp; if(), if()-else, switch()문이 있다</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int grade = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>scanf("%d",&nbsp;&amp;grade);</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>if(grade&nbsp;&gt;= 90)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("A");</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>다른건 보던거고... if()문이 생겨났다...</p> <p>쉽지 않은가...?</p> <p>if.. "만약에" 라는&nbsp;단어뒤에 무언가 온다.</p> <p>if(grade &gt;= 90)</p> <p>만약에 grade가 90보다 크거나 같으면 다음 문장을 실행하라는것 같은 느낌이 물씬 풍겨나지&nbsp;않나?</p> <p>입력받은 수가 90보다 크면 다음문장을 실행하고</p> <p>아니라면 그냥 끝나버렸다</p> <p><strong>if()문의 괄호 안의 내용이 참이면 다음 문장을 실행하고 아니라면&nbsp;다음문장을 실행하지 않는다.</strong></p> <p>제어문 너무 쉽다~~</p> <p>근데...</p> <p>그냥&nbsp;끝내버리기가 너무 아쉽다</p> <p>참일때 무언가 했으면 거짓일때도 뭔가 해야할일이 있을수도 있다.</p> <p>그땐 if()-else문을 사용해보자</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int grade = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>scanf("%d",&nbsp;&amp;grade);</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>if(grade&nbsp;&gt;= 90)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("A");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("not A");</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>else&nbsp;가 추가 됐는데 위엔 모두 똑같다</p> <p>else..&nbsp;"그렇지 않으면"이란 단어 뒤에 뭔가 온다는건</p> <p>앞에서 이야기한&nbsp;거짓일때의 행위를&nbsp;지정해준다는&nbsp;확신을 가질 수 있다.</p> <p><strong>if()문의 괄호 안의 내용이 참이면 다음 문장을 실행하고</strong></p> <p><strong>거짓일 경우에 else문이 있으면 else문 다음 문장을 실행한다.</strong></p> <p>참~쉽죠~?</p> <p>이것을 좀 더 활용하면 여러개의 질문과 선택을 할 수 있다</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int grade = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>scanf("%d",&nbsp;&amp;grade);</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>if(grade&nbsp;&gt;= 90)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("A");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else if(grade &gt;= 80)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("B");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else if(grade &gt;= 70)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("C");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else if(grade &gt;= 60)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("D");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>else</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("F");</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>한번에 이해가 잘 안될 수도 있다</p> <p>하지만 저것은 if()-else문의 반복이다</p> <p style="MARGIN-LEFT: 2em;"><strong>else</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>if(grade &gt;= 80)</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("B");</strong></p> <p>이것에서 위 두줄을 한줄로 합쳐 놓았을 뿐이다</p> <p>거짓이라면 계속 다음으로 넘어가는 질문의 연속이다</p> <p>이것이 이해 됐다면 다음으로 넘어가자</p> <p>&nbsp;</p> <p>if()-else문을 너무 계속 쓰다보니 문장이 지저분해져버렸다</p> <p>조금 더 깔끔하게 쓸 수 있는 방법은 없을까?</p> <p>switch()문을 사용해보자.</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int grade = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int gradechar = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>scanf("%d",&nbsp;&amp;grade);</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>gradechar = (grade - 9)&nbsp;/ 10</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>switch(gradechar) {</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;9 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("A");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;8&nbsp;&nbsp;:</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("B");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;7 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("C");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;6 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("D");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>default :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("F");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>}</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>위 코드가 이해가 되는지 잘 모르겠다...</p> <p>위에 if()문으로 만들었던것을 다시 만들어본것이다.</p> <p><strong>switch()문은 괄호 안에 나온 값을 case중에서 찾는 조건문이다.</strong></p> <p>간단하게 설명하자면</p> <p>gradechar는 실제 점수 grade에서 9를 빼고 10으로 나누어 등급을 정한다</p> <p>그리고&nbsp;case중 아무것도 즉, 9, 8, 7, 6&nbsp;가 아닌 것이 나오면</p> <p>default이후의 내용을 실행하게 된다.</p> <p>소스코드를 실행시켜본 사람은 알겠지만</p> <p>예를 들어 8이 나오고 나면 결과로</p> <p>BCD가 모두 나온다...</p> <p>case가 선택되고 나면 그 뒤에 나오는 모든 케이스 문을 실행하기 때문에</p> <p>소스를 다르게 수정할 필요가 있다.</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int grade = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int gradechar = 0;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>scanf("%d",&nbsp;&amp;grade);</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>gradechar = (grade - 9)&nbsp;/ 10</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>switch(gradechar) {</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;9 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("A");</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>break;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;8&nbsp;&nbsp;:</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("B");</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>break;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;7 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("C");</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>break;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>case&nbsp;6 :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("D");</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>break;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>default :</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>printf("F");</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>}</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p><strong>이렇게 각 case문 뒤에는&nbsp;break문으로 switch()문의&nbsp;블록 밖으로 나가야 한다.</strong></p> <p>우리가 만든 계산기의 메뉴는 switch()문으로&nbsp;선택될 것이다.</p> <p>지금 만들어 놓고 싶지만&nbsp;넣을 내용이 없고 너무 간단하기 때문에 다음에 만들기로 하자.</p> <p>&nbsp;</p> <p>우리가 컴퓨터를 쓰는 이유는...<br /> 몸이 편하자고 쓰는거다<br /> 똑같은 일을 계속 하면 컴퓨터가 해주면 좋겠다<br /> 우리 프로그램도 반복되는 일은 한번만 코딩하고<br /> 컴퓨터가 알아서 다시 해줬으면 좋을것이다<br /> 그런데 사용하는것이 반복문이다</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;<br /> void main(void)<br /> {</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>int sum = 0;<br /> int i = 1;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>while(i &lt;= 100)</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>{</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>sum = sum + i;</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>i = i + 1;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>}<br /> printf("합계 %d", sum);</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>실행해보지 않아도 합계를 구하는 프로그램 같다..<br /> 눈치가 빠른 사람은 1부터 100까지 더하는 프로그램이라는것까지도<br /> 알아차릴 수도 있을것이다<br /> 계속 보던 것들은 빼고 새로 생긴 while()를 보자</p> <p>괄호 안에는 i &lt;= 100 이라고 있다...</p> <p>while이 '~하는 동안'이라는 뜻을 가지고 있다는걸 생각한다면</p> <p>i가 100보다 작거나 같은 동안에 다음 문장들을 실행시키는듯 하다</p> <p><strong>while()문의 괄호 안의 내용이&nbsp;참인 동안&nbsp;다음 문장을 계속 반복한다.</strong></p> <p>sum은 자기자신과 i를 더하는 것이고</p> <p>i는 자기자신에 1을 더하는 것이다</p> <p>결론은 1씩 증가하는 i를 sum에 더하는 것이니까</p> <p>1부터 100까지 더하는 프로그램이다</p> <p>드디어 100줄을 써야 하는 일을 3줄로 줄였다</p> <p>이제부터 뭔가 능률적인것같다...</p> <p>&nbsp;</p> <p>비슷한 몇개가 있다</p> <p>위에서 한 것은 while()문이라고 부르고</p> <p>do-while()문이라는것이 있고</p> <p>for()문이라는 것이 있다.</p> <p>do-while()문은 #3.1에서 다루기로 하고</p> <p>for()문을 알아보자...</p> <p>&nbsp;</p> <p>for()문도 같은 반복문인데</p> <p>그럼 뭐가 다른가....</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;<br /> void main(void)<br /> {<br /> &nbsp;&nbsp;&nbsp;int sum = 0;<br /> &nbsp;&nbsp;&nbsp;int i = 0;<br /> &nbsp;&nbsp;&nbsp;for(i = 1; i &lt;= 100; i = i + 1)<br /> &nbsp;&nbsp;&nbsp;{</strong></p> <p style="MARGIN-LEFT: 4em;"><strong>sum = sum + i;</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>}</strong></p> <p style="MARGIN-LEFT: 2em;"><strong>printf("합계 %d", sum);</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>딱보아하니 위에프로그램이랑 비슷하다<br /> for()문의 괄호 안에 뭐가 들어가 있는가...<br /> i = 1; i &lt; 100; i = i + 1<br /> ;(세미콜론)은 명령이 끝날때 쓴다더니<br /> 괄호안에 두개나 들어가있다<br /> <strong>세가지가 들어가는데 ;으로 나누는것 이다<br /> 그럼 세가지를 떼서 보자...<br /> i = 1 이부분은 초기화이다</strong></p> <p><strong>(while()문 밖에 있는 내용이다)<br /></strong>반복문이 시작하기 전에 i값을 초기화 시켜 준것이다.<br /> <strong>i &lt;= 100 이부분은 조건이다</strong></p> <p><strong>(while()문의 괄호 안에있는 내용이다)<br /></strong>i가 100보다 작거나 같은 동안 반복문이 계속 된다는 것이다.<br /> <strong>i = i + 1 이부분은 변화다</strong></p> <p><strong>(while()문의 다음에 나오는 내용이다)<br /></strong>반복문이 한번 실행되고나서 다시 반복문안의 명령어를 실행하기 전에 이 부분이 실행된다<br /> 여기선 99번 실행되었을것이다.<br /> 그리곤 for()문 뒤에 붙어있는 { }안의 내용이 100번 실행 되었다<br /> sum에는 자신이 가지고 있는 값과 증가하고있는 i의 값을 반복해서 더한다.</p> <p>&nbsp;</p> <p>while()문으로 만들 수 있는 모든것을</p> <p>for()문으로 만들수 있고 그 반대로도 가능하다</p> <p>대부분 각자의 취향에 따라서&nbsp;사용하고 싶은것을 사용한다</p> <p>지금은 다른 사람의 소스를 볼일이 없어서</p> <p>"왜 이걸 두개 다 알아야 하나?"</p> <p>하는 생각을 가질 수 있지만 두개의 차이를 확실히 알아야한다</p> <p>(대부분 C언어강의 첫 시험엔 이 두개를 바꾸는 문제가 나올 확률이 상당히 크다...)</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p>			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://theiz.egloos.com/4254651#comments</comments>
		<pubDate>Sat, 21 Mar 2009 07:12:42 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #2.1 변수++ ]]> </title>
		<link>http://theiz.egloos.com/4241979</link>
		<guid>http://theiz.egloos.com/4241979</guid>
		<description>
			<![CDATA[ 
  <p>변수에서 다뤄야 할 내용은 한두개가 아니다</p> <p>너무 많기 때문에&nbsp;천천히 다룰 생각이다...</p> <p>처음이 아니라면 쉽사리 넘기지 말길 바란다</p> <p>&nbsp;</p> <p>#1.1에서 컴파일 과정을 이야기 했었다</p> <p>그때 이야기 할때 말하지 않은 부분이 있다</p> <p>컴파일 과정을 이야기 할때</p> <p>컴퓨터는 어떻게 저 텍스트를 프로그램으로 만드는가를 생각해본적이 있는가...?</p> <p>물론 없는것이 정상인것 같다</p> <p>있다면 호기심이 참 많은 편일것이다.</p> <p>지금 이야기 하고 싶은 부분은</p> <p>텍스트를 어떻게&nbsp;알아듣느냐는 것이다...</p> <p>&nbsp;</p> <p>컴파일러의 파서라는 것이&nbsp;소스코드를 토큰이라는 단위로 나눈다..</p> <p>이 작업을 파싱이라고 하는데</p> <p>ANSI C에서는&nbsp;6가지의 토큰으로 파싱을 한다.</p> <p>키워드, 식별자, 상수, 문자열 상수, 연산자, 구두점</p> <p>저 여섯가지가 무엇인지 하나하나 알아가자...</p> <p>&nbsp;</p> <p><strong>키워드</strong></p> <p style="MARGIN-LEFT: 2em;">키워드란 C언어에서 고유한 의미를 가지는 토큰으로 예약된 단어이다.</p> <p style="MARGIN-LEFT: 2em;">키워드는 다른 의미로 다시 정의되거나 다른 의미로 사용될 수 없다.</p> <p style="MARGIN-LEFT: 2em;">ANSI C에서는</p> <p style="MARGIN-LEFT: 2em;">auto, break, case, char, const, continue, default, do, double, else,</p> <p style="MARGIN-LEFT: 2em;">enum, extern, float, for, goto, if, int, long, register, return,</p> <p style="MARGIN-LEFT: 2em;">short, signed, sizeof, static, struct, switch, typedef, union, unsigned,&nbsp;void,</p> <p style="MARGIN-LEFT: 2em;">volatile, while</p> <p style="MARGIN-LEFT: 2em;">이렇게&nbsp;32개의 키워드를 지정해 뒀다.</p> <p style="MARGIN-LEFT: 2em;">뭔지 모를 테지만.. 저것들은 앞으로 외우게 될 것이다...(외워야 할 것이다)</p> <p>&nbsp;</p> <p><strong>식별자</strong></p> <p style="MARGIN-LEFT: 2em;">식별자는 문자, 숫자, 밑줄문자(_)로 구성된 토큰으로 문자 또는 밑줄문자로 시작해야 한다.</p> <p style="MARGIN-LEFT: 2em;">대소문자를 구분하고 알아보기 쉽게 만드는 것이 좋다.</p> <p style="MARGIN-LEFT: 2em;">a</p> <p style="MARGIN-LEFT: 2em;">_id</p> <p style="MARGIN-LEFT: 2em;">iamJinseop</p> <p style="MARGIN-LEFT: 2em;">이런것들이 모두 가능하고</p> <p style="MARGIN-LEFT: 2em;">&nbsp;</p> <p style="MARGIN-LEFT: 2em;">case#1</p> <p style="MARGIN-LEFT: 2em;">404class</p> <p style="MARGIN-LEFT: 2em;">while</p> <p style="MARGIN-LEFT: 2em;">이런식으로&nbsp;밑줄문자 이외의 특수문자가 들어가거나 숫자로 시작해서는 안되고</p> <p style="MARGIN-LEFT: 2em;">키워드도 식별자로 사용해서는 안된다</p> <p>&nbsp;</p> <p><strong>상수</strong></p> <p style="MARGIN-LEFT: 2em;">상수는&nbsp;다양한 종류의 값을 다룬다.</p> <p style="MARGIN-LEFT: 2em;">0 이나 75는 정수 상수</p> <p style="MARGIN-LEFT: 2em;">1.0 이나 3.141592는 실수 상수다</p> <p style="MARGIN-LEFT: 2em;">'a' 나 'm', '+'와 같은 문자 상수도 있다.(작은 따옴표 안에 있기 때문에 문자 상수로 취급하는 것이다.)</p> <p style="MARGIN-LEFT: 2em;">'\n' 이나 '\t'도 문자 상수이지만 특별하다.(\는 탈출 문자라해서 'n'과는 다른 뜻을 지니게 된다)</p> <p>&nbsp;</p> <p><strong>문자열 상수</strong></p> <p style="MARGIN-LEFT: 2em;">위에있는 상수들이 문자열로 모여있는것을 말한다. 컴파일러는 이것을 하나의 토큰으로 인식한다.</p> <p style="MARGIN-LEFT: 2em;">"a" 문자열 상수인데 'a'와는 다르다. 다르다는것만 알고 뒤에서 쫌 더 다루자.</p> <p style="MARGIN-LEFT: 2em;">"" 비어있는 문자열이다. 비어있는 문자열도 문자열로 본다.</p> <p style="MARGIN-LEFT: 2em;">"폴" 한글은 2bytes를 차지하기 때문에 상수가 될 수 없고 문자열 밖에 될 수 없다.</p> <p style="MARGIN-LEFT: 2em;">"I Love F.O.L"</p> <p style="MARGIN-LEFT: 2em;">&nbsp;</p> <p><strong>연산자</strong></p> <p style="MARGIN-LEFT: 2em;">흔히 생각하는 연산자이다.</p> <p style="MARGIN-LEFT: 2em;">+ - * / %</p> <p style="MARGIN-LEFT: 2em;">계속 쓰던 연산자 이고</p> <p style="MARGIN-LEFT: 2em;">%는 나머지 연산자이다... 나누고 남은 나머지를 계산해 준다.</p> <p style="MARGIN-LEFT: 2em;">7%2의 값은 1이다</p> <p style="MARGIN-LEFT: 2em;">여기에 조금 추가 되는 것이 있는데</p> <p style="MARGIN-LEFT: 2em;">=&nbsp;&nbsp; ++&nbsp;&nbsp; --&nbsp; &nbsp;+=&nbsp;&nbsp; +=&nbsp;&nbsp; -=&nbsp;&nbsp; *=&nbsp;&nbsp; /=&nbsp;&nbsp; %=&nbsp;&nbsp; .......</p> <p style="MARGIN-LEFT: 2em;">=은 배정(할당)연산자</p> <p style="MARGIN-LEFT: 2em;">++(--)는 증가연산자(감소연산자)</p> <p style="MARGIN-LEFT: 2em;">뒤에 나온것들과 적지 않은것들은 나중에 알아보도록 하자...</p> <p>&nbsp;</p> <p><strong>구두점</strong></p> <p style="MARGIN-LEFT: 2em;">범위나 구분을 위해 쓰이는 것들이다</p> <p style="MARGIN-LEFT: 2em;">{ } ( ) , ;</p> <p style="MARGIN-LEFT: 2em;">이것들이 각각 구두점이다.</p> <p>&nbsp;</p> <p>파서는&nbsp;우리가 만든 소스코드를 저런 것들로 분해를 해서 알아듣기 시작한다...</p> <p>(아직 변수 이야기는 하지도 못했다...&nbsp;더 알아보도록 하자...)</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p>			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://theiz.egloos.com/4241979#comments</comments>
		<pubDate>Sun, 15 Mar 2009 17:49:36 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #2 변수 ]]> </title>
		<link>http://theiz.egloos.com/4241921</link>
		<guid>http://theiz.egloos.com/4241921</guid>
		<description>
			<![CDATA[ 
  <p>내가 써놓은게 출력되는게 무슨 프로그램이야~!!<br /> 그것도 네줄 써서 한줄 출력되는게 무슨 프로그램이야~!!!<br /> 라고 반박할 사람이 있을지 모르겠지만<br /> 있으면 좋겠다... ㅎㅎ<br /> 프로그래머로서 발전적이고 창의적인 사고는 꼭 필요하다</p> <p><br /> 그럼 오늘은 조금더 printf를 해보자<br /> 저번에 다 못한 printf기능들이 아직도 수두룩 하다~</p> <p>그러기 위해서<br /> 변수라는 것에 대해 알아보자<br /> 變數 변할 변자에 셀 수자이다.<br /> 변하는 수를 말한다...<br /> 흔히 우리가 수학에서 쓰던 x = y + 1 이런 수식의<br /> x나 y&nbsp;라고 생각하면 쉽다</p> <p>(생각하면 쉽다는거지 결코 같다는것은 아니다)<br /> 변수는 프로그램에서는 어떤 형태의 자료가 저장되는 공간의 이름을 말한다<br /> 자료를 담는 그릇 정도라고 얼마간은 생각해도 좋다...<br /> (나중엔 그 것이 메모리라는 것을 알아야 한다)</p> <p><br /> 이번에도 간단히 따라해 보자<br /> <strong>#include &lt;stdio.h&gt;<br /> void main(void)<br /> {<br /> &nbsp;&nbsp;&nbsp;int a = 1;<br /> &nbsp;&nbsp;&nbsp;int b = 2;<br /> &nbsp;&nbsp;&nbsp;int c;<br /> &nbsp;&nbsp;&nbsp;c = a + b;<br /> &nbsp;&nbsp;&nbsp;printf(“%d + %d = %d\n”, a, b, c);<br /> }</strong></p> <p><br /></p> <p>흠….<br /> 알 수 없는 내용이 나왔다…<br /> 처음과 끝은 어제 말한데로<br /> <strong>#include&lt;stdio.h&gt;<br /> void main(void)<br /> {<br /> }</strong><br /> 이렇게 시작하고 끝났는데<br /> 중간에 나온것들이 많다...;;</p> <p>int라는것도 나오고<br /> 수식도 나왔고<br /> 반가운 printf도 또 나왔다<br /></p> <p>&nbsp;</p> <p>앞에서 변수를 이야기 했으니까<br /> 분명 a, b , c가 변수라고 예상했다면<br /> 정답이다~!!<br /> 그럼 int는 뭔가...?<br /> 변수라고 지정해주는 단어인가...?<br /> 엇비슷하게 맞았다...<br /> <strong>Int는 integer의 줄임말이다<br /> 정수형 변수를 저장할 때 쓰는 말이다</strong><br /> 정수형이라... 그렇다면 다른것도 있단 소린가...?<br /></p> <p>당연하다<br /> 우리가 수학적으로 표현하는 많은것들을 대부분 표현 할 수 있기에<br /> 정수 이외에도 <strong>double float long</strong> 등등이 있다<br /> 저게 뭔가... 하겠지만...</p> <p>너무 어렵게 생각하지는 말자...</p> <p>int는 사칙연산에 쓸만한 수</p> <p>double은 int의 두배정도</p> <p>float는 소수</p> <p>long는 무진장 긴 수...</p> <p>이렇게 생각하고 있자...</p> <p>(물론 저기 위에 쓴 말들은 사실이 아니며 앞으로 알아가길 바라며 지금은 넘어가잔 뜻이다...</p> <p>사실 나도 저게 몇부터 몇까진지&nbsp;이야기 해봐!! 이럼 말 못한다... 시간이 좀&nbsp;걸려도 종이와 펜만있으면 누구나 계산할 수 있다..)</p> <p>&nbsp;</p> <p>그럼 보자....<br /> 소스가 한결 쉬워졌다<br /> <strong>int&nbsp;a = 1;<br /> a라는&nbsp;정수형 메모리에 1이란 숫자를 넣었단 뜻이다</strong><br /> b도 그러할테고<br /> c는...?<br /> int c인데... 아무것도 없네...?<br /> 그냥 만들기만 한 빈그릇이다…<br /> (빈그릇 이긴 하지만 컴퓨터의 메모리는 재활용하기에 그 메모리 안에 무언가 넣어주지 않으면 거기엔 쓰레기가 들어있을 수도 있다)<br /> 그 빈 그릇이랑... a랑 b랑 더한거랑 같다고?<br /> 이렇게 해석할 사람은 없을 거라고 본다...<br /> 앞에서 어렴풋이 느꼈을 것이다</p> <p>=이라는 기호가 같다는 뜻이 아니라는걸...</p> <p>c에서 =은 같다는 뜻이 아니고<br /> 오른쪽 값을 왼쪽에 넣는다는 뜻이다...<br /> a랑 b랑 더한 값을 c에다가 넣는것이다.</p> <p>&nbsp;</p> <p>그리곤...</p> <p><strong>printf(“%d + %d = %d\n”, a, b, c);</strong><br /> 알고있는 printf()가 나왔지만...</p> <p>모르던것들이 있다...</p> <p>따옴표 안에는 %d가 세개나 나오고</p> <p>따옴표 밖에도 ,a ,b, c가 생겼다</p> <p>감이 오는가...?</p> <p><strong>%d는 정수형 수를 표시해주는 표시고</strong></p> <p><strong>각각의 %d를 따옴표 밖의&nbsp;컴마 다음의 변수들이 채우는구나!</strong></p> <p>쉽게 보이자면</p> <p>%d +&nbsp;%d = %d =&gt; a + b&nbsp;= c</p> <p>이런식으로 출력이 된다는것이다</p> <p>그럼 왜 저렇게 쓰는가를 생각 안해볼 수 없다.....</p> <p>printf("a + b&nbsp;= c");</p> <p>라고 해보자...</p> <p>뭐라고 나오겠는가...?</p> <p>a + b&nbsp;= c</p> <p>이렇게 그대로 나올 것이다.</p> <p>우리가 생각했던 변수의 기능을 하지 못하고</p> <p>그냥&nbsp;글자 그대로 나오는 것이다.</p> <p>변수를 printf()안에 넣기 위해서&nbsp;%d %f %l등을 쓴다</p> <p>일단 우린 int와 %d만 생각하고 가자...</p> <p>&nbsp;</p> <p>위에 만든 프로그램은&nbsp;매번 1&nbsp;+ 2 만하는 프로그램이다...</p> <p>변수를&nbsp;우리가 입력할 수 있는 형태로 만들어 볼 순 없을까...?</p> <p>2 + 3 도 하고 싶고 1234 + 3456546도 해볼 순 없을까...?</p> <p>그럼 소스를 좀 바꿔보자...</p> <p>&nbsp;</p> <p><strong>#include &lt;stdio.h&gt;<br /> void main(void)<br /> {<br /> &nbsp;&nbsp;&nbsp;int a, b, c;<br /> &nbsp;&nbsp;&nbsp;scanf("%d", &amp;a);</strong></p> <p><strong>&nbsp;&nbsp;&nbsp;scanf("%d", &amp;b);<br /> &nbsp;&nbsp;&nbsp;c = a + b;<br /> &nbsp;&nbsp;&nbsp;printf(“%d + %d = %d\n”, a, b, c);<br /> }</strong></p> <p>&nbsp;</p> <p>실행해보면 조금은 당황 스럽다...</p> <p>콘솔창에 커서만&nbsp;깜빡 거리고 있다...</p> <p>234</p> <p>547</p> <p>이런식으로 숫자를 두개 입력하면 답이 출력이 되는걸 볼 수 있다..</p> <p>&nbsp;</p> <p>어디보자...</p> <p>scanf()라는게 생기고</p> <p>a, b, c변수들을 선언하긴 했지만 할당을 안해줬다</p> <p>scanf()의 안을 들여다보니 &amp;a, &amp;b가 있는걸 보니 입력을 받을것 같다</p> <p>맞았다.</p> <p>scanf()는 입력을 받을때 쓰는함수이다</p> <p>printf()처럼 따옴표안에 %d가 있는걸 보니 정수형으로 입력을 받는것 같고</p> <p>&amp;a.... a에 저장되지 않을까...?</p> <p>c = a + b; 이렇게 아무것도 없이 c에다가는 넣었는데</p> <p>왜 scanf()에서는 &amp;를 쓸까...?</p> <p>이건 일단&nbsp;외우자...</p> <p>뒤에 포인터 부분에서 배우게 될 것이다</p> <p>이정도 외우면서 오늘은 마무리 하자&nbsp;</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p>			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://theiz.egloos.com/4241921#comments</comments>
		<pubDate>Sun, 15 Mar 2009 17:05:53 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #1.1 C언어 맛 보기++ ]]> </title>
		<link>http://theiz.egloos.com/4226898</link>
		<guid>http://theiz.egloos.com/4226898</guid>
		<description>
			<![CDATA[ 
  <p class="MsoNormal">앞 강의에 대한 약간의 보충 설명이다<span>...</span></p> <p class="MsoNormal">처음 배우는 사람이라면</p> <p class="MsoNormal">몇몇 강의를 더 듣고 보는 것도 나쁘지 않다</p> <p class="MsoNormal">지금 봐봐야 뭔소린지 모르겠고</p> <p class="MsoNormal">정신만 없을 가능성이 크다<span><span>...</span></span></p> <p class="MsoNormal">앞에 나온 소스를 다시 한번 보자<span><span>...</span></span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal"><span>#include &lt;stdio.h&gt;</span></p> <p class="MsoNormal"><span>Void main(void)</span></p> <p class="MsoNormal"><span>{</span></p> <p class="MsoNormal"><span>Printf(“HelloWorld~!!”);</span></p> <p class="MsoNormal"><span>}</span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">고작 <span>HelloWorld~!!</span> 이거 한줄을 위해서</p> <p class="MsoNormal">이상한 글들을 더 쳤다<span><span>...</span></span></p> <p class="MsoNormal">비효울 적이지 않은가<span><span>...</span></span></p> <p class="MsoNormal">라고 생각했다면 머리가 좋은걸 수도 비판적인걸수도</p> <p class="MsoNormal">공부가 하고 싶은걸 수도 있다<span><span>...</span></span></p> <p class="MsoNormal">물론 이중에 아무것도 아닐 수도 있지만<span>..</span> ㅋㅋ</p> <p class="MsoNormal">하지만 앞에 친 내용들이 전혀 필요없는 그런 내용들은 아니다</p> <p class="MsoNormal">한단어씩 뜯어보자<span><span>...</span></span></p> <p class="MsoNormal"><span>(</span>이것도 언어기 때문에 한단어 한단어가 중요하다<span><span>...</span>)</span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">시작하자마자 영어단어는 커녕 <span>#</span>이 나왔다<span><span>...</span></span></p> <p class="MsoNormal"><strong>#은 전처리기(preprocesser)가 처리하라는 기호이다</strong><span><span>...</span></span></p> <p class="MsoNormal">컴퓨터가 이 소스를 분석하기 전에</p> <p class="MsoNormal">제일 처음 처리하는 부분이라는 뜻이다</p> <p class="MsoNormal">앞으로도 보겠지만 이 때문에 <span>#</span>이 들어간 명령어들은 맨 앞쪽에 나온다.</p> <p class="MsoNormal"><span>(</span>물론 아닌 경우가 있긴 하지만 아직은 몰라도 됀다<span>)</span></p> <p class="MsoNormal">다른 #이 들어간 명령어는 나중에 배우도록 하자</p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal"><span>include</span></p> <p class="MsoNormal">포함한다는 뜻이다</p> <p class="MsoNormal">이 단어를 알았다면 눈치를 챘을 수도 있지만</p> <p class="MsoNormal">처음엔 모르는게 당연하다고 본다<span><span>...</span></span></p> <p class="MsoNormal">뒤에 나오는걸 포함한다는거다<span><span>...</span></span></p> <p class="MsoNormal">그럼 뒤에 뭐가 나오나 보자<span><span>...</span></span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal"><span>&lt;stdio.h&gt;</span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">저 꺽쇠안에 내용을 포함하는 것 같은데<span><span>...</span></span></p> <p class="MsoNormal">점으로 구분한걸로 봐선 파일인 것 같다<span><span>...</span></span></p> <p class="MsoNormal"><span>h</span>라는 확장자를 가진 파일<span><span>...</span></span></p> <p class="MsoNormal"><span>(</span>이 부분을 모를 수도 있으니 적어보자<span>..</span> 확장자라는것은 파일의 종류를 구분하는 파일이름의 부분이다 윈도우에서 실행파일은 <span>xxx.exe</span>라는 이름을 갖고 우리가 만드는 <span>c</span>언어 파일은 <span>xxx.c , c++</span>파일은 <span>xxx.cpp</span>이런식의 파일 이름을 갖는다<span>)</span></p> <p class="MsoNormal">스튜디오도 아니고<span><span>...</span></span> 뭘까<span><span>...</span>?</span></p> <p class="MsoNormal"><span><strong>std</strong>(<strong>standard</strong></span>를 줄여놓은 단어다 또 볼 수도 있으니까 이상한 단어에 <span>std</span>써있으면 스탠다드라고생각해도 나쁘지 않다<span>)</span></p> <p class="MsoNormal"><span><strong>io</strong>(<strong>Input Output</strong></span>의 약자로 <span>IO</span>는 실제로 컴퓨터를 하면 여기저기서 많이 쓰이니까 외워두자<span>)</span></p> <p class="MsoNormal"><span><strong>.h</strong></span>라는 확장자를 갖는건 <span><strong>header</strong></span>파일을 뜻한다<span>… header</span>는 뭔가<span>…</span> 뭔가 앞에 나오니까 <span>header</span>파일이라는것 같긴 한데 사실 이것도 <span>c</span>파일과 같지만 선행되어야 할 프로그램의 내용을 담고 구분하기위해 이런식으로 만들어둔다</p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">그럼 종합해 보자<span><span>...</span></span></p> <p class="MsoNormal"><strong><span>std(</span>표준<span>)io(</span>입출력<span>).h(header</span>파일<span>)</span></strong></p> <p class="MsoNormal"><span>c</span>에서 일반적으로 사용하는 입출력에 관한 내용을 담을 파일이다</p> <p class="MsoNormal">이 안에 <span>printf()</span>라는 것에 대한 내용이 정의되어 있는 것이다</p> <p class="MsoNormal"><span>printf</span>는 어떻게 쓰는것이고 쓰면 화면에 어떻게 출력되고</p> <p class="MsoNormal">그 안에 <span>\n</span>따위를 쓰면 한줄을 내린다라는</p> <p class="MsoNormal">이딴식의 내용이 주구장창 써있다<span><span>...</span></span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">다음 내용을 보자<span><span>...</span></span></p> <p class="MsoNormal"><span>void main(void)</span></p> <p class="MsoNormal"><span>void,,,,</span> 없다는 뜻이고</p> <p class="MsoNormal"><span>main</span> 메인<span>...</span></p> <p class="MsoNormal"><span>(void)</span> 또 없다네<span><span>...</span></span></p> <p class="MsoNormal">그리곤 <span>{ }</span>가 시작되고 출력한 후에 끝났다</p> <p class="MsoNormal">이건 뭔가<span><span>...</span>;;</span></p> <p class="MsoNormal">이건 사실 함수라는 개념을 알아야 설명이 가능하다</p> <p class="MsoNormal">뒤에서 나오는 함수라는 내용을 참고하길 바라고</p> <p class="MsoNormal">일단 우리가 만드는 프로그램은</p> <p class="MsoNormal"><strong>이렇게 시작해야 하고 이 부분이 가장 중요한 메인이라는것만 알고 넘어가자</strong></p> <p class="MsoNormal"><strong>가장 중요한 부분이기 때문에 여기서 시작하고 일들을 시키고 여기서 끝난다</strong></p> <p class="MsoNormal">방금 만든 프로그램도 <span>Main</span>의 <span>{</span>안에서 시작해서 <span>HelloWorld~!!</span> 를 출력하고</p> <p class="MsoNormal"><span>main</span>의 <span>}</span>가 끝나면서 끝난 것이다<span>.</span></p> <p class="MsoNormal">알쏭달쏭 하겠지만<span><span>...</span></span> 함수 편에서 더 자세히 하도록 하자</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">아까 하던 <span>printf</span>를 더 보자</p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal"><span>printf(“”);</span></p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">앞에서 이야기 했듯이</p> <p class="MsoNormal"><span>printf</span>라는 것은 출력을 하는 함수다</p> <p class="MsoNormal"><span>()</span>안에 있는 <span>“”</span>안의 내용을 화면에 출력해준다</p> <p class="MsoNormal">근데<span>...</span></p> <p class="MsoNormal">맨뒤에 <span>;</span>이건 또 뭔가<span>…?</span></p> <p class="MsoNormal">이건 줄이 끝났다는 표시이다</p> <p class="MsoNormal">응<span>?</span></p> <p class="MsoNormal">앞에선 하나도 안해놓고 이제와서 줄이 끝났다고<span>?</span></p> <p class="MsoNormal">엔터 치면 그게 줄이 끝난거 아닌가?</p> <p class="MsoNormal">하지만 내가 안만들어서 어쩔 수 없다<span><span>...</span>;;</span></p> <p class="MsoNormal"><strong>프로그램의 한명령어가 끝나는 부분에 <span>;</span>를 써줌으로서</strong></p> <p class="MsoNormal"><strong>명령어 한줄이 끝났다는걸 표시한다</strong></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">그럼 좀 더 생각해보자<span><span>...</span></span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span>printf</span></p> <p class="MsoNormal"><span>(“helloworld”);</span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">이렇게 두줄로 나눠 쓰거나</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span>printf(“hello”);printf(“world”);</span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">이렇게 한줄로 합쳐써도 된다는건가<span>.,..?</span></p> <p class="MsoNormal">될지 안될지는 직접 해보자</p> <p class="MsoNormal">백문이 불여 일견이오</p> <p class="MsoNormal">백견이 불여 일행이다</p> <p class="MsoNormal"><span>&nbsp;</span></p> <p class="MsoNormal">멋진척 하는 말로 실습을 독자에게 미루고</p> <p class="MsoNormal">그 다음 이야길 해보자</p> <p class="MsoNormal">실행할 때<span>...</span>컴퍼일 과정이라면서 빌드를 누르니까</p> <p class="MsoNormal">뭔가 하고 나니까 실행이 됐다<span><span>...</span></span></p> <p class="MsoNormal">이 과정은 무엇인가<span><span>...</span>?</span></p> <p class="MsoNormal">사실 쉽지 않은 과정이지만 알아야 하는 과정이다</p> <p class="MsoNormal">간단히 말하자면 <strong>컴퍼일은 컴퓨터가 알아 듣게 하는 과정</strong>으로</p> <p class="MsoNormal">우리가 만든 <strong>C파일</strong>과 앞에서 이야기한 전처리기가 <strong>전처리</strong>를 한 후</p> <p class="MsoNormal"><strong>컴파일</strong>을 하면 <strong>목적 코드</strong>가 생성되는데</p> <p class="MsoNormal">그 목적코드들과 라이브러리 파일을 <strong>링킹</strong>하면</p> <p class="MsoNormal"><strong>실행 파일이 탄생</strong>하는 것이다</p> <p class="MsoNormal">이걸&nbsp;우린 간단하게 컴파일이라고 부르거나 빌드라고 부른다&nbsp;</p> <p class="MsoNormal">짧게 이야기 했지만 이건 각자 공부 해보도록 하자</p> <p class="MsoNormal">오늘은 이만 하도록 하자</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p><br/><br/>tag : <a href="/tag/C언어" rel="tag">C언어</a>			 ]]> 
		</description>
		<category>Programming</category>
		<category>C언어</category>

		<comments>http://theiz.egloos.com/4226898#comments</comments>
		<pubDate>Mon, 09 Mar 2009 11:23:45 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ #1 C언어 맛 보기 ]]> </title>
		<link>http://theiz.egloos.com/4226796</link>
		<guid>http://theiz.egloos.com/4226796</guid>
		<description>
			<![CDATA[ 
  <p>아주 식상하게 프로젝트를 시작해 보자</p> <p>Visual Studio 6.0을 기준으로</p> <p><strong>New -&gt; Project -&gt; Win32&nbsp;Console&nbsp;Application</strong>&nbsp;프로젝트를 생성한다</p> <p><strong>New -&gt; Files -&gt; C++ Source</strong>를 선택해 파일을 생성하고</p> <p>이러한 소스를 넣어보자</p> <p><br /> <strong>#include &lt;stdio.h&gt;</strong></p> <p><strong>void main(void)</strong></p> <p><strong>{</strong></p> <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;printf("HelloWorld!");</strong></p> <p><strong>}</strong></p> <p>&nbsp;</p> <p>이렇게 소스 코드를 적어 넣고</p> <p><strong>Build -&gt; Compile</strong>을 선택해 컴파일이라는 과정(아직 이게 뭔지 몰라도 상관 없다)을 하고</p> <p><strong>Build -&gt; Excute</strong>를 선택해 실행을 하게 된다</p> <p>&nbsp;</p> <p>HelloWorld!Press any&nbsp;&nbsp;key to continue</p> <p>&nbsp;</p> <p>라고 나왔으면 정상이다</p> <p>(Press any&nbsp;&nbsp;key to continue는 앞으로 빼도록 하자..)</p> <p>소스코드를 보아하니...다른건 모르겠지만</p> <p><strong>printf("")이 부분에서</strong> <strong>따옴표 안에 있는 글이 출력된다는것 만은 알수 있다.</strong></p> <p>마음껏 가지고 놀아보자~</p> <p>저 따옴표 안에 자신이 출력하고 싶은 것들을 적어서</p> <p>어떤 식으로 화면에 표시 되는지 확인해 보자...</p> <p>한글도 적어보고&nbsp;printf()문을 두개를 만들어 보기도 하자</p> <p>열심히 한 사람이라면... 한가지 의문이 생길 수 있다</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span>Printf(“HelloWorld~!!”);</span></p> <p class="MsoNormal"><span>Printf(“Nice to meet you”);</span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">라고 적었지만</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span>HelloWorld~!!Nice to meet you</span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">이렇게 한줄에 출력되는걸 알 수 있다</p> <p class="MsoNormal">이럴때 사용하는것이 '\n'이다</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span><strong>Printf(“HelloWorld~!!\n”);</strong></span></p> <p class="MsoNormal"><span><strong>Printf(“Nice to meet you”);</strong></span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">이렇게 입력한다면</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal"><span>HelloWorld~!!</span></p> <p class="MsoNormal"><span>Nice to meet you</span></p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">이렇게&nbsp;한줄을 넘긴 것을 확인 할 수 가 있다.</p> <p class="MsoNormal">특수 문자라고 하는데 <strong>\a&nbsp;&nbsp;\\&nbsp; \b&nbsp; \r&nbsp;&nbsp;\"&nbsp;&nbsp;\f&nbsp;&nbsp;\t&nbsp;&nbsp;\0&nbsp;&nbsp;\' &nbsp;\v</strong> 이런것들이 있다</p> <p class="MsoNormal">직접 넣어보고 어떻게 출력되는지 알아보자</p> <p class="MsoNormal">외워두는 것이 좋지만 꾸역 꾸역 외우지 않아도 된다</p> <p class="MsoNormal">쓰다보면 자주 쓰는 것들은 알아서 외워질것이다.</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">오늘 배운것만으로 계산기에서 할 수 있는 일이라곤</p> <p class="MsoNormal">메뉴를 만드는 정도이다...</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">ㅇ=============================================ㅇ</p> <ol> <li> <p class="MsoNormal">계산하기</p> </li> <li> <p class="MsoNormal">종료</p> </li> </ol> <p class="MsoNormal">ㅇ=============================================ㅇ</p> <p class="MsoNormal">&nbsp;</p> <p class="MsoNormal">(지금 강의는 설계의 과정이 없기 때문에 조금씩 메뉴가 조금씩 바뀔 수는 있지만</p> <p class="MsoNormal">printf()정도는 복사해서 붙여넣기로 수정이 가능하기에 틀을 미리 대충 만들어&nbsp;두자)</p> <p class="MsoNormal">화려하게 꾸며도 좋고 특수문자를 마음껏 써도 좋다.</p> <p style="text-align:right">이 글은 <a href="http://cproject.springnote.com/">스프링노트</a>에서 작성되었습니다.</p><br/><br/>tag : <a href="/tag/C언어" rel="tag">C언어</a>			 ]]> 
		</description>
		<category>Programming</category>
		<category>C언어</category>

		<comments>http://theiz.egloos.com/4226796#comments</comments>
		<pubDate>Mon, 09 Mar 2009 10:16:45 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 오프라인 FTP는 어떨까...? ]]> </title>
		<link>http://theiz.egloos.com/4173761</link>
		<guid>http://theiz.egloos.com/4173761</guid>
		<description>
			<![CDATA[ 
  바로 앞에 포스팅한 NetDrive와는 다른<br><br>또다른 FTP활용 프로그램이다.<br><br>WebDrive..<br><br><a href="http://www.webdrive.com/">http://www.webdrive.com/</a><br><br>두개를 연이어 포스팅한데는 이유가 있다.<br><br>두가지가 각각의 장점을 가지고 있기 때문이다.<br><br>앞에서 다룬 NetDrive는 FTP에 항상 연결되어 있으면서<br><br>파일을 로컬 하드디스크 처럼 사용했다.<br><br>하지만 WebDrive는 SVN처럼 자신의 하드디스크에<br><br>FTP에서 원하는 파일의 내용을 복사해 두고 드라이브를 생성한다.<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200902/23/60/b0065160_49a19debbe232.png" width="500" height="265" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200902/23/60/b0065160_49a19debbe232.png');" /></div><br>역시&nbsp;어렵지 않게&nbsp;드라이브를 생성 할 수 있다<br><br>여기서 생선된 드라이브에는 임의로 FTP에 파일을 넣어도 <br><br>아무런 변화가 생기지 않는다.<br><br>이 드라이브에 직접 파일을 넣어줘야 파일이 생성되고<br><br>생성된 파일은 FTP가 꺼져도 그 자리에 있다.<br><br>(물론 자신의 로컬 하드드라이브를 차지하고 있다.)<br><br><br>하드디스크의 용량을 차지하고<br><br>FTP가 끊긴 상태에서는 파일의 내용을 수정 할 수는 있으나<br><br>파일명을 변경하거나 삭제가 불가능하다는 단점이 있다.<br><br>(내가 사용해본 버전은 7.10버전이다)<br><br>하지만 오프라인에서도 FTP의 파일을 사용할 수 있다는 면과<br><br>물론 로컬 하드디스크의 내용을 사용하기 때문에<br><br>NetDrive보다 편하고 속도도 훨씬 빠르고 애러도 적다.<br><br><br>이러한 장점을 가지긴 했지만<br><br>이 둘을 잘 이용하면 FTP를 잘 이용할 수 있을 것같다.<br/><br/>tag : <a href="/tag/ftp" rel="tag">ftp</a>,&nbsp;<a href="/tag/webdrive" rel="tag">webdrive</a>,&nbsp;<a href="/tag/netdrive" rel="tag">netdrive</a>,&nbsp;<a href="/tag/네트워크드라이브" rel="tag">네트워크드라이브</a>,&nbsp;<a href="/tag/로컬드라이브" rel="tag">로컬드라이브</a>			 ]]> 
		</description>
		<category>Program revue</category>
		<category>ftp</category>
		<category>webdrive</category>
		<category>netdrive</category>
		<category>네트워크드라이브</category>
		<category>로컬드라이브</category>

		<comments>http://theiz.egloos.com/4173761#comments</comments>
		<pubDate>Sun, 22 Feb 2009 19:03:08 GMT</pubDate>
		<dc:creator>그아이</dc:creator>
	</item>
</channel>
</rss>
