Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЯП2

.docx
Скачиваний:
2
Добавлен:
29.06.2023
Размер:
68.3 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра безопасности информационных систем (БИС)

АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ. СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ.

Отчет по лабораторной работе №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

  1. Наименование – «Защита от дурака»

Назначение – От защиты зависит ввод неверных или недействительных данных

  1. Входные данные – Проверяет вводят цифры в размер ключа или пытаются ввести буквы

  2. Выходные данные – Если ошибки не обнаружено, то программа продолжает работать, если находится ошибка, выводит сообщение с ошибкой и просит ввести размеры заново

  3. Ошибки – Запись возможна только цифрами

Модуль 2

  1. Наименование – «Проверка ключа»

Назначение – От ключа зависит поместится весь исходный текст или нет

  1. Входные данные ­­­­­­­­­– Незашифрованные текст, тип переменной string

  2. Выходные данные – Программа переходит к следующему действию

  3. Ошибки – Переполнение ключа текстом

Модуль 3

  1. Наименование – «Шифрование»

Назначение – начало шифрования текста по алгоритму Скитала

  1. Входные данные – Незашифрованные текст, тип переменной string

  2. Выходные данные – Шифрование полученного текста

  3. Ошибки – Если ключ будет переполнен текстом, то шифрование будет невозможным

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 Заключение

В ходе лабораторный работы было проведено знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса Наура для записи синтаксиса языка программирования.

Отчет был написан согласно ГОСТ ОС ТУСУР.

Соседние файлы в предмете Языки программирования