
ЛР 1
.docxМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронно- вычислительных систем (КИБЭВС)
Анализ задачи. Абстракция программ и данных.
Синтаксис языка программирования
Отчет по лабораторной работе №1
по дисциплине «Языки программирования»
Вариант №23
Студент гр. 723-1
______
__.__.2025
Преподаватель каф. КИБЭВС
_______А.В. Куртукова
__.__.2025
Введение
Цель работы – знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Задание на лабораторную работу:
1. Изучить краткие теоретические сведения;
2. Получить вариант задания у преподавателя;
3. Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность;
4. Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь;
5. Определить основные функции программы, входные данные, возвращаемые значения, их тип, диапазон и размерность;
6. Определить возможные ошибки, которые могут произойти при выполнении блоков программы;
7. Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-Наура;
8. Привести пример программы с использованием синтаксиса разработанного языка программирования, реализующего основную функциональность по заданию;
9. Написать отчет и защитить у преподавателя.
Текст абстрактной программы:
Программа для анализа и прогнозирования трафика на дорогах с использованием модулей для работы с данными о движении транспорта.
ОПИСАНИЕ ДАННЫХ ДЛЯ РАБОТЫ
Прежде, чем работать над программой, нужно определить с чем будет проходить работы, какие данные поступят на вход и, что нам нужно получить на выходе, а также тип данных, который будут иметь данные на входе и на выходе.
Для этого обратимся к тексту абстрактной программы и проанализируем его. Результаты анализа текста программы приведены в таблице 1.1.
Таблица 1.1 – Результаты анализа текста абстрактной программы
Данные |
Описание |
Входные данные |
Количество машин; Местоположение камеры; Скорость автомобилей; Погодные условия. |
Выходные данные |
Прогнозирование загруженности на определенной улице |
ДЕКОМПОЗИЦИЯ ПРОГРАММЫ НА МОДУЛИ
После проведения повторного анализа текста абстрактной программы были определены следующие модули:
Модуль 1:
Наименование: Количество автомобилей.
Входные данные: видеофайл.
Выходные данные: число.
Ошибки: данные не подходящего типа.
Модуль 2:
Наименование: время.
Входные данные: видеофайл.
Выходные данные: число.
Ошибки: данные не подходящего типа.
Модуль 3:
Наименование: местоположение камеры.
Входные данные: видеофайл.
Выходные данные: строка.
Ошибки: данные не подходящего типа.
Модуль 4:
Наименование: скорость автомобилей.
Входные данные: видеофайл.
Выходные данные: число.
Ошибки: данные не подходящего типа.
Модуль 5:
Наименование: погодные условия.
Входные данные: видеофайл.
Выходные данные: строка.
Ошибки: данные не подходящего типа.
Модуль 6
Наименование: анализ обращений.
Входные данные: результаты опросов.
Выходные данные: список с проанализированными данными.
Ошибки: неверный формат данных.
Модуль 7
Наименование: Прогнозирование данных
Входные данные: результаты опросов
Выходные данные: Возможные варианты прогнозов
Ошибки: Ошибок не может быть
Полная декомпозиция отображена в блок-схеме на рисунке 2.1.
Рисунок 2.1 – декомпозиция абстрактной программы
3 ЗАПИСЬ В ПРОСТЕЙШЕЙ ФОРМЕ СИНТАКСИСА ЯЗЫКА
Для выполнения всего функционала программы достаточно следующего синтаксиса.
program ::= 'PROGRAM', white space, identifier, white space,
'BEGIN', white space,
{ assignment, ";", white space},
'END.' .
identifier ::= alphabetic character, { alphabetic character | digit } .
number ::= [ "-" ], digit, { digit } .
string ::= '"' , { all characters - '"' }, '"' .
assignment :: = identifier , ":=" , ( number | identifier | string ) .
alphabetic character ::= "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" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" .
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .
white space ::= ? white space characters ? .
all characters ::= ? all visible characters ? .
Примером программы, написанной с использованием данного синтаксиса служит следующая программа.
PROGRAM VideoAnalysis
BEGIN
videoFile := "traffic.mp4";
numCars := CountCars(videoFile);
timeOfDay := GetTime(videoFile);
cameraLocation := GetLocation(videoFile);
carSpeed := AnalyzeSpeed(videoFile);
weatherConditions := AnalyzeWeather(videoFile);
surveyData := LoadSurveyData("survey_results.csv");
analyzedData := AnalyzeSurvey(surveyData);
predictions := PredictTrends(surveyData);
END.
Заключение
В ходе лабораторной работы была изучена расширенная форма записи Бекуса-Наура, записана простейшая синтаксическая форма для языка программирования, произведена декомпозиция программы на модули и приведена программа на данном языке.
Томск 2025