컴퓨터언어 1 Java 제어문 조성일
조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문
if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;...
예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오. import java.io.*; import java.util.scanner; class IfElse { public static void main(string[] args) throws IOException { Scanner console = new Scanner(System.in); System.out.println(" 정수를입력하고 Enter 키를누루세요 "); int aaa = console.nextint(); if (aaa % 2 == 0) { System.out.println(aaa+" 는짝수입니다."); else { System.out.println(aaa+" 는홀수입니다."); console.close();
예제 2 두개의정수 a 와 b 를읽어서그중작은값을 c 에저장하여인쇄하고 c = 1 이면단수형 man 을, c > 1 이면복수형 men 을인쇄하는프로그램을작성하시오. import java.io.*; import java.util.scanner; class Condition { public static void main(string[] args) throws IOException { Scanner console = new Scanner(System.in); System.out.println(" 두정수를입력하고 Enter 키를누르세요!"); int a = console.nextint(); int b = console.nextint(); int c; c = a < b? a : b ; System.out.println("Smaller number between " + a +" and "+b+" is "+c); System.out.println("Hello "+c+(c==1? " man":" men")+ "!"); console.close();
실습 1 세개의실수를읽어서작은것부터큰순으로인쇄하는프로그램을작성하시오.
조건식 비교연산자를이용한조건식의예 조건식 값 2 <= 3 true 2 =< 3 오류 3 > 3 false 3 >= 3 true 3 = 5-2 오류 3 == 5-2 true 1.0 / 3.0 == 0.3333333 false 1 == 2 오류 문자열의비교는특정함수를사용해야한다. string1.equals(string2))
조건식 ( 계속 ) 논리연산자를이용한조건식의예 조건식 값 0 < 1 && 2 < 1 false 0 < 1 2 < 1 true 0 < 1 2 < 3 false 1 < 2 < 3 오류! (1 < 2) false
중첩 if if - else 문의중첩된형식 if ( 조건식 1) { 명령문 1; 명령문 2;... else if ( 조건식 2) { 명령문 a; 명령문 b;...... else { 명령문 x; 명령문 y;...
예제 3 ax 2 + bx + c = 0 에서 a, b, c 를입력받아그해를출력하는프로그램을작성하시오. import java.io.*; import java.util.scanner; class Equation{ public static void main(string[] args) throws IOException { double a, b, c; String s; Scanner console = new Scanner(System.in); System.out.println(" 실수 a, b, c 를입력하고 Enter 키를누르세요!"); a = console.nextdouble(); b = console.nextdouble(); c = console.nextdouble();
예제 3( 계속 ) double dd = b*b-4.*a*c; if (dd > 0.) { double[] x = new double[2]; x[0] = (-b-math.sqrt(dd))/(2.*a); x[1] = (-b+math.sqrt(dd))/(2.*a); System.out.println(x[0]+ ", else { if (dd == 0.) { double x = -b/(2.*a); System.out.println(x); else { s = "No real solution"; System.out.println(s); console.close(); "+x[1]);
실습 2 대형마켓에서한물건을많이살때가격의할인을다음과같이한다. 10 개까지는개당 1000 원 11 개이상 20 개까지는개당 900 원적용 21 개이상 30 개까지는개당 800 원적용 31 개이상 50 개까지는개당 700 원적용 50 개이상은 600 원적용 물건의개수를입력받아전체가격을계산하는프로그램을작성하시오.
switch case break 문 switch ~ case ~ break 문의형식 switch ( 변수 ) { case 변수값 1 : 명령문 ; 명령문 ;... ; break; case 변수값 2 : 명령문 ; 명령문 ;... ; break;... case 변수값 n : 명령문 ; 명령문 ;... ; break; default : 명령문 ; 명령문 ;... ;
예제 4 사용자가 0, 1, 2 를입력하면각각 Yes, No, Unknown 을출력하고그외의숫자를입력하면 Thank you 를출력하는프로그램을작성하시오. import java.io.*; import java.util.scanner; public class CaseTest { public static void main(string[] args) throws IOException { final int YES = 0; final int NO = 1; final int UNKNOWN = 2; Scanner console = new Scanner(System.in); System.out.println(" 정수를입력하고 Enter 키를누르세요!"); int answer = console.nextint();
예제 4( 계속 ) switch (answer) { case YES: System.out.println("You answered Yes"); break; case NO: System.out.println("You answered No"); break; case UNKNOWN: System.out.println("You answered Unknown"); break; default: System.out.println("Thank you."); break;
실습 3 실습 2 의내용을 switch 문을이용하여프로그램으로작성하시오.
반복문 : for, while 반복되는명령문을처리 for 문, while 문, do... while 문
for 문 for 문의형식 for ( 시작문 ; 조건식 ; 증감문 ) { 명령문 1; 명령문 2;... 명령문 n; 명령문 a;
for 문 ( 계속 ) for 문의예 for 문 i 값의변화 for (i = 0; i < 5; i++) 0 1 2 3 4 for (i = 5; i > 0; i--) 5 4 3 2 1 for (int i = 0; i < 10; i = i + 2) 0 2 4 6 8 for (i = 1; i < 10; i = i * 2) 1 2 4 8 for (i = 0; ; i = i + 2) 0 2 4 6 8... for (i = 0; i <= 30; )
예제 5 키보드에서 5 개의실수형자료를입력받아합계와평균을계산하는프로그램을작성하시오. import java.util.scanner; class Sum1{ public static void main(string[] args) { int n; double a, total, average; total = 0.; Scanner console = new Scanner(System.in); System.out.println("5 개실수를입력하세요!"); for (n = 1; n <= 5; n++) { a = console.nextdouble(); total = total + a; average = total / (double) (n-1); System.out.println("Sum = "+total+" Average = "+average);
예제 6 처음 1 월을예금하고매일 2 배씩늘려가며예금을할경우에 30 일동안의예금의합계액을계산하는프로그램을작성하시오. public class Sum2 { public static void main(string[] args) { int i, deposit, sum = 0; deposit = 1; for (i=1; i<=30; i++, deposit *=2); { sum = sum + deposit; System.out.println("Total deposit = "+ sum);
실습 4 은행에 10,000 원을연리 5% 복리로예금하였을때 10 년후원리합계를구하는프로그램을작성하시오.
while 문 while 문의형식 while ( 조건식 ) { 명령문 1; 명령문 2;... 명령문 n; 명령문 a; 주의 : 조건식이 false 가되는지반드시확인.
while 문과 for 문의차이 for 문을이용한 1 에서 n 까지의합 int sum = 0; for (int i = 1; i <=3; i++) { sum = sum + i; while 문을이용한 1 에서 n 까지의합 int sum = 0; int i = 1; while (i <= 3) { sum = sum + i; i++;
예제 7 9 i=0 i 2 의계산을하는프로그램을작성하시오. public class ForWhile { public static void main(string[] args) { int end =10; int sum = 0; int ii =0; while (ii < end) { sum = sum + ii*ii; System.out.print(ii+" "); ii++; System.out.println("Sum = "+sum);
do... while 문 do ~ while 문의형식 do { 명령문 1; 명령문 2;... 명령문 n; while ( 조건식 ) ;
예제 8 do while 문과 while 문의역할을비교하시오. class DoWhileDo { public static void main(string[] args) { int II = 5; boolean bln = false; do { System.out.println("I am in DO"); System.out.println("II="+II); while (bln); // end do-while while (bln) { System.out.println("I am in WHILE"); System.out.println("II="+II);
실습 5 while 문을사용하여 10! 을정수형으로계산하는프로그램을작성하시오.
예제 9 ( 중첩반복문 ) 구구단표를인쇄하는프로그램을작성하시오. 1단 1 2 3 7 8 9 2단 2 4 6 14 16 18........ 8단 8 16 24 56 64 72 9단 9 18 27 63 72 81
예제 9 ( 중첩반복문 - 계속 ) 구구단표를인쇄하는프로그램을작성하시오. class NestedLoop { public static void main(string[] args) { int i, j; for (i = 1; i <= 9; i++) { System.out.println(i+" 단 "); for (j = 1; j <= 9; j++) { System.out.print(i*j+" "); System.out.println();
분기문 : break, continue break 문 : 반복문을중도에중지시키는명령. for (int i=0; i < 10; i++) { if (i%2 == 1) break; System.out.println(i); continue 문 : 일부를생략하고반복하라는명령. for (int i=0; i < 10; i++) { if (i%2 == 1) continue; System.out.println(i);
예제 10 다음프로그램을통해 break 문과 continue 문의역활을확인하시오. class ConBrk { public static void main(string[] args) { for (int j=5; j >0 ; j--) { Here: for (int i=0; i < 10; i++) { int num = j*10 + i; if (num % 2 == 1) continue Here; // if (num % 2 == 1) break Here; System.out.println(num);
제어문을활용한수학계산 Taylor 급수 f (x) = n=0 f (n) (a) (x a) n n! = f (a) + f (a)(x a) + f (a) (x a) 2 +, 2! 여기서 f (x) 는 x = a 에서미분가능하다. 참고. a = 0 일때는 Maclaurin 급수라고부른다.
예제 11 지수함수 e x 의 Maclaurin 급수는다음과같다. e x = 1 + x + x 2 n! + + x n n! + 이무한급수에서일반항 xn 이아주작으면더해주는 n! 것을중지하고함수값을얻는프로그램을작성하시오.
예제 11( 계속 ) e x 의 Maclaurin 급수 class MyExp{ public static void main(string[] args) { Scanner console = new Scanner(System.in); double x = console.nextdouble(); double term = 1.; double ex = 1; double n = 1; while (Math.abs(term) > 1e-10) { term = term*x/n; n++; ex = ex + term; System.out.println(ex); System.out.println(Math.exp(x));
실습 6 이항분포함수가다음과같다. ( ) n f (x) = p x (1 p) n x x n = 10, p = 0.3, x = 2 일때의확률을계산하시오. n = 10, p = 0.3, x = 2 일때의누적확률을계산하시오.
실습 7 피보나치 (Fibonacci) 수열은다음과같이정의된다. f 1 = 1, f 2 = 1 f n = f n 1 + f n 2, n > 2 n 을입력받아 f 1, f 2,..., f n 을인쇄하는프로그램을작성하시오.