
Болтушкин Л.С., группа 712-2, лабораторная 1.docx
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОННИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ. СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ
Отчет по лабораторной работе №1 по дисциплине «Языки программирования»
Студент гр. 712-2
___________ Л.С. Болтушкин
__________
Руководитель Младший научный
сотрудник кафедры КИБЭВС
_______ __________ А.В. Куртукова
__________
Томск 2024
Введение
Целью данной лабораторной работы является знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-
Наура для записи синтаксиса языка программирования.
Задание:
Вариант 4 – Программа для работы с алгоритмами шифрования и дешифрования данных, который может быть использован в программе для защиты конфиденциальной информации.
1.Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность.
2.Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь.
3.Определить основные функции программы, входные данные,
возвращаемые значения, их тип, диапазон и размерность.
4.Определить возможные ошибки, которые могут произойти при выполнении блоков программы.
5.Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-
Наура.
6. Привести пример программы с использованием синтаксиса разработанного языка программирования, реализующего основную функциональность по заданию.
2

1 Ход работы
Для данной лабораторной работы было получено индивидуальное задание по вариантам, которое гласит, что нужно реализовать программу для работы с алгоритмами шифрования и дешифрования данных, который может быть использован в программе для защиты конфиденциальной информации.
Также необходимо провести декомпозицию программы на основные модули (рисунок 1.1).
Рисунок 1.1 – Блок-схема
Модуль 1: Получение входных данных от пользователя перед началом шифрования и дешифрования
1. Наименование: Ввод данных; Назначение: Получение данных
2. Входные данные: Не применяются (в данном случае входные данные вводятся пользователем)
3. Выходные данные: Исходный текст для шифрования (строка),
Величина сдвига (целое число)
4. Ошибки: Неправильный формат ввода величины сдвига (целое число)
3
Модуль 2: Выбор шифрования
1. Наименование: Выбор шифрования; Назначение: Выбор одного из трех видов шифрования
2. Входные данные: 1 – Шифр Цезаря; 2 – Шифр Плейфера; 3 – Решетка Кардано
3. Выходные данные: Номер шифра (число)
4. Ошибки: Неправильный формат ввода номера шифра (целое число)
Модуль 3: Преобразование исходного текста в зашифрованный с использованием шифра Цезаря
1. Наименование: Шифрование данных; Назначение: Шифрование исходного текста в зашифрованный
2. Входные данные: Исходный текст для шифрования (строка),
Величина сдвига (целое число)
3. Выходные данные: Зашифрованный текст (строка)
4. Ошибки: Неправильный формат ввода величины сдвига (целое число)
Модуль 4: Преобразование исходного текста в зашифрованный с использованием шифра Плейфера
1. Наименование: Шифрование данных; Назначение: Шифрование исходного текста в зашифрованный
2. Входные данные: Исходный текст для шифрования (строка),
Величина сдвига (целое число)
3. Выходные данные: Зашифрованный текст (строка)
4. Ошибки: Неправильный формат ввода величины сдвига (целое число)
Модуль 5: Преобразование исходного текста в зашифрованный с использованием шифрования «Решетка Кардано»
1. Наименование: Шифрование данных; Назначение: Шифрование
4
исходного текста в зашифрованный
2. Входные данные: Исходный текст для шифрования (строка),
Величина сдвига (целое число)
3. Выходные данные: Зашифрованный текст (строка)
4. Ошибки: Неправильный формат ввода величины сдвига (целое число)
Модуль 6: Восстановление исходного текста из зашифрованного с использованием выбранного шифра
1. Наименование: Дешифрование данных; Назначение: Обратное действие, из зашифрованного текста преобразование в исходный текст
2. Входные данные: Зашифрованный текст (строка), Величина сдвига
(целое число)
3. Выходные данные: Исходный текст (строка)
4. Ошибки: Неправильный формат ввода величины сдвига (целое число)
Далее необходимо записать в простейшей форме синтаксис языка,
позволяющий реализовать данную программу. Для этого будет использоваться расширенная форма Бэкуса-Наура.
программа ::= 'program', white space, название, white space, 'начало', white space, {код}, 'конец.'
название ::= буквы, {буквы | цифры}.
код ::= white space, название, white space, ':=', white space, ('вызов_функции' | 'ввод_данных' | 'вывод_на_монитор' | 'строка' | 'число').
вывод_на_монитор ::= 'вывод_на_монитор', white space, '(', [строка | число],
')'.
ввод_данных ::= 'ввод_данных', white space, '(', название, '=', [строка | число],
')'.
строка ::= '"', {все символы - '"'}, '"'.
буквы ::= "А" | "Б" | "В" | "Г" | "Д" | "Е" | "Ё" | "Ж" | "З" | "И" | "Й" | "К" | "Л" | "М" | "Н" | "О" | "П" | "Р" | "С" | "Т" | "У" | "Ф" | "Х" | "Ч" | "Щ" | "Ц" | "Ш"| "Ъ" |
5
"Ы" | "Ь" | "Э" | "Ю" | "Я" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" .
цифра ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
число ::= цифра, {цифра}.
white space ::= ? white space символ ?.
все символы ::= ? все видимые символы ?.
Примером написанной данным синтаксисом программы, служит следующая программа:
начало вывод("Выберите тип шифрования:")
ввод ТИП = ввод с клавиатуры()
вывод("Введите текст для шифрования:")
ввод ШИФР = ввод с клавиатуры()
вывод("Введите величину сдвига для шифрования (целое число):")
ввод СВДИГ = ввод с клавиатуры()
вывод("Зашифрованный текст:")
вывод("Расшифрованный текст:")
конец
6
Заключение
В ходе выполнения лабораторной работы были получены знания об основных элементах языка программирования и о расширенной форме Бэкуса-
Наура для записи синтаксиса языка программирования
7