Java의 정석 제 4 장 조건문과 반복문 Java 정석 2009. 6. 28 남궁성 강의 castello@naver.com Chapter 4. 조건문과 반복문 http://www.javachobo.com Java의 정석 제 4 장 조건문과 반복문 안녕하십니까? 자바의 정석의 저자 남궁성입니다. 지금부터 제4장 조건문과 반복문의 강의를 시작하겠습니다. 2009. 6. 28 남궁성 강의 castello@naver.com
Java 1. 조건문 1.1 조건문(if, switch) 1.7 Math.random() 1.2 if문 1.3 중첩 if문 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1. 조건문 1.1 조건문(if, switch) 1.7 Math.random() 1.2 if문 1.3 중첩 if문 1.4 switch문 1.5 중첩 switch문 1.6 if문과 switch문의 비교 2. 반복문 2.1 반복문(for, while, do-while) 세부목차인데요. 이 강의는 이와 같은 순서로 진행될 것입니다. 2.2 for문 2.6 do-while문 2.3 중첩 for문 2.7 break문 2.4 while문 2.8 continue문 2.5 중첩 while문 2.9 이름 붙은 반복문과 2.6 do-while문 break, continue
1. 조건문(if, switch) Java 정석 의 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1. 조건문(if, switch)
Java 1.1 조건문 – if, switch 정석 - 조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.1 조건문 – if, switch if(조건식) { 문장들 } - 조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성 - Java에서 조건문은 if문과 switch문 두 가지 뿐이다. - if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려한다. - 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많다. 조건문은 … 조건식의 결과에 따라서 수행될 문장이 달라지게 할 수 있는 문장입니다. 조건문은 조건식과 실행될 하나의 문장 또는 블록으로 구성되어 있습니다. Java에서 조건문은 if문과 switch문 두 가지 밖에 없고요. switch문은 if문에 비해 제약조건이 많기 때문에, 주로 if문을 많이 사용합니다만… 경우의 수가 많은 경우 가능하면 switch문을 사용하도록 노력해야 합니다. 먼저 if문으로 코드를 작성해보고… 경우의 수가 많아서 코드가 복잡해졌다면 switch문으로 바꿀 수 없는지 고민해보세요. 아래의 코드를 보면… if문과 switch문을 사용해서 정수형 변수 num의 값에 따라 수행될 문장이 달라지도록 했습니다. 만일 변수 num의 값이 9라면, if문은 첫번째 조건식을 먼저 계산하고, num의 값이 1이 아니니까 두번째 조건식을 계산합니다. 여기서도 역시 Num의 값이 6이 아니니까 다시 세번째 조건식으로 넘어가서… 이번엔 조건식의 결과가 true이므로 LG라는 글자를 화면에 출력하고 if문을 벗어나게 됩니다. 반면에 오른쪽의 switch문은 if문과 처럼 여러 조건식을 계산할 필요 없이, num의 값에 따라 곧바로 해당 case문으로 이동해서 LG라는 글자를 화면에 출력하고 switch문을 벗어납니다. 이와 같이 경우의 수가 많을 때는 if문 보다는 switch문이 더 간결하고 효율적이라는 것을 알 수 있습니다. 4 4
Java 1.2 if문 정석 - if문은 if, if-else, if-else if의 세가지 형태가 있다. Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.2 if문 - if문은 if, if-else, if-else if의 세가지 형태가 있다. - 조건식의 결과는 반드시 true 또는 false이어야 한다. 이번엔 if문의 다양한 형태에 대해서 살펴보겠습니다. If문에는 if, if-else, if-else if의 세가지 형태가 있는데요. 조건식의 연산결과에 따라 실행될 문장 또는 블록이 달라집니다. If문의 조건식은 최종 연산결과가 반드시 boolean타입의 값, 즉 true 또는 false이어야 합니다. 여기서처럼 간단하게 if문만 있는 경우에는… 조건식의 결과가 true이면 블록 내의 문장이 수행되고 False이면 if문을 벗어나 다음 문장을 수행하게 됩니다. 오른쪽에 있는 실제코드의 예를 보면… Score라는 int형 변수가 있을 때 이 변수의 값이 60보다 크면…. 조건식의 결과가 true가 되어서 If문의 블록 안에 있는 문장을 수행합니다. 그러면 “합격입니다”라고 화면에 출력되겠죠. 블록은 여러 문장을 하나로 묶을 때 사용하는 것이라서 이처럼 한 문장인 경우에는 블록을 생략하고 쓸 수 있습니다. 그래도 가능하면 블록을 사용하시고요. 블록이 많아서 코드를 알아보기 어려울 때는 생략하시는 것이 좋습니다. 그 다음은 if-else구문인데요. 조건식의 결과가 true일 때는 if문의 블록이, false일 때는 else의 블록이 실행됩니다. 그러면, 조건식의 결과에 관계없이 두 블록 중의 하나는 반드시 수행되겠죠? 오른쪽의 코드를 보면… 변수 score의 값이 60보다 크면 ‘합격입니다’라고 출력하고, 60보다 작거나 같으면… else블럭의 문장이 수행되어 불합격입니다. 라고 출력할 것입니다. 이처럼 If-else구문을 사용하면 조건식의 결과가 참일 때와 거짓일 때… 두가지 경우의 수에 대해서 처리가 가능하고요. 세가지 이상의 경우의 수에 대해서는 if-else if구문을 사용하면 됩니다. If-else if구문에서는 둘 이상의 조건식을 사용할 수 있습니다. 이때 조건식의 개수는 제한이 없습니다. 필요한 만큼 else-if와 조건식을 추가해주기만 하면 되고요. 마지막의 else블럭은 필요에 따라 생략할 수 있습니다. 조건식1 다음의 블록은 조건식1의 결과가 true일 때 수행되고요. 블럭내의 모든 문장을 수행하고 나면 if-else if구문 전체를 빠져나갑니다. 만일 조건식1의 결과가 false이면 두번째 조건식을 확인합니다. 두번째 조건식이 true이면 이 블록의 문장들이 수행됩니다. 이블럭의 문장들은… 조건식1의 결과가 false이고 조건식2의 결과가 true일 때만 수행되겠죠. 만일 조건식2의 결과가 false라면, 그 다음 조건식인 조건식3으로 넘어갑니다. 조건식3의 결과가 true이면, 이 블록의 문장들이 수행되고 False이면 else블럭의 문장들이 수행됩니다. if-else if의 모든 조건식의 결과가 false일 때 else블럭의 문장들이 수행되는 것이죠. 말로 설명하는 것보다 if-else if구문이 실제 사용된 예를 보시는 것이 더 이해가 쉬울 겁니다. 오른쪽의 if-else if구문의 사용 예를 보시면… 변수 score의 값에 따라서 등급을 화면에 출력하는 코드입니다. 변수 Score의 값이 90보다 같거나 크면 첫번째 조건식이 true가 되어서 A등급이라고 화면에 출력됩니다. 두 번째 조건식은 변수 score의 값이 80보다 크거나 같고… 90보다는 작다는 것입니다. 이 때 조건식을 오른쪽의 주석과 같이 쓰시면 안됩니다. 반드시 왼쪽과 같이 두 개의 조건식으로 나누어서 쓰셔야 합니다. 여기서는 제가 변수를 왼쪽에 놓고 오른쪽에는 리터럴을 놓았는데요… 코드의 가독성을 높이기 위해서는 이렇게 80 <= score && score < 90 쓰시는 것도 좋은 방법입니다. 예를 들어 변수 socre의 값이 75일 때 어떤 순서로 코드가 실행되는지 한번 살펴보겠습니다. 먼저 첫번째 조건식의 결과를 보면… 75가 90보다 작으니까.. False가 되겠죠. False니까 두번째 조건식으로 넘어가서 확인을 합니다. 두번째 조건식에서… 75가 80보다 작으니까 결과가 false죠. AND(&&)연산에서는 왼쪽이 false이면 오른쪽은 확인하지 않고 전체 결과를 false로 판단한다는 거 기억하시죠? 그래서 세번째 조건식으로 넘어갑니다. 세번째 조건식에서는 변수 score의 값이 60이니까 왼쪽 식의 결과도 true, 오른쪽 식의 결과도 true가 되어서 조건식 전체의 결과가 true가 됩니다. 그래서 화면에 ‘C등급’이라고 출력하고 if문 전체를 벗어납니다. 5 5
Java 1.2 if문 – 조건식의 예(example) 정석 int i = 0; Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.2 if문 – 조건식의 예(example) int i = 0; if(i%2==0) { } if((‘a’<=ch && ch<=‘z’)|| (‘A’<=ch && ch<=‘Z’)) { } if(i=0) { } if(i==0) { } if(i%3==0) { } if( i<-1 || i>3 && i<5 ) {} String str = “”; char ch = ‘ ’; str=“3”; 문자열 “3” → 문자 ‘3’ if(ch==‘ ’ || ch==‘\t’) { } if(str!=null && !str.equals(“”)) { ch = str.charAt(0); } if(ch==‘c’ || ch==‘C’) { } if(str==“c” || str==“C”) { } if(str.equals(“c”) || str.equals(“C”)) { } 이번엔 if문의 조건식으로 자주 쓰이는 것들을 몇가지 살펴보겠습니다. Int형 변수 i가 있을 때…. 변수 i가 2의 배수 인지 확인하려면 이처럼 나머지 연산자를 사용하면 됩니다. 변수 i를 2로 나눈 나머지를 구했을 때 그 결과가 0이라는 것은 i의 값이 2의 배수 또는 0이라는 의미죠. 홀수인지 짝수인지 확인할 때도 같은 조건식을 사용할 수 있습니다. 3의 배수인지 확인하려면 2대신 3을 사용하면 되겠고요. 이 조건식은 문자형 변수 ch가 공백이거나 탭일 때 참이됩니다. 아래 조건식은 변수 ch에 저장된 문자가 소문자 c또는 대문자C인지를 확인하는데 사용됩니다. 만일 문자열의 내용을 비교하고자한다면… 이와 같이 문자를 비교하는것과 같은 방법으로 할 수 없습니다. 이때는 equals라는 메서드를 써서 이와 같이 해야합니다. 변수 ch에 저장된 문자가 숫자인지 확인하는 조건식입니다. 숫자가 아닐 경우를 처리하기위해서는 조건식의 전체에 !를 붙이면 숫자가 아닌 경우가 됩니다. if(str.equalsIgnoreCase(“c”)) { } boolean powerOn=false; if(ch>=‘0’ && ch<=‘9’) { } if(!powerOn) { // 전원이 꺼져있으면... } if(!(ch>=‘0’ && ch<=‘9’)) { } if(ch<‘0’ || ch>‘9’)) { } 6 6
Java 1.3 중첩 if문 정석 - if문 안에 또 다른 if문을 중첩해서 넣을 수 있다. 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.3 중첩 if문 - if문 안에 또 다른 if문을 중첩해서 넣을 수 있다. - if문의 중첩횟수에는 거의 제한이 없다. If문 속에 또 다른 if문을 넣을 수 있습니다. 이 것을 중첩 if문이라고 하는데요 If문의 중첩 횟수에는 거의 제한이 없습니다. 테스트 해보니까… 천백번 넘게 중첩할 수 있는데 실제로 그렇게 코딩하는 경우는 없으니 제한이 없다고 생각하셔도 됩니다. 조건식1의 결과가 true면 블럭안의 문장들을 수행하겠죠. 조건식2의 결과가 true면, 이 블록의 문장들이 수행되고 false이면 중첩if문의 else블럭이 수행되겠죠. 블록의 모든 문장을 수행하고 나면 전체 if문을 빠져나옵니다. If문 속에 if문을 넣을 수 있다는 것외에는 별다른 특별한 내용은 없습니다. 중첩 if문이 실제 사용된 예를 들어서 설명하는 것으로 설명을 마칠까 합니다. 이 if문은 변수 score의 값에 따라 학점을 계산하는 것인데요… If문은 score의 값에 따라 등급을 A, B, C로 나누고… 거기서 다시 중첩 if문을 만나서 점수에 따라 +또는 –를 붙입니다. 만일 변수 score의 값을 92라고 가정하면… if문의 조건식 결과가 true가 되어 if문의 블록의 문장들이 수행되겠죠. 그래서 먼저 문자열 grade에 “A”가 저장되고요. 그 다음에 중첩 if문을 만나서 첫번째 조건식을 확인합니다. Score의 값이 92니까… 중첩 if문의 첫번째 조건식의 결과는 false가 되어, 두번째 조건식으로 넘어갑니다. 두번째 조건식의 결과는 true니까… 이 문장이 수행되어서… grade의 값은 “A-”가 됩니다. 이제는 더 이상 수행할 문장이 없으니 전체 if문을 빠져 나옵니다. 7 7
Java 1.4 switch문 정석 - if문의 조건식과 달리, 조건식의 계산결과가 int범위 이하의 정수만 가능 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.4 switch문 - if문의 조건식과 달리, 조건식의 계산결과가 int범위 이하의 정수만 가능 - 조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때까지 문장들을 수행한다.(break문이 없으면 switch문의 끝까지 진행한다.) - 일치하는 case문의 값이 없는 경우 default문으로 이동한다. (default문 생략가능) - case문의 값으로 변수를 사용할 수 없다.(리터럴, 상수만 가능) Switch문도 if문처럼 조건식의 결과에 따라서 수행되는 코드를 다르게 할 수 있습니다. If문과는 달리 switch문의 조건식에는 연산결과가 int보다 작은 타입의 정수형 값이어야 합니다. 그러니까 Byte, short, char, int이 네 가지 타입의 값만 가능합니다. 조건식을 계산해서… 그 결과와 같은 값의 case문으로 이동해서 문장들을 수행합니다. 그러다가 break문을 만나면 switch문 전체를 빠져나갑니다. 만일 조건식의 결과와 일치하는 case문이 하나도 없으면 default문으로 이동하고, default문도 없으면 Switch문 전체를 빠져나갑니다. If문과 달리 블록이 아닌 break문을 사용해서 각 case문의 끝을 구분합니다. 그래서 각 case문의 마지막에 break문을 빼먹지 않도록 주의해야 합니다. 만일 Break문이 없으면 다른 case문의 문장들까지 수행할 수도 있습니다. case문의 값으로 쓰일 수 있는 값 역시 int보다 작은 타입의 정수값이어야 하고요. 변수는 사용할 수 없습니다. 상수나 리터럴만 사용할 수 있습니다. 오른쪽의 코드에서 변수 num의 값이 1이면… 여기로 이동하고, 화면에 SK라고 출력하고 Break문을 만나서 switch문 전체를 빠져나갑니다. Num의 값이 7이면… 여기로 이동해서 “SK”를 출력하고 break문을 만나서 Switch문을 빠져 나가겠죠 만일 변수 num의 값이 4라면…. 이 값과 일치하는 case문이 없으므로… Default문으로 이동해서 unknown이라고 출력하고 switch문을 빠져나옵니다. 8 8
1.4 switch문 – 사용예(examples) Java 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.4 switch문 – 사용예(examples) 이번에는 switch문의 다양한 사용예를 살펴보겠습니다. 이 코드는 사용자의 level에 따라서 권한을 부여하는 코드인데요. 실제로 여기엔 나와 있지 않지만, grantDelete()는 사용자에게 삭제권한을 주는일을 하고 grantWrite메서드와 grandRead메서드는 각각 쓰기와 읽기 권한을 주는일을 한다고 가정합시다. Level의 값이 3이니까… 이곳으로 이동해서 grantDelete()라는 메서드를 호출합니다. Break;문이 없으니까, 그 다음 문장들을 계속해서 수행합니다. 그래서 , grantWrite메서드와 grantRead메서드를 모두 호출하고 더 이상 수행할 문장이 없어서 Switch문을 벗어나게 됩니다. Level의 값이 2라면 여기로 이동해서 쓰기와 읽기 권한을 갖게 될 것이고 Level의 값이 1이라면 여기로 이동해서 읽기 권한만을 갖게 되겠죠. 사용자의 level이 높을 수록 더 많은 권한을 갖게 되는 겁니다. 각 case문 끝에 break문을 잊지말아야 하지만 이처럼 고의적으로 break문을 생략해서 간결한 코드를 만들어 낼 수도 있습니다 이 코드는 앞의 if문을 switch문으로 바꾼 것인데요. Switch문은 if문처럼 값의 범위를 지정하지 못하고… Case문에 정수값만을 사용할 수 있기 때문에, 이렇게 많은 case문을 일일이 적어줘야합니다. 그러나… switch문의 조건식을 조금만 바꾸면 이렇게 간단하게 처리할 수 있습니다. 그래서…Swtich문의 조건식을 만들 때는 case문의 수를 줄 일 수 있는 방법이 없는지 고민해보시기 바랍니다. 9 9
Java 1.5 중첩 switch문 정석 - switch문 안에 또 다른 switch문을 중첩해서 넣을 수 있다. 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.5 중첩 switch문 - switch문 안에 또 다른 switch문을 중첩해서 넣을 수 있다. - switch문의 중첩횟수에는 거의 제한이 없다. 중첩 switch문은 중첩 if문 처럼… switch문 안에 또 다른 switch문을 넣는 것을 말합니다. 아래의 코드를 보시면 switch문에 또 다른 switch문이 들어가 있죠? 그런데 If문의 중첩과는 달리 switch문의 중첩은 잘 사용되지 않습니다. 이런 코드도 가능하다는 것 정도만 알아두고 넘어가면 되겠습니다. 왼쪽의 코드에서 중첩switch문을… if문을 사용해서 변경하면 오른쪽과 같습니다. 10 10
Java 1.6 if문과 switch문의 비교 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.6 if문과 switch문의 비교 - if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려한다. - 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많다. - if문 보다 switch문이 더 간결하고 효율적이다. 지금까지 배운 것처럼… 조건문에는 if문과 switch문… 모두 두 개가 있죠. 이 둘 중에서 주로 사용되는 것은 if문입니다. 다만 if문은 경우의 수가 많아질수록 복잡해지기 때문에 이럴 때는 가능하면 switch문을 사용하도록 노력해야 합니다. 아래의 코드와 같은 경우 if문보다 switch문을 사용하는 것이 더 좋겠죠. Switch문은 if문보다 제약이 많기 때문에… 모든 switch문은 if문으로 변경이 가능하지만, 모든 if문이 switch문으로 변경가능한 것은 아닙니다. 만일 num의 값이 9라면… if문에서는 첫번째 조건식을 계산하고… 결과가 false니까 두번째 조건식을 검사해서… 또 결과가 false니까 세번째 조건식을 검사해서 이번엔 True니까.. 화면에 LG라는 글자를 출력하고 if문 전체를 벗어나지만… Switch문에서는 num의 값과 일치하는 case문으로 직접 분기해서 화면에 글자를 출력하고 Break문을 만나 switch문 전체를 빠져나오므로… If문보다 더 효율적입니다. 11 11
Java 1.7 Math.random() 정석 - Math클래스에 정의된 난수(亂數) 발생함수 Chapter 4. 조건문과 반복문 http://www.javachobo.com 1.7 Math.random() - Math클래스에 정의된 난수(亂數) 발생함수 - 0.0과 1.0 사이의 double값을 반환한다.(0.0 <= Math.random() < 1.0) 예) 1~10범위의 임의의 정수를 얻는 식 만들기 Random메서드는 조건문과는 관계 없는 내용이지만, 책의 예제를 만들 때 사용했기 때문에... 이번 기회에 설명하고 넘어가겠습니다. Random()메서드는 난수를 자동적으로 발생시키는 함수인데요. Math클래스에 속한 메서드라서… 앞에 클래스이름을 붙여서 호출해야 합니다. 메서드 호출에 대한 자세한 내용은 6장에서 배울 것이고요. 여기서는 그냥 random메서드를 사용하는 방법만 이해하시기 바랍니다. Random 메서드를 호출하면 0과 1사이의 double값을 반환합니다. 호출할 때마다 매번 다른 값이 반환되고요. 확률은 굉장히 낮지만 같은 값이 중복해서 반환될 수 도 있습니다. 단, 0은 포함되고 1은 포함되지 않습니다. 이 식을 잘 이용하면 원하는 범위의 난수를 얻을 수 있습니다. 예를 들어서 1~10의 범위에 속한 임의의 정수를 얻으려면… 이 식의 각 변에 10을 곱합니다. 그러면 이렇게 되겠죠. 그 다음에 각 변을 정수형… int형으로 형변환합니다. 그러면… double형 값인 0.0과 10.0은 각각 0과 10이 됩니다. 마지막으로 각 변에 1을 더하면… 이렇게 되겠죠? 1은 포함되고 11은 포함되지 않기 때문에… 이 식을 통해서 얻을 수 있는 난수의 범위는 1부터 10까지의 정수가 됩니다. 실제 코드를 예로 들면… 이 문장이 수행되면… int형 변수 score에는 1과 10사이의 임의의 값이 저장될 것입니다. 그 값이 어떤 것일지는 아무도 모르고요. 매번 프로그램을 실행할 때마다 다른 결과를 얻을 것입니다. 이와 같은 방법으로 하면… 여러분들이 원하는 범위의 난수를 어렵지 않게 얻을 수 있을 겁니다. 12 12
2. 반복문(for, while, do-while) Java 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2. 반복문(for, while, do-while) 13
2.1 반복문 – for, while, do-while Java 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.1 반복문 – for, while, do-while - 문장 또는 문장들을 반복해서 수행할 때 사용 - 조건식과 수행할 블럭{} 또는 문장으로 구성 - 반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용한다. - for문과 while문은 서로 변경가능하다. - do-while문은 while문의 변형으로 블럭{}이 최소한 한번은 수행될 것을 보장한다. 반복문에는 for문, while문, do-while문 이렇게 세가지가 있는데요. 사실 Do-while문은 while문의 변형이기 때문에 반복문은 For문과 while문 두 가지가 있다고 볼 수 있겠습니다. 반복문은 이름 그대로 문장 또는 문장들을 반복하기 위한 것입니다. 예를 들어 이처럼 1부터 5까지를 화면에 출력하는 코드를… Do-while문을 이용하면 이렇게… While문을 이용하면 이렇게… For문을 이용하면 이렇게… 간단히 바꿀 수가 있습니다. While문과 do-while문은 If문 처럼 조건식과 수행할 블록 또는 문장으로 구성되있고요. For문은 조금 더 복잡합니다. (조건식과 블록을 펜으로 표시한다.) While문은 조건식을 먼저 검사하고 블록의 문장들을 수행하는데… do-while문은 그와 반대로 블럭내의 문장들을 먼저 수행하고 조건식을 검사합니다. 반복회수가 중요한 경우에는 for문을 사용하고요. 그 외에는 while문을 사용합니다만… 반드시 그렇게 해야하는 것은 아니고요. For문과 while문은 서로 변경이 가능하기 때문에 어느 쪽을 사용해도 괜찮습니다. 그저 상황에 맞게 잘 선택해서 사용하시면 됩니다. do-while문은 while문의 변형으로… 블록 또는 문장이 최소한 한번은 수행될 것을 보장합니다. 블럭내의 문장들을 먼저 수행하고 조건식을 검사하니까요… 반면에 for문이나 while문은 조건식의 결과에 따라 블록 또는 문장이 한번도 수행되지 않을 수 있습니다. 이제 각 반복문에 대해 자세히 알아보도록 하겠습니다. 14 14
Java 2.2 for문 정석 - 초기화, 조건식, 증감식 그리고 수행할 블럭{} 또는 문장으로 구성 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.2 for문 - 초기화, 조건식, 증감식 그리고 수행할 블럭{} 또는 문장으로 구성 예) 1부터 10까지의 정수를 더하기 i sum 1 2 3 4 ... 10 For문은 while문에 비해 조금 복잡한데요… 조건식과 수행될 블록 외에…. 초기화와 증감식 부분이 더 있습니다. For문이 수행되면 먼저 초기화가 수행되고… 그 다음에 조건식을 계산하고.. 그 결과가 true이면 블록의 문장들을 수행합니다. 만일 조건식의 결과가 false이면 바로 for문을 벗어납니다. 그 다음에 증감식을 수행하고 다시 조건식으로 돌아가서… 조건식의 결과가 false가 될 때까지… 계속해서 2, 3, 4, 의 과정을 반복합니다. For의 의미가 영어로 ‘~동안’이라는 의미 잖아요? 그래서 조건식을 만족하는 동안, 즉 조건식의 결과가 true인 동안… 반복합니다. While도 마찬가지고요. 자… 그러면…이제 For문을 이용해서 1부터 10까지의 정수를 더하는 코드의 실행과정을 살펴보겠습니다. 먼저 1부터 10까지의 합을 저장할 변수 sum을 선언하고 0으로 초기화 합니다. 그 다음엔 for문으로 가서 먼저 초기화 부분이 수행되서 변수 i가 만들어지고 1이 저장됩니다. 그 다음에 조건식으로 가서… i의 값이 10보다 작으니까… true가 되어서 블럭안의 문장이 수행되겠죠. I의 값인 1이 sum에 더해서 저장되니까 0 + 1의 결과인 1이 sum에 저장됩니다. 그 다음엔… 증감식으로 가서… i의 값이 1증가됩니다. 이제 i의 값은 2가 되겠죠. 그리고 다시 조건식으로 가서… i가 아직 10보다 작으니까… 결과가 true가 되어서 다시 sum에 i의 값을 더해서 저장합니다. 이런식으로 계속 반복하다가…. I의 값이 10이되면… 조건식이 i가 10보다 작거나 같다…니까… true가 되어 i의 값이 sum에 더 해집니다. 그리고 증감식으로가서 i의 값이 1증가해서 11이 되겠죠. 그 다음에 조건식으로 가면… 이젠 i의 값이 11이라서 조건식의 값이 거짓, 즉 false가 됩니다. 그래서 for문 전체를 빠져옴으로써 반복을 끝내게 됩니다. i sum 15 15
Java 2.2 for문 – 작성예(examples) 정석 의 Chapter 4. 조건문과 반복문 ←에러발생 16 16 http://www.javachobo.com 2.2 for문 – 작성예(examples) ←에러발생 16 16
Java 2.3 중첩for문 정석 - for문 안에 또 다른 for문을 포함시킬 수 있다. 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.3 중첩for문 - for문 안에 또 다른 for문을 포함시킬 수 있다. - for문의 중첩횟수에는 거의 제한이 없다. 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 … 2 * 9 = 18 3 * 1 = 3 3 * 2 = 6 9 * 8 = 72 9 * 9 = 81 i * j = i*j 111 112 113 121 122 123 … 331 332 333 ijk 17 17
Java 2.4 while문 정석 - 조건식과 수행할 블럭{} 또는 문장으로 구성 의 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.4 while문 - 조건식과 수행할 블럭{} 또는 문장으로 구성 While문 내에서 카운터로 사용되는 변수를 초기화 하지 않도록 주의해야합니다. 18 18
Java 2.5 중첩while문 정석 - while문 안에 또 다른 while문을 포함시킬 수 있다. 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.5 중첩while문 - while문 안에 또 다른 while문을 포함시킬 수 있다. - while문의 중첩횟수에는 거의 제한이 없다. 19 19
Java 2.6 do-while문 정석 - while문의 변형. 블럭{}을 먼저 수행한 다음에 조건식을 계산한다. Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.6 do-while문 - while문의 변형. 블럭{}을 먼저 수행한 다음에 조건식을 계산한다. - 블럭{}이 최소한 1번 이상 수행될 것을 보장한다. 문자 코드 ... A 65 B 66 C 67 a 97 b 98 c 99 x 120 20 20
Java 2.7 break문 정석 - 자신이 포함된 하나의 반복문 또는 switch문을 빠져 나온다. Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.7 break문 - 자신이 포함된 하나의 반복문 또는 switch문을 빠져 나온다. - 주로 if문과 함께 사용해서 특정 조건을 만족하면 반복문을 벗어나게 한다. i sum 1 2 3 6 ... 13 91 14 105 21 21
Java 2.8 continue문 정석 - 자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.) Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.8 continue문 - 자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.) - continue문 이후의 문장들은 수행되지 않는다. 22 22
2.9 이름 붙은 반복문과 break, continue Java 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 2.9 이름 붙은 반복문과 break, continue - 반복문 앞에 이름을 붙이고, 그이름을 break, continue와 같이 사용함으로써 둘 이상의 반복문을 벗어나거나 반복을 건너뛰는 것이 가능하다. 23 23
감사합니다. http://www.javachobo.com Java 정석 의 정석 Chapter 4. 조건문과 반복문 http://www.javachobo.com 감사합니다. 더 많은 동영상강좌를 아래의 사이트에서 구하실 수 있습니다. http://www.javachobo.com 이것으로 제 4장 조건문과 반복문에 대한 강의를 모두 마치겠습니다. 감사합니다. 이 동영상강좌는 비상업적 용도일 경우에 한해서 저자의 허가없이 배포하실 수 있습니다. 그러나 일부 무단전제 및 변경은 금지합니다. 관련문의 : 남궁성 castello@naver.com