본문 바로가기
[ CODING STUDY ]/》C언어 공부

C언어 13장(반복문, for문, 알고리즘)

by MRG 2020. 5. 1.
728x90
반응형

▣ 안녕하세요 ^^
저번장에 while문 숙제해보셨나요?
숫자 맞추기 게임을 만드는 게 숙제였습니다.
해보셨죠?? ㅎㅎ
많이 어려우셨을 거라 생각합니다.



▣ 보통 c언어를 배울 때 
첫 번째 고비가 이 반복문 부분입니다.
오늘 미션으로도 해볼 별 찍기에서 많은 분들이 멘붕이 되고
포기를 많이 합니다.



▣ 하지만 겁먹지 마세요.
여러분들은 할 수 있습니다.
제가 처음장 부터 이야기 한 것처럼 코딩을 꼼꼼하게 읽는 훈련을 했기 때문입니다.



▣ 오늘 for문을 배울 때 이 읽는 훈련을 잊지 마시면서 천천히 코딩을 해석하면 
오늘 할 별 찍기도 할 수 있습니다.
그리고 제가 숙제 정답은 올리지 않습니다.



▣ 제 코딩이 정답이라고 생각할 수 있기 때문도 있지만,
여러분들이 여러 좋은 강사님들과 여러 자료들을 찾아보면서 공부해야
정말 실력이 늘기 때문입니다.



▣ 그렇기 때문에 꼭 꼭 숙제하시면서
좋은 강사님들 자료를 찾아서 같이 병행해서 공부해주세요.
그리고 코딩은 정답이 정해져 있지 않습니다.
저는 그렇게 생각합니다.
정답은 여러분들이 만들어가는 겁니다.
잊지 마세요.

 

 


▣ for문을 이해하기 위해서 직접 코딩을 쳐보겠습니다.
그런 다음에 하나하나 해석해보겠습니다.
for문은 whlie문과 다르게 () 괄호 안에 조건뿐만 아니라 초기식과 증감 연산자를 넣게 됩니다.
쉽게 이야기하면 while문에서 우리가 따로 변수에 초기값과 반복을 멈추기 위한 증감연산자를 
for문은 () 괄호 안에 다 넣는다고 생각하시면 될 거 같습니다. 





▣ 먼저 for문이 시작되면 0번 초기값부터 진행합니다.
그럼 i에 값에 0이 대입이 되겠죠?
그리고 1번 조건을 검사합니다.
조건이 참이면 whle문과 동일하게 { 화살 괄호안에 있는 스코프범위에 연산을 하나하나 진행합니다.
2번 3번 4번을 진행하게 되면 } 끝 화살괄호 스코프 범위를 벗어나서.
5번으로 돌아와서 증감 연산자를 연산합니다.
그럼 i에 값이 1이 되겠죠?
그리고 다시 1번에서 조건을 검사합니다.
그 조건이 참이면 아까처럼 2번 3번 4번 연산을 순차적으로 진행합니다.
이렇게 계속 반복되다가 1번에 조건이 거짓이면 반복문이 끝나게 됩니다.
그래서 i 값이 0부터 3까지 동안 반복하게 되는 것입니다.





▣ 어려워하실 필요 없습니다.
제가 whlie문에서도 이야기했지만, 옆에 노트를 놓고 제가 번호를 매겨서 해석한 것처럼 
여러분들도 해석해보면 이해하실 수 있습니다.
for문에 장점은 이렇게 초기값 지정과 조건식 그리고 증감 연산자를
for() 괄호 안에 다 넣을 수 있어서
개수를 반복할 때 while문 보다 코딩이 짧아지고 유용합니다.

 

 

 


▣ 자 이런 식으로 whlie문과 동일하게 for문 안에서 if문을 사용할 수 있습니다.



▣ 이것도 꼭 직접 만들어서 해보세요.
그리고 제가 번호를 표시하지 않았지만 여러분들이 직접 프로그램 순서가 어떻게 작동하는지를 
번호를 매겨서 하나하나 연산 순서를 적어보세요.

 

▣ 자 그럼 여기서 미션.
우리가 저번장에서 했던 while문을 활용하여 구구단을 만들어보았습니다.
for문도 중첩으로 for안에 for을 넣어서 코딩할 수 있겠죠?
for문을 활용하여 구구단을 만들어보세요.

 

 


▣ 저는 이렇게 완성했습니다. 
제 코딩이 정답이 아닙니다. 
여러분들이 변수를 더 활용 거나 for문을 더 활용거나 if문을 더 넣어서 활용해도 괜찮습니다.



▣ 자 제 코딩을 해석해볼까요?
그림에 있는 번호를 보시면서 함께 해석해보겠습니다.
처음에 0번 초기값을 정하겠죠?
그런 다음에 1번 조건문이 맞으면 for문 안에 있는 for문을 작동하게 됩니다.
프로그램은 순차적으로 작동하기 때문에 먼저 있는 2번 for문이 작동합니다.
그럼 안에 있는 for문에서도 0번 초기값을 정하고 1번 조건을 검사한 다음에 맞으면 2번이 작동하겠죠?
그리고 3번으로 증감 연산자를 하고 다시 1번 조건을 검사할 겁니다.
계속 반복하다가 1번 조건이 틀리면 안에 있는 for문이 끝나고
3번을 작동하게 됩니다.
그리고 다시 밖에 있는 1번 for문 조건을 검사하게 됩니다.
이렇게 밖에 있는 1번 조건이 거짓일 때까지 반복합니다.
이렇게 번호를 매겨서 해석하면서 공부해주세요.
저도 반복문을 했을 때 
특히 for문을 했을때 이렇게 공부하니깐 많은 도움이 되었습니다.



