Presentation is loading. Please wait.

Presentation is loading. Please wait.

제2장 데이터 및 수식.

Similar presentations


Presentation on theme: "제2장 데이터 및 수식."— Presentation transcript:

1 제2장 데이터 및 수식

2 목차 문자 스트링 변수와 배정 기본 데이터 타입 수식 데이터 변환 상호작용 프로그램 그래픽 애플릿 형상 그리기
© 2004 Pearson Addison-Wesley. All rights reserved

3 식(Expressions) 식 수식(Arithmetic expressions)
연산자(operator)와 피연산자(operand)의 결합 수식(Arithmetic expressions) 수식연사자(arithmetic operator)를 사용하여 값을 계산한다 덧셈(Addition) + 뺄셈(Subtraction) - 곱셈(Multiplication) * 나눗셈(Division) / 나머지연산(Remainder) % 하나 혹은 두 개의 피연산자가 부동 소수점 값이면 그 연산의 결과도 부동 소수점 값이 된다. © 2004 Pearson Addison-Wesley. All rights reserved

4 나눗셈과 나머지연산 나눗셈(/) 두 개의 피연산자가 모두 정수이면, 결과는 정수가 된다. (소수점 이하는 버림)
14 / 결과는 4 8 / 결과는 나머지 연산자(%) 나눗셈 후 그 나머지 계산 14 % 결과는 2 8 % 결과는 8 © 2004 Pearson Addison-Wesley. All rights reserved

5 연산자 우선순위(precedence) 연산자들이 결합되어 복잡한 수식 표현 연산자 우선순위
result = total + count / max - offset; 연산자 우선순위 어느 연산을 먼저 할 지 결정하는 규칙 곱셈과 나눗셈, 나머지연산이 덧셈, 뺄셈, 스트링 접합보다 우선 동일한 우선순위를 갖는 연산자들은 왼쪽에서 오른쪽으로 괄호(parentheses)안의 계산은 먼저 수행한다. © 2004 Pearson Addison-Wesley. All rights reserved

6 연산자 우선순위(계속) 예) 다음 수식에서 연산되는 순서는? a + b + c + d + e a + b * c - d / e
1 2 3 4 3 1 4 2 a / (b + c) - d % e 2 1 4 3 a / (b * (c + (d - e))) 4 3 2 1 © 2004 Pearson Addison-Wesley. All rights reserved

7 수식 트리(Expression Trees)
수식 연산은 수식 트리로 표현할 수 있다. 우선순위 트리의 아래 부분에 있는 연산은 윗 부분에 있는 연산보다 더 높은 우선순위를 갖는다. a + / - d b c a + (b – c) / d 우선순위 © 2004 Pearson Addison-Wesley. All rights reserved

8 “=“ 배정기호의 오른쪽에 있는 수식이 먼저 계산되고
배정 (Assignment) 배정 수행은 수식연산보다 낮은 우선순위를 갖는다. “=“ 배정기호의 오른쪽에 있는 수식이 먼저 계산되고 answer = sum / 4 + MAX * lowest; 4 1 3 2 그 다음에 연산된 결과가 배정기호 오른쪽에 있는 변수에 저장된다. © 2004 Pearson Addison-Wesley. All rights reserved

9 (count의 원래 값을 새 값으로 덮어쓴다.)
배정 (Assignment) 배정문의 좌우에 같은 변수를 포함할 수 있다. 먼저 count에 저장된 현재 값에 1을 더하고 count = count + 1; 그 다음 계산 결과를 count에 저장한다. (count의 원래 값을 새 값으로 덮어쓴다.) (원래 값은 다시 복원할 수 없음) © 2004 Pearson Addison-Wesley. All rights reserved

10 증가/감소 연산(Increment and Decrement)
증가/감소 연산자 하나의 피연산자(operand)를 갖는다. 증가 연산자(++)는 피연산자의 값에 1을 더한다. 감소 연사자(--)는 피연산자의 값에 1을 뺀다. count++; count = count + 1; © 2004 Pearson Addison-Wesley. All rights reserved

