본문 바로가기
에밀리쌤의 기초교실/JAVA 프로그래밍

[에밀리쌤의 JAVA 기초] 조건문과 반복문(2)

by 에밀리쌤 2024. 5. 13.

 

자바교육에서 사용되는 자바 기초 프로그래밍의 교안을 바탕으로 한 추가 설명입니다.

이전에 조건문과 반복문(1)에 이어 조건문과 반복문(2)를 진행합니다.

 

 

[에밀리쌤의 JAVA 기초] 조건문과 반복문(1)

자바교육에서 사용되는 자바 기초 프로그래밍의 교안을 바탕으로 한 추가 설명입니다.이전에 여러 가지 연산자(2)에 이어 조건문과 반복문을 진행합니다.  [에밀리쌤의 JAVA 기초] 여러가지 연

classroom.emilylecture.com

 

 

이전 포스팅에서 조건문을 구현할 때 그 흐름을 코드로 바로 구현하는 것보다 흐름을 한 번 정리하고 가는 습관이 필요하다고 했던 것 기억하시나요? (앞에 조건문을 보지 않고 반복문을 처음 보신 분들은 무슨 소리일까? 하실 수도 있겠네요. )

위 교안에서는 반복문에 대해 특정 코드 블럭이 지정된 수만큼 반복될 때 사용하는 흐름을 블럭으로 정리하고 있는데요, 나이를 입력받고 그 입력된 나이의 숫자가 어떻게 되느냐에 따라 미성년인지, 성인인지를 체크하고 다시 나이를 입력받는 흐름을 정리해놓았습니다.

화살표를 따라가다보면 무한하게 블럭 안을 뱅글뱅글 반복하게 된다는 것을 확인하실 수 있으실텐데요, 이렇게 무한으로 반복하게 되면 프로그램이 어떻게 될까요? 뱅글뱅글 반복하느라 컴퓨터가 먹통이 될 수도 있습니다!!

 

그래서 반복문을 작성할 때에는 다음 교안 예시처럼 반복의 횟수를 결정해줘야 합니다.

 

반복을 하더라도, 몇 번 반복을 할 것인지 정하고, 그 횟수만큼만 반복되게 하는거죠.

교안의 블록은 반복할 횟수를 세 번 이하 하는 것으로 지정한 뒤에 나이를 입력받는걸 반복하는 블럭입니다.

반복 횟수가 3이하가 아니라면 그 때는 더 이상 반복하지 않고 블럭 밖으로 탈출한 뒤에 그 다음 코드를 진행하게 됩니다.

 

 

앞서 그림으로 정리한 내용을 코드로 옮겨 봅니다.

조건문을 배웠었으니, 조건문으로 표현해 볼수도 있지 않을까? 해서 작성을 하게 된다면, 교안의 왼쪽 코드처럼 작성할 수 있게 됩니다. 

int loopCount = 1;
if ( loopCount <= 3 ) {
    int age = 30;
    if ( age >= 19 ) {
        System.out.println("성인입니다.");
    }
    else {
        System.out.println("미성년입니다.");
    }
    loopCount = loopCount + 1;
}

 

왼쪽 교안 코드를 옮겨왔습니다. 해석을 해보자면,

loopCount 정수형 변수에 1을 할당해서 초기화하고, 만약 loopCount 변수가 3보다 작다면, 
age 정수형 변수에 30을 할당해주고, 
다시 만약 age가 19보다 크거나 같다면 성인입니다를 출력해주고,
그렇지 않다면 미성년입니다를 출력합니다.
loopCount 에 1을 증가시켜주고 나서 조건문을 종료하게 됩니다.

 

이 코드는 조건문이기 때문에 그대로 끝내고 다음 코드 블럭으로 넘어가게 됩니다.

 

그렇다면 교안의 오른쪽 코드를 옮겨와서 읽어볼까요

int loopCount = 1;
while ( loopCount <= 3 ) {
    int age = 30;
    if ( age >= 19 ) {
        System.out.println("성인입니다.");
    }
    else {
        System.out.println("미성년입니다.");
    }
    loopCount = loopCount + 1;
}

 

앞서 본 코드와 거의 동일하고 loopCount를 확인하는 부분에서 while을 사용했습니다.

while은 ( ) 안의 조건문이 false가 나올 때까지 { } 안의 코드를 반복해서 실행하게 됩니다.

그 안의 loopCount가 반복될 때마다 1씩 증가하면서 while문의 조건에 증가된 값으로 비교를 하게 됩니다.

 

자바에서 while 은 가장 기본적인 반복문 문법입니다. 

 

 

앞서 본 while문에서는 무조건 조건을 검사하기 때문에 해당 조건에 맞는 결과가 나오지 않으면 반복코드가 한 번도 실행되지 않게 됩니다. 반복은 하더라도 무조건 수행이 한 번은 이루어져야 한다면 do~while 문을 사용합니다.

 

위 코드를 살펴보자면,

