Лабораторная работа №2 выражения, операции, встроенные функции - umotnas.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Лабораторная работа №3 логические функции в excel цель работы: Изучить... 1 235.85kb.
Лабораторная работа Лабораторная работа Основы теории множеств 7 1675.01kb.
Лабораторная работа 4 Кодирование информации с помощью битовых масок. 1 46.09kb.
Лабораторная работа №1 Построение детерминированного синтаксического... 1 279.02kb.
Лабораторная работа №1 Установка и настройка сетевой карты. 1 58.04kb.
Лабораторная работа №5 rrose. Создание диаграмм классов (учет новых... 1 66.39kb.
Лабораторная работа №1 по курсу "Информационная безопасность" Лабораторная... 1 122.31kb.
Понятие амортизации основных фондов 1 72.58kb.
Урок 1 Тема урока : «Правила тб. Основные логические операции. 1 176.93kb.
Лабораторная работа №6 по курсу "Информационная безопасность" Лабораторная... 1 57.72kb.
Лекции 1 лекция. Множества, операции над ними. Промежутки числовой оси 1 65.61kb.
Требования к привязке установок и станций биологической очистки бытовых... 1 272.58kb.
Викторина для любознательных: «Занимательная биология» 1 9.92kb.

Лабораторная работа №2 выражения, операции, встроенные функции - страница №1/1

Лабораторная работа №2
ВЫРАЖЕНИЯ, ОПЕРАЦИИ, ВСТРОЕННЫЕ ФУНКЦИИ
1.Цель работы
Научиться работать с выражениями: составлять выражения, вычислять их, определять их тип; познакомиться со встроенными функциями и научиться их применять.

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


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

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

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



  • константы;

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

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

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

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

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

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

унарные + и - ;

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

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





.

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

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

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

Возведение в вещественную степень.


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

Типы арифметических выражений .

Определяются по следующим правилам:



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

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

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

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.(= =).



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

Р


Операнды логических выражений:


  1. логические константы, переменные, функции;

  2. массивы логического и целого типа

  3. выражения отношения;

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


Логические операции :
.NOT. – логическое “не”

.AND. – логическое “и”

.OR. – логическое “или”

.EQV. – логическая эквивалентность

.NEQV.- логическая неэквивалентность



Выполняются логические операции слева – направо по приоритету (например, .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 без хвостовых пробелов.




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




  1. Составить арифметическое выражение для алгебраической записи

,

где y – вещественное число, z – комплексное число, x – целое. Определить тип арифметического выражения и разновидность типа.



Выполнение:

program exp1

real:: y=13.12

integer:: z=15

complex:: x=(0.4, 0.35)

Print *, (1+cos(y-2))/(x**4/2+sin(real(z))**2) ! (2.922301, -7.982824E-02)

Print *, kind((1+cos(y-2))/(x**4/2+sin(real(z))**2)) ! 4

End

  1. Составить выражение отношения для двух числовых функций и для длин двух символьных строк. Затем определить значения выражений отношения и распечатать их.

Выполнение:

program exp2

integer:: f1, f2, x/10/

character(8):: t1='REAL', t2='complex'

logical g1,g2

f1=-x+10; f2=x

g1=len_trim(t1).eq.len_trim(t2)

g2=f1<=f2

print *,g1, g2 ! F T

end

  1. Составить логические выражения на принадлежность и на непринадлежность точки заштрихованной области. Определить и распечатать результаты этих логических выражений.

Выполнение:

program exp3

real x,y

logical g1,g2

10 read *,x,y

g1=(x**2+y**2)<=1.and.y>0

g2=(x**2+y**2)>1.or.y<=0

Print *,'Znachenie na prinadlejnosst=', g1

Print *,'Znachenie na neprinadlejnosst=', g2

goto 10

end

  1. Составить текстовое выражение для трех символьных строк. Выбрать из результирующей строки последние 7 символов.

Выполнение:

program exp4

character(25):: st1*7, st2*5, st3*7, st4, st5

data st1,st2,st3/ 'Fortran','Power','Station'/

st4=st1//st2//st3

Print *, st4

st5=st4((len_trim(st4)-6):len_trim(st4))

Print *, st5

End

  1. Определить максимально возможные числа для данных типа integer(1), integer(2).

Выполнение:

program exp5

integer(1) c1

integer(2) c2

Print *, huge(c1), huge(c2)

end

  1. Преобразовать два вещественных числа в комплексное. Из мнимой части комплексного числа выделить целую часть.

Выполнение:

program exp6

real:: x1=125.33, y1=36.99, c

complex z

z=cmplx(x1, y1)

c=aint(aimag(z))

Print *,z, c ! (125.330000, 36.990000) 36.000000

end
4. Задание к лабораторной работе


  1. Составьте арифметическое выражение для одной из алгебраических записей (по указанию преподавателя). Определите его тип и разновидность типа.

Таблица 3.1



Алгебраическая запись

Тип операндов

1



y, z – вещественные

x - целое

2



y – вещественное;

x- комплексное; z - целое

3



z, x, y - вещественные

4



x – целое; y - вещественное

5



x – целое; z - вещественное

6



x– комплексное; y, z - целые

7



x, y - вещественные

8



y –комплексное; x - вещественное

9



x– целое;

z– комплексное;

y – двойной точности


10



x –двойной точности;

z, y – вещественные.






  1. Составьте логическое выражение на принадлежность или на непринадлежность точки одной из заштрихованной области (по указанию преподавателя).



  1. Составьте выражения отношения, операндами которых являются текстовые и арифметические выражения. Распечатайте результат выполнения.

  2. Определите максимально возможные числа для данных типа integer(1), integer(2), integer(4), real(4), real(8) и минимально возможные числа для данных типа real(4) и real(8).

  3. Преобразуйте два целых числа в комплексное и найдите остаток от деления мнимой и реальной частей комплексного числа.

  4. Определите число значащих цифр для переменных типа real(4) и типа real(8).

  5. Определите коды букв A, D и найдите остаток от деления этих кодов. Какие символы соответствуют кодам 110, 115, 75?

  6. Преобразуйте два вещественных в комплексное. Затем определите целую часть от произведения вещественных чисел и сумму этой целой части с мнимой частью комплексного числа

  7. Выберите из текстовой строки “Фамилия, Имя, Отчество” две подстроки “Имя” и “Фамилия”, объедините их через операцию конкатенации, длину полученной символьной строки сравните с числом n. Распечатайте результаты операции конкатенации и операции сравнения.