대부분의 경우 지침은 알고리즘 언어의 레코드 형식으로 작성됩니다. 모든 단계의 정확한 처방과 실행에 필요합니다. 학교 알고리즘 언어와 프로그래밍 언어 사이에는 분명한 차이점이 있습니다. 일반적으로 컴퓨터는 첫 번째 버전에서 실행기 역할을 할 뿐만 아니라 작업을 수행할 수 있는 다른 장치로도 작동합니다. 알고리즘 언어로 작성된 모든 프로그램은 기술로 수행할 필요가 없습니다. 실제로 모든 지침을 구현하는 것은 완전히 별개의 문제입니다. 알고리즘 언어의 알고리즘에 대한 설명도 아래에서 고려할 것입니다. 이 시스템의 장치를 이해하는 데 도움이 됩니다.

학교에서 공부

종종 학교에서는 학습 언어로 가장 일반적으로 알려진 알고리즘 언어를 가르칩니다. 모든 학생이 가장 이해할 수 있는 단어를 사용한다는 점에서 대규모 배포를 받았습니다. 러시아어로 된 구문이 있는 유사한 언어가 1980년대 중반에 오래 전에 도입되었습니다. 그것은 학생들에게 기초를 제공하고 컴퓨터 없이 컴퓨터 과학 과정을 가르치는 데 사용되었습니다. 이 언어는 교과서 중 하나에서 1985년에 출판되었습니다. 그것은 또한 9학년과 10학년을 가르치기 위한 특별 책을 위해 여러 번 재인쇄되었습니다. 출판물의 총 발행 부수는 700만 부에 달했습니다.

알고리즘 쓰기 순서

우선, 문자 조합 ALG를 적어 두어야 합니다. 알고리즘의 이름은 다음과 같습니다. 그런 다음 START 후에 일련의 명령을 설명해야 합니다. KOH 연산자는 프로그램의 끝을 의미합니다.

알고리즘 언어의 알고리즘 설명:

알지컴퍼니

시작

왼쪽으로 90도 회전

쓸 때 키워드밑줄을 긋거나 굵게 표시해야 합니다. 들여쓰기는 논리 블록을 나타내는 데 사용해야 하며 시작 단어와 끝 단어 쌍이 있는 경우 다음을 사용합니다. 수직 막대, 연결을 나타냅니다.

알고리즘 작성

이전 레코드를 사용하여 새 지침을 작성할 수 있습니다. 이러한 명령을 보조 명령이라고 합니다. 이러한 알고리즘은 이전에 컴파일된 모든 설명 중 하나일 수 있습니다. 또한 이 시스템이 보조 시스템에 대한 참조를 받은 추가 알고리즘을 사용할 가능성도 있습니다.

종종 명령어를 생성할 때 추가 알고리즘으로 하나의 알고리즘만 사용해야 하는 경우가 있습니다. 그렇기 때문에 기록은 종종 복잡하고 번거로울 수 있습니다. 그러나 추천하는 기능은 동일한 기록을 여러 번 다시 작성하는 것보다 쉽다는 점은 주목할 가치가 있습니다.

이것이 실제로 사용자에게 지속적으로 종속되는 표준 보조 알고리즘이 자주 사용되는 이유입니다. 명령어는 자신과 다른 명령어 모두에 대한 참조를 가질 수 있습니다. 알고리즘 언어 명령은 이러한 작업을 위해 설계되었습니다. 이러한 명령을 재귀라고 합니다.

bind-to-self 명령은 시스템 자체에 있습니다. 이러한 재귀는 직접적입니다. 간접 명령은 알고리즘이 다른 보조 명령에서 호출되는 것입니다.

특정 명령 시퀀스가 ​​있는 알고리즘은 프로그램의 특정 부분을 실행한 결과에 따라 지속적으로 변경될 수 있습니다. 이러한 시스템을 분기라고 합니다. 이를 생성하려면 특별한 분기 명령을 사용해야 합니다. 그것은 축약되고 완전한 철자 체계를 가지고 있습니다. 종종 특수 명령을 여러 번 실행하는 순환 알고리즘이 있습니다.

전자 워크숍

문법 언어 이론에 대한 연구를 향상시키기 위해 1985년 모스크바 주립 대학의 Mekhmat 전문가들이 특수 컴파일러를 만들었습니다. 그것은 "E-워크샵"이라고 불렸습니다. 이를 통해 프로그램을 입력, 수정 및 실행할 수 있습니다. 이듬해 특정 출연자들이 발표되었다. 우리는 "로봇", "드래프터", "양발", "ATV"에 대해 이야기하고 있습니다. 이를 통해 알고리즘을 간단하고 쉽게 구현할 수 있습니다. 이 컴파일러는 매우 유명해졌으며 일부 컴퓨터에서 사용되었습니다. 충분한 오랫동안이 프로그래밍 언어는 개선 및 변경되었습니다. 1990년에는 그 이후 버전이 교과서에 실렸습니다.

우상

이제 학교 알고리즘 언어는 Windows 및 Linux용으로 특수 패키지 "Kumir"가 개발된 후 두 번째 탄생을 경험하고 있습니다. 이 시스템은 여러 연주자와 함께 작동합니다. 그 중 고전은 "로봇", "드래프터"입니다. 동일한 패키지가 설치에 포함되어 있습니다. 리눅스 파일"학교". 이 시스템러시아 과학 아카데미의 명령에 의해 특별히 개발되었습니다. 그것은 무료로 무료로 배포됩니다. 지난 몇 년 동안 설명된 언어는 다음 중 하나로 USE에서 사용하도록 적극적으로 제안되었습니다.

언어 할당

알고리즘 언어상당히 광범위한 문제를 해결하는 데 사용됩니다. 수학 및 다른 과목의 연습을 모두 마스터하는 데 적합합니다. 학생들이 유사한 주제를 더 쉽게 공부할 수 있도록 하는 데에도 사용된다는 점에 유의해야 합니다.

기계 언어와 알고리즘 언어의 차이점

기계 종속 언어의 가장 유명한 대표자는 "어셈블러"입니다. 프로그래밍하는 동안 사람은 특수 연산자 덕분에 어떤 메모리 셀을 채우거나 옮겨야 하는지를 번역기에게 명확하게 표시해야 합니다. "어셈블러"의 구문은 가능한 한 컴퓨터 형식의 쓰기에 가깝기 때문에 연구하기가 다소 어렵습니다. 이것이 알고리즘 언어가 학교에서 뿐만 아니라 고등 교육 1학년 때 프로그래밍을 시작할 때 가르치는 이유입니다.

표준 기능

알고리즘 언어에는 "내장" 상태를 받은 특별한 표준 기능이 있습니다. 그것들 덕분에 일상적인 입력을 수행하지 않고도 숫자와 표현식으로 많은 연산을 쉽게 작성할 수 있습니다. 알고리즘 언어의 프로그램은 매우 간단합니다. 일반 함수를 사용하면 제곱근, 로그, 모듈러스 등을 계산할 수 있습니다. 가장 널리 사용되는 기본 제공 방법은 다음과 같습니다.

  • 절대 모듈 abs(X);
  • 제곱근 sqrt(X);
  • 자연 및 ln(X), lg(X);
  • 최소 및 최대 최소(X,Y), 최대(X, Y);
  • 삼각 함수 sin(X), cos(X), tg(X), ctg(X).

