Download presentation
Presentation is loading. Please wait.
1
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
1.3 프로그래밍 언어에서의 추상화 1.4 계산 전형
2
1.1 프로그래밍 언어란 무엇인가 프로그래밍 언어 정의 (1) 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로
프로그래밍 언어 소개 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 프로그래밍 언어를 배워야 하는 이유 현재 사용하는 언어를 더욱 더 잘 이해하게 된다.
프로그래밍 언어 소개 1.2 프로그래밍 언어를 배워야 하는 이유 현재 사용하는 언어를 더욱 더 잘 이해하게 된다. 예) Recursion(재귀호출, 되부름) - 자기 자신을 부르는 루틴 효율적인 알고리즘 실행시간이 길다 FOTRAN, COBOL : 실행 안됨 (FOTRAN I, II, IV, 77) PASCAL, C : 실행 가능
5
Example 1.1 FORTRAN90 ! This is Recursive function in Fortran90
프로그래밍 언어 소개 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;
프로그래밍 언어 소개 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)
프로그래밍 언어 소개 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)
프로그래밍 언어 소개 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 E+00
9
Example 1.3 C Result #include<stdio.h> main() { int m, k, c;
프로그래밍 언어 소개 Example 1.3 C #include<stdio.h> main() { int m, k, c; m = 2; for (k = 0; k <= 10; k++) if( k == 0 ){ c = 1; } else{ c = c * m; printf("%d ^ %d = %d\n", m, k, c); 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
Example 1.3 C Result 2 ^ 0 = 1 2 ^ 1 = 2 2 ^ 2 = 4 2 ^ 3 = 8
프로그래밍 언어 소개 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 c = 1, square; if( k == 0 ){ c = 1; } else{ for( square = 0 ; square < k ; square++ ){ c = c * m; return c; 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
11
Example 1.3 C Result ※ Recursion #include<stdio.h> main() {
프로그래밍 언어 소개 Example 1.3 C ※ Recursion #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
12
#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));
13
Example 1.4 C++ #include <iostream.h> class Recursion { public:
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;
14
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));
15
유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다.
프로그래밍 언어 소개 유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다. 예) Coroutine 개념을 사용 프로그램 언어를 선택할 수 있는 능력을 증대 시킨다. 문자 처리 FORTRAN, COBOL 대신 SNOBOL4 예) X P : S(L1) F(L2)
16
예) Fortran ⇒ Pascal ⇒ C ⇒ C++ ⇒ Java
프로그래밍 언어 소개 새로운 프로그래밍 언어를 배우기 쉽게 해 준다. 예) Fortran ⇒ Pascal ⇒ C ⇒ C++ ⇒ Java 새로운 프로그래밍 언어를 설계하기 쉽게 해 준다. 예) JCL Query Language
17
1.3 프로그래밍 언어에서의 추상화 추상화(Abstraction)의 개념
프로그래밍 언어 소개 1.3 프로그래밍 언어에서의 추상화 추상화(Abstraction)의 개념 자신의 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원 하는 것
18
자료 추상화 : 자료의 특성 추상화 (문자열, 수, tree) 제어 추상화 : 알고리즘 추상화
프로그래밍 언어 소개 범주 자료 추상화 : 자료의 특성 추상화 (문자열, 수, tree) 제어 추상화 : 알고리즘 추상화 (반복문, 조건문, 프로시저 호출) 추상화 정보량에 의한 분류 기본적 추상화 : 기계 정보 수집 구조화된 추상화 : 프로그램 구조에 대한 보다 전역적 정보 단위 추상화 : 단위 프로그램 전체에 대한 정보
19
자료 추상화 기본적 추상화 컴퓨터 내부 자료 표현 기억 장치의 장소 PASCAL var x : integer;
프로그래밍 언어 소개 자료 추상화 기본적 추상화 컴퓨터 내부 자료 표현 기억 장치의 장소 PASCAL var x : integer; var y : real; C 언어 int x; float y;
20
구조화된 추상화 관련된 자료의 집합을 추상화(배열, 레코드) PASCAL type person = record
프로그래밍 언어 소개 구조화된 추상화 관련된 자료의 집합을 추상화(배열, 레코드) 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
21
단위 추상화 자료 캡슐화, 추상화 프로그래밍 언어 소개 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; type BSTREEPTR is access BSTREE; end;
22
프로그래밍 언어 소개 제어 추상화 기본적 추상화 기계어 명령어 모양, 이해하기 쉬운 추상 구문으로 만듬 x := x + y ;
23
구조화된 추상화 분할된 명령어 그룹 수행 Ada Java 단위 추상화 Procedure의 집합을 추상화
프로그래밍 언어 소개 구조화된 추상화 분할된 명령어 그룹 수행 Ada Java if x > y then begin t := x; x := y; y := t; end else x := x + y; if (x > y) { t = x; x = y; y = t; } else { x = x + y; 단위 추상화 Procedure의 집합을 추상화 Modula-2의 module, Ada의 package
24
1.4 계산 전형 명령형언어(Imperative Language) Procedure Language 명령 순서대로 시행
프로그래밍 언어 소개 1.4 계산 전형 명령형언어(Imperative Language) Procedure Language 명령 순서대로 시행
25
프로시저 추상화 부프로그램의 사용 PROCEDURE gcd ( u, v : INTERGER; VAR x : INTERGER);
프로그래밍 언어 소개 프로시저 추상화 부프로그램의 사용 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 gcd
26
함수형언어(Functional Language)
프로그래밍 언어 소개 함수형언어(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))))
27
함수형언어(Functional Language)
프로그래밍 언어 소개 함수형언어(Functional Language) 예) Java int gcd(int u, int v) { if(v==0) return u; else return gcd(v, u%v); }
28
논리형언어(Logic Language)
프로그래밍 언어 소개 논리형언어(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).
29
객체 지향 언어(Object Oriented Language)
프로그래밍 언어 소개 객체 지향 언어(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);
Similar presentations