check 라는 함수를 선언하고 만들어놨음
check라는함수는 x,y의 값을 받고
1. 둘다 0이면 프로그램종료 문구출력 - > 1을 배출
2. 선택된배열이면 이미 선택됬다하고 문구출력 -> 0을 배출
3. 선택안된배열이면 선택햇다하고 문구출력 -> 0을배출
그리고 메인함수내에서
check 함수를 진행한뒤에 위의 과정을거쳐 결과를 받고(printf 출력)
1이나오면 그대로종료루트
0이나오면 goto로 다시위로가는식으로 만들었음.
--------------------------------------
질문은이거임
if문이 나는 참인지아닌지 판단하는 함수라고 생각했거든
참거짓으로판단해서 그담에오는걸 하냐마냐 결정할뿐이지
if문의 조건을 판단하면서 그과정이 다른곳에 영향을 미치진않을꺼라고 생각했음.
근데 저런식으로 만들었떠니 if문의 판단과정중에 해당함수의 printf기능도 진행되고
여하튼. 참거짓만 판단되는게아니라 함수내부의 기능이 출력이 되버린거자나?
이런식으로 만들어도 괜찮은건가?
결과적으론 문제될게없는 결과인데... 왠지이러면 안될꺼같은데..
뭐 예쁘게 만들려면 출력문구를 메인함수내에 넣고,
check함수는 1, 2, 3번케이스의 값을 정수값으로 뱉어서 메인함수내에서 그 정수값에따라
if이용해서 뽑으면 꼬일꺼없이 예쁘게 만들어지겠찌만...
어떻게하다보니 저렇게도 되길래..
c언어 배운지 5일만에 이정도까지 올라오다니
대단한데 ??!
일단 0,0이 입력되었을때 종료하는 부분과 나머지는 구분된 함수에 구현해야됨
대갈통 똑똑한데... 쭉 이쪽 공부 해라.후회 안할꺼야
글구 goto문은 do while이나 while로 고치도록
나중에 가서 리팩토링 개념을 배우면 알겠지만, 쪼개고 또 쪼개서 공통화된 부분은 묶어서 빼내고 하고그래.. 근데 지금 너는 그 리팩토링 개념을 적요해서 check 라는 함수 안에 몰아넣어서 한거고. 뭐 ㅈㄴ 거창하게 말은 했지만, 기본 모토는 똑같아.
글구 니가 지금 고민하는 문제는 함수형 프로그래밍의 부작용이 없다는 특성 찾아보면 이해가 갈거야
goto 는 어떻게 보면 좋은거기도, 어떻게 보면 개거지 같은거기도 한데... 로우레벨을 다루려면 고투가 더 효율적임. 객체지향으로 갈꺼면 고투는 꺼지셈 해야함.
실제로 저런식으로 if문 같은 제어구조 안에서 안에서 출력같은 부작용을 일으키는 행동을 못하게 하거나 권장하지 않는 언어들도 있음
ㄳㄳ....
X,Y둘다 0일때 리턴해버리면 0,0은 어떻게 체크하려구..? - DCW
ㅇㅇ// 글쎄.. if 안에서 뭔가를 못하게 막는다는건 말도 안되는거 같은데. 내가 C랑 java만 해서 다른 언어가 어떻게 하는지는 모르겠지만, 결국 if 안에서 보는거는 status 를 볼 수 도 있지만, status 가 꼭 해당 line 까지 정의된 status 만은 아니니깐. 절차지향 언어라면 if안에서 무언가를 다루는건 문제가 있다고도 볼 수 있지만, 객체지향 관점에서 본다면 if 안에서 분기 처리를 하는건 문제가 안될거 같은데... 옵저버 패턴을 다룰 경우에도 옵저버 안에서 처리한 후 해당 결과에 따라 분기되는 케이스가 많은걸 보면 아닌거 같은데
c에서는 아무렇게나.해도되고 좀 복잡해지면 controller에서 로직을 수행하고 view에서 출력을 하는 mvc구조를 많이 씀
이게 도서관 좌석 짜는건데 0,0을입력시 프로그램을 종료하도록 만든것. 그래서0,0을입력하면 값으로 1을뱉고, 메인함수에서 뱉은값이 1일시 그대로 끝나도록 만들었었음
nano//얘는 인덱스가 하나라도 0인 부분은 안쓰기로 작정했나보지 프로그래밍 처음 배울땐 인덱스가 0부터 시작한다는거에 적을하기 힘드니까
ㄴ 인덱스 하나가 0인경우도 돌아가는데문제없음! 가령 0 1이라던가 1 0 같은거.. 오로지 0 0 일때가 종료신호로 설정 나머지조건은 메인함수내에있어서 안보여서그런듯
그러니까 입력값이 타당한입력값인가는 메인함수에서판단햇고, 이좌석이 빈좌석이냐 앉을거냐 혹은 00의좌석(종료)을 고를거냐를 check함수에서 판단함
네모//분기처리는 문제가 안되지. 출력 같은 side effect 최대한 유발 안하도록 권장하는 언어들이 있다는 거지 근데 어차피 사람이 결과를 보려면 사이드 이펙트가 어느 부분인가에는 존재해야하긴 하겠지. 특히 순수 함수형 언어에 가까울수록 수학의 함수처럼 아무런 사이드이펙트 없이 항상 같은 입력에 대해 같은 결과를 내놓도록 권장
흐린바다// 그럼 0,0 자리에 앉고 싶으면 어떡함?
ㄴ 문제에서 요구한게 0, 0자리를 선택시 종료하는신호로 받도록 만들라해서.. 0, 0자리는 없는조건임
함수형 언어라는거 그거 스칼라 같은거 말하는거?
흐바 //글쿤 네모//ㅇㅇ 더 순수한쪽은f# ocaml이런거