본문 바로가기
매트랩(Matlab)/매트랩 강의

[Matlab / 매트랩] 9. m-file 만들기 // for, if, while 등의 조건문의 사용과 Type의 이해 (1)

by freezkim 2010. 2. 3.
[Matlab / 매트랩] 매트랩 강의 9번째


m-file 만들기 시리즈(2) // for, if, while 등의 조건문의 사용과 Type의 이해 (1)


정말 한 동안 손놓고 있었습니다ㅠ

사실 처음에는 "그냥 배운거 안까먹게 기록이나 해놔야지" >>>>>>> "나의 강의를 맛보아라" 의

목적으로 시작했었는데

강의를 시작한 후부터 방명자 수가 늘어나기 시작하면서

 "나의 강의를 맛보아라" >>>>>>> "그냥 배운거 안까먹게 기록이나 해놔야지" 

로 바껴버렸다죠. 그래서 검색어 노출까지 신경쓰면서 중간중간 제목도 바꾸고 별짓을 했더랍니다.


그런데 사실상 10월을 기준으로 연재를 중단했어요ㅠㅠ 아마 중간고사 기간 이후였는듯...ㅠ

원래 성격이 첨에 막 의욕에 불타올랐다가 좀 흐지부지 되기도 했고, 플젝 2개를 동시에 진행하느라

시간적 여유가 없기도 했었습니다ㅠ

 

여튼 하지만, 그래도 이 강의만은 죽어도 끝을 내리라 생각하고 있었기 때문에

(다른건 다 때려치워도 매트랩 GUI까지만은 연재할 거라 생각하고 있었습니다.

온라인 상에서 GUI를 배웠던 경험이 너무 힘들었기 때문에, 거기에 대한 솔루션을 주고는 싶었어요ㅠㅠ)

 

여튼 어찌됐건, 아픈 중단의 시간은 뒤로 하고 다시 매트랩 강의를 시작해 보겠습니다.

================================================================================================

올해는 호랑이의 해인만큼, 뭔가 뜻깊은 개그를 하나 준비해보았습니다.



갈매기가 젤 센걸로 보이신다면 분명 착각이실 겁니다....젤 센건 (보이지는 않지만..) 호랑이.........ㅈㅅ

....

...

..

.

연초부터 죄송합니다.


잡소리는 그만하고 오늘은 예전에 하다만(?) m-file 만들기를 해보기로 해요.

 

저번 m-file 만들기 1강좌에서는 m-file에 "필수"인 행렬 원소 지정하기와  행렬에서 원소 읽어들이기를 했었는데요.

이번 2강좌에서는 마찬가지로 m-file에 "필수"인 조건문의 사용과 Type에 대한 내용을 다뤄보고자 합니다.

 

조건문은 말 그대로 어떤 조건에서 어떤 문장을 실행시켜라 뭐 이런내용을 다룰거구요.

type은 간단하게 어떤 데이터가 숫자냐? 문자냐? 뭐 그런거 구분하는거에요. 별거없습니다ㅋ

가 아니라 뭐 벌써 끝나버렸네요 숫잔지 문잔지 구분정도야 누워서 떡먹기겠죠.......

 

라고 말하기는 조금 문제가 있기는 있습니다만...

뭐 그래봤자 서서 떡먹기수준이니 걱정하실건 없습니다. 아무 부담없이 걍 보시면 됩니다ㅋ

 

  1) 일단 조건문의 대충의 설명을 한 후에

  2) 타입에 대한 설명을 다루고

  3) 다시 조건문으로 돌아가는걸 하겠습니다.

      (왜냐면 타입에 따라 조건문 쓰는 방법이 아주 약간 조금 다를 수 있기 때문이에요.)

  4) 그리고 예제 하나 들어보고 마치도록 하겠습니다.

 

쉬우니깐 그냥 줄줄줄 읽어주시면 될겁니다ㅋ......


라고 했는데 막상 쓰다보니 길이가 장난없군요. 일단은 조건문의 대충에 대한 설명을 하는 것까지 이번 강의에서 다루고 다음 강의에서 타입에 대한 설명을 다룬 후, 조건문에 대해 다시 자세히 다뤄보고 끝내는 것으로 하겠습니다...ㅠ


 