덕분에 모든 프로그래머 또는 알고리즘 언어로 작업하는 방법을 배우는 사람은 자전거를 발명하지 않고도 수학적 문제를 쉽게 작성할 수 있습니다. 따라서 이 언어는 매우 편리하다는 점에 유의해야 합니다. 그것은 이해하기 쉽고 또한 매우 이해하기 쉽습니다. 그것이 학교 커리큘럼에 포함된 것은 놀라운 일이 아닙니다. 학생들은 그것을 배우는 것을 즐깁니다.

알고리즘은 수행자가 문제 해결을 목표로 일련의 작업을 수행하도록 하는 정확하고 이해할 수 있는 순서입니다.

"알고리즘"이라는 이름은 중앙 아시아의 수학자 al-Khwarizmi - Algorithmi의 이름의 라틴어 형식에서 유래합니다. 알고리즘은 컴퓨터 과학 및 수학의 기본 개념 중 하나입니다.

알고리즘 실행자는 알고리즘에 의해 규정된 작업을 수행할 수 있는 추상 또는 실제(기술적, 생물학적 또는 생명공학적) 시스템입니다.

수행자는 다음과 같은 특징이 있습니다.

기본 행동;

명령 시스템;

환경(또는 설정)은 수행자의 "서식지"입니다. 예를 들어, 교과서에 나오는 연기자 로봇의 경우 환경은 무한한 셀룰러 필드입니다. 벽과 음영 처리된 셀도 환경의 일부입니다. 그리고 로봇 자체의 위치와 위치가 환경의 특정 상태를 결정합니다.

각 실행자는 엄격하게 지정된 목록(실행자의 명령 시스템)에서만 명령을 실행할 수 있습니다. 각 명령에 대해 적용 조건이 지정되어야 하고(명령이 실행될 수 있는 환경 상태) 명령 실행 결과가 설명됩니다. 예를 들어 로봇 위에 벽이 없으면 로봇의 "up" 명령을 실행할 수 있습니다. 그 결과 로봇이 한 셀 위로 변위됩니다.

명령을 호출한 후 실행자는 해당 기본 작업을 수행합니다.

환경 상태가 유효하지 않을 때 명령이 호출되면 실행기 오류가 발생합니다.

일반적으로 수행자는 알고리즘의 목적에 대해 아무것도 모릅니다. "왜"와 "왜" 질문을 하지 않고 수신된 모든 명령을 실행합니다.

컴퓨터 과학에서 알고리즘의 보편적 실행자는 컴퓨터입니다.

알고리즘의 주요 속성은 다음과 같습니다.

연주자에 대한 이해 가능성 -- 즉. 알고리즘 실행자는 알고리즘을 실행하는 방법을 알아야 합니다.

불연속(불연속, 분리) - 즉. 알고리즘은 문제를 해결하는 프로세스를 간단한(또는 이전에 정의된) 단계(단계)의 순차적 실행으로 나타내야 합니다.

확실성 -- 즉 알고리즘의 각 규칙은 명확하고 모호하지 않아야 하며 임의의 여지가 없어야 합니다. 이 속성으로 인해 알고리즘 실행은 본질적으로 기계적이며 해결 중인 문제에 대한 추가 지침이나 정보가 필요하지 않습니다.

효율성(또는 유한성). 이 속성은 알고리즘이 유한한 단계의 문제 해결을 이끌어야 한다는 것입니다.

매스 캐릭터. 이것은 문제를 해결하기 위한 알고리즘이 일반적인 형태로 개발됨을 의미합니다. 초기 데이터에서만 다른 특정 부류의 문제에 적용할 수 있어야 합니다. 이 경우 알고리즘의 적용 영역이라고 하는 특정 영역에서 초기 데이터를 선택할 수 있다.

실제로 다음과 같은 형태의 알고리즘 표현이 가장 일반적입니다.

구두(자연어로 된 기록);

그래픽(그래픽 심볼의 이미지);

의사 코드(프로그래밍 언어 요소와 자연어 구문, 일반적으로 허용되는 수학적 표기법 등을 모두 포함하는 조건부 알고리즘 언어의 알고리즘에 대한 반정형화된 설명);

프로그래밍 방식(프로그래밍 언어의 텍스트).

알고리즘을 작성하는 구두 방식은 데이터 처리의 연속 단계에 대한 설명입니다. 알고리즘은 자연어로 된 임의의 표현으로 제공됩니다.

예를 들어. 두 자연수의 최대공약수(GCD)를 구하는 알고리즘을 작성하십시오.

알고리즘은 다음과 같을 수 있습니다.

두 개의 숫자를 설정하십시오.

숫자가 같으면 그 중 하나를 답으로 취하고 중지하고 그렇지 않으면 알고리즘을 계속합니다.

가장 큰 숫자를 결정하십시오.

더 큰 숫자를 더 큰 숫자와 더 작은 숫자 사이의 차이로 바꿉니다.

2단계의 알고리즘을 반복합니다.

설명된 알고리즘은 모든 자연수에 적용할 수 있으며 문제 해결을 이끌어야 합니다. 이 알고리즘을 사용하여 125와 75의 최대 공약수를 직접 확인하십시오.

구두 방법은 다음과 같은 이유로 널리 사용되지 않습니다.

그러한 설명은 엄격하게 형식화할 수 없습니다.

장황한 기록으로 고통받습니다.

개별 처방에 대한 모호한 해석을 허용합니다.

알고리즘을 제시하는 그래픽 방식은 구두 방식보다 더 간결하고 시각적입니다.

그래픽 표현에서 알고리즘은 상호 연결된 기능 블록의 시퀀스로 묘사되며, 각각은 하나 이상의 작업 실행에 해당합니다.

그런 그래픽 표현순서도 또는 순서도라고 합니다.

흐름도에서 각 동작(초기 데이터 입력, 표현식 값 계산, 조건 확인, 동작 반복 제어, 마무리 처리 등)의 유형은 블록 기호로 표현되는 기하학적 도형에 해당합니다. 블록 기호는 작업이 수행되는 순서를 결정하는 전환 선으로 연결됩니다.

표 1은 가장 일반적으로 사용되는 문자를 나열합니다.

"프로세스" 블록은 데이터의 값, 표시 형식 또는 배치를 변경하는 작업 또는 일련의 작업을 지정하는 데 사용됩니다. 다이어그램의 가시성을 향상시키기 위해 여러 개의 개별 처리 블록을 하나의 블록으로 결합할 수 있습니다. 개별 작업의 프레젠테이션은 매우 무료입니다.

"결정" 블록은 조건별로 제어 전환을 지정하는 데 사용됩니다. 각 "결정" 블록은 정의하는 질문, 조건 또는 비교를 지정해야 합니다.

"수정" 블록은 순환 구조를 구성하는 데 사용됩니다. (수정이라는 단어는 수정, 변형을 의미합니다). 블록 내부에는 초기값, 경계조건, 각 반복에 대한 매개변수 값 변경 단계를 나타내는 싸이클 매개변수가 기록되어 있습니다.