11 증가/감소 연산 전위/후위 증가, 감소 연산 count++ ++count 두 가지 형태가 단독으로 사용될 때는 동일한 결과
전위/후위 증가, 감소 연산 후위 형태(postfix form): 값을 읽고 증가 count++ 전위 형태(prefix form): 먼저 증가 후 값을 읽음 ++count 두 가지 형태가 단독으로 사용될 때는 동일한 결과 다른 수식 안에 사용되었을 때는 다른 결과를 준다. count = 3; a = 3 + count++;  a: 6, count: 4 count = 3; a = count;  a: 7, count: 4 © 2004 Pearson Addison-Wesley. All rights reserved

12 배정 연산자(Assignment Operators)
필요성 어떤 변수에 대해 연산한 후 그 결과를 동일 변수에 다시 저장 그 절차를 간단히 해주기 위한 배정 연산자 제공 num += count; num = num + count; © 2004 Pearson Addison-Wesley. All rights reserved

13 배정 연산자(Assignment Operators)
Java의 배정연산자들 연산자 += -= *= /= %= 사용 예 x += y x -= y x *= y x /= y x %= y 동일 결과 x = x + y x = x - y x = x * y x = x / y x = x % y © 2004 Pearson Addison-Wesley. All rights reserved

14 배정 연산자(Assignment Operators)
배정 연산자의 오른쪽이 복잡한 수식인 경우 오른쪽 수식 전체가 먼저 계산된 후 그 계산 결과가 왼쪽의 변수와 결합하게 된다. 예, result /= (total-MIN) % num; result = result / ((total-MIN) % num); © 2004 Pearson Addison-Wesley. All rights reserved

15 목차 문자 스트링 변수와 배정 기본 데이터 타입 수식 데이터 변환 상호작용 프로그램 그래픽 애플릿 형상 그리기
© 2004 Pearson Addison-Wesley. All rights reserved

16 데이터 변환(Data Conversion)
필요성 한 타입의 데이터의 값을 다른 타입의 값으로 변환하는 것이 편리한 경우가 있다. 예: 정수를 실수처럼 사용하기를 원할 때 데이터 변환 현 계산에 한하여 변수에 저장된 값의 타입을 변환하여 사용하게 된다. (변환 사용 후 변수는 계속 이전 타입 유지) © 2004 Pearson Addison-Wesley. All rights reserved

17 데이터 변환(Data Conversion)
변환 시 정보를 잃지 않도록 조심 해서 사용해야 한다. 확장 변환(widening conversion) 작은 데이터 타입에서 더 큰 타입으로 변환 정보가 손실되지 않아서 안전하다. (예, short 에서 int) 축소변환(Narrowing conversion) 큰 데이터 타입에서 작은 데이터 타입으로 변환 정보를 잃을 수 있다. (예 int 에서 short) 3가지 데이터 변환 배정 변환(assignment conversion) 상향 변환(promotion) 캐스팅 변환(casting) © 2004 Pearson Addison-Wesley. All rights reserved

18 배정 변환(Assignment Conversion)
어떤 타입의 값이 다른 타입을 갖는 변수에 배정될 때 일어난다. 확장 변환만 배정 변환 가능 money가 float 변수이고 dollars가 int 변수 이면, 다음 배정문은 자동으로 dollars의 값을 float로 변환한다. money = dollars 주의: 위 문장 수행 후, dollars의 값이나 타입은 변경 없음 © 2004 Pearson Addison-Wesley. All rights reserved

19 데이터 변환(Data Conversion)
상향 변환(Promotion) 연산자가 연산을 수행하기 위해서 피연산자들을 변경할 필요가 있을 때 자동적으로 일어난다. sum 이 float이고 count가 int일 때 count의 값은 floating point 값으로 자동 변환 result = sum / count; © 2004 Pearson Addison-Wesley. All rights reserved

