관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

코드의 흐름 제어 3 - 반복문 본문

프로그래밍 언어/자바

코드의 흐름 제어 3 - 반복문

huenuri 2024. 8. 6. 22:44

이번에는 반복문 학습을 해보겠다. 조건문은 영상 분량이 상당히 많아서 3시 반까지 학습을 마치는 것으로 했는데 진짜로 목표를 달성하였다. 반복문은 실습문제가 상당히 많으니 그걸 감안해 4시 반까지 학습을 끝마칠 예정이다.
그럼, 학습을 바로 시작해 보겠다~


 

 

이론 3 - 반복문

 

101이 되면 탈출한다. true이면 안을 돌고, false이면 탈출하는 조건식이다.
 
 
 
 
 



 

 


while문보다 더 간결한 형식이다. 복잡해 보이지만 코드는 더 간결하다. for은 실행되고 나면 탈출하여 남는 것이 없는 조건이다. 이것이 while문과 크게 다른 점이다.
 
 
 
 
 


 

 
 

 
 
 
 
 


while문은 조건식에 적합하고, for문은 반복문의 기능에 더 자주 사용된다.

 
 
 
 
 


 

 

퀴즈 3 - 반복문 실행 결과 추측하기

 

 

 
갑자기 이중 조건문이 등장하니 무슨 말인지 이해도 되지 않고 문제를 틀리고 말았다.
 
 
 

 
두 번째 풀었을 때는 맞았다. 하나하나 일일이 쓰면서 풀어보니 충분히 풀 수 있었다. i가 2, 4, 6, 8, 10으로 증가할 때 num이 0에서 i의 값을 더한 것이 누적된다. 따라서 답은 30이 되는 것이다.
 
 


 

 

실습 6 - 1부터 100까지 출력하기 1

 

 


 
 

문제 풀기

 


 

 

실습 7 - 1부터 100까지 출력하기 2

 


 
 

 

 

 
while문도 아주 잘 풀었다~


 

 

실습 8 - 구구단 n단 출력하기

 

 


 
 

문제 풀기

 

 

 
i와 n이 무엇인지 잠시 혼동했다. 구구단은 9번을 돌게 되어 있으니 i를 9로 설정하고, 곱한 값을 누적해 주면 된다.


 
 

코드 수정하기

 

 

 


 

 

실습 9 - 구구단 출력하기

 


 
 

문제 풀기

 

 
뭔가 곱하기가 되기는 했으나 결과는 엉망이었다. 이 문제는 혼자 해결하기 힘들어서 해설 영상을 참고해 보았다. j도 i처럼 9로 설정해야 하는데, j를 i보다 작을 때도 조건을 주었더니 이상한 답이 된 것이다.
그리고 2단부터 출력이 되도록 만들어 주어야 한다.
 
 

 
이렇게 하니 1단부터 출력되었다. 문제를 거의 이해하지 못한 상태에서 대충 두드려 맞추는 것 같아서 C 언어 책을 뒤적이며 처음부터 다시 조건을 만들며 확인해 보았다. 풀이는 내가 전에 하던 방식이 아니라 별로 쓰고 싶지 않았다.


 
 
 

다시 풀어보기

 

1. 2단만 출력하기

 

 
2에 i를 곱하기만 하면 2단만 출력된다. 이제 이중 for문을 한번 만들어보자.


 
 
 

2. 8번 출력하기

내가 잘못 생각했던 부분은 9개나 나오게 하니까 계속 1단이 되었던 거였다. 2에서 9단이니 8번이 반복되게 만들어야 하는 것이다. 이제 i는 헷갈리니 j로 만들어주었다.
 

 
이렇게 하면 2단만 8번 출력된다.


 
 
 

3. 모든 단 출력하기

이번에는 2를 변수 i로 변경해서 출력해야 한다. i는 여기서 단이 된다. 그리고 2부터 곱해져야 하므로 변수로 2로 변경한다.
 

 


이제 2단부터 9단까지 모두 출력이 되고 있다. 1단은 제외하고..
문제를 어떻게 풀어야 할지 조금 알게 되었다. 바로 답이 나오는 코딩은 사실 외우지 않는 이상 어려운 것이다. 이렇게 하나씩 나누어서 코딩해 보면 분명 알고리즘을 이해하며 문제를 풀 수 있게 되는 것 같다.


 

 
 

학습을 마치고

구구단을 출력하는 문제가 많이 어려워서 이 문제를 푸는데 많은 시간이 걸렸다. 그래서 4시 반을 15분 넘겼지만 나름 의미가 있었던 학습이었다. 이제 구구단도 잘 출력할 수 있을 것 같다. 지난번에 이 부분을 공부할 때는 분기별로 나누지 않고 거의 암기식으로 학습했다.
이렇게 하니 속도는 빠른 것 같았는데 이해 없이 넘어가다 보니 시간이 지나니 다 잊어버리고 말았다. 원리를 이해하며 학습을 해야 오랫동안 기억하고 내 것이 되는 걸 오늘 확실히 느꼈다. 앞으로는 이런 식으로 공부해야지! 반복문도 해보니 할만했다.