Download - 제 1 장 프로그래밍 언어 소개

Transcript
Page 1: 제  1 장 프로그래밍 언어 소개

제 1장 프로그래밍 언어 소개

1.1 프로그래밍 언어란 무엇인가

1.2 프로그래밍 언어를 배워야 하는 이유

1.3 프로그래밍 언어에서의 추상화

1.4 계산 전형

Page 2: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 정의 (1)

1.1 프로그래밍 언어란 무엇인가

기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현 체계

A notational system for describing computation inmachine - readable and human - readable form

프로그래밍 언어 소개

Page 3: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 정의 (2)계산 처리과정을 컴퓨터가 해독할 수 있는 방법으로표현하는 체계적인 표기법

Any notation for the description of algorithmsand data structures

프로그래밍 언어 소개

프로그래밍 언어 정의 (3)

Page 4: 제  1 장 프로그래밍 언어 소개

현재 사용하는 언어를 더욱 더 잘 이해하게 된다 .

1.2 프로그래밍 언어를 배워야 하는 이유

예 ) Recursion( 재귀호출 , 되부름 ) - 자기 자신을 부르는 루틴

프로그래밍 언어 소개

효율적인 알고리즘시행시간이 길다FOTRAN, COBOL : 시행 안됨(FOTRAN I, II, IV, 77)

PASCAL, C : 시행 가능

Page 5: 제  1 장 프로그래밍 언어 소개

! This is Recursive function in Fortran90PROGRAM recursive_exampleINTEGER acc, factfact = 10acc = exp_(fact)

CONTAINSRECURSIVE FUNCTION exp_(n) RESULT(result)

INTEGER result, nIF(n.EQ.0) THENresult = 1

ELSEresult = 2*exp_(n-1)PRINT *, " 2 ^", n, "=", resultEND IFEND FUNCTION exp_

END PROGRAM recursive_example

프로그래밍 언어 소개Example 1.1 FORTRAN90

Page 6: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 소개Example 1.2 PASCAL

PROGRAM POWERLIST(OUTPUT);

VARY, Z:REAL;K:INTEGER;

FUNTION POWER(X:REAL; N:INTEGER):REAL;

BEGINWRITELN(‘ ‘:3,’POWERSIZE WITH N=‘,N:2);IF N=0;THEN POWER:=1.0ELSE POWER:=X*POWER(X,N-1);WRITELN(‘ ‘:3,’END POWER OF N=‘, N:2)

END (* OF FUNTION POWER *);

Page 7: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 소개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 *);

Page 8: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 소개Example 1.2 PASCAL (Result)

POWERSIZE WITH N= 3POWERSIZE WITH N= 2POWERSIZE WITH N= 1POWERSIZE WITH N= 0END POWER OF N= 0END POWER OF N= 1END POWER OF N= 2END POWER OF N= 3

2.0 RISED TO THE POWER 3 EQUAL 8.00000E+00

Page 9: 제  1 장 프로그래밍 언어 소개

프로그래밍 언어 소개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));}

2 ^ 0 = 12 ^ 1 = 22 ^ 2 = 22 ^ 3 = 82 ^ 4 = 162 ^ 5 = 322 ^ 6 = 642 ^ 7 = 1282 ^ 8 = 2562 ^ 9 = 5122 ^ 10 = 1024

Result

Page 10: 제  1 장 프로그래밍 언어 소개

#include<stdio.h>

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);

}}

power(int x,int y){

return((y == 0) ? 1 : x * power(x, y - 1));}

#include<stdio.h>

float power(int, int);

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);

}}

float power(int x,int y){

return((y == 0) ? 1 : x * power(x, y - 1));}

Page 11: 제  1 장 프로그래밍 언어 소개

#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.4 C++

Page 12: 제  1 장 프로그래밍 언어 소개

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)); }}

Example 1.5 Java

Page 13: 제  1 장 프로그래밍 언어 소개

유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다 .

예 ) Coroutine 개념을 사용

프로그램 언어를 선택할 수 있는 능력을 증대 시킨다 .

예 ) X P : S(L1) F(L2)

프로그래밍 언어 소개

문자 처리FORTRAN, COBOL 대신 SNOBOL4

