-
[무작정 기록] 제어문(선택문/반복문/기타)IT/JAVA 2025. 3. 14. 18:42
제어문
프로그램의 흐름을 제어하는데 사용한다.
즉 문장(명령어)의 흐름을 제어 시키는 명령(문장)을 말한다.
1. 조건문 혹은 선택문(if, switch)
: 조건에 따라서 동작시키고자 하는 명령(문장)을 선택하는 것을 말한다.
if문
기본형식
if( 조건식 ){ 참일때에 동작시킬 명령어(들) }else if( 조건식 ){ 추가적인 조건검사시 사용하며, 동작시킬 명령어(들) }else{ 거짓일때에 동작시킬 명령어(들) }
구분 특징 예제 (a = 1, b = 2) 기본 if 문 - 동작시킬 명령어가 한개밖에 없으면 중괄호 {} 생략할 수 있다.
- 하지만 동작시킬 명령어가 여러개라면 중괄호 {} 를 생략하면 안된다.
- if는 중괄호가 있는 if 순서대로 명령어들을 호출한다.
- 명령어가 두개 이상있을때 괄호를 하나를 지우면 else 영역부터 에러가 난다.
- 또한 명령어도 맨 첫번째 하나만 로드하고 나머지는 읽지 못한다.
(error msg --> Syntax error on token "위치", delete this token)if( a < 1 ){System.out.print("true");}중첩 if 문 - if 속에 또다른 if 문이 오는것을 말함
- 중첩 if문일때에 else 가 오면 가장 근접한 if와 대응이 된다.if( a <= 1 ){if(b <= 2){System.out.print("all true");}}다중 if 문 - 판단해야하는 조건식이 여러개 일때 사용하는 구문 if( a < 1 ){System.out.print("true");}else if( a < 2 ){System.out.print("false");}else{System.out.print("?");}※ 판단해야하는 case가 여러가지 일때에 if~else if를 사용할수 있지만, 문장구조가 복잡해지고 읽기가 쉽지 않음
그럴때는 switch case를 사용하면 좀 더 간결하게 표현 할 수 있다.
switch ~ case 문
기본형식
switch(항){ case 값1:명령어1; break; case 값2:명령어2; break; case 값3:명령어3; break; default:명령어n; // 마지막 디폴트는 브레이크를 안 걸어도 무관하다 }
특징 예제 (a = 1, b = 2) 항 영역에는 변수나
변수에 변수 끼리 이용한 수식이 올 수있다.
(수식이 항에는 올 수 없다. 컴파일 오류)// [가능] 변수형 항 1switch(a){...}
// [가능] 변수형 항 2int c = a + b;switch(c){...}
// [불가] 변수를 이용한 수식 항switch(a = b){...}case에 부합하는게 없으면 default를 읽는다. int c = a + b; // 1 + 2 = 3
switch (c) {case 1:System.out.println("결과는 1입니다.");break;case 2:System.out.println("결과는 2입니다.");break;case 4:System.out.println("결과는 4입니다.");break;default:System.out.println("결과는 1, 2, 4가 아닙니다.");}if문처럼 부합하는걸 찾으면 실행하고 끝나는 것처럼 보이지만,
case는 끝까지 수직으로 한 사이클을 읽는다.
(fall through 형식, break 가 없는 식)int c = a + b; // 1 + 2 = 3
switch (c) {case 1:System.out.println("결과는 1입니다.");case 2:System.out.println("결과는 2입니다.");case 3:System.out.println("결과는 3입니다.");case 4:System.out.println("결과는 4입니다.");default:System.out.println("결과는 알 수 없습니다.");}만약 부합하는걸 찾고 나가고 싶으면 break를 써준다.
(fall through 방지 형식, break 문 추가)int c = a + b; // 1 + 2 = 3
switch (c) {case 1:System.out.println("결과는 1입니다.");break;case 2:System.out.println("결과는 2입니다.");break;case 3:System.out.println("결과는 3입니다.");break;case 4:System.out.println("결과는 4입니다.");break;default:System.out.println("결과는 알 수 없습니다.");}
2. 반복문 (for, while, do~while)
: 조건에 따라서 동작시키고자 하는 명령(문장)을 선택하는 것을 말한다.
즉 특정 명령어(들)를 조건이 만족하는 동안 계속하여 반복 수행시키고자 할 때에 사용하는 문장(명령어)를 말한다.
for문
기본형식
for( 항1 ; 항2 ; 항3 ){ -------> i = 1; i<= 10; i++ 반복시킬 명령어(들) -------> target[i] } 항1 : 초기값 항2 : 조건식 항3 : 증감식
- 중첩 반복문 for(초기값 ; 조건식; 증감식){ for(초기값 ; 조건식 ; 증감식){ 명령어(들) } 명령어(들) }
while 문 ( 조건식 이후 body를 실행 )
기본형식
초기값; while( 조건식 ){ 반복시키고자 하는 명령어(들); 증감식; }
do~while문 ( body를 실행후 while을 실행한다. )
기본형식
초기값; do{ 반복시키고자 하는 명령어(들) 증감식 } while(조건식);
구분 특징 예제 (a = 1, b = 2) for 문 반복 횟수가 정해져 있을 때 사용 for (int i = 0; i < b; i++) {System.out.println("i 는 "+ i +"번 수행 됩니다.");}
// 결과// i 는 0 번 수행 됩니다.// i 는 1 번 수행 됩니다.while 문 특정 조건이 'TRUE' 일 동안 반복 int i = 0;while (i < b) {System.out.println("i 는 "+ i +"번 수행 됩니다.");i++;}
// 결과// i 는 0 번 수행 됩니다.// i 는 1 번 수행 됩니다.do~while 문 조건에 관계없이 최소 한 번은 실행 // TRUE 일 경우
int i = 0;do {System.out.println("i 는 " + i + "번 수행 됩니다.");i++;} while (i < b);
// 결과// i 는 0 번 수행 됩니다.// i 는 1 번 수행 됩니다.
// FALSE 일 경우
int i = 3;do {System.out.println("이 코드는 최소 한 번은 실행됩니다.");} while (i < b);
// 결과// 이 코드는 최소 한 번은 실행 됩니다.※ while문과 do~while문의 차이
처음부터 조건을 만족하지 않는 초기값일때에
while문은 반복문을 한번도 동작하지 않을 수 있지만
do~while문은 적어도 반복문을 한번은 실행합니다.
3. 기타( break, continue )
: 반복문 내의 특정 조건에 따라 흐름을 제어하는 역할을 말한다.
종류 설명 break - switch, 반복문(for, while, do~while)에서 사용되며 해당 body(중괄호{})를 탈출하는 용도로 사용
- 반복문 자체를 완전히 종료continue - 반복문(for, while, do~while)에서 사용되며, continue를 만나면 반복문의 증감식이나 다음 조건식을 판별하러 가게 한다.
- 특정 조건에서 현재 반복만 건너뛰고, 다음 반복으로 이동하는것
(비유하면 게임 중 특정 스테이지를 스킵하고 다음 단계로 넘어가는것)
- 즉 반복문속에서 continue를 만나면 그 다음 문장들을 동작하지 않고 다음 증감식이나 조건식을 판별하러 간다.
(특정상황은 제외 시키고자 할 때에 사용)+ 번외
반복문의 종류가 3가지 있는데 (for, while, do~while) 어떨때 어떤것을 쓰는게 더 좋은지?
반드시 어떨때 뭐가 더 좋아라는 것은 없지만,
대체로 횟수가 분명할 때에는 for를 대체로 사용하고
계속 반복하여 동작시킬때에는 while, do~while을 사용하며
이때에 적어도 한번 이상 동작시킬 필요가 있다면 do~while문을 사용합니다. >>> do~while은 body영역부터 움직이기 때문
반응형'IT > JAVA' 카테고리의 다른 글
[무작정 기록] 배열 (0) 2025.04.11 [무작정 기록] 연산자 (0) 2025.03.11 [무작정 기록] 데이터 타입 (1) 2025.03.07 [무작정 기록] JAVA용어 정리 (0) 2025.03.07 [무작정 기록] 자바란? (0) 2025.02.12