Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt-T2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
433 Кб
Скачать
☆

11. Табулирование функции

Табулирование функции – это вычисление какой-либо функции с аргументом, изменяющейся в каких-то пределах.

Задача: Вычислить и напечатать все значения функции: f=sinx2-excos2x, если x изменяется в пределах от а до b с шагом dx.

С Программа № 5. Циклы с оператором IF.

WRITE(6,*)’Введите Xнач, Xкон, шаг цикла’

READ(5,*) XN,XK,DX

С Блок корректировки шага

N=(XK-XN)/DX+1 ! определяем количество точек на отрезке

DX=(XK-XN)/(N-1) ! вычисляем шаг

C Переменной цикла присваиваем начальное значение

X=XN

C Вычисляем значение функции

11 F = SIN(X*X)–EXP(X)*COS(X)**2

У показателя степени 2 точку ставить нельзя, т.к. нельзя возвести отрицательное число в вещественную степень.

С Выводим результат вычисления на экран

WRITE(6,*)’При Х=’,X,’ значение функции равно’,F

Выводим на экран значение аргумента Х и соответствуюшее ему значение функции F.

C Задаём приращение аргумента

X=X+DX

С Проверяем условие повторения цикла

IF(X.LE.XK) GO TO 11

END

Для организации цикла с помощью оператора IF мы сделали:

1) Х присвоили XN: X=XN

2) Вычислили значения F в области цикла: F=SIN(X*X)–EXP(X)*COS(X)**2

3) Увеличили значение аргумента на величину шага цикла: X=X+DX

4) С помощью IF логического проверили условие повторения цикла:

IF ( X.LE.XK ) GO TO 11

При вычислении значений этой функции например при Х изменяющемся от 1 до 10 с шагом 2, текущее значение Х будет равно 1,3,5,7,9, т.е. не будет получено последнее значение функции на заданном отрезке. Поэтому в программе и применяется блок корректировки шага. Количество вычислений на на отрезке будет N=(10-1)/2+1=5 (целое число). Новое, уточненное значение DX будет равно (10-1)/(5-1)=2.25

12. Оператор цикла do

Оператор DO предназначен для создания циклов, обеспечивающих многократное выполнение группы операторов в программе.

Оператор DO по сравнению c IF является более мощным инструментом для организации циклов. Форма записи следующая:

DO m i = i1, i2, i3

где m – метка оператора, являющегося последним в области цикла DO;

i – переменная цикла, изменяющаяся от начального значения i1 до конечного значения i2 с шагом i3.

Пример:

DO 8 I = 1, 13, 2

M = I * I область цикла

8 WRITE (5,*) I, M

Оператор цикла DO работает следующим образом:

переменной цикла i присваивается начальное значение i1, затем выполняются все операторы в области цикла, включая и последний с меткой m. Затем к величине переменной i прибавляется величина шага i3 и полученное новое значение переменной цикла сравнивается с конечным значением i2. Если новое значение переменной цикла больше чем значение i2, то осуществляется выход из цикла и выполнение передаётся оператору, следующему после метки m. Если значение переменной цикла i меньше, чем i2, то повторяется вычисление в области цикла, начиная с оператора, следующего после DO.

ВНИМАНИЕ:

После окончания цикла переменная цикла сохраняет всегда значение большее, чем конечное значение цикла i2. В случае выхода из цикла до его завершения переменная сохранит свое текущее значение.

В качестве оператора, являющегося последним в цикле DO, предпочтительнее ставить оператор CONTINUE, который не выполняет никаких действий, а просто показывает, что на нём закончился цикл.

Оператор CONTINUE чаще всего является последним оператором цикла DO в тех случаях, когда последним оператором цикла DO может оказаться один из операторов: IF (арифметический), PAUSE, STOP или другой управляющий оператор.

Пример:

. . .

DO 4 I = 1, 8, 2

X = X + 2.

. . .

IF (X) 4, 2, 3

Так как последним оператором тела DO не может быть арифметический оператор IF

4 CONTINUE

. . .

Если шаг цикла сделать отрицательным, а начальное и конечное значение положительным, то произойдёт зацикливание программы до переполнения разрядной сетки ЭВМ (-32767).

В качестве переменной цикла можно использовать переменные вещественного типа. Например:

DO 7 X=XN , XK , DX

...

7 WRITE(*,*) X , Y

Примечание: оператор цикла DO не предусматривает корректировку шага DX.

Задача. По введенному значению n вычислить n! (факториал от n) и вычислить сумму квадратов, используя оператор цикла DO.

C Программа №6. Вычисление суммы и факториала от N

WRITE (5,*) ’ Введите N ’

READ (5,*) N

C Вычисление суммы N

S=0.

При вычислении суммы необходимо обнулять ячейку памяти (в данном случае S), так как может оказаться, что эта переменная уже имеет некоторое значение и в результате решение будет неправильным.

DO 2 I = 1, N

S=S+I**2

2 CONTINUE

C Вычисление факториала

P=1.

DO 3 I = 1, N

3 P=P*I

C Вывод результата

WRITE (5,*) ’ Сумма S= ’, S , ’ факториал = ’, P

END

Вычисление суммы работает следующим образом: переменной S присваивается значение ноль. Затем по циклу к переменной S прибавляется величина i2 за каждый проход по циклу.

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

Примечание: Если величина шага в операторе цикла DO равна единице, то шаг можно не указывать.

Задача. Найти все значения функции ,если Х изменяется в пределах: X = XH XK c шагом dx. Определить максимальное и минимальное значения. Если значение <0, то результат вывести в левой части экрана, а если >0 – в правой части.

C Программа №7. Максимум и минимум функции