260 likes | 505 Views
5. 제어문. 5.1 선택문 5.2 반복문 5.3 제어의 이동. 5.1 선택문. 자바는 선택 논리의 제공을 위해 if, switch 문 제공 if-else 문 if ( 조건절) 문장1; [ else 문장2;] ] if-else 문 예 int a,b; boolean flag; flag = false; // ........ 생략 if (a < b) flag = true; System.out.println("Flag is" + flag);. 5.1 선택문. if-else 문 예 int a,b;
E N D
5. 제어문 5.1 선택문 5.2 반복문 5.3 제어의 이동
5.1선택문 자바는 선택 논리의 제공을 위해 if, switch문 제공 if-else문 if (조건절) 문장1; [else 문장2;]] if-else문 예 int a,b; boolean flag; flag = false; // ........생략 if (a < b) flag = true; System.out.println("Flag is" + flag);
5.1선택문 if-else문 예 int a,b; boolean flag; // ........생략 if (a < b) flag = true; else flag = false; System.out.println("Flag is" + flag);
5.1선택문 if-else문 예 boolean dataAvailable; // ... if (dataAvailable) ProcessData(); else waitForMoreData();
5.1선택문 if-else문 예 int bytesAvailable; // ... if (bytesAvailable > 0) { ProcessData(); bytesAvailable -= n; } else { waitForMoreData(); bytesAvailable = n; }
5.1선택문 내포된 if문의 예 if(i == 10) { if(j < 20) a = b; if(k > 100) c = d; else a = c; // 같은 블록 내에서 가장 가까운 if(k>100)과 연관된 else문 } else a = d; // 같은 블록 내에서 가장 가까운 if(i == 10)과 연관된 else문
5.1선택문 If-else-if 문 if (조건절) 문장1; else if(조건절) 문장2; else if(조건절) 문장3; ... ... else 문장n;
5.1선택문 switch 문 switch (수식) { case 값1: 처리 문장들; break; case 값2: 처리 문장들; break; ........... case 값n: 처리 문장들; break; default: 묵시적으로 처리해야 하는 문장들; }
5.1선택문 • 내포된 switch문 예 switch(count) { case 1: switch(flag) { //내포된 switch문 case 0: System.out.println("flag is zero"); break; case 1: // switch(count)의 case 1과 아무런 상관이 없다. System.out.println("flag is one"); break; } System.out.println("내포된 switch문 실행"); break; case 2: .....................
5.2반복문 자바는 반복 논리를 제공하기 위해 while, do-while, for문을 제공 반복될 문장이 여러 문장일 경우 “{}”를 사용하여 블록으로 지정
5.2반복문 (1) 반복문 while 조건절로 지정된 조건이 참일 동안 While 블록을 실행 while(조건절) { 반복 문장들 } 예 int a=10, b=20; while(a>b) System.out.println(“이 문장은 영원히 나타나지 않는다”);
5.2반복문 (2) 반복문 do-while Do-while문은 조건을 나중에 평가한다. while 블록이 적어도 한번은 수행 do { 반복 문장들 } while(조건절);
5.2반복문 (3) 반복문 for For문은 주어진 초기값을 시작으로 조건을 만족하는 동안 블록을 수행 초기값 설정을 수행하고, 조건을 판단하여 참이면 블록을 수행하고, 증감 부분을 수행(과정 반복) for(초기값 ; 조건 ; 증감) { 반복 문장들 }
5.2반복문 예 • class For { • public static void main(String args[]) { • int n; • System.out.print("1에서 10까지의 정수 : " ); • for(n=1; n < 11; n++) • System.out.print(n + " " ); • } • }
5.2반복문 • class For { • public static void main(String args[]) { • System.out.print("1에서 10까지의 정수 : " ); • for(int n=1; n < 11; n++) • // for 문 내에서 변수를 선언하여 사용. • // 변수 n은 main() 메소드를 유효 범위로 가진다. • System.out.print(n + " " ); • } • } • class ForErr { • public static void main(String args[]) { • int n; // 변수 n 선언 • System.out.print("1에서 10까지의 정수 : " ); • for(int n=1; n < 11; n++) • // for문 내에서 n을 다시 선언. 에러 발생 • System.out.print(n + " " ); • } • } 예 :
5.2반복문 예 : • class DoubleC { • public static void main(String args[]) { • int a, b; • for(a=1, b=10; a<b; a++, b--) { • System.out.print("a = " + a); • System.out.println(" b = " + b); • } • } • }
5.2반복문 예 : • boolean flag=false; • for (int i=1; !flag; i++) { • ......// i 값을 이용하는 부분 • if (finished_routine()) flag = true; • } • class Forflag { • public static void main(String args[]) { • int i; • boolean flag = false; • i = 1; • for( ; !flag; ) { • System.out.println("i의 값은 " + i + "입니다. "); • if(i == 10) flag = true; • i++; • } • } • }
5.3 제어의 이동 프로그램 제어를 이동시키기 위해 break, continue, return문을 제공
5.3 제어의 이동 (1) 제어의 이동 - break break문의 3가지 역할 • switch문에서 switch문을 벗어나는데 사용 • 반복문에서 반복 루프를 벗어나는데 사용 • 기존 프로그램 goto문의 개선된 형태로서 사용
5.3 제어의 이동 예 • class ForBreak { • public static void main(String args[]) { • for(int i=0; i<100; i++) { • if(i == 10) break; • System.out.println(i + "자바의 세계로 오세요! " ); • } • System.out.println("Break에 의하여 for 문이 중단되었습니다."); • } • } • class WhileBreak { • public static void main(String args[]) { • int i = 0; • while(i < 100) { • if(i == 10) break; • System.out.println(i + "자바의 세계로 오세요! " ); • i++; • } • System.out.println("Break에 의하여 While 문이 중단되었습니다."); • } • }
5.3 제어의 이동 예 : • class NestedForBreak { • public static void main(String args[]) { • int i, j; • for(i=1 ; i<10 ; i++) { • for(j=1 ; j<i ; j++) { • if (j > 6) break;// 내포된 반복문만 벗어난다. • System.out.print(" * "); • } • System.out.println(); • } • } • }
5.3 제어의 이동 제어의 이동 - break label 예 • class BreakTest { • public static void main(String args[]) { • boolean t = true; • first: { • second: { • third: { • System.out.println("third 블록 'break' 문장 전"); • if(t) break second; • // second 블록 밖으로 제어가 이동 • System.out.println("third 블록 'break' 문장 후"); • } • System.out.println("second 블록 문장"); • } • System.out.println("first 블록 문장"); • } • } • }
5.3 제어의 이동 제어의 이동 - break label 예 • class BreakErr { • public static void main(String args[]) { • one: for(int i=0; i<3; i++) { • System.out.print("Pass " + i + ": "); • } • for(int j=0; j<100; j++) { • if(j == 10) break one; • // 내포된 상태가 아니므로 에러 발생 • System.out.print(j + " "); • } • } • }
5.3 제어의 이동 (2) 제어의 이동 - continue 반복문의 특정지점에서 제어를 반복문의 처음으로 보낸다. • class ContinueTest { • public static void main(String args[]) { • for(int i=0; i<10; i++) { • if (i%2 == 0) continue; • System.out.println(i + " 자바의 세계로 오세요! " ); • } • } • } • 위 프로그램은 다음과 같은 결과를 출력한다. • 1 자바의 세계로 오세요! • 3 자바의 세계로 오세요! • 5 자바의 세계로 오세요! • 7 자바의 세계로 오세요! • 9 자바의 세계로 오세요!
5.3 제어의 이동 제어의 이동 - continue label 내포된 for문에서 제어를 label로 지정된 for문의 처음으로 이동시킨다. • class ContinueLabelTest { • public static void main(String args[]) { • outer: for (int i=0; i<10; i++) { • for(int j=0; j<10; j++) { • if(j > i) { • System.out.println(); • continue outer; • // outer로 지정된 for 블록 처음으로 제어 이동 • } • System.out.print(“ “ + (i*j)); • } • } • } • }
5.3 제어의 이동 (3) 제어의 이동 - return 제어를 메소드를 호출한 곳으로 반환 • class Return { • public static void main(String args[]) { • boolean t = true; • System.out.println("알기 쉽게 해설한 자바!"); • if(t) return; • System.out.println("자바를 배워봅시다."); • } • }