Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_inf2.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
69.45 Кб
Скачать

19.Константы и переменные

Константа - это неизменная величина, которой приписано определенное значение. Как и в математике, имеются явные и именованные константы

например, -18 и 1.25 - это явные константы

по внешнему виду явные константы различают по типу - целые пишутся без десятичной точки,

например, -127 - это целая константа, в то же время -127. +25.871 0.0294, 0.15e-5, 1e-9 - это вещественные константы - обязательно пишутся или с десятичной точкой, или с порядком, независимо от того есть ли у числа дробная часть или нет.

Переменная

Переменная в Фортране

• величина, которая может изменяться в программе

• обязательно имеет собственное уникальное имя

• является скаляром, вектором или матрицей (массивом)

• различается по написанию

o простая переменная gamma

o переменная с индексами al(2,3)

o секция массива P(i,1:N)

• должна быть отнесена к одному из 5 базовых типов

o целые например, integer :: Ls=12, t1, gamma

o вещественные например, realfe, PI, track -

o комплексныенапример, complexCOMPL_DS,c -

o логическиенапример, logical mumu,tomu -

o строковые например character stringer,coocker -

o или к производному типу, определяемому программистом

20. Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа. Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив

Размерность массива — количество индексов, необходимое для однозначного доступа к элементу массива

Описание массивов в Fortran пишется в начале программы, до исполняемых операторов.

eal a(10),b(5)

dimension Fi(10),beta(5) - вещественные одномерные массивы одни с индексацией от 1 до 10 другие - от 1 до 5

integer n(6),u(6), m - целые одномерные массивы n,u, с индексацией от 3 до 8, и целая переменная m

Билет 21. Осмысленная математическая формула, записанная по правилам Фортрана, называется арифметическим выражением. Правила записи выражений - это компромисс между привычным для математика и представлением формулы простым текстом. Простой (по-английски plain) текст вводится с клавиатуры символ за символом, аналогично его читает компилятор.

Фортран позволяет записывать арифметические выражения, состоящие из переменных и констант числовых типов, с использованием 5-ти арифметических операторов:

+ СЛОЖЕНИЕ

- ВЫЧИТАНИЕ

* УМНОЖЕНИЕ

/ ДЕЛЕНИЕ

** ВОЗВЕДЕНИЕ В СТЕПЕНЬ

В первую очередь выполняется возведение в степень (причем справа на лево), затем с равным приоритетом выполняются умножение и деление и, в последнюю очередь, сложение и вычитание с равным приоритетом.

Билет 22. Осмысленная логическая формула, изучаемая в математической логике и записанная по правилам Фортрана, называется логическим выражением.

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

В логическое выражение входят

• логические константы,

• логические переменные,

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

• отношения

• логические операции

Логические выражения чаще всего используются в логическом операторе или конструкции IF. Над объектами данных логического типа определены следующие операции (указаны в порядке убывания приоритета, точки в написании обязательны):

.NOT. ЛОГИЧЕСКОЕ ОТРИЦАНИЕ (НЕ)

.AND. ЛОГИЧЕСКОЕ ПЕРЕСЕЧЕНИЕ (И)

.OR. ЛОГИЧЕСКОЕ ОБЪЕДИНЕНИЕ (ИЛИ)

Каждое логическое отношение (утверждение) является элементарным логическим выражением и может принимать значения: ".TRUE." или ".FALSE.", все операции отношения имеют одинаковый приоритет выполнения по отношению друг к другу:

.EQ. РАВНО

.NE. НЕ РАВНО

.GT. БОЛЬШЕ

.GE. БОЛЬШЕ ЛИБО РАВНО

.LT. МЕНЬШЕ

.LE. МЕНЬШЕ ЛИБО РАВНО

Билет 24. Встроенные функции: min(a,b,c), max(a,b,c), abs(a) – выводит соответственно миним. из знач., макс. из знач. и модуль числа.

Любой оператор м.б. помечен меткой (целое число,, не более 5 цифр). Цель: есть возможность обращаться к нужной строке из любого места проги (Оператор безусловного перехода GOTO). Пример:

GOTO(m1, m2, m3…) <арифметич выражение>

m1, m2, m3 – метки, значение арифметич выражения – целое число

или

READ (*,*) x (то есть прога запросит х, выведет знач х и синус х и заново

WRITE (*,*) x, sin(x) спросит х)

GOTO 2

Как работает: если значение арифметич выражения равно 1, то переход к метке m1…

Метка также ссылает на формат. Пример (1-это номер метки):

WRITE (*,1) ‘стороны – ‘, a,b,c, ‘площадь – ‘, s

1 FORMAT (1x, A, 3F5.2, A, F6.3)

Оператор присваивания имеет вид: V=A (V – имя переменной, А – арифм выраж) Правила: важен порядок (сначала перем, потом знач); если V-целая, а А- веществ, то V присвоит целую часть.

Билет 25. Оператор условия служит для организации циклов выбора и разветвления в зависимости от выбранного условия.

IF (<условие>) THEN

<операторы 1>

ELSE (Можно без ELSE)

<операторы 2>

END IF

Подобно конструкции IF конструкция CASE позволяет выполнять тот или иной блок операторов, в зависимости от определенного условия. Пример:

select case (SYMBOL)

case('-', '+', '/', '*')

print*,'Арифметический оператор'

case('0':'9')

print*,'Цифра'

case default

print*,'Неизвестный символ'

end select

билет 26. Оператор цикла Do

DO i=1,20,2 (переменная=нач знач, конечн знач, шаг)

<операторы>

END DO

Или м.б. записан:

