|
Арифметические выражения от логических можно отличить по их виду (если выражение содержит хотя бы одну логическую переменную или значение, или хотя бы один знак операции отношения или логической операции, то оно — логическое). Напротив, определить тип значения арифметического выражения по его виду нельзя, даже если из описаний известны типы всех входящих в него переменных. Например, выражение 2\i где г — переменная типа «целый», может вырабатывать как целый, так и вещественный результат в зависимости от знака текущего значения переменной I. Поэтому в Алголе арифметические выражения не различаются по типам. Иногда от арифметического выражения требуется, чтобы оно вырабатывало целочисленный результат, например, если оно занимает позицию индекса переменной или границы индекса в описании массивов. В таких случаях, если вычисленное значение выражения оказывается не целым, оно округляется до ближайшего целого. До сих пор мы рассматривали только выражения, называемые простыми (или безусловными). В математике часто прибегают к записям вида { х при х^г 0, 1*1 =н ( —х в противном случае (т. е. при х<0). Аналогичная конструкция, называемая условным выражением, есть и в Алголе. Только что приведенному примеру соответствует условное выражение if х^О then х else —х (английские слова if, then и else означают «если», «то» и «иначе»). В общем случае условное выражение имеет вид if В then Ег else Е где В заменяет логическое выражение, Ег — простое (безусловное) выражение, Е — произвольное выражение с тем лишь ограничением, что выражения Ех и Е должны быть оба арифметическими или оба логическими. Соответственно и все условное выражение считается либо арифметическим, либо логическим. Выражение Е может быть снова условным.Это позволяет строить выражения вида if Вг then Et else if B2 then E2 else ... ... else if B„_! then Еп.Л else Ел где E,, E2,EM, En — простые выражения. Значение условного выражения if В then Ех else E совпадает либо со значением выражения Еь либо со значением выражения Е. Чтобы выбрать одну их этих двух возможностей, сначала вычисляется значение логического выражения В. Если значение В — «истина», то выбирается выражение Еь если — «ложь», то Е, Затем вычисляется значение выбранного выражения и принимается за значение всего условного выражения. Если применить этот принцип к условному выражению if Вх then Ej else ... else if Brt_x then EM else En то придем к следующему правилу.
|