디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C언어의 간단한 예제를 설계부터 코드화까지 (1/9)

숙신갤로그로 이동합니다. 2009.07.15 01:49:40
조회 1466 추천 0 댓글 8

[문제 1/9]
1+3+5+…의 등차수열에서 얼마까지 합하면 그 값이 1,000을 처음으로 초과할 때
마지막 항과 초과된 값을 구하시오.

1. System chart

2002E10D4A5CAAD55B5E92

 큰 틀을 정하는 작업입니다. 다들 알고 계시는 Main문을 중심으로, 합을 구하는 Sum이라는 함수와 구한 값을 출력해주는 Display라는 함수를 사용할 생각입니다.
 Sum 함수에서는 입력값은 없고, 출력값으로 합(sum)과 마지막 숫자(last_number)가 있어야 할것 같군요. 출력값이 2개 이니까, return으로는 불가능합니다. 이때, 포인터(*)를 사용하면 됩니다.
 Display 함수는 결과를 출력하는 함수이니, 출력값은 필요없을것같네요. 대신 합(sum)과 마지막숫자(last_number)이 입력이 되야 출력을 하겠죠? 이때는 단순한 값의 전달이기때문에 포인터(*)를 사용하지 않습니다.

2. 수작업의 이해

 숫자 1  3  5  7  9 ...
 합 1 4 9 16 25 ...

 이 작업은 컴퓨터 보다 노트에 손으로 해보시길 추천합니다. 프로그래밍을 하기전에 어떤 식으로 풀어나가야할지 끄적끄적 거려보는 작업입니다. 끄적이면서 문제의 본질과 어떤식으로 풀어야 겠다는 생각을 할 수 있습니다.

3. 처리 과정

1. 1,000까지 반복한다.
      1.1 숫자를 세린다.
      1.2 숫자를 합한다.
      1.3 숫자를 2 증가시킨다.

2. 합과 마지막항을 출력한다.

3. 끝낸다.

 C언어는 절차지향적입니다. 어떤 순서로 프로그래밍을 해야할지 전체적으로 정리를 하는 과정입니다. 처리과정 정리만 잘 해 놓아도 프로그래밍하기가 한결 수월해집니다.

4. 자료명세서

 number 숫자정수형 
 last_number 마지막 항정수형
 sum 숫자의 합정수형

 어떤 변수가 쓰일것인지 정리를 합니다. 정리가 잘 되어 있으면 가독성이 높아집니다. 그리고 쓸데없는 변수를 색출해 낼수도있으며, 변수의 기능 분화가 확실히 됩니다. 한가지 변수로 여기도 썼다가, 저기도 썼다가 하는 일을 방지할수 있습니다.

5. NS-Chart
18752E214A5CB259C3351B

 다소 생소한 Chart일껍니다. NS-Chart라고 불리며, 절차 지향적으로 어떤식으로 연산할지 정리합니다. 실제 코드로 옮길때는 NS-Chart를 보고 그대~로 옮기면 됩니다. 바로 코드로 옮기지 않고 궂이 왜 이런 번거로운 작업을 거치냐는 생각을 할수도있는데, NS-Chart는 어떤 언어로든 옮길수 있습니다. 그리고 위에 처리과정 정리한것을 좀 더 방법적으로 정리할수있는 기회입니다. 이 과정을 통해서 무조건 에러나 워닝을 보고 내가 뭘틀렸는지 알아버리는, 컴퓨터에 의존하는 프로그래밍은 자제할수 있습니다.

6. NS-Chart 검토표
 초기값       ...
 number  1 1 ...
 sum  0 116 25  ...
 last_number ?? ... 

 NS-Chart에 값들의 변화를 직접 적어봅니다. 이렇게 확인을 하고 코드화에 들어가야 한번에 성공하는 쾌감을 맛볼수 있습니다.

7. 소스화
2072471E4A5DFC0A691895



Line 3 : #define 으로 자주 쓰이는 숫자를 정해 놓으면, 나중에 수정할 일이 생겼을때, 해당 숫자를 일일히 찾아서 수정할 필요 없이, 저 값만 수정하면 전체가 바뀝니다. 지금은 괜찮지만, 나중에 소스가 길어지면 길어질수록 매우 유용하게 쓰입니다.

