
Лаба 1
.docxМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронно- вычислительных систем (КИБЭВС)
Анализ задачи. Абстракция программ и данных.
Синтаксис языка программирования
Отчет по лабораторной работе №1
по дисциплине «Языки программирования»
Вариант №30
Студент гр. 723-1
_______
__.__.2025
Преподаватель каф. КИБЭВС
_______А.В. Куртукова
__.__.2025
Введение
Цель работы – знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Задание на лабораторную работу:
1. Изучить краткие теоретические сведения;
2. Получить вариант задания у преподавателя;
3. Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность;
4. Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь;
5. Определить основные функции программы, входные данные, возвращаемые значения, их тип, диапазон и размерность;
6. Определить возможные ошибки, которые могут произойти при выполнении блоков программы;
7. Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-Наура;
8. Привести пример программы с использованием синтаксиса разработанного языка программирования, реализующего основную функциональность по заданию;
9. Написать отчет и защитить у преподавателя.
Текст абстрактной программы:
Программа для анализа и прогнозирования изменений в социокультурной динамике (тренды, общественное мнение) с использованием модулей для работы с социологическими данными.
ОПИСАНИЕ ДАННЫХ ДЛЯ РАБОТЫ
Прежде, чем работать над программой, нужно определить с чем будет проходить работы, какие данные поступят на вход и, что нам нужно получить на выходе, а также тип данных, который будут иметь данные на входе и на выходе.
Для этого обратимся к тексту абстрактной программы и проанализируем его. Результаты анализа текста программы приведены в таблице 1.1.
Таблица 1.1 – Результаты анализа текста абстрактной программы
Данные |
Описание |
Входные данные |
Текстовый файл или строка текста; Строковый тип данных; Числовой тип данных. |
Выходные данные |
Диаграммы результатов; Список статистических показателей; Диапазон ограничен символами, поддерживаемыми в кодировке;
|
ДЕКОМПОЗИЦИЯ ПРОГРАММЫ НА МОДУЛИ
После проведения повторного анализа текста абстрактной программы были определены следующие модули:
Модуль 1: Сборка социологических данных в виде анкеты
Наименование: Ввод социологических данных; Назначение: Получение данных
Входные данные: Ссылка на файл с ответами на анкету, str ()
Выходные данные: Текстовый файл
Ошибки: Неправильно введенный путь до файла
Модуль 2: Обработка текстового файла
Наименование: Обработка текстового файла; Назначение: Конвертирование данных в строковый формат
Входные данные: Текстовый файл
Выходные данные: Текстовый массив
Ошибки: Пустой файл, ввод значений, не входящих в диапазон
Модуль 3: Анализатор обработанного файла
Наименование: Анализатор обработанного файла; Назначение: Анализ файла
Входные данные: Текстовый массив
Выходные данные: Текстовый массив
Ошибки: Ошибок не может возникнуть
Модуль 4: Прогнозирование изменений
Наименование: Прогнозирование изменений; Назначение: Прогноз с помощью текстового файла
Входные данные: Текстовый массив
Выходные данные: Возможные варианты прогнозов: мнения или тренды
Ошибки: Ошибок не может быть
Полная декомпозиция отображена в блок-схеме на рисунке 2.1.
Рисунок 2.1 – декомпозиция абстрактной программы
3 ЗАПИСЬ В ПРОСТЕЙШЕЙ ФОРМЕ СИНТАКСИСА ЯЗЫКА
Для выполнения всего функционала программы достаточно следующего синтаксиса.
program ::= {{input, white space}, {output, white space}, {assignment, white space}, {if }{cycle}},
cycle ::= identifier, white space
identifier ::= {{assignment, white space}, {condition, white space}, {input, white space}, {output, white space}}.
if ::= (number | identifier | list call | matrix call | string | “None”), conditional operator, (number | identifier | list call | matrix call | string | “None”), “:”, white space, ({{assignment, white space}, {output, white space}, {input, white space}}).
output ::= “print”, “(”, (identifier | string | number | math expression | matrix call | list call), {“,”, (identifier | string | number | math expression | matrix call | list call)}, “)”.
assignment ::= identifier, “=”, (identifier | string | number | math expression | matrix | matrix call | list | list call).
list call ::= identifier, “[”, ((digit, {digit}) | identifier), “]”.
list ::= “[“, (identifier | number | string), {“,”, (identifier | number | string)}, “]”.
input ::= identifier, “=”, “int(input())”.
digit ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”. letter ::= “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” | “a” | “b” | “c” | “d” | “e” | “f” | “g” | “h” | “i” | “g” | “k” | “l” | “m” | “n” | “o” | “p” | “q” | “r” | “s” | “t” | “u” | “v” | “w” | “x” | “y” | “z”.
white space ::= ?white space characters?.
all characters ::= ?all visible characters?.
Примером программы, написанной с использованием данного синтаксиса служит следующая программа.
Filename ::= "data.txt"
file_content ::= load_data(filename)
text_array ::= process_text(file_content)
if text_array == None:
print("Invalid data in file!")
exit()
else:
print("Processed data into string array")
analyze_data(text_array)
predict_changes(text_array)
Заключение
В ходе лабораторной работы была изучена расширенная форма записи Бекуса-Наура, записана простейшая синтаксическая форма для языка программирования, произведена декомпозиция программы на модули и приведена программа на данном языке.
Томск 2025