소개
이 랩에서는 Java 제어 흐름 구조의 세계를 탐구합니다. 이는 프로그램이 결정을 내리고 작업을 반복할 수 있게 해주는 필수적인 도구입니다. 다음 세 가지 주요 개념을 다룰 것입니다.
- 의사 결정을 위한 If-else 문
- 알려진 횟수만큼 작업을 반복하기 위한 For 루프
- 반복해야 하는 횟수를 알 수 없을 때 작업을 반복하기 위한 While 루프
이 용어들이 익숙하지 않더라도 걱정하지 마세요. 각 용어를 자세히 설명해 드리겠습니다. 이 랩이 끝나면 결정을 내리고 작업을 반복할 수 있는 Java 프로그램을 작성할 수 있게 되어 코딩 여정에서 완전히 새로운 가능성을 열 수 있습니다!
If-Else 문 이해하기
날씨 조언을 제공하는 프로그램을 만든다고 상상해 보세요. 온도에 따라 다른 조언을 제공하고 싶습니다. 이럴 때 if-else 문이 유용합니다!
WebIDE 에서
WeatherAdvisor.java파일을 엽니다. 다음 코드를 볼 수 있습니다.public class WeatherAdvisor { public static void main(String[] args) { int temperature = 28; // 섭씨 온도 System.out.println("The temperature is " + temperature + "°C."); // TODO: 날씨 조언을 제공하기 위해 여기에 if-else 문을 추가하세요. } }다음은 코드 분석입니다.
public class WeatherAdvisor:- 이 줄은 WeatherAdvisor 라는 public 클래스를 선언합니다.
- Java 에서 모든 프로그램은 최소 하나의 클래스를 가져야 하며, 클래스 이름은 파일 이름과 일치해야 합니다 (이 경우 WeatherAdvisor.java).
public static void main(String[] args):- 이것은 모든 Java 프로그램의 시작점인 main 메서드입니다.
public: 이 메서드는 클래스 외부에서 액세스할 수 있습니다.static: 이 메서드는 클래스의 특정 인스턴스가 아닌 클래스 자체에 속합니다.void: 이 메서드는 값을 반환하지 않습니다.main: 이것은 메서드의 이름입니다. Java 는 프로그램을 실행하기 위해 "main"이라는 메서드를 찾습니다.(String[] args): 이 메서드는 명령줄 인수를 허용합니다 (이 예제에서는 사용하지 않지만).
int temperature = 28;:- 이 줄은
temperature라는 정수 변수를 선언하고 값을 28 로 초기화합니다. int는 Java 에서 정수의 데이터 유형입니다.- 주석
// 섭씨 온도는 이 값이 무엇을 나타내는지 설명합니다.
- 이 줄은
System.out.println("The temperature is " + temperature + "°C.");:- 이 줄은 콘솔에 메시지를 출력합니다.
System.out.println()은 텍스트를 출력하고 새 줄로 이동하는 메서드입니다.+연산자는 문자열 연결에 사용되어 텍스트를temperature변수의 값과 결합합니다.- 마지막의
°C는 출력에 섭씨 기호를 추가합니다.
이 기본 구조는 온도를 정의하고 이를 출력하는 프로그램을 설정합니다. 온도 값에 따라 날씨 조언을 제공하기 위해 나중에 추가한 if-else 문과 같은 더 복잡한 로직을 추가하기 위한 기반을 제공합니다.
TODO 주석을 다음 코드로 바꿉니다.
if (temperature > 30) { System.out.println("It's a hot day. Remember to stay hydrated!"); } else if (temperature > 20) { System.out.println("It's a nice warm day. Enjoy the weather!"); } else if (temperature > 10) { System.out.println("It's a bit cool. You might need a light jacket."); } else { System.out.println("It's cold. Wear warm clothes!"); }
분석해 보겠습니다.
if문은 온도가 30°C 보다 높은지 확인합니다.- 그렇지 않으면 첫 번째
else if로 이동하여 20°C 보다 높은지 확인합니다. - 이것은 조건이 참이 될 때까지 또는 마지막의
else에 도달할 때까지 계속됩니다. - 이 블록 중 하나만 실행됩니다. 조건이 참이 되면 Java 는 나머지 모든 것을 건너뜁니다.
파일을 저장합니다. WebIDE 를 포함한 대부분의 IDE 에서 Ctrl+S (Mac 에서는 Cmd+S) 를 눌러 저장할 수 있습니다.
이제 프로그램을 컴파일해 보겠습니다. WebIDE 하단의 터미널에 다음을 입력합니다.
javac ~/project/WeatherAdvisor.java이 명령은 Java 에 코드를 컴파일하도록 지시합니다. 출력이 없으면 좋습니다! 오류가 없다는 의미입니다.
프로그램을 실행하려면 다음을 입력합니다.
java -cp ~/project WeatherAdvisor-cp ~/project부분은 Java 에 컴파일된 코드를 찾을 위치를 알려줍니다.다음 출력을 볼 수 있습니다.
The temperature is 28°C. It's a nice warm day. Enjoy the weather!28°C 는 20°C 보다 높지만 30°C 보다 높지 않으므로 이것은 코드와 일치합니다.
실험해 봅시다! 코드에서
temperature값을 35 로 변경한 다음 저장, 컴파일 및 다시 실행합니다. 다음을 볼 수 있습니다.The temperature is 35°C. It's a hot day. Remember to stay hydrated!온도를 15 와 5 로 변경하고, 매번 컴파일하고 실행해 보세요. 출력이 어떻게 변경되는지 확인하세요!
축하합니다! 방금 결정을 내리는 프로그램을 작성했습니다. 이것은 프로그래밍의 기본 개념이며 항상 사용하게 될 것입니다.
For 루프 사용하기
이제 for 루프에 대해 알아보겠습니다. 이는 곱셈표를 만드는 것처럼 특정 횟수만큼 무언가를 반복하려는 경우에 유용합니다!
WebIDE 에서
MultiplicationTable.java파일을 엽니다. 다음을 볼 수 있습니다.public class MultiplicationTable { public static void main(String[] args) { int number = 5; System.out.println("Multiplication table for " + number + ":"); // TODO: 곱셈표를 출력하기 위해 여기에 for 루프를 추가하세요. } }TODO 주석을 이 for 루프로 바꿉니다.
for (int i = 1; i <= 10; i++) { int result = number * i; System.out.println(number + " x " + i + " = " + result); }분석해 보겠습니다.
for (int i = 1; i <= 10; i++)는 for 루프 문입니다.int i = 1은 변수i를 생성하고 1 로 설정합니다. 이것은 처음에 한 번 발생합니다.i <= 10은 조건입니다. 이 조건이 참인 동안 루프가 계속 실행됩니다.i++는 루프가 완료될 때마다i를 1 씩 증가시킵니다.
- 루프 내부에서
number에i를 곱하고 결과를 출력합니다. - 이것은 10 번 반복되며,
i는 1 에서 10 까지 증가합니다.
파일을 저장합니다.
프로그램을 컴파일합니다.
javac ~/project/MultiplicationTable.java프로그램을 실행합니다.
java -cp ~/project MultiplicationTable5 의 곱셈표를 볼 수 있습니다.
Multiplication table for 5: 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10 = 501 에서 10 까지의 표가 어떻게 출력되었는지 확인하세요? 이것이 바로 for 루프의 작동 방식입니다!
실험해 봅시다!
number변수를 7 로 변경한 다음 저장, 컴파일 및 다시 실행합니다. 7 의 곱셈표를 볼 수 있습니다.더 많은 것을 보고 싶으신가요? for 루프에서
i <= 10을i <= 15로 변경해 보세요. 이렇게 하면 표가 10 대신 15 까지 표시됩니다.
for 루프는 정확히 몇 번 반복하고 싶은지 알 때 매우 유용합니다. 프로그래밍 여정에서 많이 사용하게 될 것입니다!
While 루프 탐구
While 루프는 미리 몇 번 반복해야 하는지 모르는 상황에 완벽합니다. 숫자 맞추기 게임을 만들기 위해 사용해 봅시다!
WebIDE 에서
GuessTheNumber.java파일을 엽니다. 다음을 볼 수 있습니다.import java.util.Random; import java.util.Scanner; public class GuessTheNumber { public static void main(String[] args) { Random random = new Random(); int numberToGuess = random.nextInt(100) + 1; // 1 과 100 사이의 임의의 숫자 Scanner scanner = new Scanner(System.in); int guess; int attempts = 0; System.out.println("I'm thinking of a number between 1 and 100. Can you guess it?"); // TODO: 숫자 맞추기 게임을 구현하기 위해 여기에 while 루프를 추가하세요. scanner.close(); } }이 코드는 플레이어가 추측할 임의의 숫자와 플레이어의 입력을 읽는 스캐너를 설정합니다.
TODO 주석을 이 while 루프로 바꿉니다.
while (true) { System.out.print("Enter your guess: "); guess = scanner.nextInt(); attempts++; if (guess < numberToGuess) { System.out.println("Too low! Try again."); } else if (guess > numberToGuess) { System.out.println("Too high! Try again."); } else { System.out.println("Congratulations! You guessed the number in " + attempts + " attempts."); break; } }분석해 보겠습니다.
while (true)는 무한 루프를 생성합니다. 중지하라고 지시할 때까지 계속 실행됩니다.- 루프 내부에서 추측을 요청하고 시도 횟수를 늘립니다.
- if-else 문을 사용하여 추측이 너무 낮은지, 너무 높은지, 또는 정확한지 확인합니다.
- 추측이 정확하면 축하 메시지를 출력하고
break를 사용하여 루프를 종료합니다.
파일을 저장합니다.
프로그램을 컴파일합니다.
javac ~/project/GuessTheNumber.java프로그램을 실행합니다.
java -cp ~/project GuessTheNumber
이제 게임을 플레이하세요! 정답을 맞힐 때까지 숫자를 계속 입력하세요. 프로그램은 너무 높거나 낮은지 알려줍니다.
이 while 루프는 정답을 맞힐 때까지 계속 실행됩니다. 몇 번의 시도가 필요할지 모르므로 여기서는 while 루프가 완벽합니다.
제어 구조 결합
마지막 과제에서는 if-else 문, for 루프, while 루프를 결합하여 소수 찾기를 만들 것입니다!
WebIDE 에서
PrimeNumberFinder.java파일을 엽니다. 다음을 볼 수 있습니다.import java.util.Scanner; public class PrimeNumberFinder { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = 0; int number = 2; System.out.print("How many prime numbers do you want to find? "); int maxPrimes = scanner.nextInt(); System.out.println("First " + maxPrimes + " prime numbers:"); // TODO: 여기에 소수 찾기 로직을 구현하세요. scanner.close(); } }TODO 주석을 이 코드로 바꿉니다.
while (count < maxPrimes) { boolean isPrime = true; for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { isPrime = false; break; } } if (isPrime) { System.out.print(number + " "); count++; } number++; }복잡해 보이지만 분석해 보겠습니다.
- 원하는 수의 소수를 얻을 때까지 while 루프를 사용하여 소수를 계속 찾습니다.
- 각 숫자에 대해 for 루프를 사용하여 소수인지 확인합니다.
Math.sqrt(number)를 최적화로 사용합니다. 숫자의 제곱근까지만 확인할 필요가 있습니다.- 제수를 찾으면 숫자가 소수가 아니라는 것을 알 수 있으므로
isPrime을 false 로 설정하고 내부 루프를 중단합니다. - for 루프 후에도
isPrime이 여전히 true 이면 숫자를 출력하고 카운트를 증가시킵니다. - 항상 마지막에
number를 증가시켜 다음 숫자로 이동합니다.
파일을 저장합니다.
프로그램을 컴파일합니다.
javac ~/project/PrimeNumberFinder.java프로그램을 실행합니다.
java -cp ~/project PrimeNumberFinder메시지가 표시되면 숫자 (예: 10) 를 입력하여 해당 수만큼의 소수를 찾습니다. 다음과 같은 출력을 볼 수 있습니다.
How many prime numbers do you want to find? 10 First 10 prime numbers: 2 3 5 7 11 13 17 19 23 29
이 프로그램은 다양한 제어 구조를 결합할 때 Java 가 얼마나 강력한지 보여줍니다. 이제 결정을 내리고, 작업을 반복하며, 복잡한 문제를 해결할 수 있는 프로그램을 만들 수 있습니다!
요약
훌륭합니다! 이 랩에서 Java 프로그래밍의 가장 중요한 개념들을 마스터했습니다.
- If-else 문: 날씨 조언 프로그램에서 결정을 내리는 데 사용했습니다.
- For 루프: 곱셈표를 만들고, 특정 횟수만큼 작업을 반복하는 데 사용했습니다.
- While 루프: 추측 게임에서 조건을 충족할 때까지 작업을 반복하는 데 사용했습니다.
- 제어 구조 결합: 소수 찾기를 만들기 위해 모든 것을 함께 사용했습니다.
이러한 제어 흐름 구조는 복잡한 프로그램의 구성 요소입니다. 이를 통해 결정을 내리고, 작업을 반복하며, 복잡한 문제를 해결하는 프로그램을 만들 수 있습니다.
기억하세요, 연습이 완벽을 만듭니다. 이러한 프로그램을 수정하거나 이러한 개념을 사용하여 새로운 프로그램을 만들어 보세요. 요일별로 다른 조언을 제공하는 프로그램을 만들 수 있습니까? 또는 100 까지의 모든 숫자에 대한 구구단을 출력하는 프로그램을 만들 수 있습니까? 가능성은 무궁무진합니다!
계속 코딩하고, 계속 배우고, 무엇보다 즐겁게 하세요! 당신은 Java 전문가가 되는 길을 잘 가고 있습니다.