Line 5 : 그냥 정해져있는 자료형을 쓰면돼지, 왜 궂이 UShort라는 새로운 자료형을 쓰느냐. 사실 저도 명확한 이유를 설명드리기엔 애매한 부분이 좀 있습니다. 처음 배울때 저렇게 배워서인지, 이게 편합니다^-^ 이렇게 해야 다양한 환경에 이식을 해도 잘 돌아간다고 배웠습니다^-^

Line 10 : main 함수가 익숙하지 않으실껍니다. 보통 int main (void)라고 사용하는데, MSDN을 참고하시면, 엄연히 main 함수의 형태가 정해져있습니다. 빌게이츠가 제공해준 그대로 사용합시다^-^ㅋㅋ




저도 아직 부족한 점이 많습니다. 실력이 뛰어나지도 않습니다.
혹시 제 글을 읽으시다가, 이건 아닌데, 이 점은 고쳤으면 좋겠다 는 생각이 드시는 고수분들의 수많은 태클 환영합니다. 많이 배우고 반영하겠습니다.
그리고 왜 궂이 이런식으로 프로그래밍을 해야되는지 의야해 하시는 분들도 계실껍니다.
이렇게 간단한 예제부터 절차적으로 설계해서 푸는 연습을 해야, 나중에 규모가 커져도 당황하지 않고 프로그래밍을 할수있기에, 간단한 문제도 설계부터 꼼꼼히 풀이해보았습니다.

메모리 맵과 디버깅 작업은 생략하였습니다.
이 부분에 대해선 추후에 추가하도록 하겠습니다.

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

아놔 둇내 까일꺼 생각하고 용기내서 썼음.
형들, 깔꺼있으면 걍 까줘..ㅠ.ㅠ

근데 써봤자 아무도 안보겠지...??

