어서와 Java는 처음이지! 제3장선택과 반복
3가지의 제어 구조
복잡한 프로그램
조건문 조건에 따라서 여러 개의 실행 경로 가운데 하나를 선택 문장이 실행되는 순서에 영향을 주는 문장 조건에 따라서 여러 개의 같은 처리를 반복
일상 생활에서의 조건문의 예 만약 비가 오지 않으면 테니스를 친다. 만약 결석이 1/3이상이면 F학점을 받는다. 만약 시간이 없는 경우에는 택시를 탄다. 만약 날씨가 좋고 공휴일이면 공원에 산책을 간다. 점수가 60점 이상이면 합격이고 그렇지 않으면 불합격이다. 조건문은 프로그램의 흐름을 변경합니다.
if-else 문 if( 조건식 ) 문장1; else 문장2; 날씨가 좋은가? 테니스를 친다. 공부를 한다. 거짓 참 문장1; else 문장2; 조건식이 참이면 실행된다. 조건식이 거짓이면 실행된다.
if-else 선택 구조
예제: 짝수, 홀수 구별하기 키보드에서 입력받은 정수가 홀수인지 짝수인지를 말해주는 프로그램을 작성하여 보자.
예제: 두수 중 큰 수 출력하기 사용자로부터 두 개의 정수를 입력받아서 둘 중에 큰 수를 출력하는 프로그램을 작성하여 보자.
예제: 성과급 계산 하나의 예로 사원이 실적 목표를 달성하였을 경우에는 실적 목표를 초과한 금액의10%를 성과급으로 받는 프로그램을 작성하여 보자.
LAB: 성적에 따라 학점 결정하기
LAB: 인사말 출력하기
SOLUTION
switch 문 만약 가능한 실행 경로가 여러 개인 경우에는 switch 문을 사용
switch 선택 구조
예제: 정수-> 한글 사용자가 값을 입력하면 화면에 “하나”, “둘”과 같이 출력하는 코드를 작성하여 보자.
만약 break 문이 없다면
예제: 성적->학점 사용자가 자신의 성적을 입력하면 성적을 학점으로 변환하여 출력해주는 프로그램
SOLUTION
SOLUTION
switch 문에 문자열 사용 JDK 7부터는 switch 문의 제어식으로 String 객체를 사용할 수 있다. 예제: 월의 이름을 영어로 받아서, 월을 반환하는 프로그램을 작성
SOLUTION
SOLUTION
LAB: 월의 일수 출력하기
반복문 Q) 반복 구조는 왜 필요한가? A) 같은 처리 과정을 되풀이하는 것이 필요하기 때문이다. 학생 30명의 평균 성적을 구하려면 같은 과정을 30번 반복하여야 한다.
반복문의 종류
while 문 주어진 조건이 만족되는 동안 문장들을 반복 실행한다. while( 조건식 ) 문장;
while 문의 구조
예제: 환영 메시지 출력
예제: 0부터 9까지 출력하기
예제: 구구단 출력
예제: (1+2+3+...+9+10) 계산하기
do-while 문
do-while 문의 예 DoWhile1
예제: 정확한 입력받기
LAB: 최대 공약수 찾기
for 루프 정해진 횟수만큼 반복하는 구조
for 문의 구조
예제: 0부터 4까지 출력하기
예제: 정수의 합 계산하기
예제: 팩토리얼 계산하기
LAB: 약수 계산하기
SOLUTION
LAB: 난수의 합 계산하기
SOLUTION
중첩 반복문
예제 : 사각형 모양 출력하기
break 문
continue 문
LAB: 숫자 추측 게임
LAB: 로또 확률 계산 45 6 을 계산한다.
SOLUTION
LAB: 파이 구하기 파이를 계산하는 가장 고전적인 방법은 Gregory-Leibniz 무한 수열을 이용하는 것
실행 결과 반복횟수:100000 Pi = 3.141583 계속하려면 아무 키나 누르십시오 . . .
알고리즘 사용자로부터 반복횟수 loop_count를 입력받는다. 분자 = 4.0; 분모 = 1.0; sum = 0.0; while(loop_count > 0) sum = sum + 분자 / 분모; 분자 = -1.0* 분자; 분모 = 분모 + 2.0; --loop_count; sum을 출력한다.
SOURCE import java.util.Scanner; public class Triangle { public static void main(String[] args) { double divisor, divident, sum; int loop_count; Scanner sc = new Scanner(System.in); divisor = 1.0; divident = 4.0; sum = 0.0; System.out.print("반복횟수:"); loop_count = sc.nextInt(); while (loop_count > 0) { sum = sum + divident / divisor; divident = -1.0 * divident; divisor = divisor + 2; loop_count--; } System.out.println("Pi = " + sum);
Q & A