제 4 장 자바 소개

Download Report

Transcript 제 4 장 자바 소개

제 1장 프로그래밍 언어 소개
1.1 프로그래밍 언어란 무엇인가
1.2 프로그래밍 언어를 배워야 하는 이유
1.3 프로그래밍 언어에서의 추상화
1.4 계산 전형
프로그래밍 언어 소개
1.1 프로그래밍 언어란 무엇인가
프로그래밍 언어 정의 (1)
기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로
계산을 기술하는 표현 체계
A notational system for describing computation in
machine - readable and human - readable form
프로그래밍 언어 소개
프로그래밍 언어 정의 (2)
계산 처리과정을 컴퓨터가 해독할 수 있는 방법으로
표현하는 체계적인 표기법
프로그래밍 언어 정의 (3)
Any notation for the description of algorithms
and data structures
프로그래밍 언어 소개
1.2 프로그래밍 언어를 배워야 하는 이유
현재 사용하는 언어를 더욱 더 잘 이해하게 된다.
예) Recursion(재귀호출, 되부름)
- 자기 자신을 부르는 루틴
효율적인 알고리즘
시행시간이 길다
FOTRAN, COBOL
: 시행 안됨
(FOTRAN I, II, IV, 77)
PASCAL, C
: 시행 가능
Example 1.1 FORTRAN90
! This is Recursive function in Fortran90
PROGRAM recursive_example
INTEGER acc, fact
fact = 10
acc = exp_(fact)
CONTAINS
RECURSIVE FUNCTION exp_(n) RESULT(result)
INTEGER result, n
IF(n.EQ.0) THEN
result = 1
ELSE
result = 2*exp_(n-1)
PRINT *, " 2 ^", n, "=", result
END IF
END FUNCTION exp_
END PROGRAM recursive_example
프로그래밍 언어 소개
Example 1.2 PASCAL
PROGRAM POWERLIST(OUTPUT);
VAR
Y, Z:REAL;
K:INTEGER;
FUNTION POWER(X:REAL; N:INTEGER):REAL;
BEGIN
WRITELN(‘ ‘:3,’POWERSIZE WITH N=‘,N:2);
IF N=0;
THEN POWER:=1.0
ELSE POWER:=X*POWER(X,N-1);
WRITELN(‘ ‘:3,’END POWER OF N=‘, N:2)
END (* OF FUNTION POWER *);
프로그래밍 언어 소개
Example 1.2 PASCAL (continued)
BEGIN (*MAIN PROGRAM *)
Y:=2.0;
K:=3;
Z:=POWER(Y,K);
WRITELN;
WRITELN(Y:=4:1,’ RISED TO THE POWER’,K:1,
‘ EQUAL’, Z)
END (* OF MAIN PROGRAM *);
프로그래밍 언어 소개
Example 1.2 PASCAL (Result)
POWERSIZE WITH N= 3
POWERSIZE WITH N= 2
POWERSIZE WITH N= 1
POWERSIZE WITH N= 0
END POWER OF N= 0
END POWER OF N= 1
END POWER OF N= 2
END POWER OF N= 3
2.0 RISED TO THE POWER 3 EQUAL 8.00000E+00
프로그래밍 언어 소개
프로그래밍 언어 소개
Example 1.3 C
#include<stdio.h>
main()
{
int m, k, c;
m = 2;
for (k = 0; k <= 10; k++) {
c = power(m, k);
printf("%d ^ %d = %d\n", m, k, c);
}
}
power(x, y)
int x, y;
{
return((y == 0) ? 1 : x * power(x, y - 1));
}
Result
2^0=1
2^1=2
2^2=2
2^3=8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128
2 ^ 8 = 256
2 ^ 9 = 512
2 ^ 10 = 1024
#include<stdio.h>
#include<stdio.h>
power(int, int);
float power(int, int);
void main()
{
int m, k, c;
m = 2;
for (k = 0; k <= 10; k++) {
c = power(m, k);
printf("%d ^ %d = %d\n", m, k, c);
}
}
void main()
{
int m, k;
float c;
m = 2;
for (k = 0; k <= 10; k++) {
c = power(m, k);
printf("%d ^ %d = %.1f\n", m, k, c);
}
}
power(int x,int y)
{
return((y == 0) ? 1 : x * power(x, y - 1));
}
float power(int x,int y)
{
return((y == 0) ? 1 : x * power(x, y - 1));
}
Example 1.4 C++
#include <iostream.h>
class Recursion
{
public:
Recursion () {}
~Recursion () {}
int power (int x, int y);
};
int Recursion::power(int x, int y)
{
return ((y == 0) ? 1 : x * power(x, y-1));
}
main (){
Recursion recur;
int m, k, c;
m = 2;
for (k = 0; k <= 10; k++)
{
c = recur.power(m, k);
cout << m << "^" << k << " = " << c << '\n';
}
return 0;
}
Example 1.5 Java
public class Recursion {
public static void main (String args[]) {
int m, k, c;
m=2;
for (k=0 ; k <= 10 ; k++) {
c = power (m, k);
System.out.println(" " + m + "^" + k + "=" + c);
}
}
public static int power ( int x, int y) {
return (( y == 0) ? 1 : x * power (x, y-1));
}
}
프로그래밍 언어 소개
유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다.
예) Coroutine 개념을 사용
프로그램 언어를 선택할 수 있는 능력을 증대 시킨다.
문자 처리
FORTRAN, COBOL 대신 SNOBOL4
예) X P : S(L1) F(L2)
프로그래밍 언어 소개
새로운 프로그래밍 언어를 배우기 쉽게 해 준다.
예) Fortran ⇒ Pascal ⇒ C ⇒ C++ ⇒ Java
새로운 프로그래밍 언어를 설계하기 쉽게 해 준다.
예) JCL
Query Language
프로그래밍 언어 소개
1.3 프로그래밍 언어에서의 추상화
추상화(Abstraction)의 개념
자신의 속성들의 일부분만을 가지고 주어진 작업이나
객체들을 필요한 정도로 묘사할 수 있는 방법을 지원
하는 것
프로그래밍 언어 소개
범주
자료 추상화 : 자료의 특성 추상화 (문자열, 수, tree)
제어 추상화 : 알고리즘 추상화
(반복문, 조건문, 프로시저 호출)
추상화 정보량에 의한 분류
기본적 추상화 : 기계 정보 수집
구조화된 추상화 : 프로그램 구조에 대한 보다
전역적 정보
단위 추상화
: 단위 프로그램 전체에 대한 정보
프로그래밍 언어 소개
자료 추상화
기본적 추상화
컴퓨터 내부 자료 표현
기억 장치의 장소
var x : integer;
var y : real;
프로그래밍 언어 소개
구조화된 추상화
관련된 자료의 집합을 추상화(배열, 레코드)
type person =
record
name : nwords;
age : years;
address : awords;
telnumber : twords;
salary : integer;
end
var
X, Y : array[0..20] of real;
employee : person
프로그래밍 언어 소개
단위 추상화
자료 캡슐화, 추상화
package BSTREE is
type BSTREEPTR is private;
type BSTREE is private;
function HAS(I : ITEM, P:BSTREEPTR) return BOOLEAN;
procedure INSERT(I : ITEM, in out P : BSTREEPTR);
function EQUAL(P,Q:BSTREEPTR) return BOOLEAN;
private
type BSTREEPTR;
type BSTREE is;
record
DATE : ITEM;
LEFTCHILD : BSTREESPTR;
LIGHTCHILD : BSTREEPTR;
end record;
end record;
type BSTREEPTR is access BSTREE;
end;
프로그래밍 언어 소개
제어 추상화
기본적 추상화
기계어 명령어 모양,
이해하기 쉬운 추상 구문으로 만듬
x := x + y ;
프로그래밍 언어 소개
구조화된 추상화
분할된 명령어 그룹 수행
if x > y then
begin
else
end
begin
end
t := x;
x := y;
y := t;
x := x + y;
단위 추상화
Procedure의 집합을 추상화
Modula-2의 module, Ada의 package
프로그래밍 언어 소개
1.4 계산 전형
명령형언어(Imperative Language)
Procedure Language
명령 순서대로 시행
프로그래밍 언어 소개
프로시저 추상화
부프로그램의 사용
PROCEDURE gcd ( u, v : INTERGER; VAR x : INTERGER);
VAR y, t : INTEGER
BEGIN
x := u; y := v;
LOOP
IF y <= 0 THEN
EXIT
END
t := y;
y := x MOD y;
x := t;
END
END gcd
프로그래밍 언어 소개
함수형언어(Functional Language)
Application Language
함수의 평가 및 호출 방법
예) Modular-2
PROCEDURE gcd(u, v : INTEGER) : INTEGER;
BEGIN
IF v= 0 THEN RETURN u;
ELSE RETURN gcd(v, u MOD v);
END
END gcd;
예) LISP
(define (gcd u v)
(if (= v 0) u(gcd v (remainder u v))))
프로그래밍 언어 소개
논리형언어(Logic Language)
Declarative Language
기호 논리학 근거
예)
gcd(U, V, U) :- v = 0.
gcd(U, V, X) :- v > 0,
Y is U mod V,
gcd(V, Y, X).
프로그래밍 언어 소개
객체 지향 언어(Object Oriented Language)
객체(object) 기본
Object 연산의 집합
예)
class GcdLcm {
//클래스 GcdLcm 선언
public int gcd, lcm;
int x, y;
GcdLcm(int num1, int num2) {
x = num1;
y = num2;
gcd = gcdf(x,y);
}
int gcdf(int a, int b) {
if(b==0)
return a;
else
return gcdf(b, a % b);
}
}