Алгоритм преобразования данных
Способ хранения данных
В задании было указано на необходимость создания, хранения и последующего просмотра протокола работы. Протокол работы можно хранить на жестком или на гибком диске. Обеспечим возможность различных вариантов хранения протокола и на жестком и на гибком диске. Поэтому в табл. 3.2 необходимо добавить три строчки с данными LogDisk, LogPath и LogFile, соответствующими имени диска, пути к файлу протокола и имени файла протокола. Все три величины имеют тип string, видимость – public, организацию – "переменные".
Для хранения протокола можно выбрать как файл последовательного доступа, так и файл прямого доступа. В данном случае это совершенно безразлично, но для работы с файлом прямого доступа потребуется создать сложный тип данных. Выбираем файл последовательного доступа с многокомпонентной записью данных в последовательности a,b. Корень х уравнения можно было бы также записать в файл, что упростило бы процесс чтения протокола, но знание метода решения уравнения позволяет предвидеть необходимость записи при а=0 сообщений "не определен" или "не существует".
Метод решения уравнения А*х+В=0 предельно прост:
= -В/А при А¹0
х не определен при А=0 и В=0
не существует при А=0 и В¹0.
Анализ алгоритма решения уравнения показывает, что для его полной реализации должна быть введена промежуточная переменная типа string или вычисляющая ее функция, в которую записывается символьный эквивалент значения х или текст соответствующего сообщения. С учетом соображений, высказанных в 3.6.3 и в данном подразделе, табл. 3.2 можно придать вид
табл. 3.3.
Таблица 3.3
Уточненное описание наборов данных
Имя | Тип | Способ организации | Видимость | Назначение |
Входные данные | ||||
A | Single | Переменная | Public | Коэффициент а |
B | Single | Переменная | Public | Коэффициент b |
Выходные данные | ||||
X | Single | Переменная | Public | Корень уравнения |
Промежуточные данные | ||||
TBA.Text | String | Свойство Text Box | Public | Ввод коэффициента а |
TBB.Text | String | Свойство Text Box | Public | Ввод коэффициента b |
LBX.Caption | String | Свойство Label | Public | Отображение корня х |
MessX | String | Функция | Public | Сообщение о корне х |
LogDisk LogPath LogFile | String String String | переменная переменная переменная | Public Public Public | Данные протокола: Имя диска Путь Имя файла |
Алгоритм преобразования данных показан на Р-графе (рис. 3.1) и в
табл. 3.4. На рис. 3.1 жирным шрифтом показаны обозначения формул (иногда совпадающие с самими формулами), курсивом – имена состояний процесса, а нормальным шрифтом – условия, разрешающие выполнение соответствующих действий. В качестве имен состояний процесса выбраны слова "Вход" (начало процесса), "Выход" (завершение процесса) и номера состояний. Ввиду простоты задачи описание состояний не делается. Если возникнет необходимость в этой операции, то описание состояний можно сделать в таблице, в которой для каждого имени состояния указать имена данных, значения которых определенны.
Вход 1 а¹0 2 3 Выход
o о o o о
TBA.Text>a x= - b/a x →MessX LB.Caption=MessX
TBB.Text>b a=0 4 b¹0
MessX="не существует"
b=0
MessX="не определен"
функция MessX
Рис. 3.1. Р-граф алгоритма преобразования данных
Таблица 3.4
Таблица формул к алгоритму преобразования данных
Имена данных | Обозначения формул | Вид формул |
TBA.Text | Нет | Ввод с клавиатуры |
TBB.Text | Нет | Ввод с клавиатуры |
a | TBA.Text>a | a=val(TBA.Text) при вводе с клавиату-ры, иначе читается из файла |
b | TBB.Text>b | b=val(TBB.Text) при вводе с клавиату-ры, иначе читается из файла |
x | x= -b/a | x= -b/a при а≠0, иначе не определяется |
MessX | x →MessX MessX="не существует" MessX="не определено" | MessX=str(x) при а≠0, MessX="не существует" при а=0 и b≠0 MessX="не определено" при а=0 и b=0 |
LB.Caption | LB.Caption=MessX | LB.Caption=MessX |
LogDisk | LogDisk | Из списка дисков |
LogPath | LogPath | Из списка каталогов диска |
LogFile | LogFile | Из списка файлов или с клавиатуры |