Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 29
Текст из файла (страница 29)
В АпуЕой1с такая функция вводится с помощью кнопки ('тч] панели инструментов при выделенном активном объекте либо выбором команды Новая алгоритмическая функция в контекстном меню активного объекта. В поле Тело функции записывается алгоритм, в котором должны встретиться операторы вида: гевптп <выражение> Этот опрератор выполняется последним, возвращая как результат выполнения функции значение выражения. Общая Форма объявления Функции Этот самый общий вид функций определяется в поле Дополинтелы(ый код класса окна Код. Общая форма объявления функции такова: <тип> <иия>(<опивок параиетров>) ( <тело функиии> ) Здесь <тип определяет тип данных, возвращаемых функцией. Если функция не возвращает значения, ее тип должен быть объявлен как усы.
иыв— имя функции — любой допустимый идентификатор, отличный от тех, которые уже используются в пределах текущей области действия имен. <сп паране ров> — это последовательность пар <т .дентификатор>, разделенных запятыми. В теле функции, возвращающей значение, должен встретиться по крайней мере один оператор вида: гесигв <выражение того же типа, что и оО>явленный тип функции>; Этот оператор выполняется последним.
7.4. Управление потоком вычислений в дача К настоягцему моменту мы описали некоторые операторы, которые создают и преобразуют значения различных типов. Следующий шаг — это управление выполнением групп операторов, потоком вычислений в ходе выполнения программного кода. 7.4.1. Операторы Оператор в программе на (ауа — это либо простой оператор, например присваивание, либо сложный оператор, например условный оператор или оператор цикла, После каждого простого оператора обязательно ставится точка с запятой. Часть [1 Средства Апу1од)с для имитационного моделирования систем (42 7.4.2.
Блоки Блочная структура в (ауа классическая. Блок — это л(обая последовательность простых операторов, взятая в фигурные скобки. В основном блоки используются для ограничения области действия объявленных переменных. Блоки могут быть вложенными. 7.4.Э. Условные операторы Структура условного оператора в (ауа проста: ЬЕ[<условие>) <оператор>, <условие> здесь — это.выражение, возвращающее значение булевского типа.
Если необходимо выполнить несколько операторов при истинном значении условия, то используется условный оператор в форме: 11(<условие>) ( <послеловательность операторов> Пример условного оператора: 11( Ва1ату >= Иаосвб ) ( реттотткапсе = "ооо<("," Ь = 100; Более общий условный оператор зача имеет вид: 1([ <условие> ) <оператор1> е1ве <оператор2> или: 11 ( <условие> ) <блок1> е1ве блок2> Пример: 10( ва1ату >= иапсеб ) ( ретгоппапсе = квооб"р Ьоппв = 100) е1ве ( реп(отткапсе = 'Ваб"; Ьопив = ор После служебного слова е1ве может идти любой оператор, в том числе и такой же условный.
7.4.4. Операторы цикла Рассмотрим два оператора цикла языка (ауа: иь(1е и тот. Оператор кд11е имеет форму: ин(1е (<условие>) ( <тело цикла> Глава 7. Сведения о языке ]ауа, необж)зимне для ре моделей на Апу[.оус [43 <условие> здесь — любое булевское выражение. Операторы <тела цикла> будут выполняться до тех пор, пока вычисленное условие имеет значение еа це.
Если в цикле выполняется только один оператор, фигурные скобки не нужны. Оператор го - очень удобен и часто применяется. Общая форма этого оператора: гол(<инициализация>;<условие>;<итерация>][<тело цикла>) Если в <теле ц > только один оператор, фигурные скобки не нужны. Работу этого широко используемого во всех алгоритмических языках оператора проще всего объяснить на примере. Следующий фрагмент программного кода присваивает значение всем десяти элементам целого массива [пс соцпс[) = пеи ъпе [10]; [от[ ьпе 1 = 0; 1<10; 1++ ] соипе[1] = 150г Код, записанный в качестве < циал ац >, выполняется только один раз.
Этот код обычно является оператором, который устанавливает начальное значение переменной управления циклом. В данном примере начальное значение 0 установлено для вновь объявляемой переменной 1, которая имеет область действия только внутри этого оператора. После выполнения <и. ~иал ации> проверяется значение <уело .я>, и если оно ложно„выполнение цикла прекращается.
Если оно истинно, то выполгается <тело цикла>, после чего выполняется итерация> и управление передается опять на проверку <условия>. В нашем примере <итерац я> состоит в увеличении на 1 переменной цикла, и поэтому в течение 10 шагов выполнения цикла <усло е> будет истинно, и тело цикла будет выполняться 10 раз при значениях ', равных О, 1, 2, ...„9. КОГда 1 Прныст ЗНаЧЕНИЕ 1О, <услояие> СтаНЕт ЛОЖНЫМ И ЦИКЛ ЗаВЕрШИтСя.
7.4.5. Операторы дача а моделях Апу1 оя[с В некоторых полях окна свойств объектов модели АпуЫя[с (и окна Код активных объектов) могут быть указаны действия. Обычно эти действия связаны с событиями, происходящими в модели. Например, поле Действие окна свойств перехода стейтчарта, поля Действие при входе и Действие при выходе каждого состояния стейтчарта, поле Реакция иа событие управляющих кнопок и слайдера и т. п.
В эти поля может быть помещен один оператор (например, оператор присваивания) или несколько операторов, и после каждого из них, конечно, лолжна стоять точка с запятой. В это поле может быть помещен и условный оператор или оператор цикла, заканчивающиеся фигурной скобкой. В таком случае разделитель — точка с запятой — может и не стоять. Часть Н.
Средства Алуьода для имитационного моделирования систем 7.5. Классы и обьекты в Апу~оус Классы являются базовыми единицами объектно-ориентированного программирования. В объектно-ориентированном моделировании они формируют определение тех объектов, из которых собирается людель. 7.5Л. Классы и экземпляры классов Ктасс в Затя формально — это просто средство определения нового типа данных.
Класс определяет цтаблон, в соответствии с которым будут строиться отдельные представители, или экземпляры этого класса. Зкземпляры класса называются также объектами. По принятому в среде программистов соглашению обычно имена классов начинаются с заглавной буквы, а имена объектов (экземпляров классов) — со строчной буквы. (Этого соглашения придерживаются разработчики библиотек классов языка 3ата в фирме Бцп М~сгозузгешз.) Объявление нового класса в затя-программе включает данные и код (л1етоды или функции класса), который оперирует с этими данными. В Апу(.об(с при построении модели ведение в поле структуры вновь создаваемого активного объекта иконки переменной, введение стейтчартов, объявление арифметической, алгоритмической или табличной функций — это просто возможные способы создания нового класса активного объекта.
Вместе с этим можно в окне Код в поле Дополнительный квд класса вводить описания новых переменных и методов в нотации Ича. Каждый экземпляр класса содержит свою собственную копию переменных класса, т. е. в каждом объекте эти переменные могут принимать свои значения, и изменения переменных в одном объекте никак не влияют на переменные других объектов этого же класса. Различные экземпляры класса отличаются друг от друга своими параметрами, которые при определении экземпляра класса могут быть явно заданы. Таким образом, мы можем иметь в модели множество однотипных объектов, но с разными параметрами и, следовательно, разным поведением.
Для того чтобы обратиться к переменной мат объекта оьз из кода, не являющегося частью класса, в котором переменная сат определена, нужно использовать "точечную" операцию, т. е. нужно указать имя объекта, в котором переменная или константа объявлена, и за этим именем после точки должно следовать имя переменнои: оьз.час. Точно так же происходит обращение к методам (функциям) класса. Например, если яепаы — это метод в объекте ротс, то обратиться к этому методу извне нужно так: росс. еетит [ ) .
Внутри класса, в котором определены метод или переменная„к ним нужно обращаться непосредственно по имени. Гла)м 7. Саедения оязыке4а)а, наобходиммедпя разрабатки моделей на Алуйод(с )45 7.5.2. Конструктор класса При объявлении класса создается только шаблон, никаких объектов- экземпляров данного класса при этом не образуется. Чтобы фактически создать объект-экземпляр данного класса, нужно использовать оператор пеи с именем этого класса (инициализировать его данные). Соответствующая функция называется конструктором. Использование конструктора уже встречалось при разработке модели часов С1оск В гЛаВЕ 6.