Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 25
Текст из файла (страница 25)
Однако вопрос заключается в том, сколько строк кода нужно писать при разработке модели, насколько сложной является интеграция программного кода в срелу разработки, до какого уровня разработчик моделей, который обычно не является программистом, должен знать тонкости программирования на базовом языке симулятора и т. п. В АпуЕой|с базовым языком, совмегценным со средой разработки моделей, является 3ача. Часть Н. Средства Ялу1лтди для имитационного моделирования систем Включение программного кола в молель в Апу1лй)с является органичным и естественным, тексты языка Эата интегрируются в модель чрезвычайно просто и элегантно. Если разработчик глубоко владеет приемами программирования, то он может с успехом использовать при построении модели всю мощь языка. Однако лля построения даже сложных моделей на АпуЕоя1с от разработчика требуются лишь самые общие, поверхностные знания об алгоритмизации и программировании, которые позволят ему построить фрагменты кода на языке 3ауа в специально определенных полях.
Не пытаясь заменить существующие многочисленные руководства по языку 3ауа, мы очень кратко рассмотрим в этой главе лишь некоторЫе типы данных, правила синтаксиса, операторы и базовые концепции этого языка, необходимыс для тото, чтобы разработчик молелей на Апу).ой1с яснее понимал возможности ланного инструмента и те ограничения (в основном, синтаксические), которые необходимо соблюдать при включении фрагментов кола в модель. 7.1. Примитивные типы данных и переменные В языках программирования используются данные и операции над ними. Данные в зауа могут быть примитивными (базовыми, не структурными) и сложными, которые строятся из других типов данных. 7.1.1.
Числовые типы Любая переменная в 3ача должна иметь объявленный тип. Целые переменные в 3ауа могут быть нескольких типов, но в большинстве моделей для целых переменных достаточно использовать только тип все. В зауа для величины этого типа на любой платформе отводится 32 разряда, потому целые переменные типа ъпг могут иметь лиапазон порялка +2*!Оэ. Целые константы записываются всегда без точки.
Для ветцественных переменных наиболее практичным при построении моделей является использование типа аось1е„что дает достаточную точность представления. При построении молели на АпуЕорс для вводимых в окне графического редактора переменных и параметров нужно выбрать из выпадаюгдего меню тип — ьвгедег, геа1 или ьоо1евп, хотя разработчик может использовать любой тип — либо любой из примитивных типов языка зача„либо сложный, опрелеленный пользователем. Типы всгеаег и гев1 в лействительности в программе на )ага будут представлены как примитивные типы 'вг и гтоиь1е.
Названия ъпгедег и гев1 используются в Апу$лй)с для улобства, их можно использовать, только когла они предлагаются в выпадающем меню. Глава 7. Сведения а языке 3виа, нвабхадимыв дпя разработки моделей нв Дпф ада 123 7.1.2. Булевский тип Использование булевского (ьаатввп) типа очевидно — он применяется всегла, когда необходимы логические значения ИСТИНА и ЛОЖЬ.
Константами булевского типа являются агав и евтвв. Если в модели Авуаров(с в поле начального значения переменной или параметра булеского типа не стоит никакого значения, это интерпретируется как значение евтв . 7.1.3. Символьный тип Константой символьного типа будет любой символ, взятый в олинарные кавычки, например, 'е' или 'я'. В двойных кавычках записываются константы типа строка, т. е. последовательности символов. Частными случаями строки являются пустая строка и олносимвольная ст!юка. Константа "ь" в двойных кавычках — не символьная константа, это олносимвольная строка. Символьный тип основан на двухбайтовой копировке символов ~3п)сот(е, что позволяет использовать любой символ всех языков мира, в том числе и кириллицу„а также специальные символы, Символы в (3шсойе наиболее часто выражаются в вилс кола из четырех ~нестнаацатеричных цифр, записываюшихся после пары ы Например в кодировке Оп(соде символ ™ имеет вил /и2122.
Вставим в окно анимации модели неатс указание на торговую марку. Откройте в этой модели окно анимации и вставьте в левом верхнем углу статический текст "Марка", а в поле динамического значения этого текста — в двойных кавычках текст (см. рис. 7. !): "Ллуьадз.сМ2122" Запустите молель. Вы увилите, что текст "Апу! оя)с™ отображается в окне анимации при работе модели. В папке Моде! Ехагпр!ез~рап Н это добавление солержится в модели нввгсв. Кодировки Оп(соде можно найти на сайте тттттт.вв)сове.огй/сйаг!в/. Риа. 7.1.
Использование 0п!савв-символов 124 Часть д С дствв Апу!.сус для имитационного моделирования систем 7.1.4. Переменные Тип переменной должен быть определен в объявлении переменной до ее использования. В активном объекте при построении модели на АпуЕоя1с это требование удовлетворяется просто — используется кнопка ~О) панели инструментов лля переноса иконки переменной в поле редактора проекта. Параметры модели с точки зрения языка 3ача также являются переменными. Дополнительные переменные обьекта могут быть введены также в поле Дополиптельнып код класса окна Код.
Свое окно Код ассоциировано с каждым активным объектом, анимацией и т. п. Имена переменных начинаются с буквы и должны быть послеловательностью букв или цифр. Заглавные и строчные буквы в именах различаются. Переменные можно объявлять в любом месте в коле 3ата. Одна и та же переменная не может быть объявлена более одного раза в области ее действия. Слова ассы.в, ьис, ьсс1евп и т. п., появляющиеся в тексте 2ата, являются ключевыми, все они автоматически выделяются редактором синим цветом. Эти ключевые слова 3ауа, как и ключевые слова АпуЕорс (например, рвсепс, ьпави и др.), нельзя использовать как имена. После объявления переменной она лолжна быть инициализирована.
При отсутствии явной инициализации переменной или параметра в АпуЕофс им присваивается некоторое значение по умолчанию. Как уже указывалось, для численных типов это О, для булевского типа — значение гь1вв. Инициализация может быть выполнена либо отдельным оператором присваивания: тос в = 1о; либо непосредственно при объявлении типа: Впс 4 = 10т 7.1.5. Выражения и оператор присваивания Выражение в языке программирования — это, фактически, запись формулы в соответствии с правилами языка.
Каждое выражение имеет тип, который получает значение, являющееся результатом вычисления выражения. АриФметические выражения Выражения в 3ата строятся по обычным правилам записи алгебраических формул. Для числовых типов используются обычные арифметические операторы: +, —, *, /, в с обычным приоритетом. Бинарная операция в дает остаток от деления. Деление целых чисел в 3ата дает целое число, поэтому результатом деления 4/3 будет 1, а результатом леления 3/4 будет О. Если в бинарной операции один из операндов вещественный, а лругой целый, то результат тоже будет вещественный.
При этом целое число булет автомати- Глава 7 Сведения о язьве /ача, нвооходимыедля разработки моделей на Алу( оса 125 чески, неявно преобразовываться к представлению вещественного числа. Такое преобразование форматов называется (неявной) конверсией' тинов. Конверсия типов называется также приведением или кастингом (от английского термина саесзпд, обозначающего эту операцию). Пусть в результате деления лвух целых чисел 1паех и 2 нужно получить вещественное число.
При выполнении операции присваивания: ареал = Ьпстех/21 если пеап — вещественная, а зп<)ех — целая переменная, произойлет неявная конверсия типов: сначала будет получен целый результат деления двух целых чисел, после чего он будет конвертирован в вещественный тип при выполнении операции присваивания. Часто это совсем не то, что предполаГаЕт раЗрабОтЧИК: ВЕДЬ (<)опЫе) (З/2) будЕт ЕО, а НЕ !.5. ВЫПОЛНЕНИЕ ДЕЛЕ- ния вещественных чисел в этой задаче можно сделать несколькими способами. Самый простой вариант: ееап = з.пйех/2.
1 Здесь константа 2 сразу представлена как вещественная. Для того чтобы выполнилось деление вещественных чисел при делении двух целых, необходимо выполнить явную конверсию типов хотя бы одного из операндов, например: жеап = (<)обозе)зпс)ех/2; Операция кастинга более приоритетна, чем арифметические операции, поэтому в данном примере сначала значение целой переменной ьпаех будет ПрИВЕдЕНО К тИПу допцте.
ПОСЛЕ ЭТОГО буЛЕт ВЫПОЛНятЬСя ОПЕрацня дЕЛЕНИя, но для ее выполнения сначала будет выполнена неявная конверсия целого значения 2 к тому же типу с)опые. Булевские и условные выражения Выражения булевского типа могут строиться из булевских переменных и констант, соединенных обычными операциями булевой алгебры еа для И, ) ) для ИЛИ и ) для НЕ. Операции отношения: тоже порождают результат булевского типа. Например, результатом выра- жения: (2==б) будет газее, а результатом выражения (5 != б) будет сгпе. Частой ошибкой начинающих программистов является исполь- зование вместо знака отношения == операции присваивания =.