Page 14: 제  1 장 프로그래밍 언어 소개

예 ) Fortran Pascal C C++ Java⇒ ⇒ ⇒ ⇒

새로운 프로그래밍 언어를 설계하기 쉽게 해 준다 .

예 ) JCL Query Language

프로그래밍 언어 소개

새로운 프로그래밍 언어를 배우기 쉽게 해 준다 .

Page 15: 제  1 장 프로그래밍 언어 소개

추상화 (Abstraction) 의 개념

1.3 프로그래밍 언어에서의 추상화

프로그래밍 언어 소개

자신의 속성들의 일부분만을 가지고 주어진 작업이나

객체들을 필요한 정도로 묘사할 수 있는 방법을 지원

하는 것

Page 16: 제  1 장 프로그래밍 언어 소개

자료 추상화 : 자료의 특성 추상화 ( 문자열 , 수 , tree)

제어 추상화 : 알고리즘 추상화 ( 반복문 , 조건문 , 프로시저 호출 )

추상화 정보량에 의한 분류

기본적 추상화 : 기계 정보 수집구조화된 추상화 : 프로그램 구조에 대한 보다

전역적 정보단위 추상화 : 단위 프로그램 전체에 대한

정보

프로그래밍 언어 소개

범주

Page 17: 제  1 장 프로그래밍 언어 소개

var x : integer; var y : real;

자료 추상화

프로그래밍 언어 소개

기본적 추상화 컴퓨터 내부 자료 표현기억 장치의 장소

Page 18: 제  1 장 프로그래밍 언어 소개

구조화된 추상화 관련된 자료의 집합을 추상화 ( 배열 , 레코드 )

type person =record name : nwords;age : years;address : awords;telnumber : twords;salary : integer;end

var X, Y : array[0..20] of real;employee : person

프로그래밍 언어 소개

Page 19: 제  1 장 프로그래밍 언어 소개

단위 추상화 자료 캡슐화 , 추상화

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;

privatetype BSTREEPTR;type BSTREE is; record

DATE : ITEM;LEFTCHILD : BSTREESPTR;LIGHTCHILD : BSTREEPTR; end record;end record;

type BSTREEPTR is access BSTREE;end;

프로그래밍 언어 소개

Page 20: 제  1 장 프로그래밍 언어 소개

x := x + y ;

제어 추상화

프로그래밍 언어 소개

기본적 추상화 기계어 명령어 모양 ,이해하기 쉬운 추상 구문으로 만듬

Page 21: 제  1 장 프로그래밍 언어 소개

구조화된 추상화 분할된 명령어 그룹 수행

if x > y thenbegin t := x;x := y;y := t;endelse begin x := x + y;end

단위 추상화 Procedure 의 집합을 추상화

Modula-2 의 module, Ada 의 package

프로그래밍 언어 소개

Page 22: 제  1 장 프로그래밍 언어 소개

명령형언어 (Imperative Language)

1.4 계산 전형

프로그래밍 언어 소개

Procedure Language

명령 순서대로 시행

Page 23: 제  1 장 프로그래밍 언어 소개

프로시저 추상화부프로그램의 사용

PROCEDURE gcd ( u, v : INTERGER; VAR x : INTERGER);VAR y, t : INTEGERBEGIN x := u; y := v; LOOP IF y <= 0 THEN EXIT END t := y; y := x MOD y; x := t; ENDEND gcd

프로그래밍 언어 소개

Page 24: 제  1 장 프로그래밍 언어 소개

함수형언어 (Functional Language)

Application Language함수의 평가 및 호출 방법

예 ) Modular-2PROCEDURE gcd(u, v : INTEGER) : INTEGER;BEGIN

IF v= 0 THEN RETURN u;ELSE RETURN gcd(v, u MOD v);END

END gcd;

프로그래밍 언어 소개

(define (gcd u v)(if (= v 0) u(gcd v (remainder u v))))

예 ) LISP

Page 25: 제  1 장 프로그래밍 언어 소개

논리형언어 (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).

프로그래밍 언어 소개

Page 26: 제  1 장 프로그래밍 언어 소개

객체 지향 언어 (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);}}

프로그래밍 언어 소개