ЯП2
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ
УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра безопасности информационных систем (БИС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ. СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ.
Отчет по лабораторной работе №2
по дисциплине «Языки программирования»
Студент гр.739-1
_______ М. Д. Климанов
08.10.2020
Принял
Младший научный сотрудник
______ В. А. Полюга
08.10.2020
Томск 2020
Содержание
Содержание 2
1 Введение 3
2 Теоретические сведения 4
3 Ход работы 6
3.1 Декомпозиция 6
3.2 Синтаксис программы 7
3.3 Пример программы 8
4 Заключение 10
1 Введение
Цель работы: Целью лабораторный работы является знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
2 Теоретические сведения
Язык программирования - набор правил, описывающих, какие последовательности символов составляют программу, и какое вычисление производит программа.
Программа - последовательность символов, определяющих вычисление. При проектировании сложных программных продуктов очень важно научиться мыслить системно и уметь разбивать программу на отдельные составляющие.
Язык программирования применяется для составления программ, решающих задачи на определенном уровне абстракции. Появление и применение нового языка программирования может быть оправдано только тем, что он позволяет «легче» составить программу для конкретной области. При этом чем выше уровень абстракции, тем больше деталей скрыто. Это позволяет с меньшими затратами создавать программы для тех областей, где уже есть некоторые заготовки в виде написанных модулей, классов, шаблонов и т.д.
Прежде всего, необходимо определить входные и выходные данные программы, их типы, диапазоны минимальные и максимальные значения.
После чего производится декомпозиция программ на модули. По возможности это должны быть полностью независимые составные части программы, выполняющие строго определенные функции. Каждый модуль имеет входные и выходные данные.
Также необходимо предусмотреть, какого рода ошибки возможны в процессе функционирования каждого из модулей. Как правило, существует три основных ошибки: ошибка при передаче параметров, переполнение (выход за диапазон), неправильное вычисление функции.
Синтаксис языка программирования - это набор правил, которые определяют, какие последовательности символов являются допустимыми.
Синтаксис задается с помощью формальной нотации. Самая распространенная нотация - расширенная форма Бекуса-Наура (РФБН). Описание грамматики в РБНФ представляет собой набор правил, определяющих отношения между терминальными символами (терминалами) и нетерминальными символами (не терминалами).
Терминальные символы - это минимальные элементы грамматики, не имеющие собственной грамматической структуры.
Нетерминальные символы - это элементы грамматики, имеющие собственные имена и структуру. Каждый нетерминальный символ состоит из одного или более терминальных и/или нетерминальных символов, сочетание которых определяется правилами грамматики.
Общий вид записи грамматики:
Синтаксическая категория ::= описание
Здесь синтаксическая категория представляет ту конструкцию ЯП, которая описывается, а описание задает формальные правила. Для описания этих правил используются следующие обозначения:
'…' - текстовый элемент - символ или группа символов;
[А] - элемент А входит или не входит;
(А В) - группировка элементов;
{А} - ноль или более элементов А;
| - или;
Общую форму грамматики РБНФ-описания можно описать в виде РБНФ следующим образом:
Синтаксис = { СинтОператор }.
СинтОператор = идентификатор "=" СинтВыражение ".".
СинтВыражение = СинТерм {"|" СинТерм}.
СинТерм = СинтФактор {СинтФактор }.
СинтФактор = идентификатор | цепочка
| "{"СинтВыражение ")"| "["СинтВыражение "]" | "{"СинтВыражение "}".
3 Ход работы
Шифр Скитала
3.1 Декомпозиция
Рисунок 3.1 – Декомпозиция шифра «Шифр Скитала»
Модуль 1
Наименование – «Защита от дурака»
Назначение – От защиты зависит ввод неверных или недействительных данных
Входные данные – Проверяет вводят цифры в размер ключа или пытаются ввести буквы
Выходные данные – Если ошибки не обнаружено, то программа продолжает работать, если находится ошибка, выводит сообщение с ошибкой и просит ввести размеры заново
Ошибки – Запись возможна только цифрами
Модуль 2
Наименование – «Проверка ключа»
Назначение – От ключа зависит поместится весь исходный текст или нет
Входные данные – Незашифрованные текст, тип переменной string
Выходные данные – Программа переходит к следующему действию
Ошибки – Переполнение ключа текстом
Модуль 3
Наименование – «Шифрование»
Назначение – начало шифрования текста по алгоритму Скитала
Входные данные – Незашифрованные текст, тип переменной string
Выходные данные – Шифрование полученного текста
Ошибки – Если ключ будет переполнен текстом, то шифрование будет невозможным
3.2 Синтаксис программы
User ::= program name, open program
auf::= "{start program}"
fsb::= "{finish program}"
end ::= "{print}"
iii ::= "{open file}"
use::= "{open}"
mytext ::= "{read text}"
gang ::= { alphabet utf 8 | numbers }
alphabet utf 8 ::= { "А" | "Б" | "В" |…| "а" | "б" | "в"|…|}
numbers ::= { "1" | "2" |"3" | "4" | "5" | "6" | "7" | "8" | "9" | "0" }
bbb ::= { Random }
write text ::= "{write in console }"
rnb ::= int | char | bool
ohh ::= if | then | else
math ::= " + " | " - " | " * " | " / "
assignment ::= "="
list ::= {list name}
guf T::= "true"
guf F::= "false"
\\comments ::= "//"
if ::= "if" (variables, conditions, value), { variables | variables, assignment, value | for | if | while}
else ::= "else" { variables | variables, assignment, value | for | if | while }
while ::= "while"( variables, conditions, value), { variables | variables, assignment, value | if | while }
for ::= "for" (variables, conditions, value, "^", conditions, value, "^", variables, assignment, maths), { variables| variables, assignment, value | for | if | while |}
3.3 Пример программы
User
iii assignment txt.txt \\comments происходит открытие и считывание файла txt.txt
auf assignment use alphabet utf 8 numbers \\comments старт программы с использованием библиотек
mytext assignment auf
rnb assignment write text \\comments запись теста для поиска
ohh rnb guf T
ohh assignment 1
ohh rnb guf F
ohh assignment 0
fsb
end
4 Заключение
В ходе лабораторный работы было проведено знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса Наура для записи синтаксиса языка программирования.
Отчет был написан согласно ГОСТ ОС ТУСУР.