"미리 정의된 프로세스" 블록은 일부 형식으로 자율적으로 존재하는 보조 알고리즘에 대한 호출을 나타내는 데 사용됩니다. 독립 모듈, 및 라이브러리 루틴에 대한 호출의 경우.

의사 코드는 알고리즘을 균일하게 작성하도록 설계된 표기법 및 규칙 시스템입니다.

그것은 자연어와 형식어 사이의 중간 위치를 차지합니다.

한편으로는 일반 자연어에 가깝기 때문에 일반 텍스트처럼 알고리즘을 쓰고 읽을 수 있습니다. 다른 한편으로, 일부 형식적 구성과 수학적 기호는 의사 코드에서 사용되어 일반적으로 허용되는 수학적 표기법에 알고리즘 표기법을 더 가깝게 만듭니다.

의사 코드는 형식 언어에 고유한 명령을 작성하기 위한 엄격한 구문 규칙을 채택하지 않으므로 설계 단계에서 알고리즘을 더 쉽게 작성할 수 있고 추상 실행기를 위해 설계된 더 넓은 명령 세트를 사용할 수 있습니다. 그러나 의사 코드에는 일반적으로 형식 언어에 내재된 몇 가지 구성이 있으며, 이는 의사 코드 작성에서 형식 언어로 알고리즘 작성으로의 전환을 용이하게 합니다. 특히 의사 코드에는 형식 언어와 마찬가지로 보조 단어가 있으며 그 의미는 한 번에 결정됩니다. 인쇄된 텍스트에서는 굵게 표시되고 손으로 쓴 텍스트에서는 밑줄이 그어집니다. 의사 코드에 대한 단일 또는 형식 정의가 없으므로 서비스 단어 집합과 기본(기본) 구조가 다른 다양한 의사 코드가 가능합니다.

의사 코드의 예는 A.G.의 교과서에 설명된 러시아어 표기법(학교 AL)의 학교 알고리즘 언어입니다. Kushnirenko et al. "Fundamentals of Informatics and Computer Engineering", 1991. 이 언어를 간단히 "알고리즘 언어"라고 합니다.

기본 기능어

알고리즘의 일반적인 관점:

alg 알고리즘 이름(인수 및 결과)

알고리즘의 적용 가능성에 대한 조건이 주어졌을 때

알고리즘의 목표가 필요합니다

중간 값에 대한 설명 시작

| 명령 시퀀스(알고리즘 본문)

lg라는 단어에서 시작이라는 단어까지의 알고리즘 부분을 머리글이라고 하고 단어 시작과 끝 사이에 둘러싸인 부분을 알고리즘의 본문이라고 합니다.

alg 절에서 알고리즘 이름 뒤 괄호 안에 모든 입력(인수) 및 출력(결과) 변수의 특성(arg, res) 및 값 유형(integer, thing, sim, lit 또는 log)은 다음과 같습니다. 가리키는. 배열(테이블)을 설명할 때 서비스 단어 탭이 사용되며 배열 요소의 각 인덱스에 대한 경계 쌍이 보완됩니다.

alg 문장의 예:

alg 실린더의 부피와 면적 (arg ref R, H, res ref V, S)

alg Roots QvUr(arg w, b, c, res w x1, x2, res lit t)

alg 요소 제외(인수 정수 N, 인수 항목 탭 A)

alg 대각선(arg integer N, arg integer 탭 A, res lit Otvet)

제안이 제공되며 구속력이 없어야 합니다. 알고리즘 실행기의 환경 상태를 설명하는 명령문을 작성하는 것이 좋습니다. 예를 들면 다음과 같습니다.

arg 치환(arg lit Str1, Str2, arg res lit Text)

주어진 | 부분 문자열 Str1과 Str2의 길이가 동일합니다.

필요 | 텍스트 행의 모든 ​​곳에서 하위 문자열 Str1이 Str2로 대체됩니다.

alg 최대값 수(인수 정수 N, 인수 실수 탭 A, 해상도 정수 K)

주어진 | N>0

필요 | K - 표 A의 최대 요소 수

alg 저항(arg 실수 R1, R2, arg 정수 N, res 실수 R)

주어진 | N>5, R1>0, R2>0

필요 | R - 회로 저항

여기 문장에서 "|"기호 뒤에 필요합니다. 댓글이 기록됩니다. 주석은 모든 줄의 끝에 위치할 수 있습니다. 번역기에 의해 처리되지는 않지만 알고리즘을 훨씬 더 쉽게 이해할 수 있습니다.

알고리즘은 별도의 기본(메인) 요소로 구성된 일부 구조로 나타낼 수 있습니다.

당연히 알고리즘에 대한 이러한 접근 방식을 사용하면 구성의 기본 원리에 대한 연구는 이러한 기본 요소에 대한 연구로 시작해야 합니다.

그것들을 설명하기 위해 우리는 알고리즘 체계의 언어와 학교 알고리즘 언어를 사용할 것입니다.

모든 알고리즘의 논리 구조는 세 가지 기본 구조의 조합으로 나타낼 수 있습니다.

수행원,

분기,

기본 구조의 특징은 하나의 입력과 하나의 출력이 있다는 것입니다.

교육부 러시아 연방페름 주립 기술 대학

학과 정보 기술자동화 시스템

비켄티예바 O.L.

"알고리즘 언어와 프로그래밍" 과정 강의 요약(C++ 언어 기초, I 학기)

소개

첫 학기는 C 언어의 기본 구성과 기본 프로그래밍 기술(구조적 프로그래밍)을 다룬다.

구조적 프로그래밍은 특정 규칙을 따르면 개발 시간과 오류 수를 줄이고 프로그램 수정 가능성을 용이하게 하는 프로그램을 만드는 기술입니다.

1.1. 알고리즘 및 프로그램

알고리즘은 초기 데이터를 변경하는 것에서 최종 결과로 가는 계산 프로세스를 정의하는 정확한 처방입니다. 즉, 어떤 목표를 달성하기 위한 레시피입니다.

알고리즘을 실행에 적합한 형태로 제시하기 위한 일련의 도구 및 규칙 컴퓨터프로그래밍 언어라고 하고, 이 언어로 작성된 알고리즘을 프로그램이라고 합니다.

첫째, 행동 알고리즘은 항상 개발된 다음 프로그래밍 언어 중 하나로 작성됩니다. 프로그램의 텍스트는 번역가라는 특수 서비스 프로그램에 의해 처리됩니다. 프로그래밍 언어는 인공 언어입니다. 그들은 제한된 수의 "단어"와 명령 (연산자) 작성에 대한 매우 엄격한 규칙에서 자연어와 다릅니다. 이러한 요구 사항의 전체는 프로그래밍 언어의 구문을 형성하고 각 구성의 의미는 의미입니다.

1.2 알고리즘의 속성

1. 질량 특성: 알고리즘은 하나의 문제가 아니라 유사한 문제의 전체 클래스에 적용되어야 합니다(이차 방정식을 푸는 알고리즘은 하나의 방정식이 아니라 모든 이차 방정식을 풀어야 함).