DO <метка> i=1,20,2 (переменная=нач знач, конечн знач, шаг)

<операторы>

<метка>CONTINUE

По ходу цикла проверяется условие. Если условие удовлетворяется, то тело цикла повторяется повторно, иначе – выход из цикла. Цикл м.б. записан через DO WHILE:

DO WHILE (<условие>)

<операторы>

END DO

Цикл do while то же самое что и if, только цикл продолжается покуда не будет выполнено условие. Так же из цикла можно выйти с помощью оператора экстренного выхода EXIT.

Билет 27. Оператор-функция

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

В общем виде оператор-функция записывается:

<имя функции> (<список формальных параметров>) = <выражение>

Пример: SFUN(X,Y)=EXP(X)+SQRT(X+Y)+ALOG(Y)*2.*D

Задавая различные значения X и Y, эта оператор-функция всегда будет вычислять арифметическое выражение по заданной формуле.Обращение к оператор-функции осуществляется путём указания имени функции и записи в скобках фактических параметров.

Правило: оператор-функция записывается в самом начале программы до первого выполняемого оператора. Желательно после оператора DIMENSION. Оператор FUNCTION действует только в данной программной единице, в которой он описан. Тип функции (целый, вещественный …) определяется по правилам определения имен переменных или в операторах описания.

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

Правило: список формальных параметров оператор-функции должен соответствовать списку фактических параметров при обращении к оператор-функции по:

– очерёдности следования

– по типу данных

Имя оператор-функции должно соответствовать правилам формирования имён языка ФОРТРАН, то есть все оператор-функции считаются вещественного типа, за исключением тех, имя которых начинается на буквы I, J, K, L, M, N.

29. Ввод-вывод с использованием оператора Format. Основные спецификации оператора Format (Fortran).

READ(n,m) <список переменных>

WRITE(n,m)<список переменных>

Здесь первый оператор ввода, а второй оператор вывода; n – номер канала ввода или вывода; m – метка оператора FORMAT, который определяет порядок расположения данных в строке при вводе или выводе; <список переменных> – вводимые или выводимые переменные.

FORMAT

Используется вместе с операторами форматного ввода/вывода для задания информации, управляющей редактированием данных. FORMAT описатель-формата

Где :

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

Особенности.

Внутри внешних скобок допускается до трех уровней вложенности скобок.

Вы можете опускать запятую между двумя разделами списка, если спецификация формата в результате этого не будет двусмысленной; например, редактирующий описатель Р до или после символа /.

Операторы FORMAT должны быть с метками, но как для всех неисполняемых операторов эти метки нельзя употреблять при ветвлении.

30. Ввод-вывод элементов одномерного массива (Fortran).

При выводе массивов используются 4 способа:

Первый способ вывода массива:

WRITE(6,*) A

При бесформатном (упрощенном) выводе массива А на экран дисплея выведутся значения всех элементов массива, количество которых было описано в операторе DIMENSION. В каждой строке печатается по 5 чисел в виде:

-0.1234567Е-01

т.е. с точностью до 7 знаков после запятой.

Недостатки:

– выводятся все элементы массива и при большой размерности массива первые элементы выведутся на экран, но будут недоступными для просмотра, т.к. сдвинутся при выводе остальных элементов;

– при выводе массива не выводятся никакие пояснения (ни имени массива, ни порядкового номера элемента массива);

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

Достоинство: простота использования.

Второй способ вывода массива:

WRITE(6,*) (A(I),I=1,N) , где N – заданно ;

Достоинства:

– позволяет вывести только часть массива;

– количество выводимых элементов задаётся пользователем;

Недостатки:

– нет никаких пояснений к выводимым числам (имя массива и порядковый номер);

– элементы выводятся на экран по 5 чисел в каждую строку..

Третий способ вывода массива:

WRITE(6,*) (‘A(’,I,’)=’,A(I),I=1,N)

Здесь используется неявный цикл типа DO, по которому происходит вывод имени массива с помощью текстовой константы, а за ним в скобках указывается номер выведенного элемента и через знак ‘=’ само численное значение элемента массива:

А(…1)=число А(…2)=число и т.д.

Недостаток: весь массив будет разбросан по экрану дисплея.

Достоинство: имеется возможность каких либо пояснений.

Четвёртый способ вывода массива:

В этом способе используется внешний цикл DO.

DO 18 I=1,N

18 WRITE(6,*) ’A(‘,I,’)=’,A(I)

Этот способ отличается от предыдущих трёх способов тем, что вместо неявного используется внешний цикл DO. В этом цикле оператор WRITE срабатывает N-ное количество раз и соответственно печатает N-ное количество строк. В каждой строке печатается текстовая константа с именем массива и символом ”(”, номер цикла, затем печатается текстовая константа “)=” и потом числовое значение элемента массива.

Способ вывода массива в два столбца:

DO 28 I=1,N,2

28 WRITE (5,*) ’A(‘,I,’)=’,A(I),’ A(‘,I+1,’)=’,A(I+1)

Примечание: если N нечетное количество элементов массива, то последнее выведенное число не будет относиться к массиву А и может оказаться совершенно случайным числом, извлеченным из памяти ЭВМ.

Задача. Найти сумму элементов одномерного массива.

Основной блок программы запишется в виде:

S=0.

DO 30 I=1,N

30 S=S+A(I)

Вначале обнуляется ячейка S памяти ЭВМ, в которой будет содержаться значение суммы. Затем по циклу суммируется первое значение S (это 0) с первым элементом массива А и записывается в ячейку S. На втором цикле к ячейке S, в которой содержится 0+А(1) добавляется А(2) и записывается в S, и так до N-ного элемента массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]