20 캐스팅 변환(Casting) 캐스팅(Casting) 예 total이 부동 소수 값이 되면 count도 부동 소수로
가장 강력하고 위험한 명시적인 캐스팅 변환 확장(widening) 과 축소(narrowing) 변환 모두 가능 값 앞에 괄호 안의 type 지정함으로써 수행 된다. total과 count는 정수(int) 일 때 나눗셈의 결과는 부동 소수(floating point)를 원한다면 result = (float) total / count; total이 부동 소수 값이 되면 count도 부동 소수로 상향 변환된다. © 2004 Pearson Addison-Wesley. All rights reserved

21 목차 문자 스트링 변수와 배정 기본 데이터 타입 수식 데이터 변환 상호작용 프로그램 그래픽 애플릿 형상 그리기
© 2004 Pearson Addison-Wesley. All rights reserved

22 상호작용(Interactive) 프로그램
프로그램은 입력(input)을 필요로 한다. Scanner 클래스 다양한 타입의 입력 값들을 읽어 들이기 위한 편리한 방법 제공 Scanner 객체는 사용자의 키보드 등 다양한 경로로 들어오는 여러 타입의 입력을 받을 수 있도록 설정될 수 있다. System.in 키보드 (입력)을 나타내는 객체 © 2004 Pearson Addison-Wesley. All rights reserved

23 Scanner scan = new Scanner (System.in);
입력 방법(Reading Input) 키보드 입력을 위한 Scanner 객체 생성 Scanner scan = new Scanner (System.in); new 연산자로 Scanner 객체 Scanner 객체를 이용하여 다양한 입력 메소드를 호출 가능 answer = scan.nextLine(); © 2004 Pearson Addison-Wesley. All rights reserved

24 입력 방법(Reading Input) Scanner 클래스 nextLine 메소드
java.util 클래스 라이브러리(class library)에 속함 사용하기 위하여는 반드시 프로그램에 import 되어야 함 (import문은 3 장에서 설명) nextLine 메소드 현재 줄의 끝까지 남아 있는 모든 입력을 문자 스트링으로 반환. Echo.java (95쪽[영문 91]) 참조 © 2004 Pearson Addison-Wesley. All rights reserved

25 Echo.java 출력: Enter a line of text: Testing! You entered: “Testing!”
//******************************************************************** // Echo.java 저자: 루이스와 롭터스 // // 사용자로부터 스트링을 읽어들이는 Scanner 클래스의 // nextLine 메쏘드의 사용을 보여준다. import java.util.Scanner; public class Echo { // // 사용자로부터 문자 스트링을 읽어들여서 출력한다. public static void main (String[] args) String message; Scanner scan = new Scanner (System.in); System.out.println ("Enter a line of text:"); message = scan.nextLine(); System.out.println ("You entered: \"" + message + "\""); } 출력: Enter a line of text: Testing! You entered: “Testing!” © 2004 Pearson Addison-Wesley. All rights reserved

26 입력 토큰(Input Tokens) 토큰(token) 구분 Scanner 클래스의 next 메소드
공백 문자(white space)가 사용된다. space 문자(빈칸), 탭(tab), 개행(new line) 문자 등 Scanner 클래스의 next 메소드 다음 입력의 토큰(token)을 스트링으로 읽어서 반환 nextInt/nextDouble 메소드 데이터를 int나 double 타입으로 읽어들인다. GasMileage.java (96쪽) 참조 © 2004 Pearson Addison-Wesley. All rights reserved

27 GasMileage.java 출력: Enter the number of miles: 288
// 수치 데이터를 읽어들이기 위한 Scanner 클래스의 사용을 보여준다. //******************************************************************** import java.util.Scanner; public class GasMileage { // 사용자가 입력한 값들에 기반하여 연비를 계산한다. public static void main (String[] args) { int miles; double gallons, mpg; Scanner scan = new Scanner (System.in); System.out.print ("Enter the number of miles: "); miles = scan.nextInt(); System.out.print ("Enter the gallons of fuel used: "); gallons = scan.nextDouble(); mpg = miles / gallons; System.out.println ("Miles Per Gallon: " + mpg); } 출력: Enter the number of miles: 288 Enter the gallon of fuel used: 7.5 Miles per Gallon: 38.4 © 2004 Pearson Addison-Wesley. All rights reserved


Download ppt "제2장 데이터 및 수식."

Similar presentations


Ads by Google