2. 효율성: 알고리즘은 특정 단계의 결과를 가져와야 합니다(1을 3으로 나눌 때 주기적 분수 0.3333(3)이 얻어지며 최종 결과를 얻으려면 이 분수를 얻는 정확도를 지정해야 합니다. 예를 들어 소수점 이하 4자리까지).

3. 확정성(결정론) - 알고리즘의 각 동작은 수행자에게 명확해야 합니다(일본어를 할 수 없는 사람을 위한 일본어 가전 제품 지침은 결정론의 속성이 없기 때문에 알고리즘이 아닙니다).

4. 이산성 - 프로세스는 나눌 수 없음을 사용하여 설명해야 합니다.

각 단계에서 수행되는 작업(즉, 단계를 더 작은 단계로 나눌 수 없음).

알고리즘은 다음과 같은 형식으로 나타낼 수 있습니다.

1) 알고리즘에 대한 구두 설명.

2) 알고리즘의 그래픽 설명.

3) 알고리즘 프로그래밍 언어를 사용하여

1.2. 컴파일러와 인터프리터

에서 프로그래밍 언어를 사용하여 이전에 컴파일된 알고리즘을 설명하는 텍스트가 생성됩니다. 작동하는 프로그램을 얻으려면 이 텍스트를 일련의 프로세서 명령어로 번역해야 합니다. 특별 프로그램, 번역가라고 합니다. 번역기에는 컴파일러와 인터프리터의 두 가지 유형이 있습니다. 컴파일러는 하나의 연속적인 프로세스에서 소스 모듈의 텍스트를 객체 모듈이라고 하는 기계어 코드로 변환합니다. 동시에 그는 구문 오류를 찾기 위해 프로그램의 소스 코드를 먼저 봅니다. 인터프리터는 모드 연산자에서 프로그램의 소스 모듈을 연산자에 따라 실행합니다.

각 문장을 기계어로 번역하는 작업 과정.

1.3 프로그래밍 언어

다른 유형의 프로세서에는 다른 명령 세트가 있습니다. 프로그래밍 언어가 특정 유형의 프로세서에 중점을 두고 그 기능을 고려한다면 저수준 프로그래밍 언어라고 합니다. 가장 낮은 수준의 언어는 니모닉이라고 하는 특수 기호의 형태로 각 기계어 명령을 단순히 나타내는 어셈블리 언어입니다. 저수준 언어의 도움으로 개발자가 프로세서의 모든 기능에 액세스할 수 있기 때문에 매우 효율적이고 컴팩트한 프로그램이 생성됩니다. 왜냐하면 명령어 세트 다른 모델프로세서도 다르므로 각 프로세서 모델에는 고유한 어셈블리 언어가 있으며 여기에 작성된 프로그램은 이 환경에서만 사용할 수 있습니다. 이러한 언어는 작은 시스템 응용 프로그램, 장치 드라이버 등을 작성하는 데 사용됩니다.

고급 프로그래밍 언어는 특정 컴퓨터 아키텍처의 특성을 고려하지 않으므로 만든 프로그램적절한 번역기가 만들어지면 소스 수준에서 다른 플랫폼으로 쉽게 전송됩니다. 고급 언어로 프로그램을 개발하는 것은 기계어보다 훨씬 쉽습니다.

고급 언어는 다음과 같습니다.

1. Fortran은 20세기 50년대. 여러 가지 중요한 프로그래밍 개념을 구현했습니다. 이 언어를 위해 만들어졌습니다. 큰 금액통계 제품군에서 위성 관리에 이르기까지 다양한 라이브러리를 제공하므로 많은 조직에서 계속 사용하고 있습니다.

2. COBOL - 경제 계산 및 솔루션을 위한 컴파일된 언어 60년대 초반에 개발된 비즈니스 작업. Cobol은 외부 미디어에 저장된 대량의 데이터 작업을 위한 매우 강력한 도구를 구현했습니다.

3. 파스칼 - 마지막에 생성됨 70년대 스위스 수학자 Niklaus Wirth가 프로그래밍 교육을 위해 특별히 제작했습니다. 알고리즘적 사고를 개발하고 짧고 잘 작성할 수 있습니다. 읽을 수 있는 프로그램, 알고리즘화의 기본 기술을 보여주며 대규모 프로젝트의 구현에도 적합합니다.

4. BASIC - 생성 60년대는 프로그래밍 교육에도 사용됩니다. 컴파일러와 인터프리터가 있으며 가장 인기 있는 프로그래밍 언어 중 하나입니다.

5. C - 70년대에 만들어졌으며 처음에는 대량 프로그래밍 언어로 간주되지 않았습니다. 동일한 효율적이고 짧은 프로그램을 만들 수 있지만 특정 프로세서에 의존하지 않기 위해 어셈블러를 대체할 계획이었습니다. 여러모로 파스칼과 비슷하다. 추가 기능메모리로 작업합니다. 많은 응용 프로그램이 포함되어 있으며 시스템 프로그램, 만큼 잘 운영 체제유닉스.

6. C++는 1980년 Bjarne Stroustrup이 만든 C 언어의 객체 지향 확장입니다.

7. Java는 Sun이 처음에 만든 언어입니다. 90년대 C++ 기반. 저수준 기능을 제거하여 C++에서 응용 프로그램 개발을 단순화하도록 설계되었습니다. 주요 특징언어는 기계 코드로 컴파일되지 않고 플랫폼 독립적인 바이트 코드로 컴파일된다는 것입니다(각 명령은 1바이트를 차지합니다). 이 코드는 인터프리터인 JVM(Java Virtual Machine)을 사용하여 실행할 수 있습니다.

2. C++ 프로그램의 구조

C 프로그램의 구조는 다음과 같습니다. #preprocessor 지시문

. . . . . . . . .

# 전처리기 지시문 function a ()

()의 함수 연산자

연산자

void main() //프로그램 실행이 시작되는 함수 연산자

설명

과제

빈 명령문 기능

합성물

이행

전처리기 지시문 - 컴파일하기 전에 프로그램 텍스트의 변환을 제어합니다. 형식으로 SI에서 준비한 원래 프로그램 텍스트 파일, 처리의 3단계를 거칩니다.

1) 전처리기 텍스트 변환;

2) 편집;

3) 레이아웃(링크 편집 또는 어셈블리).

이 세 단계 후에 프로그램의 실행 코드가 형성됩니다. 예비 작업

cessor - 컴파일 전에 프로그램 텍스트의 변환. 전처리 규칙은 전처리기 지시문을 사용하여 프로그래머가 정의합니다. 지시문은 #으로 시작합니다. 예를 들어,

1) #define - 텍스트의 대체 규칙을 나타냅니다. #제로 0.0을 정의

프로그램에서 ZERO라는 이름을 사용할 때마다 다음으로 대체됨을 의미합니다.

