안녕하세요 이제 c언어 문법 거의 끝낸 1학년 초보입니다. 예를들어 결과창 보여주고 코딩하라는 문제가 있다고 생각하면
제가 그냥 main함수에 코딩 쭉 하면 그나마 코딩이되거든요. 그래서 다 main에 코딩하고 마지막에 함수정리하는데 이렇게 하면 안좋은 건가 싶어서요..
그때 그때 함수 만들려고 생각하면 되긴되는데 먼가 힘들고 머리아픈 것 같아서여 현업에 활동하시는 분들은 어떤식으로 하는지 궁굼해요!!!
안녕하세요 이제 c언어 문법 거의 끝낸 1학년 초보입니다. 예를들어 결과창 보여주고 코딩하라는 문제가 있다고 생각하면
제가 그냥 main함수에 코딩 쭉 하면 그나마 코딩이되거든요. 그래서 다 main에 코딩하고 마지막에 함수정리하는데 이렇게 하면 안좋은 건가 싶어서요..
그때 그때 함수 만들려고 생각하면 되긴되는데 먼가 힘들고 머리아픈 것 같아서여 현업에 활동하시는 분들은 어떤식으로 하는지 궁굼해요!!!
절차적 언어를 사용할때는 하루 일과를 생각하세요.
님은 아주 복잡한 문제들을 매일 매일 실행하고 있어요.
잠이 깼다. main 함수의 시작이죠.
이불을 걷고, 일어나서, 불을 켜고, 화장실을 갑니다. 그리고 물을 틀고, 얼굴에 물을 적시죠.
눈꼽떼고, 얼굴을 어루만진 다음, 때때로 거울을 봅니다. 피드백이 필요할 때 있죠. 다 됐다 싶으면 수건으로 닦아요.
그리고 화장실을 나가서 다음 작업을 하죠. 물론 뭐 샤워할때도 있고.
근데 이 작업을 '세수' 라고 하잖아요?
그리고 세수는 꼭 자고 일어나서만 하란 법이 없죠?
그럼 함수로 빼죠. 인자로 물, 비누, 수건, 면도기 같은게 필요할 수 있죠.
밥을 먹는것도 마찬가지, 숟가락과 젓가락을 이용해서, 혹은 나이프와 포크를 이용해서, 밥과 국물, 반찬을 먹죠.
그런 디테일들이, 하루 세 번 정도 재사용되니까. 일일이 나열하는게 바보같잖아요?
그거 다 나열하고 나서 함수로 빼는건 불편하죠.
그러니까, 12님이 고민하시는 부분은, 세부 작업들을 묶어서 하나의 일반적 작업으로 이름 짓는게 힘들다는거죠.
자꾸 해보면 늘어요. 님이 말씀하신 방법대로 해도 돼요.
일반적인 이름을 붙이는 연습을 해주면 됩니다. 아 이건 정렬이야. 아 이건 내림차순 정렬이야. 아 이건 N 번 입력이야. 아 이건 N 번 출력이야.
그럼 함수의 이름은 입력, 출력이 되고 인자는 N 과 데이타의 배열, 포인터 같은게 되겠죠
다 짜고 공통점을 묶는것 보다. 짜면서 웅 이건 어떠어떠한 작업이네. 이렇게 묶어서 이름 붙일 수 있으면, 그 뒤엔 구체적인 코드를 반복 안해도 되니깐.
그렇게 짜는거죠.
ㄴ 아 쉽게설명 해주시니깐 알 것 같아요. 많이 하다보면 늘겟죠... ㅋ;;
역시 답변해주시는 분은 항상 코세님.. 감사합니다 ㅋ
함수가 썩 와닿지 않을때는 뭐가 문제냐 하면,
지역변수와 함수의 인자인 파라메터들이, 스택에 생성되는 구조를 모르기 때문이예요. 함수를 호출 ( call ) 해서 그 위치로 점프해 갈때,
복귀 주소를 스택에 넣고, 인자들도 스택에 넣고, 그 함수로 가서, 지역변수들도 스택에 할당하죠. 함수의 실행이 종료되면, 스택을 비우면서 호출된 ( caller ) 함수로 돌아오죠. ( main 같은 )
그때 스택이 어떻게 늘고 줄고 하는지, 어떻게 점프하는지에 대한 내용을 완전히 이해하시면, 함수가 자연스레 받아들여질겁니다.
인터넷에 널렸으니, C 언어 함수 호출 구조 같은걸로 검색하셔서 그림과 함께 읽어보세용~
그른가요 공부 열심히 해야겠네요.
한 두 페이지 분량이니깐, 읽어보시고 코드를 짜 보시고 지역변수나 인자들의 주소를 printf 같은걸로 찍어보시면 살갑게 이해가 되실겁니당~
codesafer//눈꼽->눈곱 (국어사전 - 눈곱 [명사] : 눈에서 나오는 진득진득한 액.또는 그것이 말라붙은 것.) [리듬 맞춤법 봇♬]
옙 한번 읽어보고 오겠슴돠
역할을분담한다고 생각해보세요 - dc App