학습목표
제어문을 이해하고 프로그래밍에 적용할 수 있다.
조건문을 이해하고 프로그래밍에 적용할 수 있다.
반복문을 이해하고 프로그래밍에 적용할 수 있다.
제어문
프로그램 명령이 실행되는 순서를 제어하는 명령문
- 조건문
- 조건이 참인지 거짓인지에 따라서 실행 명령을 분리하는 것
- if
- switch
- 반복문
- 조건이 참인 동안 명령들을 반복 수행하는 것
- for
- while
- do ~ while
제어문 구조의 종류
- 순차구조 : 기본 구조로 명령문을 하나씩 위에서 아래로 순차적으로 실행
- 선택구조 : 조건식의 참과 거짓에 따라 명령문들을 분리하여 실행
- 반복구조 : 조건식이 참인 동안 명령문들을 실행
조건문
if 조건문
1. 단순 if() 문
조건식이 참일 경우 실행
if(조건식) {
...
}
2. if() ~ else 문
조건식이 참인 경우와 거짓인 경우 실행
if(조건식) {
...
} else {
...
}
3. if() ~ else if 문
여러 개의 조건식이 참이면 실행
if(조건식 1) {
...
} else if(조건식 2){
...
} else if (조건식 3){
...
}
4. if() ~ else if() ~ else 문
여러 개의 조건식이 참이면 실행되는 블록과 모든 조건식이 거짓인경우 실행되는 블록으로 구성
if(조건식 1) {
...
} else if(조건식 2){
...
} else {
...
}
if 조건문 실습
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int input;
// 단순 if()문
System.out.print("[단순 if()문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
if (input == 10)
{
input += 2;
}
input += 3;
System.out.println("계산된 값은 "+input+"입니다.");
// if() ~ else문
System.out.print("[if() ~ else문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
if (input < 10) {
input += 2;
} else {
input +=3;
}
System.out.println("계산된 값은 "+input+"입니다.");
// if() ~ else if()문
System.out.print("[if() ~ else if()문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
char result = 'F';
if (input >= 90) {
result = 'A';
} else if(input >= 80) {
result = 'B';
} else if(input >= 70) {
result = 'C';
}
System.out.println(input+" 점은 "+result+"입니다.");
// if() ~ else if() ~ else 문
System.out.print("[if() ~ else if() ~ else 문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
if (input >= 90) {
result = 'A';
} else if(input >= 80) {
result = 'B';
} else if(input >= 70) {
result = 'C';
} else {
result = 'F';
}
System.out.println(input+" 점은 "+result+"입니다.");
s.close();
}
}
switch 조건문
case문, break문, default문으로 구성됨
switch(변수 또는 수식)
{
case 상수1 :
...
break;
case 상수2 :
...
break;
default:
...
break;
}
default문
- 모든 상수값들과 "변수 또는 수식"의 값이 동일하지 않으면 실행
- 마지막에 1개만 사용
switch문 실습
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 숫자를 문자로 변경
int input;
System.out.print("[숫자를 문자로 변경] 숫자를 입력하세요(1~3) : ");
input = s.nextInt();
switch(input) {
case 1:
System.out.println("ONE");
break;
case 2:
System.out.println("TWO");
break;
case 3:
System.out.println("THREE");
break;
default:
System.out.println("ERROR");
break;
}
// 홀수와 짝수를 구분하는 프로그램
System.out.print("[홀수와 짝수 구분하기] 숫자를 입력하세요 : ");
input = s.nextInt();
switch(input % 2) {
case 0:
System.out.println(input + "는 짝수입니다.");
break;
case 1:
System.out.println(input + "는 홀수입니다.");
break;
}
}
}
반복문 이해하기
반복 횟수가 정해져 있는 경우 : for 반복문
반복 횟수가 정해져 있지 않는 경우 : while문, do~while문
무한반복
반복문이 종료되지 않고 지속적으로 반복되는 현상
- break : 반복을 종료하는 명령문
- continue : 반복을 건너뛰는 명령문
for 반복문
for(초기식; 조건식; 증감식) {
....
}
for문 실습
public class Hello {
public static void main(String[] args) {
System.out.println("[동일한 문장 반복하여 3번 출력하기]");
for(int cnt = 0; cnt < 3; cnt++) {
System.out.println("Hello");
}
System.out.println("[1에서 10까지 출력, 합계 출력]");
int sum = 0;
for(int cnt = 1; cnt < 10; cnt++) {
System.out.print(cnt+" ");
sum += cnt;
}
System.out.println("1~10까지의 합계는 "+sum);
System.out.println("[10에서 1까지 출력]");
for(int cnt = 10; cnt > 0; cnt--) {
System.out.print(cnt+" ");
}
System.out.println();
System.out.println("[1에서 10까지 홀수만 출력]");
for(int cnt = 1; cnt < 10; cnt+=2) {
System.out.print(cnt+" ");
}
System.out.println();
System.out.println("[구구단 출력]");
for(int dan = 2; dan <= 9; dan++) {
for(int cnt = 1; cnt <= 9; cnt++) {
System.out.print(dan+"*"+cnt+"="+(dan*cnt)+" ");
}
System.out.println();
}
}
}
while 반복문
반복횟수가 미리 정해지지 않은 경우 주로 사용
조건이 참인 동안 실행
while(조건식) {
...
증감식;
}
while문 실습
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int cnt = 1;
int sum = 0;
System.out.println("[1에서 10까지 출력하고, 합계 출력하기]");
while (cnt <=10) {
System.out.print(cnt+" ");
sum += cnt++;
}
System.out.println("누적합계는 "+sum+"입니다.");
System.out.println("[1에서 100까지 누적합계가 100이 넘어가는 숫자 출력하기]");
cnt = 0;
sum = 0;
while (sum < 100) {
cnt++;
sum += cnt;
}
System.out.println("count = "+cnt+" sum = "+sum);
System.out.println("[정수값을 반복해서 입력받아 화면에 출력(0 입력시 종료]");
int input;
while(true) {
System.out.println("숫자를 입력하세요(0은 종료) : ");
input = s.nextInt();
if (input == 0) break;
System.out.println("입력받은 값은 = "+input+"입니다.");
}
System.out.println("[입력받은 값이 짝수면 누적 합계, 홀수면 다시 입력 받기(0은 종료)");
input = sum = 0;
while(true) {
System.out.print("숫자를 입력하세요(0은 종료) : ");
input = s.nextInt();
if (input == 0) break;
if ((input % 2) == 1) continue; // 홀수면 반복
sum += input; // 짝수인 경우 누적 합계
}
System.out.println("짝수 합계는 "+sum);
}
}
do~while 반복문
반복횟수가 미리 정해지지 않은 경우 주로 사용
do {
....
증감식;
} while(조건식);
do~while 반복문 실습
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int sum = 0;
int cnt = 0;
int input = 0;
System.out.println("[1에서 10 사이의 값을 출력, 누적 합계 출력]");
sum = 0;
cnt = 1;
do {
System.out.print(cnt+" ");
sum += cnt;
cnt++;
} while (cnt <= 10);
System.out.println(" sum = "+sum);
System.out.println("[숫자를 반복해서 입력, 0 입력시 종료]");
input = 0;
do {
System.out.print("숫자를 입력하세요 : ");
input = s.nextInt();
} while(input != 0); // input이 0이 아니면 계속 반복
System.out.println("[구구단을 입력받아 출력하는 프로그램, 0 입력시 종료]");
int dan = 0;
do {
System.out.print("단을 입력하세요(0은 종료) => ");
dan = s.nextInt();
if (dan == 0) break;
if (dan < 2 || dan > 9) {
System.out.println("2에서 9사이를 선택하세요 : ");
continue;
}
cnt = 1;
do {
System.out.print(dan+"*"+cnt+"="+(dan*cnt)+" ");
cnt++;
} while (cnt <= 9);
System.out.println();
} while(true);
}
}
적용하기
1) do~while 문으로 메뉴를 구현하시오.
- 메뉴 : 구구단(1), 누적합계(2), 성적(3), 종료(0)
2) 구구단은 2단에서 9단까지만 실행하시오. (for문 사용)
3) 누적 합계는 1부터 누적합계를 하시오.(while문 사용)
4) 성적등급을 출력하시오.(A~F) (switch~case문 사용)
// 구구단 (for문 사용)
for (int i=2; i<10; i++) {
for(int j=2; j<10; j++) {
System.out.print(i+"*"+j+"="+(i*j)+" ");
}
System.out.println();
}
// 누적 합계 (while문 사용)
int input = 0;
int sum = 0;
while (input < 10) {
sum += input;
input++;
}
System.out.println("누적 합계는 "+sum+"입니다.");
성적등급 if문으로밖에 못하겠어서 여기까지 하고 소스파일 실습
메뉴를 구현하시오, 하고 (1) 구구단 (2) 누적합계 << 이게 뭔말인지 모르겠어서 소스파일 봤는데 1을 입력하면 구구단이 실행되고, 2를 입력하면 누적합계가 실행되는 프로그램을 만드는 거였다 ^^; 하하~
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
do {
System.out.print("구구단(1), 누적합계(2), 성적(3), 종료(0) : ");
int menu = s.nextInt();
if(menu == 0) break;
else if(menu == 1) {
System.out.print("단수를 입력하세요 : ");
int dan = s.nextInt();
if(dan >= 2 && dan <= 9) {
for (int i=1; i<=9; i++)
System.out.print(dan+"*"+i+"="+(dan*i)+" ");
System.out.println();
} else System.out.println("2에서 9 사이를 입력하세요.");
} else if(menu == 2) {
System.out.print("누적합계를 원하는 최종값을 입력하세요 : ");
int last = s.nextInt();
int sum = 0;
int cnt = 1;
while (cnt <= last) sum += cnt++;
System.out.println("1에서 "+last+"까지의 누적합계는 "+sum+"입니다.");
} else if(menu == 3) {
System.out.print("점수를 입력하세요 : ");
int grade = s.nextInt();
switch(grade / 10) {
case 10:
case 9:
System.out.print("A학점입니다.");
break;
case 8:
System.out.print("B학점입니다.");
break;
case 7:
System.out.print("C학점입니다.");
break;
case 6:
System.out.print("D학점입니다.");
break;
default:
System.out.print("F학점입니다.");
break;
}
}
} while(true);
}
}
do-while(true) 문으로 감싸서 프로그램이 계속 수행되게 만든 다음else if 블럭으로 구구단, 누적합계, 성적에 대한 프로그램을 만든다.
menu가 1 or 2 or 3일 때 큰 틀을 먼저 잡아놓고 로직을 만드는게 들여쓰기를 안 헷갈리게 할 수 있는 방법인듯 하다.
while문은 언제쯤 익숙해지려나 ^-ㅠ... 이건 내일 다시 만들어봐야지
'온라인 강좌 > 안드로이드 프로그래밍을 위한 자바기초' 카테고리의 다른 글
6차시 클래스를 이용한 객체지향 프로그래밍 기본 문법 이해하기 (0) | 2023.07.10 |
---|---|
5차시 배열의 기본 문법 이해하기 (0) | 2023.07.09 |
3차시 연산자의 기본 문법 이해하기 (0) | 2023.07.08 |
2차시 자료형과 변수의 기본 문법 (0) | 2023.07.07 |
1차시 JAVA 언어 특성 이해하기 (0) | 2023.07.06 |