출처 및 블로그 홍보 : http://btd86.tistory.com/
질문 및 태클 : 댓글 ||  btd86@naver.com

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 비난 여론에도 뻔뻔하게 잘 살 것 같은 스타는? 운영자 24/06/03 - -
151035 요즘 일이 무지무지 꼬이네 -_- [2] DMW(220.68) 09.10.05 93 0
151034 망할 컴퓨터활용능력 1급 [5] 숙신갤로그로 이동합니다. 09.10.05 91 0
151033 갸밤비스 님은 봅니다. [2] 숙신갤로그로 이동합니다. 09.10.05 79 0
151032 아... 내일부터는 또 다시 출근인건가 ㅠㅠㅠ [8] 아주아슬갤로그로 이동합니다. 09.10.05 97 0
151031 디씨에 혹시 동영상 편집하는 갤러리 있음? [3] 에훗갤로그로 이동합니다. 09.10.05 55 0
151029 누난너무이뻐 님은 봅니다. [4] 숙신갤로그로 이동합니다. 09.10.05 90 0
151028 원격접속 질문!! [1] Soulo갤로그로 이동합니다. 09.10.05 98 0
151027 여고생이랑 응응 하는 상상하는게 변태인건가? [5] ㅅㅅ(116.45) 09.10.05 233 0
151026 아...빡쳐진짜 이것조 해결해주라 ㅠㅠ [7] 누난너무이뻐(210.94) 09.10.05 126 0
151025 아까 씨언어 문제 물어봤었는데 또물어볼께ㅠㅠ [2] 피자맛우유12(210.110) 09.10.05 80 0
151023 운동신경이 좋네 [1] 이모군(121.124) 09.10.05 81 0
151020 내가 vs를 까는이유. [1] 혼아갤로그로 이동합니다. 09.10.05 91 0
151017 루비의 창시자... [3] dkssk(118.127) 09.10.05 140 0
151015 사무실에 아무도없네.. 노래나 쳐듣자 독대(222.109) 09.10.05 50 0
151014 씨언어 관련해서 질문좀할께요ㅠㅠ [2] 피자맛우유12(210.110) 09.10.05 103 0
151013 리눅스에서 load average 구하는방법?? [2] 위디안(210.107) 09.10.05 77 0
151011 php 신나는 녀석들이 있어서 더 알려줄게 " " '' 차이점 알아? [8] 노란형광등갤로그로 이동합니다. 09.10.05 116 0
151009 엔디스크 먹튀 당한 횽들 있어? [5] 아주아슬갤로그로 이동합니다. 09.10.05 127 0
151008 오게임했던 횽들 있어? [3] Q Lazzarus갤로그로 이동합니다. 09.10.05 83 0
151007 파예횽은 봄니다 [1] 아주아슬갤로그로 이동합니다. 09.10.05 33 0
151006 c언어를 배워보고싶은데요 [2] 별냥갤로그로 이동합니다. 09.10.05 116 0
151005 php 오빠가 신기한걸 알았어 date()라는 함수를 알어? [3] 노란형광등갤로그로 이동합니다. 09.10.05 182 0
151003 빌어먹을 [3] ㅇㄴㅣㅏ갤로그로 이동합니다. 09.10.05 68 0
151002 C++을 까는 이유 [9] 12312(58.238) 09.10.05 205 0
151000 공부 하러 감미다. ㅠㅠ.. [5] 김주현갤로그로 이동합니다. 09.10.05 91 0
150999 php라는 언어를 아시나? [7] 노란형광등갤로그로 이동합니다. 09.10.05 160 0
150998 회사 선택 시 가장 중요한 요소 [1] 중달(121.166) 09.10.05 92 0
150996 회사 선택시 고려할만한 사항 하나 더 [1] ltw갤로그로 이동합니다. 09.10.05 106 0
150994 존나 의미없는 과제 ...씨팍 [16] 루카토니갤로그로 이동합니다. 09.10.05 184 0
150990 내가 아팠던 것과 관련해서 찜찜한 부분이 있는데... [7] 아팠던플머(121.139) 09.10.05 111 0
150988 살찌우기 성공이라능.. [21] 개쉛기갤로그로 이동합니다. 09.10.05 196 0
150986 네이버 실시간검색어 순위 조작... [5] 햏햏했갤로그로 이동합니다. 09.10.05 118 0
150985 bgm 갤러리의 위엄 ★ .jpg ㅇㄹ(59.19) 09.10.05 74 0
150983 다이어트 성공이라능... [3] 아주아슬갤로그로 이동합니다. 09.10.05 62 0
150982 지식인이나 프갤이나 질문글의 공통점..숙제 도와주세요.. [5] 태연여신님갤로그로 이동합니다. 09.10.05 85 0
150981 취업에 있어서 가장 우선적으로 따져야 하는 것... [9] 임베디드(112.150) 09.10.05 202 0
150979 용자중에 혹시 (61.33) 09.10.05 56 0
150978 형들 저좀 도와주셈 C언어 [20] C언어 개초보(218.38) 09.10.05 144 0
150977 적절한 타이밍에 타루여신 찬양 [2] 유리한갤로그로 이동합니다. 09.10.05 67 0
150976 리눅스에서 접속한 유저 정보 얻는 방법이 뭐가있을까요 [7] 위디안(210.107) 09.10.05 132 0
150975 아니 이런 언어가 있다니 루비 [5] 성대아싸(115.145) 09.10.05 184 0
150974 횽들 손가락 조심해 [7] 프리조지앙(112.149) 09.10.05 111 0
150973 고수님들 방금 글 쓰다가 글 다 날렸는데 복구 방법이 있을까요? [9] 123123123(218.154) 09.10.05 69 0
150972 키보드 너무쳐서 팔이 아프네 [4] 뽕이♥갤로그로 이동합니다. 09.10.05 73 0
150971 머큐리메일 서버로 메일 보내고받고 하는데 일부 사이트에서 안오네. 왜.. 클라리네이갤로그로 이동합니다. 09.10.05 45 0
150970 프갤러들의 건강을 위해서 한 자 적는다. [3] 한방플머(121.139) 09.10.05 100 0
150968 프갤 횽들은 프로그래밍할때 뭐써? [6] 고자라니(59.3) 09.10.05 128 0
150967 오늘의 질문... [3] 물속의다이아갤로그로 이동합니다. 09.10.05 60 0
150966 윽... 새벽에 하드 2TB 잘못 올라온거... [4] 대머리.갤로그로 이동합니다. 09.10.05 138 0
150965 url rewrite 웹호스팅에서 사용가능한가요? [1] ㅇㄹ(59.19) 09.10.05 58 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2