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

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

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



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

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

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

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

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