디시인사이드 갤러리

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

갤러리 본문 영역

어떡해 일기 #13 :: 첫번째 프로젝트 완료, 그리고 느낀점.

어떡해갤로그로 이동합니다. 2009.12.20 07:34:27
조회 830 추천 1 댓글 6






어떡해 일기는 제가 \'쓸만한 프로그래머\'가 되기까지의 하루하루를 기록해 나갈 것입니다.
이것은 제가 그날 하루동안 프로그래머가 되기 위해 노력한 사항과 에피소드를 만천하에 공개하여,
저 스스로 나태해지지 않도록 채찍질 하기 위함과 동시에 선배님들에게 조언을 구하고자 함입니다.
자유분방한 DC에서 올라가는 글인 만큼 그날의 기분에 따라 존칭, 돌연 막말 등 일관성 없는 말투가 있을 수 있습니다.

길다는 의견이 많아 앞으로는 되도록 일기를 짧게 쓰도록 합니다.
더 많은 형들과 이야기를 공유하기 위해서입니다.

+++++++++++++++++++++++
현재 사용중인 교재+++++++++++++++++++++++++++++

주교재 : 윤성우의 \'열혈강의 C프로그래밍\' (FREE LEC)
부교재 :  BRIAN W. KERNIGHAN , DENNIS M.RITCHIE의 C언어 프로그래밍(대영사)
              세계제일 C언어 시작하기 (베스트북)

1주차 :: 기초 함수, 조건문, 반복문, 변수와 상수 기초 이해.  (완료)

1주차 프로젝트 ::
1주차 프로젝트 :: 가상의 가게에서 물건을 구매하여, 몇개를 구매하고,
                           카드를 쓸것인지 쓴다면 결제액의 일정 금액을 수수료로 제하여 결제하는 프로그램. (완료)


==========================================시작

프로젝트 완료했습니다. (산재해있는 버그는 촘 있지만;;;)

현재 시간 오전 7시... 밤샜네요;

이번 프로젝트를 하면서 많은 것을 경험하고 생각하게 했습니다.

1) 프로그램 코딩에 이르기에 앞서 프로그램의 설계를 먼저 생각하자.

이번에 첫번째 프로젝트를 진행하면서 느낀 것은 대충 요렇게 만들면 되겠지하는 생각에
마땅한 설계도 없이 코딩을 진행하면 좆된다는 거였습니다.

내내 진행하면서 이렇다 할 설계도가 없으니 그때그때 아이디어를 짜내서 코딩을 하는데
두줄 코딩하면 한줄은 버그더군요.
무엇보다도 코드 자체가 지니고 있는 로직이 상당히 허술하게 됩니다.

디버깅하면서 무한루프 현상을 몇번 경험했는지 모르겠네요.

다음 프로젝트때에는 코딩에 앞서 설계도를 작성하고 시작해야겠습니다.
비록 코딩에 들어가는 시간은 늦다 느껴질지 모르나, 결과적으로 시간적으로나 로직의 정교함은 비교할 수 없을 거라고 생각합니다.

2) 코딩하면서 내가 뭘 쓰는지 알고는 쓰자. 그리고 모르면 공부하자.

이런 버그가 있었습니다.
for문 내부에 scanf 함수를 적용했을 때, 초반에 scanf를 통해 입력되는 매개변수 값에 쓰레기값이 들어가서
매개변수 값을 판단하는 if 문을 그냥 통과.
두번째 반복되었을 때야 비로소 scanf를 통해 제대로 된 값이 입력되어 if 문에서 판독을 하게되는...

종료 문장이었는데.

종료하겠습니까?
종료하겠습니까? y

이런 식으로 반복되더군요.

이게 왜 이러는지 몰랐는데 알고보니 scanf에서는 스페이스바나 엔터키 등의 입력까지도 매개변수에 값으로 입력시켜버리더군요.
그러니 첫번째 값에서 if문이 의도한 값을 판독할 수 없게되는 거죠.
이때 세브횽, 유리한 횽, sloth 횽 등 많은 분들이 댓글로 fflush(stdin)쓰지말고 해결하라고 주문을 하셨고.
더불어 gets()라는 함수를 알려주셨습니다.
처음에는 gets)와 sscanf로 scanf를 대체해나갔습니다. 얼라.. 근데 신기하게도 내가 작성한 코드에서는 gets()나 scanf나 똑같은 현상 발생(젝일)
그래서 어떻게 할까 계속 고민하고 검색하다가, 쓰지말라는 fflush(stdin)이 키보드 버퍼를 비워준다는 이야기를 발견하고 썼는데.
네, 잡히긴 잡혔는데 이거 원래 쓰면 안된다. (미안합니다;)  <-일단 표준코드가 아니고, fflush는 입력이 아니라 출력관련 함수다. 자세한 사항은 더 알아봐야 하겠지만, 간단한 프로그램 이외에는 입력버퍼를 비우는 용도의 fflush는 프로그램의 작동 안정성을 보장할 수 없답니다.

