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

Болтушкин Л.С., группа 712-2, лабораторная 1.docx

.pdf
Скачиваний:
5
Добавлен:
04.10.2024
Размер:
270.82 Кб
Скачать

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

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОННИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

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

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