Получение случайных чисел

2.3.3 Процедура drawwin.

Все, что делает эта процедура — составление диалогового окна. Прорисовка окна идет посредством обычной псевдографики (ASCII-кодировка). При это экран делится на три части. В верхней происходит уведомление пользователя о выборе пункта меню, а в двух нижних происходит задание параметров построения последовательностей (в случае вызова dowork (1)) или же просмотр последовательностей (в случае вызова dowork (2)). Если не происходит вызова dowork, то окно остается пустым, за исключением верхнего фрейма, где написано «Последовательности».

При построении схемы и в коде программы не используется ни одной нестандартной подпрограммы. Схема тривиальна и общедоступна.

2.3.4. Процедура dowork — «основная работающая программа».

Основная программа нужна для организации диалога с пользователем. Но, собственно, сам диалог и все действия производятся именно в этой процедуре. Именно этой части программы стоит уделить наибольшее внимание.

Дальнейшее пояснение будет основываться на таблице 2. Ход повествования прямым образом зависит от значения параметра work. В каждой части вызывается справка по использованию и горячим клавишам, за исключением третьей части — вывода гистограммы.

Первая часть — задание/просмотр параметров генерации последовательностей.

Быстрый вызов — F1.

Здесь происходит, как ясно из заголовка пункта, задание новых или просмотр текущих параметров для генерации последовательностей. На блок-схеме этой подпрограммы это блоки 1−30.

Первым делом происходит разделение верхнего фрейма на два, в них прорисовывается пояснение — в какой из частей нижнего фрейма для какого закона распределения задаются параметры.

Для удобного задания параметров используется символьная переменная action. Именно через нее происходит перехват событий, от чего и зависит изменить параметры, оставить их неизменными, задать последовательности или же выйти из подпрограммы.

Со всеми возможными действиями данной и последующих частей можно познакомится в пункте «Руководства пользователя».

Стоит обратить внимание на то, как происходит ввод новых параметров. Положение курсора для ввода задается двумя массивами (они, как впрочем и остальные переменные, описаны в таблице 1): Xcor (3), Ycor (3). Измененные параметры записываются в массив Dat (3). Подобная схема очень удобна для использования и для изменения как конфигурации.

Переход между состоянием просмотр/изменение происходит путем использования кодов ASCII для клавиш Esc, Tab, Enter и F4 — генерация последовательности.

Параметр справки — 5.

Вторая часть — просмотр сгенерированной последовательности.

Быстрый вызов — F2.

На блок-схеме представлена блоками 31−47.

Просмотр последовательности происходит через обычный цикл по одному параметру. Вся последовательность выводится по двум столбам, в каждом из которых по 50 элементов. Управление просмотром организовано через коды клавиш скроллинга (прокрутки) по общепринятому стандарту — Up/Down. Элементы выводятся с приближением до шести символов после запятой, дабы не засорять рабочее пространство.

Параметр справки — 6.

Третья часть — просмотр гистограммы.

Быстрый вызов — F3.

На блок-схеме представлена блоками 48−61.

В блоках 49−58 происходит вычисление математического ожидания и дисперсии как для каждого из промежутков, так и для всей последовательности целиком.

Блок 59 представляет собой (смотри код программы) прорисовку сетки для более удобной визуализации, вывод значений математического ожидания и дисперсии, легенды. Легенда необходима для определения того, какой тип столбцов что демонстрирует.

Вся визуальная часть процедуры dowork с параметром work=3 осуществлена при помощи модуля Graph.tpu. Тип адаптера и его режим определяются в основной программе. Необходимо, чтобы этот модуль находился в одной папке с файлом программы, иначе вывод будет невозможен, что приведет к выходу из программы.

Выходом служит нажатие на любую клавишу.

2.3.5. Процедура drawmenu.

Быстрый вызов — F10.

Можно сказать, что весь интерфейс программы, ее простота использования во многом зависит от грамотно созданного меню. Некое подобие меню как раз возложено на создание этой процедуры.

Алгоритм процедуры полностью замешен на символьных данных, используемых в качестве кодов «горячих» клавиш и клавиш скроллинга. Для визуализации выбора пункта меню используется выделение цветом того или иного пункта меню. Все цвета меню можно зажать путем изменения значений констант light и dark — соответственно активного и неактивного пункта меню. Подобный ход можно использовать в подборе цветов, удобных для пользователя.