Алгоритм программы с событиями

После запуска модели производится инициализация переменных в главном модуле и в процедуре INTLC.

Поскольку алгоритм имитации ориентирован на обработку вызываемых из календаря событий, необходимо перед первым обращением к календарю запланировать хотя бы одно событие. Это делается последним оператором в модуле INTLCпутем вызова процедуры планированияSCHDL.

Модуль SCHDLпередает в календарь все сведения о будущем событии: его атрибуты, код классаKEVNTи время свершенияTSOB(содержит две части — известное время и приращениеDTIME, рассчитываемое в зависимости от события. Поскольку известная часть обычно является текущим временемTNOW, планировать можно не само времяTSOB, а только его приращениеDTIME. Учитывая важность понятия «времени свершения», в дальнейшем будем оперировать в основном его символическим эквивалентомTSOB).

Смысловой аспект планирования событий относится к информационным технологиям (алгоритмам), используемым в модели, поскольку в реальном объекте данный момент может отсутствовать в принципе. Непосредственная имитация самих процессов в объекте начинается с выбора из календаря первого события с минимальным временем свершения TSOB.

C#. События / Обработка и создание / event. Урок 66

Информация об извлеченном событии используется для проведения ряда операций. Так, например,TSOBдает возможность обновить системное время (TNOW=TSOB). Код классаKEVNTнеобходим для поиска соответствующего алгоритма реализации события. Атрибуты события используются для определения других действий при имитации.

Поиск программы реализации события осуществляет специализированная процедура EVENT, в которую при ее вызове передается код события. По коду события программаEVENTлибо вызывает саму подпрограмму реализации, либо ищет у себя внутри встроенный блок алгоритма свершения события.

После реализации события проверяются условия окончания прогона. Если прогон можно продолжить, идет обращение в календарь для извлечения очередного ближайшего по времени события. Если прогон должен быть завершен, то накопленная в процессе прогона информация обрабатывается и формируется отчет по прогону. Затем проверяются условия окончания всех прогонов.

Если прогоны продолжаются, управление передается процедуре INTLCдля выполнения очередного прогона. При завершении всех прогонов составляется итоговый отчет по всей имитации.

Нетрудно заметить, что все основные шаги по дискретно-событийной имитации будут повторяться для любых моделируемых процессов. Поэтому управление ходом имитации (информационный технологический алгоритм) независимо от задачи поручают отдельной процедуре системного типа — процессору имитации СЛАМ, вызываемому из главного модуля перед первым прогоном (рис. 4.1).

Как показывает анализ, всегда в модели часть процедур может быть

Источник: studfile.net

Программы, управляемые событиями

По мере развития средств визуального отображения информации и управления работой программы, обеспечиваемых графическим режимом, возрастал объем программ и росли затраты на создание программ, увеличивалось количество данных и количество подпрограмм, обрабатывающих эти данные. Разобраться какие подпрограммы обрабатывают те или иные данные становилось все труднее (обычно в программах данные и подпрограммы располагаются в различных местах: информация о типах данных в разделе TYPE, переменные — в разделе VAR, а действия над данными — в разделе операторов).

C# Events События

Замечание. Совокупность средств для интерактивного взаимодействия пользователя с программой на ЭВМ принято называть интерфейсом.

Развитие средств интерактивного взаимодействия привело к пересмотру идеологии построения главной программы. Если раньше программа имела строго фиксированный алгоритм и от пользователя требовалось только ввести в определенный момент времени исходные данные и получить результаты после выполнения программы, то использование интерактивного режима позволило строить программы, алгоритм выполнения которых стал определяться пользователем.

Все это привело к двум новым концепциям в программировании:

— появлению программ, управляемых событиями;

— появлению метода объектно-ориентированного программирования.

В программах, написанных для традиционного метода выполнения (не интерактивных) всегда можно, посмотрев на текст программы, сказать какой оператор будет выполняться следующим. В интерактивных программах с графическим интерфейсом порядок выполнения тех или иных функций определяет пользователь. Только ему известно какую кнопку или клавишу он нажмет в тот или иной момент времени. Внедрение графического интерфейса в программы потребовало новой организации не только программы но и операционной системы.

