1 / 31

프로그래밍 언어

프로그래밍 언어. 프로그래밍 언어의 개요 프로그래밍 언어의 구문 정의 변수와 영역 자료형 조건문과 반복문 부프로그램. 프로그래밍 언어 개념에 대해 살펴본다 . 프로그래밍 언어의 구문을 정의하는 대표적인 표기법인 BNF 에 대해 살펴본다 . 변수의 개념과 영역의 개념에 대해 살펴본다 . 다양한 자료형에 대해 살펴본다 . 실행 순서에 변화를 가져오는 조건문과 반복문에 대해 살펴본다 . 하나의 단위로 만들어진 기능인 부프로그램에 대해 살펴본다. 프로그래밍 언어

Download Presentation

프로그래밍 언어

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. 프로그래밍 언어 • 프로그래밍 언어의 개요 • 프로그래밍 언어의 구문 정의 • 변수와 영역 • 자료형 • 조건문과 반복문 • 부프로그램 한빛미디어(주)

  2. 프로그래밍 언어 개념에 대해 살펴본다. • 프로그래밍 언어의 구문을 정의하는 대표적인 표기법인 BNF에 대해 살펴본다. • 변수의 개념과 영역의 개념에 대해 살펴본다. • 다양한 자료형에 대해 살펴본다. • 실행 순서에 변화를 가져오는 조건문과 반복문에 대해 살펴본다. • 하나의 단위로 만들어진 기능인 부프로그램에 대해 살펴본다.

  3. 프로그래밍 언어 • 컴퓨터에서 일을 수행하기 위한 명령문의 집합인 프로그램을 작성하기 위해 사용하는 기호 체계 • 저급 언어(low level language)와 고급 언어(high level language)로 분류 • 기계어 • 컴퓨터가 직접 이해할 수 있는 유일한 언어 • 효율성은 높지만 언어 자체가 복잡하고 어려움 • 컴퓨터의 종류에 따라 다르며, 컴퓨터에 의존적인 경향을 띄어 표준이 없음 • 어셈블리어 • 어려운 기계어의 명령들을 쉬운 기호로 나타낸 것 • 모든 컴퓨터들의 어셈블리어는 같지 않음 • 기계어에 비해 프로그램을 작성하기가 쉽고, 고급언어와는 달리 하드웨어에 직접적인 접근을 하기 때문에 수행 속도가 빠른 장점

  4. 어셈블리어 • 고급언어 • 컴파일러 : 고급언어로 작성된 프로그램을 컴퓨터는 직접 이해할 수 없으므로 기계어 프로그램으로 번역하는 소프트웨어 [그림 6-1] 어셈블러의 역할 [그림 6-2] 컴파일러의 역할

  5. BNF(Backus-Naur Form) • 프로그래밍 언어의 구문을 기술하기 위하여 가장 일반적으로 사용되는 표기법 • 1960년 ALGOL 60이란 언어의 구문을 정의할 때 최초로 사용 • BNF 예 • ‘AA2’라는 식별자가 문법에 맞는지 살펴보자.

  6. 파스 트리(parse tree) : 유도 과정을 트리로 나타낸 것 • [예] 배정문 [그림 6-3] ‘AA2’에 대한 파스 트리

  7. ‘AA = B - 20’이라는 배정문이 문법에 맞는지 살펴보자. • 주어진 규칙을 이용해서 ‘AA = B - 20’이 유도되므로 문법에 맞는 배정

  8. BNF 예(2) • 파스 트리 [그림 6-4] ‘AA = B - 20’에 대한 파스 트리

  9. 변수 • 다음과 같은 속성들이 모여서 변수의 개념이 형성 • 선언문에 의해 변수 선언 ① 변수 이름 : x가 된다. 변수의 이름은 약간의 규칙이 있지만 프로그래머가 임의로 정할 수 있다. ② 변수형 : 변수가 가질 수 있는 값들의 자료형으로, 변수 x는 정수형이 된다. ③ 변수 주소 : 변수가 위치하고 있는 메모리 주소인데, 다음은 변수 x가 메모리 주소 0x1000~0x1003에 위치함을 의미한다. [그림 6-5] 변수 x의 주소

  10. ④ 변수 값 : 배정문에 의해 부여되는데, 'x=10;'은 변수 x에 10을 저장하는 C 언어 배정문이다. 이런 변수의 값은 그 변수가 위치하고 있는 메모리 영역에 저장된 내용을 말하는 것으로, 변수 x의 값은 10이 된다. ⑤ 변수 영역 : 앞으로 살펴보자. • 영역 • 그 이름의 사용이 허락되고 있는 프로그램 범위 • 정적 영역 규칙 • ALGOL 60에서 도입, 현재 대부분의 언어에서 사용 • 이름에 해당하는 변수를 찾을 때 외향적인 구조에 따라 동작하는데, 자신을 포함하고 있는 블록에서 선언되었는지 살펴보고 아니면 그 바깥쪽 블록에서 선언되었는지를 조사

  11. 정적 영역 규칙 • 앞 프로그램 실행 순서 ① 02행에서 a와 b를 선언하고, 14행에서 a에 0을, b에 1을 저장한다. 15행에서 func를 호출한다. ② func를 호출하면 07~12행이 실행된다. 08행에서 변수 a와 b를 선언하는데, 02행의 변수 a, b와는 이름은 같지만 전혀 다른 변수다. 10행에서 a에 2를, b에 3을 저장하고, 11행에서 print를 호출한다. ③ print를 호출하면 03~06행을 실행하여 05행에서 a와 b의 값을 출력한다. 05행의 a와 b를 포함하고 있는 블록(03~06행)에서 a와 b를 선언하고 있는지 살펴보았는데, 선언된 부분이 없다. 그러므로 그 바깥쪽 블록(01~16행)에서 a와 b를 선언하고 있는지 살펴보았는데, 02행에서 선언하고 있는 것을 볼 수 있다. 이 블록의 14행에서 a에 0을, b에 1을 저장했으므로 0과 1이 출력된다. [그림 6-6] 프로그램 예

  12. 동적 영역 규칙 • APL, SNOBOL 4 그리고 LISP 초기 버전에서 적용된 방식 • 이름에 해당하는 변수를 찾을 때 외향적인 구조에 기반하지 않고, 부 프로그램들의 호출 순서에 기반 • 먼저 자신을 포함하고 있는 블록에서 선언되었는지를 보고 아니면 자신을 포함한 블록(부 프로그램)을 호출한 문장을 포함하고 있는 블록에서 선언된 것인지를 조사 • 앞의 프로그램을 이용한 설명 • 05행을 포함한 블록(03~06행)에서 a와 b를 선언하고 있는지를 살펴보는데, 선언된 부분이 없다. • 그러면 이 블록(print)을 호출한 문장(11행)을 포함하고 있는 블록(07~12행)에서 a와 b를 선언하고 있는지를 살펴보는데, 08행에서 선언하고 있는 것을 볼 수 있다. 이 블록의 10행에서 a에 2를, b에 3을 저장했으므로 2와 3이 출력된다.

  13. 자료형 • 저장할 수 있는 값의 집합뿐만이 아니라 수행할 수 있는 연산의 집합까지 포함 • 자료형은 기본 자료형, 구조적 자료형 그리고 포인터 자료형 등으로 구분 • 기본 자료형 • 수치형 • 정수형 • int형이 short int형보다는 크기가 크거나 같고, long int형이 int형보다는 크기가 크거나 같다. • 부동소수점형 : 실수를 표현하는 방식

  14. 부울형 • 부울형은 참과 거짓이라는 두 개의 값을 갖는데, 수식이 참인지 거짓인지를 파악할 때 사용된다. • 부울형 자료에 대한 대표적인 연산으로 and, or, not이 있는데, x와 y가 부울형 일 때 다음과 같이 동작한다. [표 6-1] and, or, not 연산

  15. 문자열형 • PL/Ⅰ : 문자열을 값으로 가질 수 있는 변수를 선언할 수 있는 최초의 언어 • 길이가 10인 문자열 변수 A를 선언 • 문자열과 관련된 연산 • |는 문자열과 문자열을 연결 • LENGTH(A)는 문자열 A의 길이를 반환 • SUBSTR(A, I, J)는 문자열 A의 I번째 문자로 시작해서 J개의 문자열을 추출 • INDEX(A, B)는 문자열 A에서 문자열 B의 위치를 찾음 • VERIFY(A, B)는 문자열 A에서 문자열 B에 속하지 않는 첫 번째 문자의 위치를 찾음 • TRANSLATE(A, B, C)는 문자열 A에서 C에 있는 문자들을 B에 있는 문자들로 교체

  16. 구조적 자료형 • 여러 자료를 묶어서 하나의 단위로 처리하는 자료형 • 배열은 집합체에서의 위치로 원소를 식별하는 동질형 자료의 모임, 레코드는 이름으로 원소를 식별하는 이질형 자료의 모임 • 배열 • 이름, 배열의 차원, 배열 원소의 형, 첨자 범위 등으로 특징 • FORTRAN, Ada에서는 이름이 A이고 크기가 2×3인 2차원 배열을 다음과 같이 소괄호를 이용해서 나타냄 • ALGOL 60, Pascal 등 대부분의 언어는 다음과 같이 대괄호를 이용해서 나타냄 • 이름이 A, 크기가 5 그리고 원소의 형이 정수형인 1차원 배열을 선언(C 언어) [그림 6-7] 배열 A의 구조

  17. 레코드 • 이질형 자료의 모임 • 1960년대 초기에 COBOL에서 도입 • C 언어의 구조체(structure) • 정의된 구조체인 struct student형의 변수 선언 • 필드에 접근 [그림 6-8] 구조체형 변수 A의 구조

  18. 조건문 • 조건문은 조건에 따라 둘 또는 그 이상의 실행 경로 중에서 하나를 선택할 수 있는 수단을 제공 • 양자택일문과 다자택일문 으로 구분 • 양자택일문 • 양자택일문을 처음 도입한 언어 : ALGOL 60 • C 언어의 if-else 구조 [그림 6-9] if-then-else 구조 • if-else 구조에서 다음과 같은 경우에 else가 첫 번째 if와 연결되는 것인지 두번째 if와 연결되는 것인지 해석이 어려운 경우가 발생

  19. 만약 참이거나 거짓인 경우에 실행되어야 하는 문장이 여러 개인 경우 • 가장 가까이 있는 if와 연결되므로 두번째 if와 연결되는 것이다. 만약 첫번째 if와 연결을 시키려면 중괄호를 이용

  20. 양자택일문 • else-if 구조 [그림 6-10] else-if 구조

  21. 다자택일문 • ALGOL-W의 case 문이 처음 도입된 다자택일문 • C 언어는 switch 문

  22. 반복문 • 특정 부분을 반복해서 실행하는 구조 • FORTRAN의 DO 문 • 변수 I가 1의 초기값을 갖고 한 번씩 반복할 때마다 1씩 증가되면서 5보다 작거나 같은 동안 ⋮ 부분을 실행한다. • while 문 • 만약 반복하고자 하는 문장이 여러 개인 경우 [그림 6-11] while 구조

  23. do-while 문 • 다음과 같이 중괄호로 묶는 것이 바람 직하다 [그림 6-12] do-while 구조

  24. for 문 • 초기식, 조건식, 변환식 등 수식은 생략해도 되지만 수식을 생략할 경우라도 세미콜론(;)은 생략이 불가능 • 초기식을 생략할 경우 [그림 6-13] for 구조

  25. 기능A를 여러 번 실행하는 프로그램 구조 • 기능A를 하나의 단위로 만든 프로그램 구조 : 부프로그램 [그림 6-14] 기능 A를 여러 번 실행하는 프로그램 구조 [그림 6-15] 기능 A를 하나의 단위로 만든 프로그램 구조

  26. 부프로그램 • 부프로그램A를 ‘부프로그램 정의’ 부분이라 하고, 부프로그램이 실행되도록 명령하는 문장을 ‘부프로그램 호출’이라 함 • 부프로그램이 있는 프로그램의 실행 순서 [그림 6-16] 부프로그램이 있는 프로그램 구조 [그림 6-17] 부프로그램이 있는 프로그램의 실행 순서

  27. 부프로그램의 종류 • 서브루틴(subroutine)과 함수(function)로 구분 • 함수가 있는 프로그램의 동작 [표 6-2] 부프로그램의 종류와 차이점 [그림 6-18] 함수가 있는 프로그램의 동작

  28. 매개변수 • 매개변수를 이용하면 실행될 부프로그램에게 값을 전달할 수 있음 • 부프로그램의 형식 • 호출 형식 • C 언어에서 function이라는 함수를 정의하는 예 • 함수를 호출

  29. 매개변수 전달 방식 (C 언어) • 값에 의한 전달 • 실 매개변수의 값을 형식 매개변수에 저장해서 동작하는 방식 [표 6-3] C 언어에서의 매개변수 전달 방식 [그림 6-19] 값에 의한 전달

  30. 주소에 의한 전달 • 실 매개변수의 주소를 형식 매개변수에 저장해서 동작하는 방식 [그림 6-20] 주소에 의한 전달에서의 실 매개변수와 형식 매개변수 [그림 6-21] 주소에 의한 전달

More Related