2) #포함< имя заголовочного файла>- 표준 라이브러리와 함께 제공되는 "헤더 파일" 카탈로그의 텍스트를 프로그램 텍스트에 포함하기 위한 것입니다. 각 C 라이브러리 함수에는 헤더 파일 중 하나에 해당 설명이 있습니다. 헤더 파일 목록은 언어 표준에 의해 정의됩니다. include 지시문을 사용하면 해당 표준 턱받이가 포함되지 않습니다.

라이브러리에 포함되지만 지정된 헤더 파일의 설명을 프로그램 텍스트에 삽입할 수만 있습니다. 라이브러리 코드는 링크 단계, 즉 컴파일 후 연결됩니다. 비록 헤더 파일표준 기능에 대한 모든 설명을 포함하며 프로그램에서 사용되는 기능만 프로그램 코드에 포함됩니다.

전처리 후 프로그램 텍스트에 전처리기 지시문이 남아 있지 않습니다.

프로그램은 설명과 정의의 집합이며 기능의 집합으로 구성됩니다. 이 함수들 중에는 항상 main이라는 이름의 함수가 있어야 합니다. 그것 없이는 프로그램을 실행할 수 없습니다. 함수 이름 앞에는 함수에서 반환된 값의 유형(결과 유형)에 대한 정보가 옵니다. 함수가 아무 것도 반환하지 않으면 void 유형이 지정됩니다: void main(). main을 포함한 각 기능에는 매개변수 세트가 있어야 하며 비어 있을 수 있으며 (void)는 대괄호로 표시됩니다.

함수 본문은 함수 헤더를 따릅니다. 함수의 본문은 정의, 선언 및 실행 가능한 명령문으로 묶인 시퀀스입니다. 바지 멜빵. 각 정의, 설명 또는 명령문은 세미콜론으로 끝납니다.

정의 - 프로그램에서 처리되는 데이터를 나타내는 데 필요한 개체(개체는 명명된 메모리 영역이고 개체의 특수한 경우는 변수임)를 소개합니다. 예는

정수 y = 10 ; // 명명된 상수 float x ; //변하기 쉬운

설명 - 프로그램의 다른 부분에 설명된 개체 및 기능의 속성과 이름에 대해 컴파일러에 알립니다.

연산자 - 실행의 각 단계에서 프로그램의 동작을 정의합니다.

예제 C 프로그램:

#포함 //전처리기 지시문

시험 문제

1. C++ 프로그램의 일부는 무엇입니까?

2. 정의는 선언과 어떻게 다릅니까?

3. C++에서 실행 가능한 프로그램을 만드는 단계를 나열하십시오.

4. 전처리기란?

5. 전처리기 지시문이란 무엇입니까? 전처리기 지시어의 예를 제시하십시오.

6. "My first C++ program"이라는 텍스트를 출력하는 프로그램을 작성하세요.

2. C++ 언어의 기본 기능 2.1 언어의 구성

모든 자연어 텍스트에서 기호, 단어, 구 및 문장의 네 가지 주요 요소를 구별할 수 있습니다. 알고리즘 언어에는 이러한 요소도 포함되어 있으며 단어만 어휘(기본 구성), 구 - 표현식, 문장 - 연산자라고 합니다. 토큰은 기호, 어휘 및 기호의 표현식, 표현식 및 어휘 기호의 연산자로 구성됩니다(그림 1.1).

쌀. 1.1. 알고리즘 언어의 구성 따라서 알고리즘 언어의 요소는 다음과 같습니다.

식별자는 C 프로그램 개체의 이름입니다. 식별자에 라틴 문자, 숫자 및 밑줄을 사용할 수 있습니다. 대문자와 소문자가 구별됩니다. 예를 들어 PROG1, prog1 및 Prog1은 세 가지 다른 식별자입니다. 첫 번째 문자는 문자 또는 밑줄(숫자가 아님)이어야 합니다. 식별자의 공백은 허용되지 않습니다.

키워드(예약) 단어는 컴파일러에 특별한 의미가 있는 단어입니다. 식별자로 사용할 수 없습니다.

- 연산 기호는 피연산자에 대한 연산을 정의하는 하나 이상의 기호입니다. 연산은 이 연산에 관련된 피연산자의 수에 따라 단항, 이진 및 삼항으로 나뉩니다.

상수는 변경할 수 없는 값입니다. 정수, 실수, 문자 및 문자열 상수가 있습니다. 컴파일러는 상수를 토큰(기본 구문)으로 구분하고 모양에 따라 유형 중 하나에 할당합니다.

구분 기호 - 대괄호, 점, 쉼표, 공백 문자.

2.1.1. C++의 상수

상수는 고정 숫자, 문자열 또는 문자 값의 표현을 나타내는 토큰입니다.

상수는 5개 그룹으로 나뉩니다.

전부의;

- 실수(부동 소수점);

열거된;

상징적;

끈.

컴파일러는 어휘를 선택하고 한 그룹이나 다른 그룹에 할당한 다음 내부적으로

프로그램의 텍스트에 쓰는 형식과 숫자 값에 따라 세 그룹을 특정 유형으로 분류합니다.

정수 상수는 10진수, 8진수 및 16진수일 수 있습니다. 10진수 상수는 0이 아닌 한 0에서 시작하지 않는 10진수의 시퀀스로 정의됩니다(예: 8, 0, 192345). 8진수 상수는 항상 0으로 시작하는 상수입니다. 0 뒤에 8진수가 옵니다(예: 016 - 10진수 값 14, 01). 16진수 상수는 0x 또는 0X 문자가 앞에 오는 일련의 16진수입니다(예: 0xA, 0X00F).

정수 상수 컴파일러의 값에 따라다르게 제시

안에 컴퓨터 메모리(즉, 컴파일러는 상수에 적절한 데이터 유형을 지정합니다).

실수 상수는 컴퓨터 메모리에서 다른 형태의 내부 표현을 갖습니다. 컴파일러는 이러한 상수를 형식으로 인식합니다. 실수 상수는 고정 소수점과 부동 소수점의 두 가지 형식으로 나타낼 수 있습니다. 고정 소수점 상수 유형: [자릿수].[자릿수](예: 5.7, .0001, 41.). 부동 소수점 상수 유형: [자릿수][.][자릿수]E|e[+|-][자릿수 ](예: 0.5e5, .11e-5, 5E3). 실수 상수의 표기법에서 정수 또는 소수 부분, 소수점, 또는 지수가 있는 지수의 부호는 생략될 수 있습니다.

열거 상수는 enum 키워드를 사용하여 도입됩니다. 이들은 고유하고 사용하기 쉬운 표기법이 할당된 일반 정수 상수입니다. 예: 열거형 ( 1=1, 2=2, 3=3, 4=4);

열거형(0,1,2,3) - 열거형 상수의 정의에서 기호 = 및 숫자 값을 생략하면 기본적으로 값이 할당됩니다. 이 경우 가장 왼쪽의 식별자는 값 0을 받고 각 후속 식별자는 1씩 증가합니다.

열거형( 10=10, 3=3, 4, 5, 6);