В WINDOWS принято программу для решения той или иной задачи называть приложением. При запуске приложения выполняется инициализация его и открывается окно этого приложения и затем программа ждет сообщения о событии. Одновременно может быть открыто несколько окон одного или нескольких приложений (но активным в конкретный момент времени может быть только одно окно). Для каждого экземпляра открытого приложения ОС организует очередь сообщений. Принципы обработки сообщений в Windows приведены на рис.5.21.1.

Читайте также:
Как красиво оформить программу

Всякое изменение состояния системы называется событием. Например, нажатие клавиши на клавиатуре, щелчок кнопкой мыши на кнопке нарисованной на экране- это события.

Каждому событию в WINDOWS соответствует сообщение. Сообщение состоит из кода сообщения и параметров сообщения. Источниками сообщений являются драйверы устройств (клавиатуры, мыши. ); ядро Windows; само приложение (всего порядка 200 сообщений).

Ядро Windows берет очередное сообщение, анализирует его и передает в очередь сообщений соответствующего приложения.

Приложение извлекает сообщение из своей очереди с помощью функции GetMessage и передает его процедуре DispatchMessage, выполняющей функцию диспетчеризации сообщения (направляет сообщение в соответствующую оконную функцию). Такая комбинация функций называется циклом обработки сообщения.

Всякое приложение состоит из главной программы и набора подпрограмм (расположенных в модулях). Задача главной программы приложения обработать сообщение и определить какие подпрограммы должны выполняться для обработки данного события. Набор возможных событий и сообщений заранее известен, поэтому главная программа для всех приложений имеет один и тот же алгоритм.

Фактически главная программа содержит три части:

цикл обработки сообщений;

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

5.2. Основные принципы ООП.

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

Объектно-ориентированное программирование (ООП) — это не язык программирования, это метод разработки программ, в основе которого лежит понятие объекта как некоторой структуры, описывающей объект реального мира, его свойства и поведение. (иначе — ООП — это метод программирования, позволяющий рассматривать концептуальную модель как набор объектов).

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

Суть ООП заключается в следующем.

В основе ООП лежит использование нового типа данных, который объединяет в себе поля данных (они могут принимать различные значения) и подпрограммы для обработки этих данных.

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

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

Преимущества ООП в полной мере проявляются при разработке достаточно сложных программ. Главными преимуществами ООП являются следующие:

-использование более естественных с точки зрения повседневной практики понятий, простота введения новых понятий в результате чего программы легче читать и понимать;

— упрощение разработки многократно используемых компонентов приложений;

— сокращение размера программ за счет того, что наследуемые свойства и действия не требуется описывать многократно;

— возможность создания библиотек классов, что позволяет существенно снизить затраты на разработку программы;

— сравнительно простая возможность внесения изменений (добавление или удаление функциональных возможностей) в программу без изменения уже написанных частей, используя свойства наследования и полиморфизма;

— возможность разделения доступа к различным объектам программы;

— локализация описания данных и подпрограмм для описания этих данных в одном месте, что упрощает понимание и создание программы.

Основные принципы ООП были сформулированы в начале 80 — х годов. Эти принципы в настоящее время реализованы в нескольких языках программирования. При этом объектно-ориентированные языки программирования строились на основе известных алгоритмических языков(Турбо Паскаль, Си, Бейсик).

Дальнейшим развитием объектно-ориентированных языков программирования являются языки, использующие так называемую технологию «визуального программирования» (ЯВП).

Читайте также:
Как работать с программой Шевроле эксплорер

В ЯВП имеется широкий набор визуальных компонентов (формы, кнопки, поля и т.п.) которые можно просто перетаскивать с панели на рабочее поле проекта (эти компоненты называются визуальными потому, что они отображаются на специальной панели в виде пиктограмм и видны на рабочем поле при создании программы.). При перетаскивании компонента в программу автоматически встраивается соответствующий программный код. Использование языков визуального программирования позволяет существенно повысить производительность труда программиста.

