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

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

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. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

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

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Анализ микросреды предприятия Анализ микросреды направлен на анализ состояния тех со­ставляющих внешней среды, с которыми предприятие нахо­дится в непосредственном взаимодействии...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

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