enum (일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일-

문자 상수는 아포스트로피로 묶인 하나 또는 두 개의 문자입니다. 하나의 문자로 구성된 문자 상수는 char 유형이고 메모리에서 1바이트를 차지하며, 두 개의 문자로 구성된 문자 상수는 int 유형이고 2바이트를 차지합니다. \ 기호로 시작하는 시퀀스를 이스케이프 시퀀스라고 하며 다음과 같이 사용됩니다.

- 그래픽 표시가 없는 문자를 나타내려면 다음과 같이 하십시오.

\a - 소리 신호,

\b - 한 단계 반환, \n - 줄 바꿈,

\t - 수평 탭.

- 문자를 나타내려면: \ , ' , ? , "(\\, \' ,\? ,\").

- 16진수 또는 8진수 코드(\073, \0xF5)를 사용하여 문자를 나타냅니다.

문자열 상수는 따옴표로 묶인 일련의 문자입니다.

제어 문자는 문자열 내에서도 사용할 수 있습니다. 예: "\n새 줄",

"\n\"고수준 알고리즘 프로그래밍 언어 ​\"" .

2.2. C++의 데이터 유형

데이터는 프로그램에서 주변 세계를 표시합니다. 프로그램의 목적은 데이터를 처리하는 것입니다. 데이터 다양한 방식다르게 저장되고 처리됩니다. 데이터 유형은 다음을 정의합니다.

1) 컴퓨터 메모리에 있는 데이터의 내부 표현;

2) 이 유형의 값이 취할 수 있는 값 세트;

3) 이 유형의 데이터에 적용할 수 있는 작업 및 기능입니다.

작업의 요구 사항에 따라 프로그래머는 프로그램 개체의 유형을 선택합니다. C++ 유형은 단순 유형과 복합 유형으로 나눌 수 있습니다. 단순 유형은 단일 값을 특징으로 하는 유형입니다. C++는 6가지 간단한 데이터 유형을 정의합니다.

정수(정수)

char (문자)

wchar_t(와이드 문자) bool(부울) float(실수)

double(배정밀도 실수)

내부 표현과 표준 유형의 범위를 지정하는 4가지 유형 지정자가 있습니다.

short (short) long (long) signed (signed)

서명되지 않은

2.2.1. 정수를 입력

이 유형의 값은 정수입니다.

int 유형의 크기는 표준에서 정의되지 않지만 컴퓨터와 컴파일러에 따라 다릅니다. 16비트 프로세서의 경우 2바이트가 할당되고 32비트 프로세서의 경우 4바이트가 할당됩니다.

int 앞에 short 지정자가 있으면 숫자에 2바이트가 할당되고 지정자가 long이면 4바이트가 할당됩니다. 집합은 개체에 할당된 메모리 양에 따라 다릅니다. 허용된 값, 객체가 수락할 수 있는 항목:

short int - 2바이트를 차지하므로 -32768 ..+32767의 범위를 갖습니다.

long int - 4바이트를 차지하므로 범위가 -2 147 483 648..+2 147 483 647입니다.

int 유형은 16비트 PC의 short int 유형 및 32비트 PC의 long int 유형과 동일합니다.

부호 있는 수정자와 부호 없는 수정자는 객체가 취할 수 있는 유효한 값 집합에도 영향을 미칩니다.

unsigned short int - 2바이트를 차지하므로 범위는 0..65536입니다. unsigned long int - 4바이트를 차지하므로 범위가 0..+4 294 967입니다.

2.2.2. 문자 입력

이 유형의 값은 유한 순서 문자 집합의 요소입니다. 각 문자에는 문자 코드라고 하는 숫자가 할당됩니다. 가치 미달 문자 유형 1바이트가 할당됩니다. char 유형은 signed 및 unsigned 지정자와 함께 사용할 수 있습니다. Signed char 데이터는 -128 ~ 127 범위의 값을 저장할 수 있습니다. Unsigned char은 0 ~ 255 범위의 값을 저장할 수 있습니다. 인코딩은 ASCII(American Standard Code foe International Interchange)를 사용합니다. 0에서 31까지의 코드를 가진 기호는 서비스 기호이며 I/O 문에서만 독립적인 의미를 갖습니다.

char 유형의 값은 지정된 범위의 숫자를 저장하는 데에도 사용됩니다.

2.2.3. wchar_t 유형

유니코드와 같이 인코딩이 1바이트로 충분하지 않은 문자 집합과 함께 작동하도록 설계되었습니다. 이 유형의 크기는 일반적으로 짧은 유형에 해당합니다. 이 유형의 문자열 상수는 L 접두사 L"String #1"로 작성됩니다.

2.2.4. 유형 부울

bool 유형을 boolean이라고 합니다. 그 값은 true와 false 값을 가질 수 있습니다. false의 내부 표현은 0이고 다른 값은 true로 해석됩니다.

2.2.5. 부동 소수점 유형.

내부 대표 실수가수와 지수의 두 부분으로 구성됩니다. IBM 호환 PC에서 float 값은 4바이트를 차지하며 그 중 가수의 부호에 1비트, 지수에 8비트, 가수에 24비트가 할당됩니다.

Double 타입의 값은 8바이트를 차지하며, 순서와 가수에 각각 11자리와 52자리가 할당됩니다. 가수의 길이는 숫자의 정밀도를 결정하고 지수의 길이는 범위를 결정합니다.

이중 유형 이름 앞에 긴 지정자가 있으면 값에 바이트가 할당됩니다.

2.2.6. 보이드 타입

에게 주요 유형에는 void 유형도 포함됩니다.이 유형의 값 집합은 비어 있습니다.

2.3. 변수

C++에서 변수는 특정 유형의 데이터를 저장하는 명명된 메모리 영역입니다. 변수에는 이름과 값이 있습니다. 이름은 값이 저장되는 메모리 영역을 나타내는 데 사용됩니다. 모든 변수는 사용 전에 선언해야 합니다. 예:

설명 연산자의 일반 보기:

[메모리 클래스] 유형 이름 [이니셜라이저];

스토리지 클래스는 auto, extern, static, register와 같은 값을 가질 수 있습니다. 스토리지 클래스는 변수의 수명과 범위를 정의합니다. 스토리지 클래스가 명시적으로 지정되지 않은 경우 컴파일러는 선언 컨텍스트에 따라 이를 결정합니다. 수명은 일정할 수 있습니다(프로그램 실행 중이거나 블록 중 임시). 범위는 변수에 대한 일반적인 액세스가 허용되는 프로그램 텍스트의 일부입니다. 일반적으로 범위는 범위와 동일합니다. 내부 블록에 같은 이름의 변수가 있는 경우는 예외입니다.

Const - 이 변수를 변경할 수 없음을 나타냅니다(상수라고 함). 기술할 때 변수에 초기값을 할당할 수 있습니다(초기화). 메모리 클래스:

auto는 자동 지역 변수입니다. 자동 지정자는 예를 들어 함수 본문에서 블록 개체를 정의할 때만 지정할 수 있습니다. 블록에 들어갈 때 메모리가 이러한 변수에 할당되고 블록이 종료될 때 해제됩니다. 블록 외부에는 그러한 변수가 존재하지 않습니다.

extern은 전역 변수이며 프로그램의 다른 위치(다른 파일 또는 나중에 텍스트)에 있습니다. 모든 프로그램 파일에서 사용할 수 있는 변수를 만드는 데 사용됩니다.

