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

ЛР1 / ЯП_Л1_ВАР54

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

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

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

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

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

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

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