
ЛР1 / ЯП_Л1_ВАР54
.odtМинистерство науки и высшего образования Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра безопасности информационных систем (БИС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ.
СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ
Отчет по лабораторной работе №1
по дисциплине «Языки программирования»
Студент гр. 733-1
_______ Сметанников Д.Е
_______
Принял:
Доцент, доцент каф. КИБЭВС
_______ А.С. Романов
_______
Содержание
1 Введение 3
2 Ход работы 4
Заключение 10
Введение
Цель работы — знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Для работы был выдан 54 вариант.
Ход работы
В ходе работы была сделана декомпозиция программы (рис. 2.1), Описаны основные модули, их входные и выходные данные, определены возможные ошибки. Был написан простейший синтаксис языка с помощью расширенной формы Бэкуса-Наура и простая программа.
Описание модулей:
Модуль 1:
1) Наименование — Подключение аккаунта онлайн-банка.
Назначение — подключение счета онлайн-банка пользователя для более удобного управления финансами.
2) Входные данные: данные аккаунта data типа string(A,a,B,b,...,Z,z)[40], данные счета value типа float(0,...,100000000).
3) Выходные данные: при успешном входе текущий баланс счета value типа float(0,...,100000000), иначе начинается повторная операция входа и пользователю предлагается ввести данные аккаунта еще раз.
4) Ошибки — ошибка в логине.
Модуль 2:
1) Наименование — Отслеживание изменений баланса.
Назначение — Отслеживание баланса на его пополнение или уменьшение.
2) Входные данные: текущий баланс счета value типа float(0,...,100000000).
3) Выходные данные: текущий баланс счета value типа float(0,...,100000000).
4) Ошибки — отсутствуют.
Модуль 3:
1) Наименование — Отслеживание расходов.
Назначение — Отслеживать расходы пользователя.
2) Входные данные: текущий баланс счета value типа float(0,...,100000000).
3) Выходные данные: измененный баланс счета value типа float(0,...,100000000), название операции operation типа string(A,a,B,b,...,Z,z)[40].
4) Ошибки — отсутствуют.
Модуль 4:
1) Наименование — Отслеживание доходов.
Назначение — Отслеживать доходы пользователя.
2) Входные данные: текущий баланс счета value типа float(0,...,100000000).
3) Выходные данные: измененный баланс счета value типа float(0,...,100000000), название операции operation типа string(A,a,B,b,...,Z,z)[40].
4) Ошибки — отсутствуют.
Модуль 5:
1) Наименование — Составление бюджета.
Назначение — Составление бюджета на определенные цели пользователя.
2) Входные данные: нужное кол-во денег amount типа float(0.1,...,100000000), название цели goal типа string(A,a,B,b,...,Z,z)[40].
3) Выходные данные: нужное кол-во денег amount типа float(0.1,...,100000000), название цели goal типа string(A,a,B,b,...,Z,z)[40].
4) Ошибки — Отрицательное кол-во денег для цели, выход за диапазон.
Модуль 6:
1) Наименование — Вывод PUSH уведомлений.
Назначение — Уведомление пользователя о любых изменениях его счета.
2) Входные данные: текущий баланс счета value типа float(0,...,100000000).
3) Выходные данные: измененный баланс счета value типа float(0,...,100000000), название операции operation типа string(A,a,B,b,...,Z,z)[40].
4) Ошибки — отсутствуют.
Синтаксис:
program ::= 'PROGRAM', white space, identifier, white space,
“{“, white space,
{ assignment [login | bal_check | transaction | push], white space }
“}”.
white space ::= ? white space characters ? .
all characters ::= ? all visible characters ? .
identifier ::= {alphabetic character | digit}.
dataType ::= "string" | "float" .
operator ::= "income" | "loss".
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".
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .
assignment ::= identifier , ":=" , ( digit | identifier ).
login ::= string.
transaction ::= "transaction", "(", identifier, "," operator, "," digit,")".
output::={"push" | “bal_check”} ,"(", identifier, ")".
Пример программы:
PROGRAM
{
login := “user”;
bal := 1000;
new_bal := 0;
new_bal = transaction(bal,loss,200);
push(new_bal,);
new_bal:=bal;
bal_check(bal);
}
Р
исунок
2.1 — Декомпозиция
Заключение
Проведен анализ программы под вариантом 54, сделана декомпозиция, разработан синтаксис языка программирования и записан в форме РБНФ, приведен пример программы, записанной на разработанном языке.
Томск 2025