static은 정적 변수이며 변수가 정의된 파일 내에서만 존재합니다.

레지스터 - 자동과 유사하지만 메모리는 프로세서 레지스터에 할당됩니다. 이것이 불가능하면 변수는 자동으로 처리됩니다.

정수 // 전역 변수 void main()(

int b;//지역변수

extern int x;//변수 x는 다른 곳에서 정의됩니다. static int c;//로컬 정적 변수 a=1;//전역 변수에 할당

int a; // 지역 변수

a=2;//로컬 변수에 대입::a=3;//전역 변수에 대입

int x=4;//x 정의 및 초기화

예에서 변수 a는 모든 블록 외부에 정의됩니다. 변수 a의 범위는 지역 변수 a가 사용되는 행을 제외하고 전체 프로그램입니다. 변수 b와 c는 지역적이며 범위는 블록입니다. 수명은 다릅니다. b 아래의 메모리는 블록에 들어갈 때 할당되고(기본 메모리 클래스가 auto이기 때문에) 블록이 종료될 때 해제됩니다. (정적)이 있는 변수는 프로그램이 실행되는 동안 존재합니다.

변수가 정의될 ​​때 명시적으로 초기화되지 않으면 컴파일러는 전역 및 정적 변수를 0으로 설정합니다. 자동 변수가 초기화되지 않습니다..

변수 이름은 해당 범위 내에서 고유해야 합니다.

변수 선언은 선언 또는 정의로 수행할 수 있습니다. 선언에는 변수의 스토리지 클래스 및 유형에 대한 정보가 포함되어 있으며 정의는 이 정보와 함께 스토리지 할당을 지시합니다. 예에서 extern int x; - 선언 및 나머지 - 정의.

2.4 C++에서의 연산 기호

조작 기호는 표현의 형성을 제공합니다. 표현식은 피연산자, 연산자 기호 및 괄호로 구성됩니다. 각 피연산자는 차례로 표현식 또는 표현식의 특수한 경우(상수 또는 변수)입니다.

단항 연산

& 피연산자의 주소 얻기

* 주소 참조(역참조)

- 단항 빼기, 산술 피연산자의 부호를 변경합니다.

++ 단위 증가:

접두사 연산 - 사용되기 전에 피연산자를 증가시킵니다.

후위 연산은 피연산자가 사용된 후 피연산자를 증가시킵니다.

정수 a=(m++)+n; // a=4,m=2,n=2

정수 b=m+(++n);//a=3,m=1,n=3

1 감소:

접두사 연산 - 피연산자를 사용으로 줄입니다.

후위 연산은 피연산자가 사용된 후 피연산자를 감소시킵니다.

해당 유형의 개체에 대한 크기(바이트) 계산

피연산자가 있다

두 가지 형태가 있습니다

식의 크기

sizeof(float)//4

실제 상수가 기본값이므로 sizeof(1.0)//8

학교에서는 이른바 알고리즘화의 기초를 연구합니다. 학교 알고리즘 언어 (교육용 알고리즘 언어), 러시아어로 학생이 이해할 수 있는 단어를 사용합니다. 대부분의 프로그래밍 언어와 달리 알고리즘 언어는 컴퓨터 아키텍처와 관련이 없으며 기계 장치와 관련된 세부 정보를 포함하지 않습니다.

일반적인 용어로 알고리즘 언어의 알고리즘은 다음 형식으로 작성됩니다.

알고리즘 이름(인수 및 결과) 주어진알고리즘 적용 조건 필요한알고리즘의 목표 일찍중간 값에 대한 설명 | 명령 시퀀스(알고리즘 본문) 범죄자

알고리즘을 작성할 때 키워드는 일반적으로 밑줄이 그어지거나 굵게 강조 표시되었습니다. 들여쓰기를 사용하여 논리 블록을 강조 표시하고 블록의 시작과 끝 단어 쌍을 세로 막대로 연결했습니다.

제곱합 계산의 예:

제곱의 합 ( 인수 전부의 N, 자르다 전부의에스) 주어진| n > 0 필요한| S = 1*1 + 2*2 + 3*3 + … + n*n 일찍 전부의나는 | 입력 N; S:=0 | 체크 안함 1에서 n까지 | | S:= S + 나는 * 나는 | kts | 결론"S=", S 범죄자

전자 워크숍

알고리즘 언어 프로그래밍에 대한 이론적 연구를 강화하기 위해 1985년 모스크바 주립 대학의 Mekhmat 전문가가 편집기-컴파일러를 만들었습니다. "전자 워크샵"("E" - Ershov를 기리기 위해) 알고리즘 언어로 프로그램을 입력, 편집 및 실행할 수 있습니다.

1986년에 "E-practice"를 위해 "Robot", "Drafter", "Two-legged", "All-terrain vehicle"과 같은 일련의 훈련 세계(연주자)가 출시되어 간단히 개념을 소개할 수 있습니다. 알고리즘의. "E-workshop"은 Yamaha, Corvette, UKNC와 같은 컴퓨터에서 구현되었으며 널리 사용되었습니다.

이 프로그래밍 언어는 지속적으로 개선되었으며 1990년 교과서에 "E-workshop"의 최신 버전에 대한 설명이 실렸습니다. 이 교과서를 지원하는 프로그래밍 시스템 "KuMir"("교육 세계 세트")는 1990년 InfoMir 엔터프라이즈에서 출시되었습니다. 이 시스템의 언어는 "KuMir"라고도 합니다.

1995 년 "KuMir"는 A. G. Kushnirenko, G. V. Lebedev 및 R. A. Svorenya의 교과서를 기반으로 "정보 및 컴퓨터 공학의 기초" 과정의 주요 교육 자료로 러시아 교육부에서 추천했습니다. .

비판

그러나 알고리즘 언어는 컴퓨터 아키텍처에 직접 연결하는 세부 정보가 없는 경우에도 Algolo를 참조한다는 점에 유의해야 합니다. -유사한 언어, 암묵적으로 학생들에게 기계의 폰 노이만 아키텍처에 의존하도록 가르칩니다. (Von Neumann 아키텍처는 Turing Machine이라는 초기 아이디어의 실제 구현입니다. Turing의 아이디어 외에도 다른 아이디어가 있습니다. 그 중 가장 인기 있는 것은 Lambda Calculus: Alonzo Church가 작업했습니다. Lisp Machine은 Lambda를 기반으로 한 아키텍처입니다. - 미적분학.)

연결

  • A.P. 에르쇼프. 정보학 및 컴퓨터 기술의 기초 학교 과정에서 알고리즘 언어. 1985년 05월 7일
  • 러시아어 프로그래밍 언어 및 개발 도구 포럼

위키미디어 재단. 2010년 .