▣ 그럼 또 미션 이번에는 별을 출력하는 걸 해보겠습니다.
for문을 활용하여 8열 8행으로 별을 찍는 걸 해보세요.
구구단을 만들었으면 어렵지 않을 겁니다.
별은 * 이걸로 찍어주세요.

 

 

 

▣ 자 이렇게 잘 나오셨나요??
다시 말씀드리면 제 코딩이 정답은 아닙니다.
여러분들이 만든 것도 정답입니다. 
최적화를 하는 부분은 정말 나중 이야기기 때문에 
코딩을 어떻게 더 짧게 만들고 하는 건 나중에 생각해주세요.



▣  자 미션 이렇게 별이 나올 수 있게 만들어주세요.

*
**
***
****
*****

 

 

▣ 저는 이렇게 만들었습니다.
저는 for문에 있는 조건식과 증감 연산자를 바꿔서 이렇게 만들어보았습니다.
너무 어렵다면 옆에 그림을 그려서 직접 별에 개수를 적고 하나하나 만들어보세요.
처음에 별이 한 개
두 번째는 두 개
세 번째는 세 개입니다.
이렇게 먼저 패턴을 파악하고 1씩 늘어나는 코딩을 생각하시면서 별을 만들어보세요.



▣ 제가 말하는 건 쉽지 않습니다.
정말 어렵다고 생각하실 겁니다.
저도 그 마음 알고 있습니다.
대학교 때 암기식으로 배웠기 때문에 저도 너무 잘 알고 있습니다.



그렇기 때문에 제가 위에서 for문을 해석하는 방법을 가르쳐 드린 겁니다.
컴퓨터는 어쨌든 사용자가 정해준 순서대로 작동합니다.
그렇기 때문에 제가 코딩을 읽는 것 그리고 해석하는 것 해보라고 당부를 드린 것입니다.
못 만드셨다면 저 위에 있는 코딩을 해석해주세요.
그리고 if문을 사용해서 다시 만들어보세요.



▣ 자 그럼 이번에는 다른 미션입니다.

*****
****
***
**
*



▣ 이렇게 반대로 나올 수 있게 해 주세요.
어려워하실 필요 없습니다.
위에 있는 코딩을 해보고 해석해보셨다면 그 반대로 하실 수 있습니다.
노트에 그려보세요.
그리고 그 패턴을 생각해보세요.

 

 


▣ 자 이번에는 좀 더 어려운 별 찍기를 진행해보겠습니다.

        *
       ***
     ******
    ********

이렇게 별을 찍을 수 있게 코딩해보세요.
이 부분은 많이 어렵습니다. 
30분 동안 직접 그림을 그려보고 그걸 활용하여 코딩을 한 다음에 정말 안된다고 생각하시면 밑에를 봐주세요.

 

 

 

 


▣ 저는 이렇게 코딩했습니다.
다시 말씀드리지만 다른 좋은 강사님들 자료들과 정답을 보면 
저와 모두 다 다를 겁니다. 
그렇기 때문에 정답이라고 생각하지 마시고 참고만 해주세요.
빨간색 번호를 보면서 코딩에 순서를 해석해보세요.
뛰에쓰기는 보이게 ^ 기호를 사용했습니다.

 

 


▣ 자 이건 반대로 진행했습니다.
너무 많이 어렵다고요?
네 어렵습니다.
하지만 할 수 있습니다.
제가 위에서 적었던 번호대로 해석해보시면서 
다시 코딩을 짜 보세요.



그게 안된다고 하시면 
번호별로 하나씩 만들어서 확인하고 
다음 번호하고 확인하고 이런 식으로 해보세요.
값도 조절하시면서요.
저는 보통 노트에 번호로 표기를 합니다.
번호라는 건 위에 해석한 코딩 방법을 이야기한 것입니다.
첫 번째 줄만 출력되게 반복
두 번째 줄만 출력되게 반복 
이런 식으로 말이죠.

 


▣ 우리가 계속 공부하고 있는 알고리즘 순서도입니다.
저 위에 있는 문제들을 알고리즘 순서도로 활용하여 작성해보세요.
그럼 그 패턴을 찾는데 도움이 되고,
몇 번 반복이라는 포인트를 찾아 알고리즘 순서도를 만들면 코딩하기도 조금 수월해집니다.
꼭 만들어서 해보세요.



▣ 자 오늘은 이렇게 반복문에서 for문을 배웠습니다.
while문은 보통 여러 상황에 따른 반복을 할 때 많이 사용합니다.
while(1)을 많이 사용하는 편입니다. 무한반복으로 작동할 때 많이 유용합니다.



▣ for문은 아까 말씀드린 대로 몇 번 개수에 따른 반복일 때 많이 사용합니다.
그러니 여러분들이 필요한 상황을 생각하시면서 반복문을 사용해주세요.
for문이 어려워 보인다고 while문만 사용하시면 안 됩니다.
여러분은 할 수 있습니다. 



▣ 이번 숙제는 저기 위에 있는 별 찍기와 그리고 직접 번호를 매겨서 하나하나 코딩을 해석해보는 것
그리고 for문을 활용하여 while문처럼 숫자 맞추기 게임을 만들어보세요.
그럼 while문과 for문에 차이를 확실히 느낄 수 있을 겁니다.
질문 있으시거나 궁금하신 사항 있으시면 댓글 남겨주세요.
요청사항도 댓글 남겨주세요.
그럼 다음장에서 뵙겠습니다.



▣ 포기하지 마세요!!! 저도 했습니다. 파이팅!!!

728x90
반응형

댓글