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

ЛР 1

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

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

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

Кафедра комплексной информационной безопасности электронно- вычислительных систем (КИБЭВС)

Анализ задачи. Абстракция программ и данных.

Синтаксис языка программирования

Отчет по лабораторной работе №1

по дисциплине «Языки программирования»

Вариант №23

Студент гр. 723-1

______

__.__.2025

Преподаватель каф. КИБЭВС

_______А.В. Куртукова

__.__.2025

Введение

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

Задание на лабораторную работу:

1. Изучить краткие теоретические сведения;

2. Получить вариант задания у преподавателя;

3. Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность;

4. Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь;

5. Определить основные функции программы, входные данные, возвращаемые значения, их тип, диапазон и размерность;

6. Определить возможные ошибки, которые могут произойти при выполнении блоков программы;

7. Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-Наура;

8. Привести пример программы с использованием синтаксиса разработанного языка программирования, реализующего основную функциональность по заданию;

9. Написать отчет и защитить у преподавателя.

Текст абстрактной программы:

Программа для анализа и прогнозирования трафика на дорогах с использованием модулей для работы с данными о движении транспорта.

  1. ОПИСАНИЕ ДАННЫХ ДЛЯ РАБОТЫ

Прежде, чем работать над программой, нужно определить с чем будет проходить работы, какие данные поступят на вход и, что нам нужно получить на выходе, а также тип данных, который будут иметь данные на входе и на выходе.

Для этого обратимся к тексту абстрактной программы и проанализируем его. Результаты анализа текста программы приведены в таблице 1.1.

Таблица 1.1 – Результаты анализа текста абстрактной программы

Данные

Описание

Входные данные

Количество машин;

Местоположение камеры;

Скорость автомобилей;

Погодные условия.

Выходные данные

Прогнозирование загруженности на определенной улице

  1. ДЕКОМПОЗИЦИЯ ПРОГРАММЫ НА МОДУЛИ

После проведения повторного анализа текста абстрактной программы были определены следующие модули:

Модуль 1:

  1. Наименование: Количество автомобилей.

  2. Входные данные: видеофайл.

  3. Выходные данные: число.

  4. Ошибки: данные не подходящего типа.

Модуль 2:

  1. Наименование: время.

  2. Входные данные: видеофайл.

  3. Выходные данные: число.

  4. Ошибки: данные не подходящего типа.

Модуль 3:

  1. Наименование: местоположение камеры.

  2. Входные данные: видеофайл.

  3. Выходные данные: строка.

  4. Ошибки: данные не подходящего типа.

Модуль 4:

  1. Наименование: скорость автомобилей.

  2. Входные данные: видеофайл.

  3. Выходные данные: число.

  4. Ошибки: данные не подходящего типа.

Модуль 5:

  1. Наименование: погодные условия.

  2. Входные данные: видеофайл.

  3. Выходные данные: строка.

  4. Ошибки: данные не подходящего типа.

Модуль 6

  1. Наименование: анализ обращений.

  2. Входные данные: результаты опросов.

  3. Выходные данные: список с проанализированными данными.

  4. Ошибки: неверный формат данных.

Модуль 7

  1. Наименование: Прогнозирование данных

  2. Входные данные: результаты опросов

  3. Выходные данные: Возможные варианты прогнозов

  4. Ошибки: Ошибок не может быть

Полная декомпозиция отображена в блок-схеме на рисунке 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

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