1. 조건문 - 조건이 주어지면 어떤 문장을 실행한다! 

 

 말이 조금 어려울 수가 있는데, 조건?? 문장?? 뭐 이런 단어자체가 좀 생소하실 수 있어요.

 알기 쉽게 (제가 자주하던....하는...?) 던전&파이터라는 게임을 가지고 예를 들어 봅시다.


 이 게임엔 소위 "테라 퀘스트"라고 불리는 악마의 퀘스트가... 있습니다.

 

 (1) 어떤 던전에 가서 몹들을 열심히 잡다보면 테라나이트라는 잡템이 나온단다.

      그것들을 많이 모아서 가져오렴.

 (2) 그러면 그것들을 가지고 좋은 테라나이트로 바꿔주마....

 (3) 그리고 그 좋은 테라나이트를 졸라많이 가져오면 졸라좋은 무기를 한개 주겠다


 뭐 이딴 퀘스튼데요.

 여기서 앞서 말했던 '조건'과 '어떤문장'의 개념을 설명해 보자면


 (1) 조건은-> 테라나이트라는 잡템을 모아서 가져와라

 (2) 어떤문장은->그러면 좋은 테라나이트로 바꿔주마.

 (3) 조건은 -> 좋은 테라나이트를 졸라많이가져오렴.

 (4) 어떤문장은->그러면 졸라 좋은 무기를 한개쯤 주지


 이런식인 겁니다.

 즉 퀘스트와 퀘템의 관계와 비슷한 겁니다ㅋ 대충 이해가 가시나요 ㅇㅋ?


 자 그럼 요런 조건을 m-file에서 만들고 싶은 거에요. 근데 조건과 실행할 문장을 따로 구분해 줘야하죠.

 뭐가 "조건문"이다 라는 걸 알게 하기 위해 매트랩에서 사용하는 조건문의 형태는

 주로  if, for, while 이라는 3개가 많이 쓰입니다.


