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

ЛР-1 / ЯП №1

.docx
Скачиваний:
0
Добавлен:
15.05.2026
Размер:
90.66 Кб
Скачать

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

Федеральное государственное автономное образовательное учреждение

высшего образования

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

Кафедра безопасности информационных систем (БИС)

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

СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ

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

Соседние файлы в папке ЛР-1