디시인사이드 갤러리

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

갤러리 본문 영역

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

숙신갤로그로 이동합니다. 2009.07.15 01:49:40
조회 1477 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45598 65
2872780 과제는 뭘보는지 모르겠음 밀우갤로그로 이동합니다. 10:54 4 0
2872778 정치병자 녀석들 코딩을 해도 자기 코딩 더 잘할 생각은 못하고 ㅇㅇ갤로그로 이동합니다. 10:45 13 0
2872776 Ada 언어 Cara 플젝에 Ruby 코드 사용하는 이유 나르시갤로그로 이동합니다. 10:27 7 0
2872774 핀셋 사도 되나요? ESD-17 => 스마트폰 ESD-15 -> 스위치 넥도리아(220.74) 10:24 8 0
2872772 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥냥덩이의고독♥갤로그로 이동합니다. 10:14 7 0
2872771 그냥 이대남 삼대남 싸그리 사형시키면 해결될일 아님? 류류(118.235) 10:13 13 1
2872769 방산 시스템 개발은 보통 C계열 아님?? [4] 프갤러(112.149) 09:40 31 0
2872767 비가올때는 저는 빵과 커피를먹어요. [1] 헬마에스트로(211.235) 09:32 27 0
2872765 나님 지구의 공전과 자전을 느낄 수 있음 [1] ♥냥덩이의고독♥갤로그로 이동합니다. 09:06 19 0
2872763 냥덩 탈주 ♥냥덩이의고독♥갤로그로 이동합니다. 08:22 17 0
2872762 흠 토요일아침이구나 통암기클론원숭이(58.225) 08:18 16 0
2872761 커서 구매하고 Swift 에 쓰고있는데 운동과 투운(1.213) 08:11 23 0
2872760 경력직은 확실히 ai때문에 코테는 거의다 없어졌네 [1] 운동과 투운(1.213) 08:02 41 0
2872759 무궁화 꽃이 피었습니다 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 07:53 16 0
2872758 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 07:51 17 0
2872757 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 07:50 13 0
2872753 님들 러시아가 독일한테 선전포고 했음. 3차 대전 시작임. [1] 넥도리아(223.38) 06:36 36 0
2872751 좆밥한테 배우면 좆밥도못되는법 프갤러(121.139) 06:28 29 1
2872749 오늘은 학생한테 게임에서 자주쓰는 13가지 패턴 설명해줘야한다. [2] ㅆㅇㅆ(124.216) 05:58 51 0
2872742 멍유 여성설 [2] ㅇㅇ(106.102) 03:32 59 0
2872740 오늘 정처기 실기 그냥 가지말까ㅠㅠ [1] ㅇㅇ(39.7) 02:36 69 0
2872738 음기 충전 발명도둑잡기갤로그로 이동합니다. 02:15 24 0
2872737 가난해진 유럽, 그리고 대한민국 발명도둑잡기갤로그로 이동합니다. 02:11 28 0
2872735 미성년자는 종교 교육 말고 철학, 수학, 논리학, 논술, 작문을 연마해야 발명도둑잡기갤로그로 이동합니다. 02:05 23 0
2872734 너네 이거 정답이 뭐인거같냐?????????????????? 프갤러(211.229) 01:58 37 0
2872733 미국의 동맹국은 미국 달러와 스와프를 맺은 국가 뿐이라고 정의해야 발명도둑잡기갤로그로 이동합니다. 01:53 25 0
2872730 한국 교육에서 큰 문제가 객관식 시험 위주란 거다 발명도둑잡기갤로그로 이동합니다. 01:32 37 0
2872728 가르치는 학생이 상받았더라 [3] ㅆㅇㅆ(124.216) 01:28 51 0
2872726 명상을 위해서 프로그래밍 책 읽는중 ㅆㅇㅆ(124.216) 01:19 34 0
2872724 윤석열, 전한길 수준이 극우 국민의힘당 수준에 잘 맞지 발명도둑잡기갤로그로 이동합니다. 01:11 23 1
2872723 도올 "불교와 기독교의 차이" 발명도둑잡기갤로그로 이동합니다. 01:09 23 0
2872722 샷다내려요~ [5] 개멍청한유라갤로그로 이동합니다. 01:00 49 0
2872721 취준생 질문)일 끝나고 코딩할 수 있는 시간을 낭비하는 문제 [1] 프갤러(211.184) 00:56 38 1
2872715 내가치킨 안먹는이유 (너희들 공감하냐?) [2] 프갤러(121.139) 00:27 60 0
2872713 배달음식 김치찌개로 정햇다. [2] 프갤러(121.139) 00:10 49 0
2872709 더불어민주당 갤러리에 올렸다가 검열 삭제당한 기사 발명도둑잡기갤로그로 이동합니다. 07.18 36 0
2872708 장하준 경제학자: 미국이 중국 경쟁자를 밀어내기엔 너무 늦었다 [2] 발명도둑잡기갤로그로 이동합니다. 07.18 36 0
2872707 [참고물] AI 시대에서 바뀔 업무의 구조와 전문성의 업무능력.. [2] +abcd3421갤로그로 이동합니다. 07.18 53 0
2872705 깃헙같은거 의미 없응 ㅇㅇ(175.197) 07.18 42 0
2872704 원래 노트북 용량에 부족함을 느껴본 적이 없었는데 ㅇㅇ갤로그로 이동합니다. 07.18 29 0
2872702 [장하준 런던대교수] “주주가치 극대화? 보잉과 GM의 몰락을 보라” [1] 발명도둑잡기갤로그로 이동합니다. 07.18 64 0
2872700 좆됨 자꾸 면접에 내보내려는거같은디 프갤러(106.102) 07.18 56 0
2872699 흐음.. 딱케이(58.225) 07.18 38 0
2872698 나님 내일 신상 털리면 어카징..? [4] ♥냥덩이의고독♥갤로그로 이동합니다. 07.18 101 0
2872696 블랙박스인 군대, 정보기관의 구조적 비리, 무인기 외환죄 발명도둑잡기갤로그로 이동합니다. 07.18 21 0
2872691 AI 슈퍼스타 연봉 1300억…실리콘밸리의 '두뇌' 전쟁 발명도둑잡기갤로그로 이동합니다. 07.18 29 0
2872690 허이호이 [1] 딱쓰(58.225) 07.18 49 0
2872689 프랑스서 ‘41년 구금’ 레바논 공산주의 활동가 석방 발명도둑잡기갤로그로 이동합니다. 07.18 25 0
2872687 아흐 [2] 루도그담등(118.235) 07.18 47 0
뉴스 빅뱅 대성, 호주 멜버른 콘서트 취소 "기술 관련 문제" 디시트렌드 07.17
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2