제 1 장 프로그래밍 언어 소개
description
Transcript of 제 1 장 프로그래밍 언어 소개
제 1장 프로그래밍 언어 소개
1.1 프로그래밍 언어란 무엇인가
1.2 프로그래밍 언어를 배워야 하는 이유
1.3 프로그래밍 언어에서의 추상화
1.4 계산 전형
프로그래밍 언어 정의 (1)
1.1 프로그래밍 언어란 무엇인가
기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현 체계
A notational system for describing computation inmachine - readable and human - readable form
프로그래밍 언어 소개
프로그래밍 언어 정의 (2)계산 처리과정을 컴퓨터가 해독할 수 있는 방법으로표현하는 체계적인 표기법
Any notation for the description of algorithmsand data structures
프로그래밍 언어 소개
프로그래밍 언어 정의 (3)
현재 사용하는 언어를 더욱 더 잘 이해하게 된다 .
1.2 프로그래밍 언어를 배워야 하는 이유
예 ) Recursion( 재귀호출 , 되부름 ) - 자기 자신을 부르는 루틴
프로그래밍 언어 소개
효율적인 알고리즘실행시간이 길다FOTRAN, COBOL : 실행 안됨(FOTRAN I, II, IV, 77)
PASCAL, C : 실행 가능
! 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 = 1ELSEresult = 2*exp_(n-1)PRINT *, " 2 ^", n, "=", resultEND IFEND FUNCTION exp_
END PROGRAM recursive_example
프로그래밍 언어 소개Example 1.1 FORTRAN90
프로그래밍 언어 소개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 *);
프로그래밍 언어 소개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= 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
프로그래밍 언어 소개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);}
}
2 ^ 0 = 12 ^ 1 = 22 ^ 2 = 42 ^ 3 = 82 ^ 4 = 162 ^ 5 = 322 ^ 6 = 642 ^ 7 = 1282 ^ 8 = 2562 ^ 9 = 5122 ^ 10 = 1024
Result
프로그래밍 언어 소개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;
2 ^ 0 = 12 ^ 1 = 22 ^ 2 = 42 ^ 3 = 82 ^ 4 = 162 ^ 5 = 322 ^ 6 = 642 ^ 7 = 1282 ^ 8 = 2562 ^ 9 = 5122 ^ 10 = 1024
Result
프로그래밍 언어 소개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 = 42 ^ 3 = 82 ^ 4 = 162 ^ 5 = 322 ^ 6 = 642 ^ 7 = 1282 ^ 8 = 2562 ^ 9 = 5122 ^ 10 = 1024
Result
※ Recursion
#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));}
#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++
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
유용한 프로그램을 구사할 수 있는 능력을 증대 시킨다 .
예 ) Coroutine 개념을 사용
프로그램 언어를 선택할 수 있는 능력을 증대 시킨다 .
예 ) X P : S(L1) F(L2)
프로그래밍 언어 소개
문자 처리FORTRAN, COBOL 대신 SNOBOL4
예 ) Fortran Pascal C C++ Java⇒ ⇒ ⇒ ⇒
새로운 프로그래밍 언어를 설계하기 쉽게 해 준다 .예 ) JCL
Query Language
프로그래밍 언어 소개
새로운 프로그래밍 언어를 배우기 쉽게 해 준다 .
추상화 (Abstraction) 의 개념
1.3 프로그래밍 언어에서의 추상화
프로그래밍 언어 소개
자신의 속성들의 일부분만을 가지고 주어진 작업이나
객체들을 필요한 정도로 묘사할 수 있는 방법을 지원
하는 것
자료 추상화 : 자료의 특성 추상화 ( 문자열 , 수 , tree)제어 추상화 : 알고리즘 추상화
( 반복문 , 조건문 , 프로시저 호출 )
추상화 정보량에 의한 분류
기본적 추상화 : 기계 정보 수집구조화된 추상화 : 프로그램 구조에 대한 보다
전역적 정보단위 추상화 : 단위 프로그램 전체에 대한 정보
프로그래밍 언어 소개
범주
var x : integer; var y : real;
자료 추상화
프로그래밍 언어 소개
기본적 추상화 컴퓨터 내부 자료 표현기억 장치의 장소
int x; float y;
PASCAL
C 언어
구조화된 추상화 관련된 자료의 집합을 추상화 ( 배열 , 레코드 )
type person =record name : nwords;age : years;address : awords;telnumber : twords;salary : integer;end
var X, Y : array[0..20] of real;employee : person
프로그래밍 언어 소개
PASCAL
단위 추상화 자료 캡슐화 , 추상화
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;
프로그래밍 언어 소개
x := x + y ;
제어 추상화
프로그래밍 언어 소개
기본적 추상화 기계어 명령어 모양 ,이해하기 쉬운 추상 구문으로 만듬
if x > y thenbegin t := x;x := y;y := t;endelse begin x := x + y;end
구조화된 추상화 분할된 명령어 그룹 수행
단위 추상화 Procedure 의 집합을 추상화
Modula-2 의 module, Ada 의 package
프로그래밍 언어 소개
if (x > y) {t = x;x = y;y = t;}else {x = x + y;}
Ada Java
명령형언어 (Imperative Language)
1.4 계산 전형
프로그래밍 언어 소개
Procedure Language
명령 순서대로 시행
프로시저 추상화부프로그램의 사용
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
프로그래밍 언어 소개
함수형언어 (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
함수형언어 (Functional Language)
예 ) Javaint gcd(int u, int v) {
if(v==0)return u;
elsereturn gcd(v, u%v);
}
프로그래밍 언어 소개
논리형언어 (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).
프로그래밍 언어 소개
객체 지향 언어 (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);}}
프로그래밍 언어 소개