3.5 실습: 흐름 제어 프로그램 작성 – 조건문과 반복문을 활용
3.5 실습: 흐름 제어 프로그램 작성 – 조건문과 반복문을 활용하여 구구단 출력, 숫자 합계 계산 등 간단한 프로그램 작성
한 줄의 코드로도 재미있고 유익한 결과를 만들어볼 수 있어요! 자바의 조건문과 반복문을 이용해서 직접 구구단을 출력해보고, 숫자들의 합계를 계산해보는 프로그램을 만들어볼까요?
안녕하세요, 여러분! 자바 프로그래밍을 배우다 보면 “이걸로 뭘 만들 수 있지?”라는 생각이 들 때가 많아요. 그래서 오늘은 지금까지 배운 조건문과 반복문을 활용해서 실제로 돌아가는 간단한 프로그램을 만들어보려고 해요. 구구단, 숫자 합계 계산, 숫자 패턴 출력 같은 실습은 단순하지만 흐름 제어의 핵심을 직접 체험할 수 있는 아주 좋은 기회입니다. 실습을 통해 로직을 구현하고, 코드가 동작하는 원리를 하나하나 따라가다 보면 프로그래밍에 대한 자신감도 쑥쑥 올라갈 거예요. 자, 그럼 오늘도 재밌게 배워보러 가볼까요?
목차
1. 구구단 출력 프로그램 만들기 🧮
구구단 출력은 자바에서 반복문을 이용한 대표적인 실습 과제입니다. 이 예제를 통해 중첩 반복문 사용법을 자연스럽게 익힐 수 있어요.
🔢 코드 예제 – 기본 구구단 출력
for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.println(i + " x " + j + " = " + (i * j));
}
System.out.println(); // 단 구분을 위한 공백
}
위 코드는 이중 for 루프를 통해 2단부터 9단까지 출력하는 예제입니다. i는 단을, j는 각 단의 곱해지는 수를 나타내며, i와 j가 곱해진 결과를 출력합니다.
💁 주요 포인트
- 중첩 반복문 사용법 익히기 (for문 안에 for문)
- 반복문의 조건식 이해 및 출력 형식 구성
📋 구구단 출력 결과 예시
2 x 1 = 2
2 x 2 = 4
...
9 x 8 = 72
9 x 9 = 81
처음에는 단순한 반복처럼 보이지만, 반복문의 흐름을 이해하고 수정할 수 있다면 더 나아가 역순 출력이나 짝수 단만 출력 같은 다양한 응용도 가능하답니다.
📌 실습 팁
- 단과 곱해지는 수를 변수로 설정해 출력 형식의 변화를 실험해보세요.
- 짝수 단 또는 홀수 단만 출력하도록 조건문을 추가해 보세요.
- 역순으로 출력하려면 루프 조건을 어떻게 바꿔야 할지 고민해보세요.
2. 1부터 n까지 숫자 합계 구하기 💡
프로그래밍을 배우는 초반에 자주 접하게 되는 문제 중 하나가 바로 1부터 n까지의 합을 구하는 프로그램입니다. 사용자가 직접 입력한 숫자까지의 합을 반복문으로 계산하면서 흐름 제어의 핵심 개념들을 복습할 수 있어요.
🧾 코드 예제 – 사용자 입력을 이용한 합계 계산
import java.util.Scanner;
public class SumCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요: ");
int n = sc.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
System.out.println("1부터 " + n + "까지의 합: " + sum);
}
}
이 코드에서는 Scanner 클래스를 활용하여 사용자로부터 정수를 입력받고, 해당 수까지의 합을 반복문을 통해 구합니다. sum += i;
구문은 누적 덧셈의 대표적인 예시랍니다.
📌 반복문 없이 계산하는 방법도 있다?
맞아요! 반복문 없이도 가우스의 덧셈 공식을 이용하면 한 줄로 계산할 수 있어요. 그 공식은 다음과 같죠:
sum = n * (n + 1) / 2;
위 수식은 반복문을 사용하지 않고도 합을 구할 수 있는 빠른 방법이에요. 하지만 우리는 지금 조건문과 반복문을 연습하는 단계이므로 직접 반복문을 사용해보는 것이 더 중요합니다!
📊 다양한 입력에 따른 합계 출력 결과 예시
입력 값 (n) | 계산된 합계 |
---|---|
10 | 55 |
50 | 1275 |
100 | 5050 |
실제로 코드를 돌려보며 다른 숫자를 넣어보고 결과가 예상과 맞는지 확인해보는 것도 중요한 연습이에요. 조건문 없이도 단순히 반복으로 원하는 결과를 얻을 수 있다는 것이 바로 흐름 제어의 매력이죠!
3. 숫자 패턴 출력 실습 🎨
숫자나 별(*)을 이용한 패턴 출력은 반복문의 흐름을 깊이 있게 이해할 수 있는 좋은 실습 주제입니다. 중첩 반복문과 조건문을 적절히 조합해 특정 모양을 출력하는 데 도전해 볼 거예요!
🔺 코드 예제 – 삼각형 숫자 패턴
public class TrianglePattern {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " ");
}
System.out.println();
}
}
}
이 프로그램은 1부터 5까지 줄 수를 기준으로 숫자 패턴을 출력합니다. 외부 반복문이 줄 수(i), 내부 반복문이 각 줄의 내용(j)을 담당해요. System.out.print()
를 사용해 줄바꿈 없이 출력하고, System.out.println()
으로 줄바꿈을 처리합니다.
🧩 출력 예시
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
🛠 다양한 패턴 도전 과제
- 역삼각형 형태로 숫자 줄이기 (5 4 3 2 1 ...)
- 별(*)을 사용한 다이아몬드 패턴
- 숫자와 공백을 조합한 피라미드 출력
이처럼 간단한 패턴 출력에서도 반복문의 동작 흐름, 출력 형식, 공백 처리 등을 직접 조절해보는 경험이 매우 중요합니다. 단순히 코드를 따라치는 게 아니라 패턴이 어떻게 만들어지는지를 머릿속으로 먼저 그려보는 습관을 들이세요.
다음 단계에서는 이렇게 작성한 코드들을 어떻게 분석하고 흐름을 추적할 수 있는지, 디버깅 팁과 함께 살펴볼게요!
4. 흐름 제어의 구조 분석 🔍
이전 단계들에서 우리는 조건문과 반복문을 활용한 여러 예제를 작성해보았습니다. 이제는 단순히 동작하는 코드가 아닌, 그 흐름을 정확하게 이해하고 분석하는 단계로 넘어가볼게요.
🧭 흐름 분석 도식화 – 구구단 예제
구구단 예제를 간단한 순서도로 도식화하면 다음과 같은 흐름이 됩니다:
- 외부 반복문 i (2 ~ 9 반복)
- 내부 반복문 j (1 ~ 9 반복)
- 곱셈 계산 후 출력
💡 흐름 제어 분석 팁
- 코드가 실행될 때 어떤 순서로 실행되는지 출력 결과를 추적해보세요.
- 각 변수의 값이 바뀌는 타이밍에
System.out.println()
으로 디버깅을 해보세요. - 반복문 내부에 조건문을 삽입하면 어떤 조건에서 실행이 생략되는지도 함께 분석해보세요.
🔍 예시 분석 – 합계 계산 예제
합계 계산 프로그램은 반복문 안에서 누적합이 어떻게 쌓이는지를 파악하는 데 최적이에요. 매 반복마다 sum 값이 어떻게 바뀌는지 출력해보면 프로그램 흐름을 쉽게 추적할 수 있습니다.
for (int i = 1; i <= n; i++) {
sum += i;
System.out.println("i: " + i + ", sum: " + sum);
}
이렇게 디버깅 출력을 활용하면 흐름이 어떻게 작동하는지를 눈으로 확인할 수 있어요. 프로그램이 눈앞에서 살아 움직이는 느낌을 받을 수 있다는 게 참 매력적이죠!
5. 실수하기 쉬운 포인트 점검 ⚠️
처음 조건문과 반복문을 사용해 프로그램을 짤 때, 누구나 한 번쯤은 겪게 되는 실수들이 있어요. 이런 부분을 미리 알고 조심하면 디버깅 시간도 줄고, 더 빠르게 실력을 쌓을 수 있겠죠?
🚨 자주 하는 실수 리스트
- 조건식 누락 – 반복문이 무한 루프에 빠지는 경우
- 변수 초기화 실수 – 이전 실행 값이 남아 오작동하는 케이스
- 조건 순서 오류 – if-else를 올바르게 나누지 않아 의도한 흐름이 깨지는 경우
- 출력 위치 문제 – 반복문 안팎에서 출력 위치를 헷갈려 결과가 뒤섞이는 경우
🧪 실수 예제 – 무한 루프
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
// i++; ← 이 라인이 누락되면 반복 조건이 계속 true가 됩니다!
}
위 코드는 i++
가 빠져 있어서 i의 값이 변하지 않기 때문에 while 조건이 계속 true가 되고, 결과적으로 프로그램이 멈추지 않게 됩니다.
🔎 디버깅 체크리스트
- 루프 조건이 잘 정의되었는가?
- 조건문 순서에 논리 오류가 없는가?
- 변수 초기화와 갱신이 정확히 이루어지는가?
- 출력은 반복 횟수에 맞게 위치했는가?
이런 점들을 염두에 두면 프로그램이 예상과 다르게 작동할 때 빠르게 문제를 파악할 수 있어요. 결국 좋은 프로그래머란 실수도 학습의 자산으로 만드는 사람이니까요!
6. 실습 응용 팁과 연습 문제 추천 ✏️
실습을 통해 흐름 제어에 익숙해졌다면, 이제 조금 더 확장된 연습 문제에 도전해볼 시간이에요! 조건문과 반복문을 결합해 실생활 문제나 미니 알고리즘 문제를 해결해 보면서 실력을 키워볼 수 있어요.
🎯 추천 실습 과제
- 홀짝 판별기: 입력받은 숫자가 홀수인지 짝수인지 판별
- 숫자 맞히기 게임: 랜덤 숫자(1~100) 생성 후 사용자가 맞힐 때까지 반복
- 별 피라미드 출력: 입력값에 따라 높이 n인 별 피라미드 출력
📌 학습 팁
- 실습 전에 흐름도를 먼저 그려보세요. 생각 정리에 큰 도움이 됩니다.
- 작은 문제부터 시작해서 점차 복잡한 문제로 넘어가세요.
- 조건문 없이 가능한지, 반복문 없이 가능한지를 비교해보세요.
- 다른 사람의 코드를 분석해보며 새로운 방식도 배워보세요.
🧠 코딩 사고력 키우기
단순히 결과만 보고 “맞았다!” 하고 끝내지 말고, 어떻게 동작했는지, 다른 방법은 없을지, 에러가 났다면 왜 그런지까지 하나하나 짚어보는 연습이 꼭 필요해요.
코딩은 마치 퍼즐 같아서, 맞게 맞추는 순간 기분이 아주 짜릿하거든요! 오늘 배운 내용들을 바탕으로 여러분만의 작은 프로그램도 만들어보면 좋을 것 같아요.
마무리하며 💬
이번 글에서는 자바의 조건문과 반복문을 활용해 간단하지만 실용적인 흐름 제어 프로그램을 직접 구현해보는 시간을 가졌습니다. 구구단 출력, 숫자 합계 계산, 숫자 패턴 출력 등은 자바 문법의 기초를 탄탄히 다지는 훌륭한 연습 과제예요.
이런 기초 실습을 꾸준히 반복하다 보면, 자연스럽게 조건문의 분기 흐름과 반복문의 제어 방식이 몸에 익게 됩니다. 단순히 코드가 동작하는 걸 보는 것이 아니라 코드가 왜 그렇게 동작하는지를 이해하는 것이 중요해요. 그리고 이 과정을 거치면서 여러분은 더 탄탄한 프로그래머로 성장하게 될 거예요.
앞으로도 조건문과 반복문을 다양한 알고리즘 문제나 실제 프로그램 작성에 응용해 보시길 바랍니다. 다음 단계에서는 메서드와 배열을 다루는 주제로 이어지며, 본격적인 자바 프로그래밍의 핵심 구조를 익혀보게 될 거예요!