ЛР-1 / ЯП №1
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра безопасности информационных систем (БИС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ.
СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ
Отчет по лабораторной работе №1
по дисциплине «Языки программирования»
Студент гр.
_______
_______
Принял:
Доцент каф. КИБЭВС, д.т.н., доцент
_______ Романов А. С.
_______
Оглавление
Введение 3
Ход работы 4
Заключение 7
Введение
Цель работы – знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Для работы был выдан 19 вариант: Система управления уличным освещением на основе датчиков освещенности.
Ход работы
В ходе работы была сделана декомпозиция программы (рисунок 1.1), описаны основные модули (таблица 1.1), их входные и выходные данные, определены возможные ошибки. Был написан простейший синтаксис языка с помощью расширенной формы Бэкуса-Наура и приведен пример программы.
Таблица 1.1 – Описание модулей
Модуль |
Назначение |
Входные данные |
Выходные данные |
Ошибки
|
Модуль 1 |
Опрос датчиков и фильтрация шумов. |
raw_signal Int(0...1023) |
lux_value Float(0.0...10000.0) |
Потеря сигнала, значение < 0 |
Модуль 2 |
Хранение пороговых значений. |
new_threshold Float(10.0...500.0) |
active_threshold Float(10.0...500.0) |
Некорректный формат данных |
Модуль 3 |
Логика принятия решения. |
lux, threshold Float(0.0...10000.0) |
power_percent Int(0...100) |
Ошибка вычисления, переполнение |
Модуль 4 |
Управление исполнительными устройствами. |
power_percent Int(0...100) |
pwm_signal Int(0...255) |
Тайм-аут устройства, перегрузка |
Модуль 5 |
Журналирование событий. |
event_msg String[128] |
log_status Bool(True/False) |
Память заполнена, ошибка записи |
Модуль 6 |
Диагностика исправности. |
current_state Status |
error_code Int(0...255) |
Ошибка самодиагностики |
Синтаксис:
program ::= 'SYSTEM', white_space, identifier, white_space,
"{", white_space,
{ statement, white_space },
"}".
statement ::= ( assignment | control_flow | method_call | db_operation ), ";" .
assignment ::= identifier, white_space, ":=", white_space, expression .
control_flow ::= 'IF', white_space, comparison, white_space,
'THEN', white_space, method_call .
comparison ::= expression, white_space, ( "<" | ">" | "==" ), white_space, expression .
method_call ::= identifier, "(", [ arguments ], ")" .
arguments ::= expression, { ",", white_space, expression } .
expression ::= identifier | number | method_call .
db_operation ::= "DATABASE", ".", ("SAVE" | "LOAD" | "CONNECT"), "(", [ arguments ], ")" .
identifier ::= letter, { letter | digit } .
number ::= digit, { digit } [ ".", { digit } ] .
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" | "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" .
bool ::= "True" | "False" .
white_space ::= ? символы пробела и переноса строки ? .
Пример программы:
SYSTEM StreetLightController
{
THRESHOLD := 200.0;
CURRENT_LUX := ReadSensor();
IF CURRENT_LUX < THRESHOLD THEN
SetLampPower(100);
IF CURRENT_LUX > THRESHOLD THEN
SetLampPower(0);
}
Рисунок 1.1 – Декомпозиция
Заключение
Проведен анализ программы под вариантом 19, выполнена декомпозиция, разработан синтаксис языка программирования и записан в форме РБНФ, приведен пример программы, реализующий основной функционал.
Томск 2026
