소개
컴퓨터는 반복적인 작업을 자동화하는 데 자주 사용됩니다. 오류 없이 작업을 반복하는 것은 컴퓨터가 잘하고 사람이 잘 못하는 일입니다. 조건식과 마찬가지로, 루프도 서로 중첩될 수 있지만, 이렇게 하면 프로그램의 가독성이 떨어지고 성능도 좋지 않습니다. 중첩 루프는 피하도록 노력하십시오. Java 에는 세 가지 유형의 루프가 있습니다. 이 랩에서 하나씩 배우겠습니다.
컴퓨터는 반복적인 작업을 자동화하는 데 자주 사용됩니다. 오류 없이 작업을 반복하는 것은 컴퓨터가 잘하고 사람이 잘 못하는 일입니다. 조건식과 마찬가지로, 루프도 서로 중첩될 수 있지만, 이렇게 하면 프로그램의 가독성이 떨어지고 성능도 좋지 않습니다. 중첩 루프는 피하도록 노력하십시오. Java 에는 세 가지 유형의 루프가 있습니다. 이 랩에서 하나씩 배우겠습니다.
컴퓨터 과학에서 **재귀 (Recursion)**는 문제 해결이 동일한 문제의 더 작은 인스턴스에 대한 해결책에 의존하는 기술입니다 ( 반복 (iteration) 과 반대). 이 접근 방식은 재귀라고 불리며 다양한 유형의 문제에 적용될 수 있습니다. 재귀는 컴퓨터 과학의 핵심 아이디어 중 하나입니다. 재귀의 힘은 유한한 수의 문장으로 무한한 집합의 객체를 정의할 수 있다는 가능성에 분명히 있습니다. 마찬가지로, 이 프로그램에 명시적인 반복이 없더라도 유한한 재귀 프로그램으로 무한한 수의 계산을 설명할 수 있습니다.
예시:
다음 코드를 /home/labex/project/recursionTest.java 파일에 작성하십시오:
public class recursionTest{
public static int fibonacci(int n){
if(n<=2){
return 1;
}else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
public static void main(String[] args){
int res = recursionTest.fibonacci(10);
System.out.println(res);
}
}
출력:
다음 명령을 사용하여 recursionTest.java 파일을 실행하십시오:
javac /home/labex/project/recursionTest.java
java recursionTest
출력을 확인하십시오:
55
while 루프에 진입할 때, 먼저 조건이 확인됩니다. while 루프는 조건이 false 가 될 때까지 항상 실행됩니다. 구문은 다음과 같습니다:
예시:
다음 코드를 /home/labex/project/whileTest.java 파일에 작성하십시오:
public class whileTest
{
public static void main(String[] args)
{
int x = 1;
// x 가 3 보다 커지면 종료됩니다. 내부 코드는 총 3 번 실행됩니다.
while (x <= 3)
{
System.out.println("x = " + x);
// 다음 반복을 위해 매번 x 의 값을 1 씩 증가시킵니다.
x++;
}
}
}
출력:
다음 명령을 사용하여 whileTest.java 파일을 실행하십시오:
javac /home/labex/project/whileTest.java
java whileTest
출력을 확인하십시오:
x = 1
x = 2
x = 3
이 루프는 while 루프와 매우 유사하지만 한 가지 차이점이 있습니다. 조건의 값이 무엇이든, 루프는 항상 최소 한 번은 실행됩니다. 그 후 조건이 확인됩니다. 따라서, 때로는 특정 상황에 적합하지 않을 수 있습니다. 구문은 다음과 같습니다:
예시:
다음 코드를 /home/labex/project/doWhileTest.java 파일에 작성하십시오:
public class doWhileTest
{
public static void main(String[] args)
{
int x = 1;
do
{
// 아래 코드가 먼저 실행된 다음, 조건이 확인됩니다.
System.out.println("x = " + x);
x++;
}
while (x <= 3);
}
}
출력:
다음 명령을 사용하여 doWhileTest.java 파일을 실행하십시오:
javac /home/labex/project/doWhileTest.java
java doWhileTest
출력을 확인하십시오:
x = 1
x = 2
x = 3
for 루프는 다음과 같습니다:
예시:
for (init expression; condition expression; increment expression)
{
// statements here
}
for 루프의 시작을 나타내는 **init condition (초기화 표현식)**은 한 번만 실행됩니다. **Conditional expression (조건 표현식)**은 루프에 진입하기 전에 매번 확인됩니다. 이는 루프의 종료 조건을 테스트하는 데 사용되며 부울 값을 반환해야 합니다. 조건이 true 가 되면 루프 내의 문장이 실행됩니다. 그 후, **increment expression (증가 표현식)**이 실행되어 다음 반복을 위해 카운터 또는 다른 변수의 값을 수정합니다.
예시:
다음 코드를 /home/labex/project/forTest.java 파일에 작성하십시오:
public class forTest
{
public static void main(String[] args)
{
// for 루프는 x=1 부터 x<=3 까지 시작됩니다.
for (int x = 1; x <= 3; x++) {
System.out.println("x = " + x);
}
}
}
출력:
다음 명령을 사용하여 forTest.java 파일을 실행하십시오:
javac /home/labex/project/forTest.java
java forTest
출력을 확인하십시오:
x = 1
x = 2
x = 3
continue 또는 break와 같은 코드를 문장의 if 블록에서 사용하여 루프 본문에서 언제든지 루프를 종료할 수 있습니다. break는 전체 루프를 종료하는 반면, continue는 현재 반복만 종료하고 다음 반복을 수행합니다 (조건이 true 인 경우).
예시:
다음 코드를 /home/labex/project/loopTest.java 파일에 작성하십시오:
public class loopTest
{
public static void main(String[] args)
{
// for 루프는 x=1 부터 x<=3 까지 시작됩니다.
for (int x = 1; x <= 3; x++) {
if(x==2){
// 전체 루프 종료
break;
// continue 는 현재 반복만 종료하고 다음 반복을 수행합니다.
// break 표현식을 삭제하고 continue 를 사용할 수 있습니다. 출력을 확인하십시오.
// continue;
}
System.out.println("x = " + x);
}
}
}
출력:
다음 명령을 사용하여 loopTest.java 파일을 실행하십시오:
javac /home/labex/project/loopTest.java
java loopTest
출력을 확인하십시오:
x = 1
이 랩에서는 세 가지 유형의 루프를 배웠습니다. For 루프와 while 루프는 배우기 쉽지만 do-while 루프는 논리적으로 완벽하지 않습니다. 매우 신중하게 선택해야 합니다.