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

ЛР-1 / ЯП №1

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

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

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра безопасности информационных систем (БИС)

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

Отчет по лабораторной работе №1 по дисциплине «Языки программирования»

Студент гр.

_______

_______

Принял:

Доцент каф. КИБЭВС,

д.т.н., доцент

_______ Романов А. С.

_______

Томск 2026

 

Оглавление

Введение...................................................................................................................

3

Ход работы...............................................................................................................

4

Заключение ..............................................................................................................

6

2

Введение

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

Для работы был выдан 19 вариант: Система управления уличным освещением на основе датчиков освещенности.

3

Ход работы

В ходе работы была сделана декомпозиция программы (рисунок 1.1),

описаны основные модули (таблица 1.1), их входные и выходные данные,

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

Таблица 1.1 – Описание модулей

Модуль

Назначение

 

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

Выходны

Ошибки

 

 

 

 

 

е данные

 

 

 

 

 

 

 

 

Модуль 1

Опрос датчиков

и

raw_signal

lux_value

Потеря сигнала,

 

 

 

фильтрация шумов.

 

Int(0...1023)

Float(0.0...

значение < 0

 

 

 

 

 

10000.0)

 

 

 

 

 

 

 

 

Модуль 2

Хранение

пороговых

new_threshold

active_thr

Некорректный

 

eshold

 

значений.

 

 

Float(10.0...500.0)

формат данных

 

 

 

 

 

 

 

 

 

Float(10.0.

 

 

 

 

 

 

..500.0)

 

 

 

 

 

 

 

 

Модуль 3

Логика

принятия

lux, threshold

power_per

Ошибка

 

cent

 

решения.

 

 

Float(0.0...10000.0)

вычисления,

 

 

 

 

 

 

 

 

 

Int(0...100

переполнение

 

 

 

 

 

)

 

 

 

 

 

 

 

 

Модуль 4

Управление

 

 

power_percent

pwm_sign

Тайм-аут

 

 

 

al

 

исполнительными

 

Int(0...100)

устройства,

 

 

 

 

устройствами.

 

 

Int(0...255

перегрузка

 

 

 

 

 

)

 

 

 

 

 

 

 

 

Модуль 5

Журналирование

 

event_msg

log_status

Память

 

 

 

 

событий.

 

 

String[128]

Bool(True

заполнена,

 

 

 

 

 

/False)

ошибка записи

 

 

 

 

 

 

 

Модуль 6

Диагностика

 

current_state

error_code

Ошибка

 

 

 

 

исправности.

 

Status

Int(0...255

самодиагности

 

 

 

 

 

)

ки

 

 

 

 

 

 

 

4

Синтаксис:

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;

5

CURRENT_LUX := ReadSensor();

IF CURRENT_LUX < THRESHOLD THEN

SetLampPower(100);

IF CURRENT_LUX > THRESHOLD THEN

SetLampPower(0);

}

Рисунок 1.1 – Декомпозиция

6

Заключение

Проведен анализ программы под вариантом 19, выполнена декомпозиция, разработан синтаксис языка программирования и записан в форме РБНФ, приведен пример программы, реализующий основной функционал.

7

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