
ЛР1 / ЯП_Л1_ВАР54
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра безопасности информационных систем (БИС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ. СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ
Отчет по лабораторной работе №1 по дисциплине «Языки программирования»
Студент гр. 733-1
_______ Сметанников Д.Е
_______
Принял:
Доцент, доцент каф. КИБЭВС
_______ А.С. Романов
_______
Томск 2025
|
|
Содержание |
1 |
Введение................................................................................................................. |
3 |
2 |
Ход работы............................................................................................................. |
4 |
|
Заключение............................................................................................................. |
9 |
2
1Введение
Цель работы — знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Для работы был выдан 54 вариант.
3
2Ход работы
Входе работы была сделана декомпозиция программы (рис. 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).
4
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) Наименование — Составление бюджета.
5
Назначение — Составление бюджета на определенные цели пользователя.
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 ? .
6
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);
}
7

Рисунок 2.1 — Декомпозиция
8
Заключение
Проведен анализ программы под вариантом 54, сделана декомпозиция, разработан синтаксис языка программирования и записан в форме РБНФ, приведен пример программы, записанной на разработанном языке.
9