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

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

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 оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

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

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

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