- •Модуль № 1.
- •Архитектура файловой системы
- •3. Системы управления файлами. Функции управления файлами. Организация файлов и доступ к ним.
- •Последовательный доступ к файлу
- •Прямой доступ к файлу
- •4. Понятие каталога. Структура каталогов
- •5. Структура магнитного диска. Главная и вторичная загрузочные записи
- •6. Процесс загрузки операционной системы.
- •9. Дескрипторы процесса. Взаимодействующие и параллельные процессы.
- •7. Управление задачами. Виды исполняемых файлов. Структура исполняемых файлов
- •10. Формальные системы и языки программирования. Способы задания языков. Цепочки символов. Операции над цепочками символов.
- •11. Формальные системы и языки программирования. Понятие языка. Формальное определение языка. Способы задания языков
- •В общем случае язык можно определить тремя способами:
- •12. Формальные системы и языки программирования. Синтаксис и семантика языка. Особенности языков программирования.
- •Особенности языков программирования:
- •13. Формальные системы и языки программирования. Понятие о грамматике языка. Классификация языков и грамматик.
- •Классификация языков и грамматик
- •14. Методы лексического, семантического и синтаксического анализа. Распознаватели. Задача разбора.
- •15. Методы лексического, семантического и синтаксического анализа Общая схема распознавателя. Виды распознавателей.
- •Виды распознавателей :
В общем случае язык можно определить тремя способами:
1. перечислением всех допустимых цепочек языка;
2. указанием способа порождения цепочек языка (заданием грамматики языка);
3. определением метода распознавания цепочек языка.
Первый из методов является чисто формальным и на практике не применяется,
так как большинство языков содержат бесконечное число допустимых цепочек
и перечислить их просто невозможно.
Второй способ предусматривает некоторое описание правил, с помощью кото-
рых строятся цепочки языка. Тогда любая цепочка, построенная с помощью этих
правил из символов алфавита языка, будет принадлежать заданному языку.
Третий способ предусматривает построение некоторого логического устройства
(распознавателя) — автомата, который на входе получает цепочку символов, а на
выходе выдает ответ: принадлежит или нет эта цепочка заданному языку.
12. Формальные системы и языки программирования. Синтаксис и семантика языка. Особенности языков программирования.
Синтаксис языка — это набор правил, определяющий допустимые конструкции
языка. Синтаксис определяет «форму языка» — задает набор цепочек символов,
которые принадлежат языку. Чаще всего синтаксис языка можно задать в виде
строгого набора правил, но полностью это утверждение справедливо только для
чисто формальных языков. Даже для большинства языков программирования
набор заданных синтаксических конструкций нуждается в дополнительных по-
яснениях, а синтаксиc языков естественного общения вполне соответствует об-
щепринятому мнению о том, что «исключения только подтверждают правило».
Например, любой окончивший среднюю школу может сказать, что строка «3 + 2»
является арифметическим выражением, а «3 2 +» — не является. Правда, не каж-
дый задумается при этом, что он оперирует синтаксисом алгебры.
Семантика языка — это раздел языка, определяющий значение предложений
языка. Семантика определяет «содержание языка» — задает смысл для всех до-
пустимых цепочек языка. Семантика для большинства языков определяется не-
формальными методами (отношения между знаками и тем, что они обозначают,
изучаются семиотикой). Чисто формальные языки лишены какого-либо смыс-
ла.
Возвращаясь к примеру, приведенному выше, и используя семантику алгеб-
ры, мы можем сказать, что строка «3 + 2» есть сумма чисел 3 и 2, а также то, что
«3 + 2 = 5» — это истинное выражение. Однако изложить любому ученику син-
таксис алгебры гораздо проще, чем ее семантику, хотя в случае алгебры семанти-
ку как раз можно определить формально.
Особенности языков программирования:
Языки программирования занимают некоторое промежуточное положение между
формальными и естественными языками. С формальными языками их объеди-
няют строгие синтаксические правила, на основе которых строятся предложения
языка. От языков естественного общения в языки программирования перешли
лексические единицы, представляющие основные ключевые слова (чаще всего
это слова английского языка, но существуют языки программирования, чьи клю-
чевые слова заимствованы из русского и других языков). Кроме того, из алгебры
языки программирования переняли основные обозначения математических опе-
раций, что также делает их более понятными человеку.
Для задания языка программирования необходимо решить три вопроса:
Q определить множество допустимых символов языка; Q определить
множество правильных программ языка; Q задать смысл для каждой
правильной программы.
Только первые два вопроса полностью или частично удается решить с помощью
теории формальных языков. Для решения остальных вопросов приходится при-
бегать к другим, неформальным методам.