num과 sum을 정수형 변수로 선언하고 각각 1과 0을 할당하며 초기화 해 줍니다.
do 안의 수행문이 먼저 실행되어 sum에 num을 더해서 sum에 1을 할당하고,  num에 1을 증가시킵니다.
그리고 나서 while문 다음에 있는 조건식을 확인합니다.
현재 num은 2 입니다. num <= 5  조건이 참이기 때문에 다시 do 안의 코드를 수행합니다. 

 

기존의 반복문과 동일한듯 하면서 다르죠?

그런데 생각보다 do ~ while문은 실제 코드에서 아주 많이 사용되는 표현은 아닌 것 같아요.

왜 같아요라고 설명하느냐... 제가 코드 구현할 때 사용해본 적이 없거든요. 하지만 워낙 다양하고 많은 서비스들이 있고, 경우의 수 또한 다양하기 때문에 안 쓴다라고는 말씀드리기 어렵습니다!

while문에 do를 함께 사용하는 문법이 있다는 걸 일단 기억해두시는 정도로 해도 되지 않을까 개인적으로 생각합니다.

 

 

반복문 중에서도 정말 가장 많이 사용하는 for 입니다.

while 과는 다르게 조건으로 줘야 하는 것들이 더 있습니다. 

whie은 간단하게 쓸 수 있는 것과 비교해서 for는 반복을 위한 횟수 체크를 위한 변수를 정하고, 조건식을 부여하고, 그 변수의 값을 증가할 것인지 증감할 것인지도 작성해줘야 합니다.

 

복잡하게 정해야 하는 내용이 있지만, 그 한 줄만으로 반복문의 반복에 대한 설정 정보가 모두 설명됩니다.

 

 

while문의 경우 깜박하고 증감식을 작성하지 않으면 자칫 무한반복에 빠질 수 있습니다. 

그래서 주의해야 하는 것이 증감식이 빠지지는 않았는지 꼭 체크를 해야합니다.
에이 설마 증감식을 빠뜨리겠어? 이 중요한 걸? 이라고 생각하셨나요. 그런데 코드 짜다 보면 무심결에 빠뜨리게 되는 것 중에 하나가 증감식이랍니다. 
그러다보니 좀 더 안정적으로 사용할 수 있는 반복문은 for 라고 이야기하게 됩니다.

for문은 선언 후 첫 줄에 반복에 필요한 내용을 모두 정의하게 되어 있으니까요. 빠뜨릴 일이 없죠.

 

반복문은 실제 반복될때 변화하는 i의 값을 하나씩 체크해보는 연습이 필요합니다.

손으로 써서 반복하는 내용을 정리해보았을 때 어떻게 변화하는지를 체크해보는거죠.

 

 

조금 더 복잡한 중첩for문 입니다. 말 그대로 for안의 for를 여러 번 겹쳐서 사용하는 방법입니다.

프로그래밍에 필요하다면, 이중, 삼중 여러 번 중첩해서 사용할 수도 있습니다.

특히 중첩해서 사용하는 for문은 코딩테스트에서 자주 쓰이는 표현입니다.

 

그래서 연습을 많이 해보시라고 많이 이야기하는데요, 많이 풀어보는 예제는 구구단과 별찍기 입니다.

(실제 수업에서도 제가 실습과제로 무조건 냅니다)

2단에서 9단까지 구구단을 계산해서 출력하는 기본적인 중첩 for문을 구현해 보세요.

그리고, 중첩 for문을 이용해서 구현하여 출력창에 여러 모양의 별을 찍어보는 문제입니다.

 

콘솔에 위 형태로 출력되도록 구현하는 예제 문제 풀어보시는걸 추천드려요.

다양한 알고리즘 형태를 코딩테스트 형태로 문제 풀이해 볼 수 있는 백준 사이트에서도 다양한 형태의 별찍기 문제가 있는 것을 확인할 수 있습니다.  (https://www.acmicpc.net/problemset?search=%EB%B3%84+%EC%B0%8D%EA%B8%B0)

여기에서 풀어보면 좀 더 다양한 형태로 연습해 보실 수 있겠죠?

 


 

반복문이 모두 종료된 건 아닙니다~

무한반복에 대한 이야기도 해야하는데요, 너무 길어져서 다음 포스트에 추가로 설명해보려 합니다.

 

위에서도 설명드렸지만, 반복문은 연습이 필요한데요. 그 연습을 위해 코딩테스트의 문제들을 풀어보시는걸 추천드려요.

특히, 코딩테스트 준비하시는 분들은 더더욱 연습을 충분히 하셔야하는 부분이랍니다.

기본이 탄탄해져야 그 다음도 탄탄하게 올라갈 수 있는 것 모두 잘 아시죠?

개발에서의 중요한 기본은 바로 이 반복문이 아닐까 생각합니다.

 

 

다양한 연습문제를 풀어보면서 문법에 조금 더 익숙해지시길 바랍니다!

 

 

 

[에밀리쌤의 JAVA 기초] 조건문과 반복문(3)

자바교육에서 사용되는 자바 기초 프로그래밍의 교안을 바탕으로 한 추가 설명입니다.이전에 조건문과 반복문(2)에 이어 조건문과 반복문(3) 진행합니다.프로그래밍을 하다 보면, 정확히 몇 번

classroom.emilylecture.com

 

 

반응형

댓글