JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과...

33
2015학년도 2학기

Transcript of JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과...

Page 1: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

2015학년도 2학기

Page 2: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

자바의 기본 구조 ?

class HelloJava{ public static void main(String argv[]){ system.out.println(“hello,Java ~”){ } }

Page 3: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

#하나 하나 뜯어 살펴봅시다! public class HelloJava{

}

public static void main(String[] args){ System.out.println(“Hello Java!!”); } 메서드 정의

클래스 정의

Page 4: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

#시작을 알리는 main !

pubilc : 누구나 접근 가능하도록 하기 위한 예약어

static : 클래스만 존재하면 메서드를 바로 실행할 수 있도록 함

void : 리턴 값이 존재하지 않음

main : 메서드의 이름

String[] args : 메서드에 값을 받아오는 전달 인자

public static void main(String[] args)

Page 5: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 컴파일과 실행 # 컴파일 : 소스 코드로부터 CPU가 이해할 수 있는 기계어를 만들어내는 일 Java 컴파일 : 프로그래머가 생성한 자바 소스코드를 번역하여 자바가

상머신(JVM)이 해석할 수 있는 중간코드인 바이트 코드를 생성 # 실행 : 자바 가상머신이 자바 바이트코드를 해독하여 실행

컴파일 방법 : javac [옵션] HelloJava.java

실행방법 : java Hellojava

Page 6: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

인텔 CPU + 리눅스

Apple 사의 MAC PC

C/C++ 응용 프로그램

실행 실행되지 않음

실행되지 않음

인텔 CPU를 가진 리눅스 환경에서 개발

플랫폼 = 하드웨어 플랫폼 + 운영체제 플랫폼

프로그램의 플랫폼 호환성 없는 이유 • 기계어가 CPU마다 다름 • 운영체제마다 API 다름 • 운영체제마다 실행파일 형식 다름

인텔 CPU + 윈도우 노트북

Page 7: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

인텔 CPU + 리눅스

Apple 사의 MAC PC

자바 응용 프로그램

실행 실행

실행

Write Once !!

Run Everywhere!!

자바 가상 기계

자바 가상 기계

자바 가상 기계

인텔 CPU + 윈도우 노트북

Page 8: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

컴파일~실행까지의 과정..

javac HelloJava.java

java HelloJava

HelloJava.class

소스 프로그램 자바 컴파일러

실행할 바이트코드 자바 인터프리터

바이트 코드

Page 9: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 식별자 ??? 클래스 이름, 메서드 이름, 변수 등과 같은 이름 @ 식별자 명명 규칙 1. 알파벳, 아라비아 숫자,_(언더바),$ 사용 가능 단, 식별자의 첫 글자는 숫자 사용 불가능 2. 예약어는 사용 금지 3. 변수 이름의 길이는 제한 없음 4. 유니코드 문자도 변수 이름 사용 가능 5. 대/소문자 구별 예) name과 NAME는 다른 변수

Page 10: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

※참고 헝가리안 표기법, 카멜 표기법, 파스칼 표기법

Page 11: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@자바 자료형의 종류

기본 자료형

논리형

숫자형 정수형

boolean

byte

short int

long

실수형 float

double

참조 자료형 String, 클래스 , 배열, 인터페이스

문자형 char

# 기본형 : 변수 자체가 값을 가짐 # 참조형 : 변수 자체가 값을 가진 영역의 주소만 가짐

Page 12: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 정수형

byte (8bits, -128 ~ 127)

short(16bit, -32,768~32,767)

int (32bit, -2³¹ ~ 2³¹ - 1 )

long (64bit, -2⁶³ ~ 2⁶³ - 1 )

예 ) long la =2147483648L;

@ 논리형 boolean(1bit, true / false) 예) boolean ox=true;

@ 실수형 float (32bits, 유효자리 : 7) 예) float f_num = 120.123f; double (32bit, 유효자리 : 15)

@ 문자형

char (16bit, 0~65,535)

예) char ca;

ca=‘a’; ca=‘자’; ca=97;

ca=‘\n’; ca=‘\t’; ca=44032;

cf. “a”는 스트링형 상수

Page 13: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@형 변환

byte short int long

float

double

char

1. 광역화 형 변환 : 적은 데이터형을 큰 데이터형으로 변환하는 것 컴파일러가 자동으로 변환시켜 수행 원래 값의 근사치라도 보장 2. 협소화 형 변환 : 큰 데이터형으로 변환할 때 cast 연산자 사용(값 앞 괄호안에 변환되는 형) 강제적으로 변환 -> 정보를 잃어버릴 수 있음 예 : int a = (int) 3.5

Page 14: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 변수 ? : 프로그램 수행 중 값을 저장할 수 있는 기억 공간 - 반드시 선언 후 사용 @ 변수 선언 - 사용되기 전에 선언. - 데이터형 변수이름; 예) byte b; int age, grade; long la = 2147483648L; double total=384.2; 출력 : System.out.println(total);

Page 15: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 상수 : 변하지 않는 수 - 실행 중 변화하지 않는 값을 나타내는 것 - 정수형 상수, 실수형 상수, 문자형 상수, 논리형 상수 - 사용하기 전에 선언 되어야함. (관례적으로 대문자사용) - 변수가 아닌 상수임을 나타내기 위해 final 키워드 사용

@문자열 상수 - 쌍 따옴표 안에 있는 문자들의 나열 - 예) “Seoul, Korea 135-720” “자바 프로그래밍”

