на главную страницу
визитка
темы
На сегодняшнем
занятии рассмотрим программу
Ptable5, являющейся дальнейшей версией программы
PTable3.
Общая характеристика
Программа PTable5
представляет собой запоминающий и воспроизводящий механизм.
Она выполняет
три режима запоминания и исполнения: режим маршрута, режим собственных операций
и режим операций по умолчанию.
Основная идея режима маршрута состоит
в воспроизведении однажды выбранной последовательности ячеек. (Следующим шагом в
этом направлении должна быть программа, основывающаяся на том, что с каждой из
ячеек связывается подпрограмма, которая выполняется при "входе в ячейку", а
маршрут в целом в этом случае реализует некоторую программу. Отсюда получаем,
что когда мы с каждой из ячеек соотносим некоторую подпрограмму, то разные
маршруты будут позволять выполнять разные программы, если хотите, разные
действия. С другой стороны, каждая из ячеек может содержать в себе адрес таблицы
с подобными же свойствами её ячеек, последняя, в свою очередь... и т.д.)
Режим операций по умолчанию отличается от режима маршрута тем, что по умолчанию
задаётся множество операций, и пользователь, используя их, самостоятельно
прокладывает маршрут по полю ячеек или выполняет какие-то иные задачи
Наконец, режим собственных операций дополняет режим операций по умолчанию тем,
что прежде, чем прокладывать маршрут, пользователь вводит собственные операции.
Под операциями понимается правило перехода от ячейки к последующей. Операцию
можно понимать как отдельное простое действие перехода от ячейки к другой по
некоторому правилу; из последовательности таких действий складывается сложное
действие. Имя в виде номера операции тождественно со строкой таблицы.
Все три режима программы объединены одной идей - "восприятия" некоторого
правила или научения ему, его запоминания и действия в соответствии с ним.
Программа носит технический характер и представляет идею того, как может
нечто быть воспринято, запомнено и воспроизведено.
Структура
программы
Программа построена по одноуровневому принципу, который
позволяет избежать вложений операторов switch Следует отслеживать
обращения к одним и тем же подпрограммам различных управляющих программ,
т.к. управляющая программа должна задавать подпрограмме свой адрес с тем, чтобы
возврат из подпрограммы происходил именно в актуальную ("задавшую задачу")
управляющую программу. На рис.1 показано, что главной является управляющая
программа 15. Она обращается к субуправляющим программам 12, 13, 14.
Программы 1-4, 6-11 - подпрограммы.
Порядок работы программы.
Независимо от выбранного режима,
программа должна выполнить ряд общих операций. Она должна подготовить таблицу
для работы. Для этого в таблицу должны быть введены соответствующие надписи, а
также должна существовать возможность иметь перед глазами выбираемые операции,
если это режимы собственных операций или операций по умолчанию; или это
будут адреса ячеек, если находимся в режиме маршрута. Для этой цели
предназначено информационное поле, в исходном состоянии заполненное нолями,
образованное первым (подсчет столбцов начинается с ноля: 0,1,2...) и вторым
столбцами таблицы. Если мы находимся в режиме операций по умолчанию, то
должны загрузить в информационную область операции, если находимся в
режиме собственных операций, то, начиная с первой строки информационной области,
мы должны заменить ноли значениями приращений относительно произвольной ячейки
т.о., что в первый столбец очередной строки информационного поля занесём
величину приращения столбца, во второй столбец - приращения
строки относительно произвольной ячейки. После того, как все операции выбраны
или после того, как мы занесли в таблицу операции по умолчанию, мы должны их
запомнить. Затем переходим в поле выполнения операций и выполняем их. Для этой
цели используем окно Esodu, в которое заносим номер операции, которую
хотим выполнить. По окончании работы очищаем таблицу, и программа готова для
следующего выбора режима работы)
В режиме маршрута сначала
прокладываем маршрут, а затем, как обычно, запоминаем его, открываем поле
выполнения, выполняем и по окончании работы устанавливаем программу в начальное
состояние.
Немного о принципах построения программы .
Запустите программу и убедитесь, что LEIst1=12, все остальные окна имеют
значение ноль, в LEypr информация отсутствует.
Нажмите на кнопку Пуск.
Высветится диалоговое окно: "Введёте маршрут?" Если отвечаете "нет", появляется
следующее окно: "Подпрограмма 1. Введёте собственные операции?" Если отвечаете
нет, появится диалоговое окно "Введите операции по умолчанию".
Допустим,
на вопрос "Введёте маршрут?" вы ответили "Да"
Приведем
логику управляющей программы 12 в этом режиме. Но сначала договоримся об
обозначениях.
1. А→В = "Объект (если это постоянная) или
содержание объекта А заносится в содержание объекта В"
2. А-->B = "Если А, то В"
3. A==B !"А равно В"
4. a,b - "операция b выполняется вслед за операцией a"
5.
↓ программное нажатие на кнопку
6.† на кнопку нажимает пользователь
В режиме маршрута работает управляющая программа 12, которая имеет
вид:
1. Eanti→anti начальная установка. Заносится в окно. В
настоящей программе это ноль.
2. (anti==0) --> (1→LEIst1, ↓)
3. (anti==100) --> (6→LEIst1, ↓)
4. (anti==6) -->
(9→LEIst1),†,†,...
5. (anti==11) --> (8→LEIst1, ↓)
6.
(anti==8)-->(10→LEIst1, ↓)
7. (anti==10)-->(7→LEIst1, ↓)
Пример
демонстрирует принцип построения управляющих программ, определяющий порядок
выполнения подпрограмм и заключающийся в том, что следующей выполняется
программа, для которой выполнены условия выполнения и которая по порядку
выполнения программы "сверху вниз" стоит раньше.
Реализация
принципа состоит в том, что создаётся специальная одна или несколько переменных,
в которых содержится информация о выполненных программах и создаваемых их
результатами условиях. На основании анализа этих условий даётся задание на
выполнение следующей программы. В настоящей программе для этой цели применяется
одна переменная anti.
Обратим также внимание на способ выставления
управляющей программой адреса и ответа ей подпрограмм. Для этого вначале
управляющей программы заносится, к примеру, выражение
ypr=13; если это управляющая программа 13, и для информации значение
этой переменной выводится в окно:
LEypr->Text=IntToStr(ypr);
а в конец подпрограмм заносится условное выражение: если задан адрес
управляющей программы 12, то возврат из подпрограммы в управляющую программу 12.
И т.д. по числу управляющих программ:
if (ypr==12)
LEIst1->Text=IntToStr(12);
if (ypr==13)
LEIst1->Text=IntToStr(13);
if (ypr==14)
LEIst1->Text=IntToStr(14);
В данном случае это программы 12, 13, 14
Панель
управления программы имеет вид:
Панель управления состоит из таблицы,
окон, меток и кнопки.
Все метки носят информационный характер. Окна
носят как информационный, так и технический характер. Окно LEIst1 информирует о
программе, которая будет выполняться после нажатия на кнопку Пуск. Окно Eanti
показывает, какая программа была выполнена. Окно marsh2 используется в режиме
маршрута, показывая номер по порядку очередной введенной в маршрут ячейки. Окно
Esodu применяется для задания имени (номера) очередной операции, выбранной
для выполнения в режимах собственных операций и операций по
умолчанию. Окно LЕypr показывает, какая из текущих управляющих субпрограмм
"управляет".
Метки col, row, sodu информируют о параметрах выбранной
ячейки - её столбце, строке и содержании
Метки di, dj показывают
текущие приращения относительно столбца и строки ячейки. Метки masI, masJ
информируют о ячейках массивов, из которых берутся данные. Кроме того, есть
невидимая метка, которая информирует о параметрах выделенной ячейки.
Пример.
Я запустил программу. В ней в
LEIstr1=15, в остальных окнах и метках ноли или отсутствует информация. Нажимаю
на кн. Пуск. В LEIstr1 появляется 1 и появляется окно: "Введете маршрут?" Могу и
ввести. Нажимаю на yes. И получаю "многие изменения". Для того, чтобы упростить
текст, сведём последовательность шагов в таблицу.
LEIst1 | Esodu | marsh2 | Eanti | LEypr | Диалог. окно | ответ | кнопка | |||
1 | 15 | 0 | 0 | 0 | 0 | † | ||||
2 | 1 | 0 | 0 | 0 | 0 | Введёте маршрут? | yes | |||
3 | 6 | 0 | 0 | 100 | 12 | Маршрутное поле | ок | |||
4 | 9 | 0 | 0 | 6 | 12 | Сформируйте маршрут... | ок | |||
5 | Формируется маршрут путём кликания мышью на ячейках+ †. Адреса ячеек автомат вносятся в инф.поле. Затем в LEIst1 вводится 11, † | |||||||||
6 | 11 | 0 | 0 | 6 | 12 | Запомнить | ок | |||
7 | 8 | 0 | 0 | 11 | 12 | Поле маршрута | ок | |||
8 | 10 | 0 | 0 | 8 | 12 | Выполнить маршрут | ок | |||
9 | 7 | 0 | 0 | 10 | 12 | Очистить таблицу | ок | |||
10 | 15 | 0 | 0 | 0 | 0 | † | ||||
11 | 1 | 0 | 0 | 0 | 0 | Введёте маршрут? | no | |||
12 | 1 | 0 | 0 | 0 | 0 | Введёте собственные операции? | no | |||
13 | 2 | 0 | 0 | 102 | 14 | Загрузить операции по умолчанию | ок | |||
14 | 3 | 0 | 0 | 2 | 14 | Запись и проверка введенных значений | ок | |||
15 | 4 | 0 | 0 | 3 | 14 | Записать в sodu № операции и выбрать ячейку | ок | |||
16 | 7 | 0 | 0 | 4 | 14 | † | ||||
17 | 7 | 0 | 0 | 4 | 14 | Очистить таблицу | † | |||
18 | 15 | 0 | 0 | 0 | 0 | † | ||||
19 | 1 | 0 | 0 | 0 | 0 | Введете маршрут? | no | |||
20 | 1 | 0 | 0 | 0 | 0 | Введете собственные операции? | yes | |||
21 | 1 | 0 | 0 | 0 | 0 | Введите операции | yes | |||
22 | Ввод операций | † | ||||||||
23 | 3 | 0 | 0 | 101 | 13 | † | ||||
24 | 3 | 0 | 0 | 101 | 13 | Запись и проверка введенных значений | ок | |||
25 | 4 | 0 | 0 | 3 | 13 | Записать в sodu № операции и выбрать ячейку | ок | |||
26 | 7 | 0 | 0 | 4 | 13 | † | ||||
27 | 7 | 0 | 0 | 4 | 13 | Очистить таблицу | ок | |||
28 | 15 | 0 | 0 | 0 | 0 | |||||
29 |
Формирование маршрута.
Клик на ячейке 3:1,† в информационном поле в строке с
именем 1 записывается операция 0 с параметрами 3:1.
Затем клик на ячейке 7:5. В строке с именем 2
информационного поля записывается записывается операция
1 = ячейке 7:5 и т.д.
Соответственно в окне marsh2 ведется подсчёт числа записываемых
операций
Выполненный маршрут обозначается
цифрами, отражающими последовательность выбранных ячеек
Собственные операции.
Собственные операции формируются
изменением значений нолей посредством клика мы на них и
их исправления. Исполнение операций осуществляется путём
введения в Esodu имени (номера) операции и клика на
ячейке. Клик на ячейке вызовет звёздочку, отстоящую от
ячейки на расстояние, обусловленное выбранной операцией.
Как и другие технические программы, настоящая включает ряд принципов,
имеющих значение для разработки последующих
приложений.
29.01.09 г.