- •Модуль № 1.
- •Архитектура файловой системы
- •3. Системы управления файлами. Функции управления файлами. Организация файлов и доступ к ним.
- •Последовательный доступ к файлу
- •Прямой доступ к файлу
- •4. Понятие каталога. Структура каталогов
- •5. Структура магнитного диска. Главная и вторичная загрузочные записи
- •6. Процесс загрузки операционной системы.
- •7. Управление задачами. Виды исполняемых файлов. Структура исполняемых файлов
- •9. Дескрипторы процесса. Взаимодействующие и параллельные процессы.
- •10. Формальные системы и языки программирования. Способы задания языков. Цепочки символов. Операции над цепочками символов.
- •11. Формальные системы и языки программирования. Понятие языка. Формальное определение языка. Способы задания языков
- •В общем случае язык можно определить тремя способами:
- •12. Формальные системы и языки программирования. Синтаксис и семантика языка. Особенности языков программирования.
- •Особенности языков программирования:
- •13. Формальные системы и языки программирования. Понятие о грамматике языка. Классификация языков и грамматик.
- •Классификация языков и грамматик
- •14. Методы лексического, семантического и синтаксического анализа. Распознаватели. Задача разбора.
- •15. Методы лексического, семантического и синтаксического анализа Общая схема распознавателя. Виды распознавателей.
- •Виды распознавателей :
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. Из этого
определения следует два вывода: во-первых, множество цепочек языка не обяза-
но быть конечным; во-вторых, хотя каждая цепочка символов, входящая в язык,
обязана иметь конечную длину, эта длина может быть сколь угодно большой
и формально ничем не ограничена.
Итак, каждый язык — это множество цепочек символов над некоторым алфави-
том. Но кроме алфавита язык предусматривает также правила построения до-
пустимых цепочек, поскольку обычно далеко не все цепочки над заданным алфа-
витом принадлежат языку. Символы могут объединяться в слова или лексемы —
элементарные конструкции языка, на их основе строятся предложения — более
сложные конструкции. И те и другие в общем виде являются цепочками симво-
лов, но предусматривают некоторые правила построения. Таким образом, необ-
ходимо указать эти правила, или, строго говоря, задать язык.