Page 16: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 연산자의 종류 종류 기능 연산자

산 술 연산자

사칙연산 + , - , * , / , %

증 감 연산자

피연사자의 값 증감 ++ / --

관 계 연산자

두 항의 비교 후 참 거짓 판단 => , >= , < , <=, == ,!=

논 리 연산자

하나 이상의 항을 평가 후 참 거짓 판단

& , && , | , || , ^ , !

비 트 연산자

자료를 bit단위로 계산 >> ,<< ,>>> , & , | ,^ , ~

배 정 연산자

계산한 결과를 변수에 할당 후 저장

+=, -=, *=, /=, %=, &=, |=, ^=,<<=, >>=, >>>=

3항 조건 연산자 간단한 if_then_else의 경우 (조건식) ? 연산식1 : 연산식 2

Page 17: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

출력을 위한 메서드의 종류 메서드 설 명

println(내용) LN은 LiNe의 약자로 내용 출력 후 자동개행

print(내용) 마지막 출력한 문자 뒤에 다음 내용을 출력

printf(“형식지정자”,내용) 형식 지정자에 맞게 내용 출력

Page 18: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램
Page 19: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@입력을 위한 Scanner 클래스 # 입력문 사용 # 사용 방법 import java.util.Scanner; Scanner scan = new Scanner(System.in);

scan.next();

String next() String nextLine() int nextInt() double nextDouble()

import java.util.Scanner;

Page 20: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램
Page 21: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

두 연산을 논리적으로 처리(True나 False를 반환)

예) a = (10 >=5 && 20 <=25); b = (10 < 10 || 20 == 20); c = (10 != 10); cf. if((a != 0) & (b / 0 < 1)) vs if ((a ==1) && ((b=c) <1))

A B A&B

A&&B A|B A||B

A^B !A

F F F F F T

F T F T T T

T F F T T F

T T T T F F

Page 22: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 프로그램 속도를 향상시키는 비트 연산자 - 피 연산자는 반드시 정수형 - 연산 결과 = 정수형 !!!!

A B A&B A|B A^B !A

0 0 0 0 0 1

0 1 0 1 1 1

1 0 0 1 1 0

1 1 1 1 0 0

Shift 연산자 : >> , << , >>>

Page 23: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

계산 해보기

x = 2 y =15 z = 13 a = 40

Think.. : “& , | , ^”는 비트연산자..? 논리 연산자 ..?

1) x = 10 & 7

1010 & 0111 ---------- x = 0010

2) y= 10 | 7

1010 | 0111 ---------- y = 1111

3) z= 10 ^ 7

1010 ^ 0111 ---------- z = 1101

4) a = 10 <<2

1010 101000 <<2 ------------- a = 101000

Page 24: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 간단한 if_then_else의 경우 사용

예) int num1 = 10, num2 = 20;

a = (num1 > 5? 10 : 20)

b = (num2 > 10? 10 : 20)

구분 연산자 기능 사용 예

조건 ? 값1 : 값2 조건이 참이면 값 1

거짓이면 값 2 x > 20 ? 30 : 5

Page 25: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ if 문 조건 연산식의 논리 값에 따라 실행 여부 결정 @ if문의 형태

@ if (조건식) <조건식이 참 일때 처리문장>; @ if (조건식) <조건식이 참일때 처리문장>;

else <조건식이 거짓일 때 처리문장>;

@ if (조건식1) 문1; else if (조건식2) 문2; else if (조건식3){

문3; 문4; } else 문 5;

Page 26: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

if (score >= 90) grade = ‘A’; else if (score >= 80) grade = ‘B’; else if (score >= 70) grade = ‘C’; else grade = ‘F’;

Page 27: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ if문 실습 ~~!!

조건 #최대값은 max에 최소값은 min에 저장 #두 정수 값이 같을 경우 먼저 입력된 수가 max, 나중에 입력된 수가 min 값에 저장.

Page 28: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램
Page 29: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ switch 문 switch문 ()안의 내용을 평가하여 해당되는 case문을 수행 해당되는 case가 없는 경우 default를 수행 @ switch 문의 형태 (수식 결과값은 int형이나 char형 값) switch(수식 or 변수){ case 값1 : 문1; break; case 값2 : 문2; break; : default : 문n; }

Page 30: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ switch문 예제 char grade=‘A’; int aCount=0, bCount=0, cCount=0; int dCount=0, fCount=0; switch(grade){ case 'A': aCount++; break; case 'B': bCount++; break; case 'C': cCount++; break; case 'D': dCount++; break; default: fCount++; }

Page 31: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ 위의 switch문 예제를 if문으로 변경.. char grade=‘A’; int aCount=0, bCount=0, cCount=0; int dCount=0, fCount=0; //switch문 -> if문으로 변경 if (grade==‘A’) aCount++; else if (grade ==‘B’) bCount++; else if (grade ==‘C’) cCount++; else if (grade ==‘D’) dCount++; else fCount++;

Page 32: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@ switch문 실습해보기 조건 ) - 월은 입력 받지 않음 - 그 달의 날짜에서의 요일만 계산 - 요일은 숫자로 입력 받음(일 ~ 토 -> 0~6)

Page 33: JAVA PROGRAMMING 실습 02. 표준 입출력 및 수식과 제어class.gnu.ac.kr/~ejsja/java/02.pdf · 2015-09-16 · 인텔 CPU + 리눅스 Apple 사의 MAC PC C/C++ 응용 프로그램

@골격 프로그램