개발/언어론

프로그래밍 언어론 - 구조적 프로그래밍 다익스트라 알고리즘(Dijkstra’s Algorithm)만든 다익스트라가 발표한 논문에 저작 되어 있음 goto 문 쓰지마, if 구문 나눠서 실행하거나, 조건이 맞으면 다시 실행하도록하거나 오직 하나의 입구와 출구만이 있는 제어 구조를 사용해야 한다는 프로그래밍 설계 기법 프로그램을 복잡하게 하는 goto 문은 이용하지 않고 구조화된 순차, 선택, 반복 제어 구조만을 이용하여 프로그램을 설계한 것이다 구조적 프로그래밍의 핵심을 이루고 있는 순차, 선택, 반복 구조이다 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
유한 오토마타 어떤 알파벳 Σ로부터 만들어지는 문자열의 특별한 것들을 받아들이는 시스템의 수학적 모델로서, 그 시스템에서 변화할 수 있는 상태가 유한개이다. 컴퓨터의 여러 분야에서 널리 사용되고 있다. 특히 플립플롭(flip-flop)을 비롯한 여러 컴퓨터 관련 고안물들, 형식언어의 연구, 그리고 컴파일러 등에 유용하게 쓰인다 또, 컴파일러의 어휘 분석(lexical analysis) 또한 유한 오토마타의 대표적인 것이다. 상태 전이 함수의 형태에 따라 결정적 유한 오토마타 (Deterministic Finite Automata; DFA)와 비결정적 유한 오토마타(Nondeterministic Finite Automata; NFA)를 구분한다. 오토마타의 전이 함수는 유한 오토마타의 상태 전이를 행렬(m..
정규 문법 표현하는 방법 해당 글은 정규 문법의 연산 순서의 양줄이기 버전입니다 정규 문법을 가장 잘 표현 할 수 있는 방법에 대해 알아보자! 위의 정의에서 연산자의 우선 순위는 *(클리니 클로저) > •(접속) > +(합집합)이다. 사칙 연산과 동일하게 왼쪽 결합 법칙 이 적용 된다 예제. 다음 정규 표현의 연산 순서는? 앞서 말한, 연산자 우선 순위와 왼쪽 결합 법칙을 이용하면 위와 같은 연산 순서를 가지게 된다. 이렇게 보니, 사칙 연산과 동일하다 생각해도 될 듯하다 예제 3.20 정규표현에 의해 생성 되는 언어 0 + 1은 언어 {0 , 1 }을 나타낸다 (0 + 1) 0은 {00, 10}을 나타낸다 0*는 언어 { ε, 0, 00, 000, ⋯}를 나타낸다 (0 + 1)*는 언어 {ε, 0, 1..
정규 문법(regular grammar) 모든 규칙이 다음과 같은 형태를 가지는 문법을 말합니다. A -> aB A -> a A -> ε A와 B는 비터미널 심볼(nonterminal symbol) a는 터미널 심볼(terminal symbol) ε는 빈 문자열(empty string)을 나타냅니다. 정규 문법은 주로 언어의 구문 분석에 사용되며, 정규 표현식(regular expression)과 같은 형식 언어(formal language)의 기본적인 표현 방법 중 하나입니다. 비터미널 심볼(nonterminal symbol) 다른 비터미널 심볼 또는 터미널 심볼로 대체될 수 있습니다. 예를 들어 위의 정규 문법에서 A가 다른 비터미널 심볼이나 터미널 심볼로 대체될 수 있다는 의미입니다. Right-l..
프로그래밍 언어론 - 포괄 부프로그램 다양한 타입의 매개변수를 허용하는 부프로그램을 의미한다. Ada 예를 통한 이해 : 두 예가 거의 유사 → 이때 포괄 부프로그램을 사용 Ada generic이라는 예약어를 이용해서 포괄 부프로그램을 생성 generic type Element is private; procedure exchange(x, y: in out Element); procedure exchange (x, y: in out Element) is temp: Element; begin temp := x; x := y; y := temp; end exchange; integer, float, character 타입의 데이터를 교환하는 swap이라 불리는 3개의 부프로그램이 정의 procedure swa..
프로그래밍언어론 - 중복 부프로그램 같은 이름을 갖는 두 개 이상의 부프로그램들을 의미한다 단 모든 중복 부프로그램은 매개변수 내용이 달라야 한다 C++, Java, Ada 등에서 중복 부프로그램 기능을 지원 C언어에서는 허락하지 않아서 에러가 발생…! C++에서는 가능…! 주의 사항 : 중복 부프로그램이 매개변수까지 동일하면 안된다 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
프로그래밍언어론 - 매개변수 전달 방식 값 전달 실 매개변수의 값을 형식 매개변수에 저장하고 형식 매개변수를 부프로그램의 지역 변수로 사용하는 방식이다 실 매개변수와 형식 매개변수는 별개의 변수이므로 형식 매개변수의 어떠한 변화도 실 매개변수에는 아무런 영향을 미치지 않는다 C와 Java, C++는 값 전달이 기본 방식, Ada의 in 매개변수가 값 전달 방식이다. in 매개 변수를 이용해서 값 전달을 보여주는 Ada의 예 Ada in 매개변수의 특이점은 값을 배정 할 수 없다는 점이다. with TEXT_IO; use TEXT_IO; procedure parameter is package INT_IO is new TEXT_IO.INTEGER_IO (integer); use INT_IO; a, b: in..
프로그래밍언어론 - 부프로그램 부프로그램이란, 프로그램에서 호출에 의해 실행되도록 만들어진 일련의 코드를 의미한다 부프로그램의 정의와 호출 부프로그램은 실행 할 내용을 기술한 일련의 코드로 머리부와 본체로 구성 되었다 부 프로그램은 코드 흐름 상, 순차적으로 실행 되던 중 함수, 프로시져 등 프로그램 흐름을 변경해서 기능하는 것들을 일컫는 것이라 이해했다 부프로그램의 머리 부분은 예약어, 부프로그램의 이름, 매개변수들의 이름과 타입, 반환 값의 타입 등을 기술한다 부프로그램의 정의 방법 부프로그램 선언 부프로그램이 정의되어 있다는 것을 컴파일러에게 알리는 역할 부프로그램의 머리부는 제공하지만, 부프로그램 몸체를 포함하진 않음 void sub(int, int); 부 프로그램 호출 FORTRAN에서 SUB ..
프로그래밍언어론 - 반복문 반복문이란, 특정 부분을 반복 실행되게 하는 문장을 의미한다. 예시 : FORTRAN의 DO문 변수가 초기 값을 갖고 한 번씩 반복할 때마다 증가 값만큼 증가되면서, 종료 값보다 작거나 같은 동안 문장들을 실행 증가 값은 생략 가능, 생략하면 반복 할 때마다 변수 값은 1씩 증가 While 문 식이 참인 동안 문장을 반복해서 실행 C/C++/Java의 while 문 while(Expression) 문장; EBNF -> while() Ada의 while 문 while(Expression){ 문장 1; 문장 2; ... } with Ada.Text_IO; use Ada.Text_IO; procedure Sum is package Int_IO is new Ada.Text_IO.Int..
프로그래밍 언어론 - 조건문 조건문을 사용하면 조건에 따라 둘 이상의 실행 경로 중 하나를 선택할 수 있습니다. 프로그래밍에서 의사 결정 논리를 구현하기 위한 수단을 제공합니다. 두 가지 일반적인 유형의 조건문이 있습니다. “if” 문 if 문은 조건이 참인지 거짓인지에 따라 특정 실행 경로를 선택합니다. if 문은 FORTRAN 프로그래밍 언어에서 처음 도입되었습니다. “case” 또는 “switch” 문 case 또는 switch 문을 사용하면 서로 다른 조건에 따라 여러 경로 중 하나를 선택할 수 있습니다. 표현식을 평가하고 값을 다른 케이스 레이블과 일치시킵니다. 일치하는 경우에 따라 해당 코드 블록이 실행됩니다. If 문 FORTRAN If 문은 FORTRAN에 도입 처음 도입하였습니다 식의 결..
berom
'개발/언어론' 태그의 글 목록