6.2 Примеры процедур.pptx
- Количество слайдов: 10
Аксиома – препод может ошибаться, книга может ошибаться, но чаще всего ошибаешься ты сам. Циклы Массивы
Заданы два вектора и числа ALF и BET . Построить вектор , компоненты которого вычисляются по правилу • • • • • PROGRAM PR 1 INTEGER, PARAMETER : : NMax=100 DIMENSION X(0: NMax), Y(0: NMax), Z(0: NMax) REAL ALF, BET PRINT *, 'INPUT N' READ*, N PRINT *, 'INPUT ALFA BETTA' READ*, ALF, BET PRINT *, 'INPUT MASSIV X' READ*, (X(I), I=0, N) PRINT *, 'INPUT MASSIV Y' READ*, (Y(I), I=0, N) DO I=0, N Z(I)=ALF*X(I)-BET*Y(I) END DO PRINT *, 'MASSIV Z' PRINT *, (Z(I), I=0, N) END
Перемножение матриц
Подпрограммы
Процедура
Процедура - функция
Подпрограммы-функции, вычисляющей nфакториал (n!) • ! основная программа write(*, *)' n=' read(*, *) n !считываем вводимое пользователем значение n write(*, *) n, '!=', fu(n) !пишем возвращаемое функцией fu(n) значение n-факториала end !конец основной программы • function fu(n) !подпрограмма- функция fu f=1 do i=1, n f=f*i !в цикле вычисляем факториал, f end do fu=f !функция возвращает значение факториала return !передача управления в основную программу end !конец подпрограммы-функции fu
Подпрограмма subroutine, вычисляющая n-факториал (n!) • write(*, *)' n=' read(*, *) n call fu(n, fuctorial) !!!обращение к подпрограмме fu оператором call write(*, *) n, '!=', fuctorial end • subroutine fu(n, f) !заголовок подпрограммы fu f=1 do i=1, n f=f*i end do return end !конец подпрограммы fu
Решение нелинейного уравнения методом Ньютона • • • • PROGRAM NEWTON IMPLICIT NONE REAL (8) : : X, DX, F, DF X = 3. 3 ! НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ DO ! НЬЮТОНОВСКИЕ ИТЕРАЦИИ DX = F(X) / DF(X) ! ВЫЧИСЛЕНИЕ ШАГА X = X - DX ! ВЫЧИСЛЕНИЕ ОЧЕРЕДНОГО ПРИБЛИЖЕНИЯ IF(DX <= SPACING(X)) EXIT ! ЦИКЛ ЗАВЕРШАЕТСЯ, КОГДА ! ШАГ МЕНЬШЕ РАССТОЯНИЯ МЕЖДУ ДВУМЯ !ПОСЛЕДОВАТЕЛЬНЫМИ ВЕЩЕСТВЕННЫМИ ЗНАЧЕНИЯМИ END DO PRINT *, X ! ВЫВОД ЗНАЧЕНИЯ КОРНЯ PRINT *, F(X) ! ВЫВОД ЗНАЧЕНИЯ ФУНКЦИИ В ТОЧКЕ X PRINT *, DF(X) ! ВЫВОД ЗНАЧЕНИЯ ПРОИЗВОДНОЙ ! ФУНКЦИИ В ТОЧКЕ X END PROGRAM NEWTON • • • REAL(8) FUNCTION F(X) IMPLICIT NONE REAL(8) : : X F = SIN(X) RETURN END
Являются ли два вектора перпендикулярными • • • • PROGRAM VECTORS REAL(8), PARAMETER : : EPS=0. 1 E-5 REAL(8) U 1, U 2, U 3, W 1, W 2, W 3, D PRINT *, 'INPUT U 1, U 2, U 3' READ *, U 1, U 2, U 3 PRINT *, 'INPUT W 1, W 2, W 3' READ *, W 1, W 2, W 3 D=U 1*W 1+U 2*W 2+U 3*W 3 IF (ABS(D)< EPS) THEN PRINT *, 'VECTORS U AND W ARE PERPENDICULAR' ELSE PRINT *, 'VECTORS U AND W ARE OUT OF THE PERPENDICULAR' END IF END
6.2 Примеры процедур.pptx