끄적끄적 코딩
article thumbnail
[프로그래밍 언어론] 문법 (4)
프로그래밍 언어론 2019. 10. 23. 14:12

정규 문법과 CFG 문법에 대해서 알아보려고 한다. -> ( | )* -> a | b | c | ... | z -> 0 | 1 | 2 | ... | 9 => non-terminal syntax *는 0번 이상 여러번 반복을 의미하는 메타문자 문법에서 가장 먼저 나타나는 를 시작기호라고 함 언어 인식기 문법 + 파생을 이용해서 언어 인식기를 만들 수 있음 ex) 언어(L) = 0(10)* 입력 알파벳 = {0, 1} 입력 문자열 = 01010 오토마타 input symbol에 대해 state를 천이하는 모델링 툴을 state trasition diagram이라고 함. 이것을 좀 더 formal하게 나타낸 것이 오토마타라고 한다. 언어 생성기 언어 생성기 역시 문법에 의해 표현된다. ex) 0(10)..

[프로그래밍 언어론] 프로그래밍 언어들의 특징 (3)
프로그래밍 언어론 2019. 10. 23. 13:50

FORTRAN 4 1번부터 80번 캄럼까지 있는 코딩 용지에 작성 1~5번 칼럼까지는 문장 번호, 7~72번 칼럼은 문장을 적음. 내재적 형선언을 사용하여, 변수명의 첫글자가 I, J, K, L, M, N으로 시작하면 INTEGER형으로 그 외의 문자로 시작하면 REAL형으로 선언된다. 주석 = C-- 주석입니다 배열 선언 = DIMENSION LIST(99) 입력 = READ 60, LEN 출력 = WRITE 80, IRESULT if문 = IF((LEN .GT. 0) .AND. (LEN .LT. 100)) GO TO 101 GT = '>', LT = '

article thumbnail
[프로그래밍 언어론] 언어 부류와 컴파일러 (2)
프로그래밍 언어론 2019. 10. 23. 13:21

언어 설계에 영향 1. 컴퓨터 구조 2. 프로그래밍 방법론 폰 노이만 컴퓨터 구조 절차형 구조 fetch-decode-execute의 순환과정 fetch는 메모리의 한 명령어를 읽음. decode는 명령어의 op-code를 해독 execute는 해독한 코드를 실행 stored programming concept방식 = 메모리에 프로그램을 적재해 놓고, 한 문장씩 fetch, decode, execute하는 방식 언어 부류 명령형 언어 폰 노이만 컴퓨터 영향을 가장 많이 받은 언어 변수가 있음. 할당문 = A = B; 를 예로 들면 오른쪽 B값을 왼쪽의 A에 저장하는 것 오른쪽 편을 RHS, 왼쪽 편을 LHS라고 한다. RHS는 X는 X의 값(value)를 의미. LHS는 X는 X의 위치(location)..

[프로그래밍 언어론] 프로그래밍 언어론 (1)
프로그래밍 언어론 2019. 10. 23. 12:53

프로그래밍 영역 개념적(conceptual)인 것을 실제적(physical)인 것으로 mapping하는 과정을 구현(implementation)이라고 한다. 구현을 한꺼번에 할 수 없기 때문에 알고리즘(algorithm)을 통해서 순차적으로, 절차적으로 하는 방법을 찾아낸다. 과학응용 분야 배열, 행렬, 부동 소수점을 주로 처리 반복문 제어문 사용 Fortran을 주로 사용 사무응용 분야 여러가지 종류의 양식들을 표현하고 보고서로 나타낼 수 있도록 사용 COBOL을 주로 사용 (10진수, 문자 데이터 표현 저장 가능) 인공지능 분야 수치 계산보다는 기호 위주의 계산을 주로 사용 스트링 매칭, 패턴 매칭, 이미지캐릭터 매칭 LISP를 주로 사용(리스트 처리 언어) LISP는 재귀를 기본으로 사용, 순환 종..

[PASCAL] 평균 보다 높은 학생 구하기
프로그래밍 언어론 2019. 10. 2. 19:30

파스칼 - PASCAL 코드 - { Pascal 평균 성적보다 높은 학생 구하기 } program pasex (input, output); type intlisttype = array [1..99] of integer; var intlist : intlisttype ; listlen, counter, sum, average, result : integer; begin result = 0; sum = 0; readln (listlen); if ((listlen > 0) and (listlen < 100)) then begin { 학생 성적 읽기 } for counter = 1 to listlen do begin readln (intlist[counter]); sum = sum + intlist[counte..

검색 태그