많은 횽들에게 질책의 소리를 듣고 머리를 싸매고 있는데, 얼라료. 바로 코앞에 scanf 함수 하나가 반짝이고 있다;
그리고 그걸 gets(), sscanf()로 바꾸니 문제없이 작동.

아... 결국 내가 바보였군;
프로그램을 작성하면서 찾아볼 수 있는 편법은 생각외로 많은 것 같다.
하지만 일단 나는 배우는 입장이고, 또 좀 더 넓게 본다면 편법 보다는 정공법이 좀 더 안정적이고 정교한 프로그램을 짤 수 있는 비법이다.
모르면 공부하자. 이것저것 간단하다고 편법만 가져다쓰면 지금은 좋을지 모르나 몇년후엔 죽도밥도 안되는 어중이 떠중이가 되고만다.
자숙합시다.

그리고 공부하자. 내가 쓰는 함수가 어떤 의미를 가지고 있는지. 그리고 어떤 결과를 가지고 어떤 과정을 거치는 지.
이번 scanf 건도 그랬고, gets()도 그랬다. 횽들이 알려주는 귀중한 조언을 듣고 그것을 코드에 적용했을 때.
안된다면 투덜되지 말고 내 코드를 보자. 99.9%는 내 코드에 문제가 있는 것이다. 0.1%는 횽들 오타.


3) 마지막으로...

개인적으로 진행한 자유프로젝트였고, 또 만들어진 프로그램도 여전히 버그가 산재해있지만.
이번 이틀간 프로젝트를 진행하면서 재미도 많이 느꼈고, 또 부족함도 느꼈다.
끊임없이 공부해야겠다.

그리고 엄청나게 더럽고 조잡한 코드지만, 제가 프로젝트를 진행한 프로그램과 소스를 공개합니다.
마구 욕해주세요;

그래도 이 다음에는 이것보다는 잘 만들 수 있다는 자신감은 붙었네요;;

그럼 여러분 수고하세요.

모두들 감사했습니다;

전 졸려서 이만 들어가렵니다;





추천 비추천