Источник: studopedia.su

Программирование на основе событий

Программные проекты, которые были рассмотрены в предыдущих темах, перед тем как выполнить какие-либо вычисления (действия), ожидали реакции пользователя приложения, и только затем обра­батывали эти действия. Эта методология известна как программирование на основе событий. При создании программного проекта, со­здается группа объектов, которые знают, как реагировать на попытки пользователя приложения взаимодействовать с ними, а затем команды программного проекта обрабатывают ввод с помощью процедур событий, связанных с этими объектами.

События также могут поступать из самого компьютера. Напри­мер, программа может получать уведомление о том, что получено сооб­щение электронной почты, или о том, что по системным часам прошел некоторый период времени. Эти события генерирует компьютер, а не пользователь.

Независимо от того, как генерируется событие, VBреагирует на него, вызывая процедуру события, которая ассоциируется с объектом, распознающим это событие. До сих пор мы, в основном, имели дело с событиями Click. Одна­ко объекты VB также могут реагировать на множество других событий.

Привязка к событиям в VB означает, что большинство вы­числений, производимых программой, выполняется в процедурах собы­тий.

Каждый объект в VB имеет предопределенный набор событий, на кото­рые он может реагировать. Список этих событий можно увидеть, если в Имя класса в верхней части окна Редактора кода выделить имя объекта, а за­тем щелкнуть на стрелке Имя метода.

Необходимо отметить, что события визуально иден­тифицируются по пиктограмме в форме молнии, добавляемой VS к их именам. Можно написать процедуру события для любого из этих событий и, если это событие в программе произойдет, VBвыполнит процедуру со­бытия, ассоциированную с ним. Например, объект списка поддерживает более 60 событий, в том числе Click, DoubleClick, DragDrop, DragOver, GotFocus. Обычно в приложениях не потребуется писать программный код более чем для трех или четырех из этих событий, но при создании элементов ин­терфейса следует знать, что есть такой большой выбор.

Однако, наряду с внешними событиями по отношению к программному коду процедур пользователя, необходимо иметь программные средства для сравнения переменных, свойств и значений, а также те средства, которые в соот­ветствии с результатом этого сравнения могут выполнить один или несколько операторов. Такими средствами в VBявляются операторы языка программирования – оператор условного перехода.

4.4.2. Средства программирования
разветвляющихся структур

Разветвляющимися алгоритмическими струк­турами называются такие структуры, в которых порядок выполнения блоков операторов определяется значе­ниями логических выражений. Разветвляющийся алгоритм может состоять из нескольких ветвей, каждая из которых может содержать любую, сколь угодно сложную, алгоритми­ческую структуру. В процессе работы разветвляющегося алгоритма в первую очередь вычисляются логиче­ские выражения L (частным случаем логического выражения является логическая переменная или константа). Если результат вычисления логического выражения принимает значение True (Истина), то выполняется часть алгоритма, расположенная по ветви «Да», если значение – False (Ложь), то – по ветви Нет».

В VBопределен логический тип данных Boolean. Например, описание переменной L:

Dim L As Boolean

Такая переменная L может иметь одно из двух значений: True или False. Причем при преобразовании числовых типов в логический тип значение 0 преобразуется в False, а все другие значения в 1. Например,

Dim f As Double = 6.8 L = CBool(f) ‘в результате L = True f=0 L = CBool(f) ‘в результате L = False

Логическое выражение может быть простым или сложным.

Простое логическое выражение – это два арифметических или строковых выражения, связанных операцией отношения (сравнения).

Операции отношения (сравнения) приведены в табл. 4.4.2-1.

Операции отношения Значение
= Равно
Меньше, чем
> Больше, чем
Меньше или равно
>= Больше или равно
<> Не равно
Читайте также:
Как делать скриншот на компьютере с обрезанием программа

В таблице 4.4.2-2 приведены простые логических выражения.

