오늘은 제어문의 나머지 파트에 대해서도 다뤄보겠습니다. 제어문의 경우 자바나 C언어나 큰 차이가 없으니 기존에 다른 언어를 익혀두신 분이라면 스무스하게 넘어갈 수 있습니다.
반복문의 경우 동일한 작업을 반복할 때 사용할 수 있습니다. Hello World라는 문장을 100번 출력해야 한다면, 단순하게 출력문을 100번 복사 붙여 넣기로 구현할 수 있습니다만.. 코드도 쓸데없이 길어지므로 비효율적입니다. 이럴 때 반복문을 알고 있다면 손쉽게 100번 출력이 가능해집니다. 반복문들을 먼저 다뤄보겠습니다.
for문
for(초기화; 조건식; 증감식){
수행될 명령들
}
for문은 초기화, 조건식, 증감식, 그리고 수행되야할 명령들로 이루어져있습니다. 예를 들어서 총 10번 무엇인가를 출력해야 한다면 다음과 같이 쓸 수 있습니다.
저는 0부터 시작하는게 편해서 i라는 변수를 0으로 초기화해줬습니다. 그다음 0부터 9까지가 10개이므로 조건식도 적절하게 써주고, i가 0부터 9까지 하나씩 증가해야 하므로 ++ 증감식을 사용해줬습니다. i+=1을 써도 상관없으나 일반적인 경우 제가 작성한 포맷을 가져갑니다. 또한 수행돼야 할 구문으로는 단순하게 총 몇 번 돌고 있는지 출력하도록 해줬습니다.
위의 코드를 플로우 차트로 표현하면 이렇게 됩니다. 초기화는 맨 처음 한 번만 이뤄집니다. 그러고 조건문을 보죠. 결과가 참이라면 수행되야할 구문으로 넘어갑니다. 그 다음에 증감식 파트로 이동하고, 다시 조건문~ 의 플로우를 따릅니다. 매번 초기화가 일어나지는 않는 점. 증감식은 괄호 안의 내용이 수행된 다음에 실행된다는 점. 이 두 가지를 알려드리고 싶었습니다.
while문
while(조건식){
반복하고 싶은 내용
}
while이나 for문이나 비슷합니다. 다만, for문의 경우 초기화,조건식,증감식을 같이 컨트롤할 수 있었지만( '()' 영역에서) while문의 경우에는 반복문 밖에서 초기화를 반복문 안에서 증감식을 써줘야 합니다. for문이 더 편한 경우도 있지만 무한 루프 같은 경우에는 while문이 더 편합니다.(조건식에 항상 참이 되는 조건을 써주시면 무한 루프를 돌게 됩니다.)
do-wile문
do while문은 조건식과 수행되야할 구문의 순서가 바껴있습니다.
do{
수행될 구문
}while(조건식);
자.. 모든 프로그래밍 언어는 일반적으로 위에서부터 아래로 구문이 수행이 됩니다. 위와 같은 do-while문이라면 무조건 맨 처음 한 번은 구문이 수행되게 됩니다. 시작부터 조건식이 false더라도 항상이요. 그 외에는 똑같습니다. 조건식을 만난 뒤부터는 True일 때만 다시 수행될 구문으로 올라가서 반복합니다.
실행 결과와 플로우 차트를 보시면 무조건 한 번은 실행이 무슨 이야기인지 와닿으시겠죠.
for-each문
다른 구문들처럼 each라는 키워드가 명시되지는 않습니다만 for each문이라고 불리는 친구를 소개해드리겠습니다.
for (변수타입 변수명 : 루프를 돌릴 객체) {
수행 구문
}
예? 예.. 우리는 종종 배열에 들어있는 값을 순차적으로 출력해야 될 일이 생깁니다. 원래대로라면 배열의 길이만큼 반복문을 돌도록 하면 되지만, 위의 형태로도 출력이 가능하도록 추가되었다고 합니다.
int a[] = {17,32,57,234,73};
for (int i : a){
System.out.println(i);
}
for each문 출처 : kils-log-of-develop.tistory.com/349
break문
반복문은 아니지만 제어문에 포함되므로 언급해야죠. 우리는 이미 switch문에서 접했습니다. 말 그대로 break를 걸어주는 구문입니다. 프로그래머가 의도적으로 실행을 중단해야 할 때(프로그램 종료가 아니라 반복문 탈출 같은 경우)에 사용합니다. 위에서 무한 루프라는 개념을 살짝 언급했습니다. 프로그램이 무한으로 계속 반복된다면 문제가 생깁니다. 어떠한 조건을 충족시키면 무한 반복을 그만두라고 명시할 때, break문을 넣어줄 수 있습니다.
continue문
continue를 마주하면 반복문의 끝으로 이동하게 만듭니다. 부루마블 같은 게임의 몇칸 앞으로 가세요 같은 구문입니다만!! break문처럼 반복문을 아예 끝내는 게 아닙니다. 이게 무슨 소리인지 당황스러우실 텐데요.
while(조건식){
continue;
...
...
...
<-이쯤으로 이동
}
while문 영역 안에서 끝으로 이동하게 되고 continue 다음에 실행되는 구문은 while문 밖에 있는 구문이 아니라, while 조건식에 해당됩니다. 1부터 10까지 출력하고 싶은데 7은 건너뛰고 싶다면 if(7이면) continue;를 활용하면 되겠죠.
'Java' 카테고리의 다른 글
[JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 (0) | 2021.04.16 |
---|---|
[JAVA] JUnit 5 기초 (0) | 2021.04.14 |
[JAVA] 자바 제어문 - 조건문 (0) | 2021.04.12 |
[JAVA] 자바 연산자에 대하여 (0) | 2021.04.10 |
[JAVA] 배열 선언하기 및 타입 추론 (0) | 2021.04.09 |