Читаем Язык программирования Euphoria. Справочное руководство полностью

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

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

<p>2.2.4 Операции на рядах</p>

Все операции (сравнения, логические и арифметические), описанные выше, равно как и математические подпрограммы, описанные в документе Часть II - Библиотека подпрограмм, могут быть применены к рядам и к отдельным числам (атомам).

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

x = -{1, 2, 3, {4, 5}} -- x равно {-1, -2, -3, {-4, -5}}

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

x = {5, 6, 7, 8} + {10, 10, 20, 100}

-- x равно {15, 16, 27, 108}

Если в бинарной операции участвуют два операнда, один из которых является рядом, а второй - единственным числом (атомом), этот атом эффективно повторяется для формирования ряда с длиной, равной длине первого операнда. Затем применяются правила, действующие в отношении двух рядов. Некоторые примеры:

y = {4, 5, 6}

w = 5 * y -- w равно {20, 25, 30}

x = {1, 2, 3}

z = x + y -- z равно {5, 7, 9}

z = x < y -- z равно {1, 1, 1}

w = {{1, 2}, {3, 4}, {5}}

w = w * y -- w равно {{4, 8}, {15, 20}, {30}}

w = {1, 0, 0, 1} and {1, 1, 1, 0} -- w равно {1, 0, 0, 0}

w = not {1, 5, -2, 0, 0} -- w равно {0, 0, 0, 1, 1}

w = {1, 2, 3} = {1, 2, 4} -- w равно {1, 1, 0}

-- обратите внимание, что первый символ '=' - это команда присваивания,

-- а второй символ '=' - это оператор сравнения, проверяющий равенство

-- соответствующих элементов рядов попарно с формированием ряда результатов

-- сравнения, полученных для каждой из пар элементов

Примечание: В вопросе сравнения рядов Euphoria имеется одна не вполне и не сразу заметная тонкость. Когда вы хотите сравнить две строки (или два других ряда), здесь, в отличие от некоторых других языков, не следует использовать оператор '=':

if "APPLE" = "ORANGE" then -- ОШИБКА!

В выражении, стоящем после команды "if" (если), символ '=' трактуется как бинарный оператор (сравнения), подобно другим бинарным операторам вроде '+', '*' и т.д., следовательно, он применяется к соответствующим парам элементов рядов, и эти ряды должны иметь одинаковую длину. Когда условие равенства длин операндов соблюдено, формируется ряд результатов сравнения, состоящий из нулей и единиц, но когда длины не равны, вы получите сообщение об ошибке в вашей программе. С другой стороны, команда "if" ожидает результат вычисления выражения, подаваемого в эту команду, в виде атома, а не ряда, то есть, и при равенстве длин рядов вы получите сообщение об ошибке в вашей программе. Для получения результата сравнения рядов в виде интегральной (число), а не поэлементной (ряд), характеристики, необходимо использовать встроенную функцию equal() (равно):

if equal("APPLE", "ORANGE") then -- ПРАВИЛЬНО

В общем-то, для несколько более полного сравнения рядов имеется ещё и встроенная функция compare() (сравнить):

if compare("APPLE", "ORANGE") = 0 then -- ПРАВИЛЬНО

Вы можете использовать compare() также и для других сравнений:

if compare("APPLE", "ORANGE") < 0 then -- ПРАВИЛЬНО

-- здесь "APPLE" меньше чем "ORANGE",

Перейти на страницу:

Все книги серии Euphoria

Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных