Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

End function integ





! Процедуры, описывающие подынтегральные функции

real function f1 (x)

implicit none

real, intent(in):: x

f1=cos(x)**2

End function f1

real function f2 (x)

implicit none

real, intent(in)::x

f2=1./x

End function f2

!Главная программа

Program main

implicit none

real a, b, sq, integ

integer n

real, external:: f1, f2!описание внешних функций

read *, a, b, n

sq=abs (integ (f1, a, b, n)- integ (f2, a, b, n))

print '(A, F5.1, A, F5.2, A, F10.2)',&;

'площадь между 2 кривыми на отр. от', a, 'до', b, ' =', sq

End program main

Пример программы вариант 2

Теперь видоизменим проект. Используя знания о модулях, создадим, как один из вариантов проект, в который поместим модуль общих для вычисления интеграла описаний (a, b, n) global, и модуль metod, содержащий модульную процедуру (в нее поместим метод вычисления интеграла). Главную программу и описания подынтегральных функций поместим в разные файлы или эти процедуры могут быть помещены в одном файле с главной программой.

! Модуль общих описаний.

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

Module global

implicit none

real a, b

integer n

End module global

!Модуль в котором помещена модульная процедура

Module metod

use global

Contains

real function integ (f)! функция не имеет параметров (a, b n),

implicit none!т.к. они используются как глобальные

integer I!данные, описанные в модуле

real h, f, s

s=0

h=(b-a)/n

do i = 1, n

s=s+f(a+i*h)

Enddo

integ =s*h

end function integ

End module metod

real function f1 (x)

implicit none

real, intent(in):: x

f1=cos(x)**2

End function f1

real function f2 (x)

implicit none

real, intent(in):: x

f2=1./x

End function f2

 

!Главная программа.

Program main

Use global

Use metod

implicit none

real, external:: f1, f2 !объявление в операторе описания типа

real sq

read *, a, b, n

sq=abs (integ (f1)-integ (f2))

print '(A,F10.2)', 'пл. между 2 кривыми =', sq

End program main

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

В модуле global можно задать начальные значения переменным a, b, n с помощью оператора Data или в операторах описания real a/.1/, b/.5/ integer n/100/.

Пример программы вариант 3

Составим теперь другой вариант проекта ( pr_ext_1 ). Напишем два модуля (разместим их в разных файлах). Поместим в модуль I_Face_F интерфейсный блок для подынтегральных функций f1 и f2., а в модуль I_Face_Int - интерфейсный блок для функции, вычисляющей значение интеграла. Организация 2 –х модулей исключительно из-за разделения функций. Процедуру (функцию), вычисляющую значение интеграла оформим в виде внешней процедуры и при выполнении поместим в отдельный файл. Главную программу и описание подынтегральных функций также поместим в отдельные файлы (у нас проект будет состоять из 4 файлов).

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

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

Объявлять тип функции, вычисляющей значение интеграла, не требуется.

Однако, в интерфейсном блоке в модуле I_Face_Int при описании типов формальных параметров и видов связи, обязательно надо указать real, external:: f, без атрибута intent(in).

!Модули интерфейсов ( заголовочный файл )

!модуль интерфейсов подынтегральных функций

Module I_Face_F

Interface

real function f1 (x)

implicit none

real,intent(in)::x

End function f1

real function f2 (x)

implicit none

real,intent(in)::x

End function f2

end interface

End module I_Face_F

!модуль интерфейса функции для вычисления интеграла

Module I_Face_Int

interface

real function integ (f, a, b, n)

implicit none

real,intent(in):: a, b

integer,intent(in):: n

real, external:: f

End function integ

end interface

End module I_Face_Int

Описания подынтегральных функций

!описание 1 функции

real function f1 (x)

implicit none

real,intent(in)::x

f1=cos(x)**2







Дата добавления: 2015-10-01; просмотров: 308. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

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

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

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

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Studopedia.info - Студопедия - 2014-2025 год . (0.015 сек.) русская версия | украинская версия