1 / 27

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

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

khoi
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유 1.3 프로그래밍 언어에서의 추상화 1.4 계산 전형

  2. 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 프로그래밍 언어 정의 (1) 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현 체계 A notational system for describing computation in machine - readable and human - readable form

  3. 프로그래밍 언어 소개 프로그래밍 언어 정의 (2) 계산 처리과정을 컴퓨터가 해독할 수 있는 방법으로 표현하는 체계적인 표기법 프로그래밍 언어 정의 (3) Any notation for the description of algorithms and data structures

  4. 프로그래밍 언어 소개 1.2 프로그래밍 언어를 배워야 하는 이유 현재 사용하는 언어를 더욱 더 잘 이해하게 된다. 예) Recursion(재귀호출, 되부름) - 자기 자신을 부르는 루틴 효율적인 알고리즘 실행시간이 길다 FOTRAN, COBOL : 실행 안됨 (FOTRAN I, II, IV, 77) PASCAL, C : 실행 가능

  5. 프로그래밍 언어 소개 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

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

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

  8. 프로그래밍 언어 소개 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

  9. 프로그래밍 언어 소개 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 = 4 2 ^ 3 = 8 2 ^ 4 = 16 2 ^ 5 = 32 2 ^ 6 = 64 2 ^ 7 = 128 2 ^ 8 = 256 2 ^ 9 = 512 2 ^ 10 = 1024

  10. #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)); }

  11. 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; }

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

  13. 프로그래밍 언어 소개 유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다. 예) Coroutine 개념을 사용 프로그램 언어를 선택할 수 있는 능력을 증대 시킨다. 문자 처리 FORTRAN, COBOL 대신 SNOBOL4 예) X P : S(L1) F(L2)

  14. 프로그래밍 언어 소개 새로운 프로그래밍 언어를 배우기 쉽게 해 준다. 예) Fortran ⇒ Pascal ⇒ C ⇒ C++ ⇒ Java 새로운 프로그래밍 언어를 설계하기 쉽게 해 준다. 예) JCL Query Language

  15. 프로그래밍 언어 소개 1.3 프로그래밍 언어에서의 추상화 추상화(Abstraction)의 개념 자신의 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원 하는 것

  16. 프로그래밍 언어 소개 범주 자료 추상화 : 자료의 특성 추상화 (문자열, 수, tree) 제어 추상화 : 알고리즘 추상화 (반복문, 조건문, 프로시저 호출) 추상화 정보량에 의한 분류 기본적 추상화 : 기계 정보 수집 구조화된 추상화 : 프로그램 구조에 대한 보다 전역적 정보 단위 추상화 : 단위 프로그램 전체에 대한 정보

  17. 프로그래밍 언어 소개 자료 추상화 기본적 추상화 컴퓨터 내부 자료 표현 기억 장치의 장소 PASCAL var x : integer; var y : real; C 언어 int x; float y;

  18. 프로그래밍 언어 소개 구조화된 추상화 관련된 자료의 집합을 추상화(배열, 레코드) PASCAL type person = record name : nwords; age : years; address : awords; telnumber : twords; salary : integer; end var X, Y : array[0..20] of real; employee : person

  19. 프로그래밍 언어 소개 단위 추상화 자료 캡슐화, 추상화 Ada 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;

  20. 프로그래밍 언어 소개 제어 추상화 기본적 추상화 기계어 명령어 모양, 이해하기 쉬운 추상 구문으로 만듬 x := x + y ;

  21. 프로그래밍 언어 소개 구조화된 추상화 분할된 명령어 그룹 수행 Ada Java if x > y then begin t := x; x := y; y := t; end else begin x := x + y; end if (x > y) { t = x; x = y; y = t; } else { x = x + y; } 단위 추상화 Procedure의 집합을 추상화 Modula-2의 module, Ada의 package

  22. 프로그래밍 언어 소개 1.4 계산 전형 명령형언어(Imperative Language) Procedure Language 명령 순서대로 시행

  23. 프로그래밍 언어 소개 프로시저 추상화 부프로그램의 사용 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

  24. 프로그래밍 언어 소개 함수형언어(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))))

  25. 프로그래밍 언어 소개 함수형언어(Functional Language) 예) Java int gcd(int u, int v) { if(v==0) return u; else return gcd(v, u%v); }

  26. 프로그래밍 언어 소개 논리형언어(Logic Language) Declarative Language 기호 논리학 근거 예) Prolog gcd(U, V, U) :- v = 0. gcd(U, V, X) :- v > 0, Y is U mod V, gcd(V, Y, X).

  27. 프로그래밍 언어 소개 객체 지향 언어(Object Oriented Language) 객체(object) 기본 Object 연산의 집합 예) Java 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); } }

More Related