다른 사전에 "러시아어 알고리즘 언어"가 무엇인지 확인하십시오.

    알고리즘 언어는 알고리즘을 작성, 구현 또는 연구하는 데 사용되는 공식 언어입니다. 모든 프로그래밍 언어는 알고리즘 언어이지만 모든 알고리즘 언어가 언어로 사용하기에 적합한 것은 아닙니다... ... 위키피디아

    이 용어에는 다른 의미가 있습니다. 용(의미)을 참조하십시오. DRAKON 체계(가시성을 제공하는 친근한 러시아어 알고리즘)의 DRAKON 언어 드래곤의 알고리즘 블록 다이어그램의 예는 ... ... Wikipedia

    이 용어에는 다른 의미가 있습니다. 알고리즘 언어를 참조하십시오. 학습 알고리즘 언어는 알고리즘을 작성, 구현 및 학습하는 데 사용되는 공식 언어입니다. 대부분의 프로그래밍 언어와 달리 ... Wikipedia에 묶여 있지 않습니다.

    알고리즘 언어(러시아어 알고리즘 언어, RAYA)는 알고리즘을 작성하고 연구하는 데 사용되는 프로그래밍 언어입니다. 학교에서 컴퓨터 과학을 공부할 때, 이른바 알고리즘화의 기초를 공부합니다. 학교 알고리즘 ... ... Wikipedia

    교육용 프로그래밍 언어는 전문가에게 프로그래밍을 가르치기 위해 설계된 프로그래밍 언어입니다. 이러한 언어는 주요 요구 사항인 단순성을 충족해야 합니다. 간단할수록 초보자가 더 빨리 마스터할 수 있습니다. 그러한 가능성 ... ... Wikipedia

    DRAKON 언어 드래곤 다이어그램의 알고리즘 블록 다이어그램 예 DRAKON(가시성을 제공하는 친숙한 러시아어 알고리즘 언어)은 Buran 우주 프로그램의 프레임워크 내에서 생성된 시각적 알고리즘 언어입니다. 개발 주어진 언어... 위키피디아

알고리즘 언어 -그것은 알고리즘과 그 실행을 균일하고 정확하게 기록하기 위한 표기법과 규칙의 시스템입니다. 알고리즘 언어는 자연(인간) 언어로 알고리즘을 작성하는 것과 컴퓨터 언어(프로그래밍 언어)로 작성하는 것의 중간인 분석적 형태로 알고리즘을 작성하는 수단입니다.

"알고리즘 언어"와 "프로그래밍 언어"의 개념에는 차이가 있습니다. 우선, 알고리즘 언어로 작성된 프로그램이 반드시 컴퓨터를 위한 것은 아닙니다. 알고리즘 언어의 실제 구현은 각각의 특정 경우에 별도의 문제입니다.

모든 언어와 마찬가지로 알고리즘 언어에는 고유한 어휘가 있습니다. 이 사전의 기초는 특정 알고리즘의 실행자의 명령 시스템에 포함된 명령을 기록하는 데 사용되는 단어입니다. 이러한 명령을 단순 명령이라고 합니다. 알고리즘 언어에서는 의미와 사용 방법이 한 번에 정해져 있는 단어를 사용합니다. 이러한 단어를 공식적인.서비스 단어의 사용은 알고리즘의 기록을 보다 시각적으로 만들고 다양한 알고리즘의 표현 형태가 균일합니다.

알고리즘 언어로 작성된 알고리즘에는 이름이 있어야 합니다. 주어진 알고리즘이 설명하는 솔루션이 명확하도록 이름을 선택하는 것이 바람직합니다. 알고리즘 이름을 강조하기 위해 서비스 단어 ALG(ALGORITHM)가 앞에 작성됩니다. 알고리즘 이름 뒤에(일반적으로 새로운 라인) 그의 명령을 기록하십시오. 알고리즘의 시작과 끝을 나타내기 위해 해당 명령은 BEGIN(START) 및 KON(END) 서비스 단어 쌍으로 묶입니다. 명령은 순차적으로 작성됩니다.

ALG - 알고리즘의 이름

일련의 알고리즘 명령

예를 들어 로봇 연기자의 움직임을 결정하는 알고리즘은 다음과 같습니다.

ALG - 창고로

새로운 알고리즘을 구성할 때 이전에 컴파일된 알고리즘을 사용할 수 있습니다. 완전히 다른 알고리즘의 일부로 사용되는 알고리즘을 보조 알고리즘이라고 합니다. Auxiliary는 이전에 컴파일된 알고리즘 중 임의의 알고리즘이 될 수 있습니다. 또한 특정 상황에서 보조 알고리즘이 보조 알고리즘에 대한 링크를 자체적으로 포함하는 알고리즘일 수 있음도 배제되지 않는다.

매우 자주 알고리즘을 컴파일할 때 보조 알고리즘과 동일한 알고리즘을 사용해야 하며 이는 더욱이 매우 복잡하고 성가실 수 있습니다. 그러한 알고리즘을 차후 사용하기 위해 매번 작성하고 암기하는 것은 비이성적이며 작업을 시작하는 것입니다. 따라서 실제로는 소위 내장(또는 표준) 보조 알고리즘이 널리 사용됩니다. 수행자가 지속적으로 사용할 수 있는 알고리즘. 이러한 알고리즘에 대한 호소는 "일반" 보조 알고리즘과 동일한 방식으로 수행됩니다. 로봇 연기자는 작업 현장의 어느 곳에서나 창고로 이동하는 내장된 보조 알고리즘을 가질 수 있습니다. BASIC 프로그래밍 언어 실행기의 경우 이것은 예를 들어 내장 "SIN" 알고리즘입니다.

알고리즘은 자신을 도우미라고 부를 수 있으며, 이 경우 호출됩니다. 재귀적.알고리즘 자체를 호출하는 명령이 알고리즘 자체에 있는 경우 이러한 재귀가 호출됩니다. 똑바로.이 알고리즘의 재귀 호출이 다음에서 오는 경우가 있습니다. 보조 알고리즘, 이 알고리즘에서 액세스됩니다. 이러한 종류의 재귀를 호출합니다. 간접적. 직접 재귀 예제:

ALG - 움직임

교통

특정 조건을 검사한 결과에 따라 명령의 순서가 결정되는 알고리즘을 실행 분기.알고리즘 언어로 설명하기 위해 특수 복합 명령이 사용됩니다. 분기.로봇 수행자와 관련하여 조건은 로봇이 작업 영역의 가장자리(edge ​​/ not_edge)에 있는지 확인하는 것일 수 있습니다. 현재 셀(예/아니요) 및 일부 다른 개체에 개체가 있는지 확인:

IF 조건 IF 조건 IF 에지

TO 시리즈1 TO 시리즈 TO 오른쪽

ELSE 시리즈2 EVERYTHING ELSE 앞으로

다음은 분기 명령의 개발인 select 명령에 대한 알고리즘 언어 항목입니다.

AT 조건 1: 시리즈 1

AT 조건 2: 시리즈 2

AT N 조건: N 시리즈

ELSE 시리즈 N+1

개별 명령어 또는 일련의 명령어가 반복적으로 실행되는 알고리즘을 순환이라고 합니다. 알고리즘 언어로 순환 알고리즘을 구성하기 위해 특수 복합 순환 명령이 사용됩니다. "반복" 유형의 순서도에 해당하며 다음 형식을 취할 수 있습니다.

BYA 조건 NC

시리즈 BEFORE 조건