요 3개를 어떻게 쓰는지 천천히 알아보도록 해요ㅋ



 1-1 'if문'

  'if문'이란 것은 만약에 뭐뭐 한다면~ 이라는 것을 나타내는 조건문입니다.

   니놈이 테라나이트를 많이 가져온다면' 을 매트랩의 형태로 표현해 준다면

   다음과 같은 형식이 되게 됩니다.


     if 내가 요구하는 테라나이트 개수 = 니놈이 가져온 테라나이트 개수

          좋은 테라나이트를 하나 주마.

          니놈이 가져온건 다 내놓아라.

     end


   요렇게 if 라는 것을 첨에 써서

   "아, 이건 뭐뭐 한다면이란 조건문을 의미하는 거구나 어이쿠, 감사" 라고

   매트랩에게 친절하게 가르쳐 준 다음에


   구체적인 조건을 바로 뒤에 써줍니다.

   (기본적으로는, A랑 B랑 같냐?(==), A가 B보다 많냐?(>), A가 B보다 적냐?(<)  )


   그리고 요 조건이 맞아 떨어지면, 그 조건문 안에 들어있는 내용을 실행하는 겁니다.

   안맞아 떨어지면 걍 넘어가는 거구요ㅎ


   근데 어디까지가 조건문안의 내용인지 모르잖아요? 고걸 구분해주기 위해서 end를 쓰는 겁니다.


   즉 다시 정리하면

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

          if 조건

            실행할 내용

          end

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

    의 형태로 표시를 하는거죠.


    그래서 위의 조건문을 풀이하자면


    내가 요구하는 테라나이트 개수하고 니놈이 가져온 테라나이트 개수가 같으면

    좋은 테라나이트를 하나 주겠다. 니놈이 가져온건 다 내놓거라.


    요렇게 되는 겁니다.


    *여기 조건문에는 크다 작다 같다 외에도,

     &&(and) ||(or) >=(크거나 같다), <=(작거나 같다), ~=(같지않다) 등을 쓸 수 있고,

     if 조건을 쓴 후에도 else, elseif 등을 쓸 수 있습니다만 일단은 넘어갑시다.



 1-2 'for문'

  for문같은 작업을  반복시킬때 쓰는 조건문입니다.

  for문의 특징은 반복작업의 "횟수"를 정해줄 때 쓴다는 것입니다.


  예를 들자면, "상대방에게 뚝배기 한그릇을 5번 권유하라."는 작업을 하고 싶다면

  for문을 써서 5번 권유하는 작업을 반복할 수 있는거죠. 

  이 경우 for문의 형태는 다음과 같습니다.


  for 뚝배기 권유횟수=1:5

    명박이 윽수로 부드럽네~~

    뚝배기보다 장맛이네!!!

    캬아~!!

    한뜍배기 하실래예?

  end


  if와 비슷하게, for 문을 쓴다는걸 매트랩한테 친절히 알려주시구요.

  그 옆에는 for문 안의 내용을 몇번 돌릴지 결정하는 문장이 들어가 줘야 합니다.

  기본형태는 다음과 같아요. 요거는 문법을 꼭!! 지켜주셔야 해요. 유의해서 보세요.


  형식:

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

     for 몇번 돌았는지 체크할 변수 = 초기 숫자: (늘어나는 양) :끝 숫자

         (늘어나는 양을 생략하면 1로 기본 지정 됩니다.)

         실행할 내용

     end

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

   ex)

     for i=1:5

        sprintf('%d 뚝배기 하실레예' , i);

     end


 이렇게 써주시면, 몇번 돌았는지 체크할 변수(예제에서는 i)가 처음에는 초기숫자(예제에서는 1)였다가,

 for문이 한번 돌때마다 늘어나는 양(예제에서는 1만큼)만큼 증가하게 됩니다.

 결국에는 끝 숫자에 도달하게 되고, 끝 숫자에 도달하고나면 그 다음번에는 반복을 하지 않는 구조입니다.


 따라서 for i=1:5 라고 하면,

 i가 처음에는 1이였다가 for문 안의 내용을 실행시키고 end에 도달하면 다시 처음으로 돌아가서

 i가 2가 됩니다. 그다음엔 또 돌고나서 3, 또 돌고나서 4, 또 돌고나서 5가 되고,

 5가 되면 for문 안의 내용을 실행시키고 end까지 도달한 다음에,

 처음으로 안 돌아가고 그냥 빠져나오게 되는 구조입니다.


 요부분 유심하게 보셔야 할거에요 아마...ㅎ


 어느정도 무슨뜻인지 아셨을 거라 생각하고 일단 넘어갑시다ㅋ



 1-3 while

 while문 같은 경우도 for문과 마찬가지로 같은 작업을 반복시킬때 쓰는 조건문입니다.

 그런데 왜 while을 쓸까요?

 이미 for로도 반복작업 다 할수 있는데??

 요 경우는 쓰임에 있어서 차이가 있어요. 앞서 for 문 같은 경우는 어떤 '반복작업의 횟수'
 정해준다고 했죠?


 하지만 요 while의 경우는 '어떤 조건에 도달할 때 까지 반복'하는 경우에 쓰게 되요.


 그러니깐 for은 '반복횟수', while은 '반복조건'을 설정해 주는 겁니다.

 쓰임이 서로 다르니 때에 따라 유용하게 사용할 수 있을 거에요.

 이 while 같은 경우는 기본형태가 다음과 같이 됩니다.


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

    while 조건

       실행할 내용

    end

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

 여기서 while 조건은 if의 조건쓰는 형식과 동일합니다. 즉 같냐, 작냐, 크냐를 기본적으로
 쓰는  겁니다.
 

 예를 들어볼까요


  while 뚝배기 권유횟수<5

    명박이 윽수로 부드럽네~~

    뚝배기보다 장맛이네!!!

    캬아~!!

    한뜍배기 하실래예?

  end


 이렇게 되면 뚝배기 권유횟수가 5보다 작은 경우 while문이 계속 반복되게 됩니다. 


 그런데 위의 예 같은 경우 실제로 매트랩에서 돌리면, 뚝배기 권유횟수가 몇번인지 알수가 없기 

 때문에 무한루프에 빠지게 됩니다. 즉, while 문이 계속 돌아간단 얘기죠.


  위의 예를 요렇게 고쳐야 매너있게 5번만 권할 수 있게 됩니다.


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

   뚝배기 권유횟수=0회


   while 뚝배기 권유횟수<5

    명박이 윽수로 부드럽네~~

    뚝배기보다 장맛이네!!!

    캬아~!!

    한뜍배기 하실래예?


    (뚝배기 권유횟수 1회 더 증가 시키기)

  end

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

요렇게 해야 while문 안의 내용이 실행될 때마다 뚝배기 권유횟수가 증가되는거죵ㅋ 매너남 로버트할리임


자 일단 이렇게 하여 조건문이 뭔가 형식이 어떠한가라는 걸 대충(.....) 감을 잡아 봤습니다.

다음 강의에서는 type에 대한 내용을 말랑말랑하게 설명한 후

매우 딱딱하고 엄격하고 매너없이 거칠면서 성의는 좀 있는 듯하게 조건문의 쓰임을 나열하는 것으로

m-file 다루기 2편 조건문의 사용을 마스터 하도록 하겠습니다.


 빠른 시일내에 찾아뵙겠습니다.




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

추신: 이제서야 네이버에 검색 등록이 되었다고 하는군요.


보낸사람: "네이버고객센터"<help@mail.naver.com>


고객님의 블로그가 네이버 블로그 검색결과에
반영될 수 있도록 등록을 완료하였습니다.


내일부터는 네이버 블로그 검색결과에서 고객님의
블로그 내용이 반영되는 것을 확인하실 수 있습니다.



근데 네이버에는 예전에 적었던 건 검색이 안되네요... 흑 새로 올린거만 검색되네ㅠ