Название: Квантовая механика - Учеб. пособие. (Краснопевцев Е. А.)

Жанр: Информатика

Просмотров: 1216


2. теоретические сведения

 

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

Арифметические выражения

Операндами арифметических выражений могут быть:

– константы;

– числовые переменные;

– числовые массивы и их сечения;

– вызовы функций целого вещественного и комплексного

типа.

Арифметические операции по приоритету в порядке возрастания:

   ** – возведение в степень;

   *, / – умножение, деление;

   унарные + и – ;

   +, – сложение, вычитание.

 

Операции выполняются слева направо в соответствии с приоритетом, кроме операции возведения в степень, которая выполняется справа налево

 

 

Целочисленное деление. Результатом деления целых чисел в Фортране является целое число без дробной части, например,

3/2 = 1, 1/2 = 0. Чтобы результат был вещественным, надо целое число представлять как вещественное либо с помощью точки, либо через встроенную функцию: 3./2. или real(3)/real(2).

Возведение в целую отрицательную степень.  (целочисленное деление). Чтобы этого избежать, надо 5.**(-3), тогда  (результат вещественный).

Возведение в целую степень осуществляется как

 

Возведение в вещественную степень.вычисляется как , поэтому А не может быть отрицательным числом, т.е. (–3)**1.5 неверная запись в арифметическом выражении.

Типы арифметических выражений. Определяются по следующим правилам

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

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

Ранг типов операндов в порядке убывания:

 

complex(8)  или  double complex

complex(4)

real(8)  или  double precision

real(4)  или  real

integer(4)  или  integer

integer(2)

integer(1)  или  byte

 

Пример.

Пусть: complex:: z1= (0.5,3.), z2 = (3.4, 0.3) !описаны две комплексные переменные

       real:: a = 100.3, b !описаны две вещественные переменные

       integer(2):: c = 5 !описана целая переменная

       b=a**2 + a*c - z1*z2  ! имеем арифметическое выражение,

тогда:   a*a®  тип результата – real(4);

       a*c® целое с преобразуется к типу real(4), тип результата

       – real(4);

       z1*z2® тип результата – complex(4);

       a**2+a*c® тип результата – real(4);

       a**2+a*c-z1*z2® тип результата – complex(4);

       b=a**2+a*c-z1*z2® тип результата присвоения – real(4).

 

Выражения отношения

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

Результат выражения отношения – .TRUE. или .FALSE.

Операндами операций отношения могут быть как скаляры, так и массивы.

Операции отношения:

 ® пробелы между символами не допускаются.

 

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

Пример: ‘ABCD’>’BFG’ ® результат сравнения будет равен .FALSE., т.к. код символа А меньше кода символа В.

Операнды выражения отношения могут быть комплексными, при этом можно будет применять только операции .NE.(/=) и .EQ.(= =).

Логические выражения

Результатом логического выражения, также как и выражения отношения, является .TRUE. или .FALSE.

 

 

 

 

Выполняются логические операции слева направо по приоритету (например, .not., .and.,.or.). При необходимости надо ставить скобки.

Пример: вычислить результат логического выражения

при .

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

), и окончательный результат: .true.

Если в одном выражении встречаются операции типов, такие как арифметические, отношения, логические, то между ними соблюдается приоритет: арифметические, отношения, логические.

Текстовые выражения

Fortran содержит единственную символьную операцию – операцию конкатенации (//). Результатом операции является объединение символьных строк. Длина результирующей строки равна сумме длин строк – операндов. Операндами символьного выражения могут быть:

– символьные константы и переменные;

– символьные массивы и их сечения;

– элементы символьных массивов;

– вызовы символьных функций;

– символьные подстроки;

– символьные компоненты производного типа.

Пример:

character(12) st1,st2, st*24

data st1,st2/'power','fortran'/

print *,st1//st2//'station ! результатом операции конкатенации будет строка  power  fortran  station

st=st1(:len_trim(st1))//st2(:len_trim(st2)) ! результатом будет строка  powerfortran

print *,st

end

 

Встроенные функции

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

Перечислим часть встроенных функций, с которыми будем работать.

Элементные функции преобразования данных:

1) Int(a [, kind]) – преобразует параметр a (целого, вещественного или комплексного типа) в целый тип разновидности kind;

2) Real(a [, kind]) – преобразует параметр a (целого, вещественного или комплексного типа) в вещественный тип разновидности kind;

3) Dble(a) – преобразует параметр a (целого, вещественного или комплексного типа) в вещественный тип разновидности Real(8) двойной точности;

4) Cmplx(x [, y] [,kind]) – преобразует целые, вещественные или комплексные параметры в комплексный тип разновидности kind;

5) Aimag(z) – возвращает мнимую часть комплексного числа z;

6) Rael(z) – возвращает действительную часть комплексного числа z;

7) Ichar(‘c’) – возвращает код символа c, тип кода – integer(4), код символа – character(1);

8) Char(i) – возвращает символ по коду i.

Элементные числовые функции:

1) Abs(a) – абсолютная величина целого, вещественного или комплексного аргумента a, результат – вещественное число или целое;

2) Aint(a, [, kind]) – обрезает вещественную величину a до целого числа в сторону 0, результат – вещественное число с разновидностью kind;

3) Mod(a, p) – возвращает остаток от деления двух чисел a и p, которые должны быть либо оба целые, либо оба вещественные.

Математические элементные функции:

1) EXP(x) – возвращает  для вещественного или комплекс-ного x;

2) LOG(x) – возвращает  для вещественного или ком-плексного x;

3) LOG10(x) – возвращает десятичный логарифм вещественного x >0;

4) SQRT(x) – возвращает квадратный корень для вещественного или комплексного x;

5) SIN(x) – возвращает sin(x) для вещественного или комплексного x; x – интерпретируется в радианах;

6) SIND(x) – возвращает sin(x) для вещественного или комплексного x; x – интерпретируется в градусах;

7) ASIN(x)  – возвращает арксинус вещественного аргумента x (), выраженный в радианах в интервале ;

8) ASIND(x) – возвращает арксинус вещественного аргумента x (), выраженный в градусах в интервале ;

9) TAN(x) – возвращает тангенс вещественного аргумента x, x интерпретируется в радианах;

10) ATAN(x) – возвращает арктангенс вещественного аргумента x.

Справочные функции:

1) KIND(x) – возвращает стандартное целое, равное значению параметра разновидности аргумента x;

2) HUGE (x) – для целого и вещественного x возвращает наибольшее значение, соответствующее разновидности типа аргумента x;

3) TINY(x) – для вещественного x возвращает наименьшее значение, соответствующее разновидности типа для вещественного числа x;

4) PRECISION(x) – для вещественного или комплексного x возвращает число значащих цифр, следующих после десятичной точки;

5) LEN_TRIM(st) – возвращает длину символьной строки st без хвостовых пробелов.