Логическое выражение Результат
5 < 10 True, так как 5 меньше 10
5 > 10 False,так как 5 не больше 10
7 <> 3 True, так как 7 не равно 3
X > 45 True, если X больше 45; в противном случае False
TextBox1.Text=»Stop» True, если в первом текстовом поле содержится слово «Stop»; в противном случае False
5 — 1 > 1 + 2 True,так как первой вычисляется разность 5-1 (4), затем вычисляется сумма 1+2 (3) и наконец, проверяется условие 4 > 3, т.е. 4 больше 3
X >= y + z True,если X больше или равно сумме значений переменных y и z; в противном случае False

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

Кроме того, приоритет операций отношения ниже, чем приоритет арифметических операций, поэтому операции сравнения в табл. 4.4.2-3 выполняются после арифметических операций.

В табл.4.4.2-4 приведено описание логических операций (таблица истинности). Здесь T (True) «Истина», а F (False) – «Ложь».

Разветвляющиеся алгоритмические структуры (рис. В.3-5–В.3-8) в языках программирования реализуются операторами условного перехода.

В VBдля реализации разветвляющихся алгоритмических структур используются три типа операторов: однострочный If, блочный If и оператор выбора Select Case.

Логические операции Значение
Not Преобразует значение True в False и наоборот – False в True
And Для того чтобы сложное условие было истинным, истинными должны быть все входящие в его состав условия
Or Сложное условие истинно, если истинно хотя бы одно из составляющих его условий
Xor Для того чтобы сложное условие было истинным, истинным должно быть только одно из его составляющих
Значения операндов Not x X And y X Or y x Xor y
X Y
T T F T T F
T F F F T T
F T T F T T
F F T F F F

Однострочный оператор If имеет следующий формат:

If L Then оператор(ы) [Else оператор(ы) ]

Порядок выполнения конструкции следующий: если значение логического выражения L равно True, то выполняется оператор (или операторы, отделенные друг от друга двоеточием), стоящий после Then, в противном случае выполняются операторы, стоящие после Else. В операторе If конструкция Else может от­сутствовать (в формате она взята в квадрат­ные скобки), такое разветвление называется усеченным.

Особенностью однострочного оператора If является то, что он должен располагаться в одной строке программы.

Приведем примеры записи однострочного оператора If:

If x > 0 Then y = Sqrt(x) Else y = 1 If d=>10 Then epsilon = 0.001 If lambda < 1 Or beta = 3 Then lambda = beta: x = 0 If x < 10 Then y = 1 Else If x < 100 Then y = 2 Else y = 4

Если запись оператора не умещается в пределах экрана, а также при программировании вложенных разветвлений, используется многострочный оператор (блочный оператор) If. Он имеет следующий формат:

If L1 Then [ блок_операторов_1 ] [ElseIf L2 Then [ блок_операторов_2 ]. Else [ блок_операторов_n ] ] End If

Порядок и правила выполнения конструкции многострочого оператора If следующий:

· если значение L1 равно True, то выполняется блок_операторов_1 и далее управление передается оператору, следующему после End If.

· если значение L1 равно False, то проверяется значение следующего выражения и так далее.

· после выполнения любого блока оператора If управление передается оператору, следующему после End If.

· оператор If может содержать несколько конструкций типа ElseIf.

· блок операторов, следующий за словом Else, выполняется в том случае, если последовательные проверки всех выражений выше имеют значение False.

· конструкции ElseIf и Else могут отсут­ствовать, что и отмечается в синтаксисе оператора квадратными скобками.

· в многострочном операторе If слово Then должно быть последним в строке, а слово Else – единственным.

· слово ElseIf записывается слитно, а слова End If – через пробел.

Примеры блочных операторов If:

If x>0 Then y =Sqrt(x) z=1+y p=4 End If If x < 10 Then y=1 Else y=2 z=4 End If

Считается хорошим тоном выделять структуру операторов отступами, как это сделано в приведенных выше примерах. Это сделает программы «читабельными», т.е. в них будет легче разо­браться.

Источник: studopedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru