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

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

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

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

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

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

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

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

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

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

Отчет по лабораторной работе №1

по дисциплине «Языки программирования»

Студент гр. 733-1

_______ Сметанников Д.Е

_______

Принял:

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

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

_______

Содержание

1 Введение 3

2 Ход работы 4

Заключение 10

  1. Введение

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

Для работы был выдан 54 вариант.

  1. Ход работы

В ходе работы была сделана декомпозиция программы (рис. 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

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