제2장 데이터 및 수식.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
어서와 Java는 처음이지! 제3장선택과 반복.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
제 1장 C 언어의 소개.
제2장 데이터 및 수식.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
Java Seminar 6.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
[INA470] Java Programming Youn-Hee Han
명품 JAVA Essential.
Power Java 제4장 자바 프로그래밍 기초.
4장: 자료형과 수식.
7장 배열 ②.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
명품 Java Programming.
Chapter 4 매개변수와 오버로딩 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Chapter 4 – 연 산 자 Outline 4.1 산술 연산자 4.2 관계 연산자 4.3 동등 연산자 4.4 논리 연산자
윤 홍 란 4 장 클래스 작성 윤 홍 란
Power Java 제7장 클래스와 객체.
5장 조건과 반복 ①.
제2장 데이터 및 수식.
Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
제 2 장 변수와 상수.
7장 배열 ①.
6장 객체-지향 설계 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
제1장 서론.
4주차: Data Types and Functions
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
Chapter 2 Lexical Elements, Operators, and the C System
5장 조건과 반복 ②.
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
adopted from KNK C Programming : A Modern Approach
제 3 장 연산자 (Operators).
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
[INA470] Java Programming Youn-Hee Han
DataScience Lab. 박사과정 김희찬 (화)
자바 5.0 프로그래밍.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
5장 조건과 반복 ①.
연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
Part 06 세상을 변화시키는 연산자 안산1대학 디지털정보통신과 임 성 국.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
Chapter 4 클래스 작성.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
printf("Global Korea\n");
자바 암호 프로그래밍 Java Cryptography Programming
Presentation transcript:

제2장 데이터 및 수식

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

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

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

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

연산자 우선순위(계속) 예) 다음 수식에서 연산되는 순서는? 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

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

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

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

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

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

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

배정 연산자(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

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

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

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

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

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

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

캐스팅 변환(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

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

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

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

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

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

입력 토큰(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

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