Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы СПО-1.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
183.81 Кб
Скачать

10. Формальные системы и языки программирования. Способы задания языков. Цепочки символов. Операции над цепочками символов.

Формализованный язык, предназначенный для описания программ и алгоритмов решения задач на ЭВМ. Языки программирования являются искусственными. В них синтаксис и семантика строго определены. Поэтому они не допускают свободного толкования выражения, что характерно для естественного языка. Языки программирования разделяются на две основные категории: языки высокого уровня и языки низкого уровня :

Язык высокого уровня - Язык программирования, средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора. К языкам высокого уровня относят Фортран , ПЛ/1 , Бейсик , Паскаль , Си , Ада и др.

Язык низкого уровня - Язык программирования, предназначенный для определенного типа ЭВМ и отражающий его внутренний машинный код.

Цепочкой символов (или строкой) называют произвольную упорядоченную конечную последовательность символов, записанных один за другим. Понятие символа (или буквы) является базовым в теории формальных языков и не нуждается в определении. Цепочка символов — это упорядоченная последовательность символов. Это значит, что для цепочки символов имеют значение три фактора: состав входящих в цепочку символов, их количество, а также порядок символов в цепочке. Поэтому цепочки “а” и “аа”, а также “аб” и “ба” — это различные цепочки символов. Цепочки символов a и b равны (совпадают), a = b, если они имеют один и тот же состав символов, одно и то же их количество и одинаковый порядок следования символов в цепочке. Количество символов в цепочке называют длиной цепочки. Длина цепочки символов a обозначается как |a|. Очевидно, что если a = b, то и |a| = |b|. Основной операцией над цепочками символов является операция конкатенации (объединения или сложения) цепочек. Конкатенация (сложение, объединение) двух цепочек символов — это дописывание второй цепочки в конец первой. Конкатенация цепочек a и b обозначается как ab.

Обращение цепочки — это запись символов цепочки в обратном порядке. Обращение цепочки a обозначается как aR. Если a = “абвг”, то aR = “гвба”. Для операции обращения справедливо следующее равенство " a,b: (ab)R = bRaR. Итерация (повторение) цепочки n раз, где nОN, n > 0 — это конкатенация цепочки самой с собой n раз. Итерация цепочки a n раз обозначается как an. Для операции повторения справедливы следующие равенства " a: a1 = a, a2 = aa, a3 = aaa, … и т. д. Итерация цепочки символов определена и для n = 0 — в этом случае результатом итерации будет пустая цепочка символов. Пустая цепочка символов — это цепочка, не содержащая ни одного символа.

11. Формальные системы и языки программирования. Понятие языка. Формальное определение языка. Способы задания языков

В общем случае язык — это заданный набор символов и правил, устанавливаю-

щих способы комбинации этих символов между собой для записи осмысленных

текстов. Основой любого естественного или искусственного языка является

алфавит, определяющий набор допустимых символов языка.

Алфавит — это счетное множество допустимых символов языка. Будем обозна-

чать это множество символом V. Интересно, что согласно формальному опреде-

лению, алфавит не обязательно .должен быть конечным множеством, но реально

все существующие языки строятся на основе конечных алфавитов.

Цепочка символов а является цепочкой над алфавитом V:a(V) если в нее вхо-

дят только символы, принадлежащие множеству символов V. Для любого алфа-

вита V пустая цепочка л может как являться, так и не являться цепочкой л(V)

Языком L над алфавитом V: L(V) называется некоторое счетное подмножество

цепочек конечной длины из множества всех цепочек над алфавитом V. Из этого

определения следует два вывода: во-первых, множество цепочек языка не обяза-

но быть конечным; во-вторых, хотя каждая цепочка символов, входящая в язык,

обязана иметь конечную длину, эта длина может быть сколь угодно большой

и формально ничем не ограничена.

Итак, каждый язык — это множество цепочек символов над некоторым алфави-

том. Но кроме алфавита язык предусматривает также правила построения до-

пустимых цепочек, поскольку обычно далеко не все цепочки над заданным алфа-

витом принадлежат языку. Символы могут объединяться в слова или лексемы —

элементарные конструкции языка, на их основе строятся предложения — более

сложные конструкции. И те и другие в общем виде являются цепочками симво-

лов, но предусматривают некоторые правила построения. Таким образом, необ-

ходимо указать эти правила, или, строго говоря, задать язык.