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

26
제 1 제 제제제제제 제제 제제 1.1 프프프프프 프프프 프프프프 1.2 프프프프프 프프프 프프프 프프 프프 1.3 프프프프프 프프프프프 프프프 1.4 프프 프프

Upload: arella

Post on 11-Feb-2016

154 views

Category:

Documents


0 download

DESCRIPTION

제 1 장 프로그래밍 언어 소개. 1.1 프로그래밍 언어란 무엇인가. 1.2 프로그래밍 언어를 배워야 하는 이유. 1.3 프로그래밍 언어에서의 추상화. 1.4 계산 전형. 프로그래밍 언어 소개. 1.1 프로그래밍 언어란 무엇인가. 프로그래밍 언어 정의 (1). 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현 체계. A notational system for describing computation in - PowerPoint PPT Presentation

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

프로그래밍 언어 소개