1

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 우리나라를 대표해서 UN 연설자로 내보내고 싶은 스타는? 운영자 25/09/29 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47592 65
2893537 석사과정에서 코드퀄리티 구리다는 말 듣고 ㅇㅇ(211.234) 17:24 17 1
2893536 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 17:07 9 0
2893535 트럼프 관세 K팝 가수 겨냥 가능성 발명도둑잡기(118.216) 17:02 7 0
2893534 카카오 코테 요청 왔는데 원래 다 오는거임? [1] ㅇㅇ(58.140) 16:57 13 0
2893533 3d 프린터로 타자기 발명도둑잡기(118.216) 16:44 8 0
2893531 아줌마들 개새끼랑 대화하는 능력 줫되느 타이밍뒷.통수한방(1.213) 16:29 14 0
2893530 블랙핑크는 ㅇㅇ(121.168) 16:19 18 0
2893529 개 무서운 로보트 발명도둑잡기(118.216) 16:17 13 0
2893528 한글 자모 도장 [1] 발명도둑잡기(118.216) 16:15 19 0
2893527 오늘의 발명 실마리: 기념용 점토판 발명도둑잡기(118.216) 15:59 19 0
2893526 금융권 가지마라 ㅇㅇ(121.168) 15:51 25 0
2893525 지하 유물 자동 탐색 로보트 발명도둑잡기(118.216) 15:46 13 0
2893524 축하합니다. 프갤러(49.165) 15:42 18 0
2893523 친구간에도 서열을 나누려한다 ㅇㅇ(121.168) 15:40 20 0
2893520 여러분은 연휴때 무엇을 하고 지내실 예정인가요? [6] 루도그담당(58.239) 15:26 33 0
2893519 짱깨 한국서 난동 치안 불안 급증 ♥냥덩이♥갤로그로 이동합니다. 15:02 15 0
2893518 감사의 기적 발명도둑잡기(118.216) 15:01 19 0
2893517 이 개씨발일좆도못하는새끼야 [4] 개멍청한유라갤로그로 이동합니다. 15:01 42 0
2893515 야 원래 중국인 무비자였다가 싸드 배치해서 잠정중단했고 발명도둑잡기(118.216) 14:53 20 0
2893514 중복 ♥냥덩이♥갤로그로 이동합니다. 14:51 16 0
2893513 무비자 중국인 입국 후 절도 시도 추석 연휴 집단속 불안 급증 ♥냥덩이♥갤로그로 이동합니다. 14:32 17 0
2893512 hp 엔터프라이즈 하드디스크 6TB 18개 구입 발명도둑잡기(118.216) 14:32 18 0
2893510 러스트는 어렵고 비생산적이라는 편견으로 살아가는 사람들 [2] 프갤러(218.154) 14:27 24 0
2893509 꿈 꿨고 9시간 반 잤다 발명도둑잡기(118.216) 14:21 16 0
2893508 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 14:14 19 0
2893507 아직 편견과 생각으로만 살아가는 사람들이 너무 많은듯 [6] 공기역학갤로그로 이동합니다. 13:56 47 0
2893506 [애니뉴스 + 대한민국] 기회의 평등과 결혼 프갤러(121.172) 13:54 13 0
2893505 컴공새끼들이 AI/빅데이터한다고 석사 석사 외치는게 가관임 [7] ㅇㅇ(211.170) 13:23 77 0
2893504 하루 월차 내면 열흘 연휴네 발명도둑잡기(118.216) 13:08 20 0
2893503 국민의힘이 말하는 상납견 배급견 문재인 김정숙 대장동 고기사먹어 [1] 넥도리아(223.38) 12:20 33 0
2893502 근데 상법개정이랑 배임죄 폐지는 상충하는거 아님? [4] ㅇㅇ(121.168) 12:05 40 0
2893501 뭔지랄을 했길래 하필 남쪽에서 태어났을까 ㅅㅂ [10] 타이밍뒷.통수한방(1.213) 11:54 67 0
2893500 질투 인민 공화국에 태어나신걸 환영합니다. [3] ㅇㅇ(121.168) 11:48 43 0
2893499 전라도애서 인명살상가능 실탄 3만발 불법유출 [2] ♥냥덩이♥갤로그로 이동합니다. 11:24 43 0
2893498 ai 재앙은 저능아 바이브코더에 의해 올겁니다. [1] 프갤러(218.154) 11:22 41 0
2893497 ai가 개똥코드 싸질러서 rewrite하는데 그걸 또 ai로 한다고? [4] 프갤러(218.154) 11:19 60 0
2893496 찢은 보수진보 대통합을 이루고 국가붕괴시킴 ㅋㅋㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 11:03 19 0
2893495 rewrite it 정도는 ㅇㅇ갤로그로 이동합니다. 10:54 28 0
2893494 카카오톡 드디어 레전드 평점 돌파 [3] 헬마스터갤로그로 이동합니다. 10:49 55 0
2893493 한국을 예견한 미국 드라마 ㅇㅇ(121.168) 10:47 32 0
2893492 국정농단 김현지 게이트 국감 특검 수사로 진실 밝혀야 [3] ♥냥덩이♥갤로그로 이동합니다. 10:39 38 1
2893491 드디어 3 모니터 구축했다. 2년만에... 넥도리아(220.74) 09:51 20 0
2893489 [kt cloud x goorm] IT 직군 개발 / 비개발 8개 과정 프갤러(14.32) 09:33 84 0
2893488 디씨는 서버 이중화 되어있을까? ㅇㅅㅇ [3] 헤르 미온느갤로그로 이동합니다. 09:01 55 0
2893487 틀딱 프붕이 국비 붙었어 [1] ㅇㅇㅇ(125.130) 09:00 56 1
2893486 인생은 운이야 [3] ㅇㅇ(121.168) 08:37 40 0
2893485 동네 꽃가게 추석대목 준비완료 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08:22 32 0
2893484 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:11 20 0
2893483 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:08 38 0
뉴스 살 부쩍 오른 현아…♥용준형과 결혼 1년 만에 또 ‘임신설’ 디시트렌드 10.01
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2