Использование модуля в программе

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

Модули предоставляют вам способ разделения ваших программ между несколькими файлами.

Модули используются для –

  • Упаковка подпрограмм, блоков данных и интерфейса.
  • Определение глобальных данных, которые могут использоваться более чем одной подпрограммой.
  • Объявление переменных, которые можно сделать доступными в любых подпрограммах по вашему выбору.
  • Полностью импортировать модуль для использования в другую программу или подпрограмму.

Упаковка подпрограмм, блоков данных и интерфейса.

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

Объявление переменных, которые можно сделать доступными в любых подпрограммах по вашему выбору.

Полностью импортировать модуль для использования в другую программу или подпрограмму.

#5. Математические функции и работа с модулем math | Python для начинающих

Синтаксис модуля

Модуль состоит из двух частей –

  • часть спецификации для декларации операторов
  • a содержит часть для определения подпрограммы и функции

Общая форма модуля –

module name [statement declarations] [contains [subroutine and function definitions] ] end module [name]

Использование модуля в вашей программе

Вы можете включить модуль в программу или подпрограмму с помощью оператора use –

use name

Обратите внимание, что

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

Вы можете добавить столько модулей, сколько нужно, каждый будет в отдельных файлах и скомпилирован отдельно.

Модуль может использоваться в различных программах.

Модуль может использоваться много раз в одной и той же программе.

Переменные, объявленные в части спецификации модуля, являются глобальными для модуля.

Переменные, объявленные в модуле, становятся глобальными переменными в любой программе или подпрограмме, где используется модуль.

Оператор использования может появляться в основной программе или в любой другой подпрограмме или модуле, который использует процедуры или переменные, объявленные в определенном модуле.

пример

Следующий пример демонстрирует концепцию –

module constants implicit none real, parameter :: pi = 3.1415926536 real, parameter :: e = 2.7182818285 contains subroutine show_consts() print*, «Pi pun»>, pi print*, «e pun»>, e end subroutine show_consts end module constants program module_example use constants implicit none real :: x, ePowerx, area, radius x = 2.0 radius = 7.0 ePowerx = e ** x area = pi * radius**2 call show_consts() print*, «e raised to the power of 2.0 pun»>, ePowerx print*, «Area of a circle with radius 7.0 pun»>, area end program module_example

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат –

Изучение TKinter за 8 минут / Разработка GUI программы на Python


Pi = 3.14159274 e = 2.71828175 e raised to the power of 2.0 = 7.38905573 Area of a circle with radius 7.0 = 153.938049

Доступность переменных и подпрограмм в модуле

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

Однако вы можете контролировать доступность кода модуля, используя атрибуты private и public . Когда вы объявляете некоторую переменную или подпрограмму как приватную, она недоступна за пределами модуля.

Читайте также:
Нормы на токарные работы программа

пример

Следующий пример иллюстрирует концепцию –

В предыдущем примере у нас было две переменные модуля, e и pi. Давайте сделаем их приватными и посмотрим на результат –

module constants implicit none real, parameter,private :: pi = 3.1415926536 real, parameter, private :: e = 2.7182818285 contains subroutine show_consts() print*, «Pi pun»>, pi print*, «e pun»>, e end subroutine show_consts end module constants program module_example use constants implicit none real :: x, ePowerx, area, radius x = 2.0 radius = 7.0 ePowerx = e ** x area = pi * radius**2 call show_consts() print*, «e raised to the power of 2.0 pun»>, ePowerx print*, «Area of a circle with radius 7.0 pun»>, area end program module_example

Когда вы компилируете и запускаете вышеуказанную программу, она выдает следующее сообщение об ошибке –

ePowerx = e ** x 1 Error: Symbol ‘e’ at (1) has no IMPLICIT type main.f95:19.13: area = pi * radius**2 1 Error: Symbol ‘pi’ at (1) has no IMPLICIT type

Так как e и pi оба объявлены как private, программа module_example больше не может обращаться к этим переменным.

Однако другие подпрограммы модуля могут получить к ним доступ –

module constants implicit none real, parameter,private :: pi = 3.1415926536 real, parameter, private :: e = 2.7182818285 contains subroutine show_consts() print*, «Pi pun»>, pi print*, «e pun»>, e end subroutine show_consts function ePowerx(x)result(ePx) implicit none real::x real::ePx ePx = e ** x end function ePowerx function areaCircle(r)result(a) implicit none real::r real::a a = pi * r**2 end function areaCircle end module constants program module_example use constants implicit none call show_consts() Print*, «e raised to the power of 2.0 pun»>, ePowerx(2.0) print*, «Area of a circle with radius 7.0 pun»>, areaCircle(7.0) end program module_example

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат –

Источник: coderlessons.com

Лекции 17-19: Модули и их использование.

Рассмотренный ранее механизм подпрограмм (процедур и функций) действует только внутри одной программы. Поэтому такие процедуры и функции называются внутренними подпрограммами. Ограниченность применения внутренних подпрограмм очевидна.

Весьма желательно иметь возможность эффективного использования одной и той же подпрограммы во многих программах без её повторного описания. Это, в частности, совершенно необходимо для стандартных подпрограмм. Турбо Паскаль и предоставляет такую возможность за счёт введения модулей как вида программных структур.

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

Понятие модуля отсутствовало в Паскале и в первоначальных версиях Турбо Паскаля. Оно было введено в связи с потребностями коммерческих приложений Турбо Паскаля. Разработанная для Турбо Паскаля концепция модуля зарекомендовала себя как весьма удачная и плодотворная. Модули представляют удобный инструмент для создания библиотек прикладных программ. Этот инструмент получил также широкие приложения в объектно-ориентированном программировании.

2. Структура описания модуля.

Принятая в Турбо Паскале структура описания модуля выделяет в модуле четыре части: заголовок, интерфейс, исполняемую часть и инициализирующую часть. Общая структура описания модуля имеет следующий вид:

Interface

[implementation

Интерфейс является видимой частью модуля, в которой описаны все представленные в модуле компоненты, предназначенные для экспорта в программы. При этом процедуры и функции описываются только своими заголовками, остальные компоненты описываются точно в такой же форме, как и в разделе описаний программы. Интерфейс начинается ключевым словом interface и заканчивается ключевым словом implementation (или begin или end при отсутствии исполняемой части). Интерфейс является обязательным разделом описания модуля.

Читайте также:
Программа mem reduct отзывы

Исполняемая часть содержит так называемые тела процедур и функций, заголовки которых описаны в интерфейсной части. Тела имеют обычную форму описаний процедур и функций, либо могут отличаться от таковой только сокращенными заголовками, состоящими лишь из ключевого слова procedure или function и имени процедуры (функции). Исполняемая часть является как бы «невидимой» для пользователя частью модуля, поскольку пользователю модуля нет необходимости знать, как реализованы процедуры или функции, которыми он пользуется. Ему достаточно лишь знать, как их вызывать и какую функцию они выполняют. Исполняемая часть отсутствует, если в модуле не описаны процедуры и/или функции.

Инициализирующая часть завершает описание модуля и является необязательной частью модуля. Если она присутствует, то помещается между скобками begin end , если отсутствует — то остаётся только закрывающая модуль скобка end и последующая точка.

Назначением инициализирующей части является выполнение начальных действий при подключении модуля к исполняемой программе. Такие действия составляют некоторый фрагмент программы, выполняемый непосредственно перед передачей управления основной программе (в которой имеется обращение к модулю описанием uses). Обычно инициализирующие действия подготавливают нормальную работу программы. Например, инициализируют переменные начальными значениями, открывают файлы, устанавливают связь с коммуникационными средствами и др.

В интерфейсной или исполняемой частях можно использовать другие модули, подключаемые описанием uses, которое должно следовать непосредственно за ключевыми словами interface или implementation. В исполняемой части можно также использовать локальные имена (типов, констант, переменных и т.д.), относящиеся к инициализирующей части модуля.

Источник: studfile.net

Модульное программирование

Чтобы использовать в программе величины, описанные в интерфейсной части модуля, имя модуля следует указать в разделе uses . Можно записать несколько имен модулей через запятую, например:

program example; uses Average, Graph, Crt;

После этого все описания, расположенные в интерфейсных секциях модулей, становятся известными в программе, и ими можно пользоваться точно так же, как и величинами, определенными в ней непосредственно. Поиск модулей выполняется сначала в библиотеке исполняющей системы, затем в текущем каталоге, а после этого — в каталогах, заданных в диалоговом окне Options ( Directories.

Если в программе описана величина с тем же именем, что и в модуле, для обращения к величине из модуля требуется перед ее именем указать через точку имя модуля.

ПРИМЕЧАНИЕ К любой программе автоматически подключается стандартный модуль System , который содержит библиотеку исполняющей системы Паскаля.

Пример использования модуля из пример 4.6 приведен в пример 4.7. Программа находит разность средних арифметических значений двух вещественных массивов.

program dif_average; uses Average; var a, b : mas; i : integer; dif, av_a, av_b : real; begin for i := 1 to n do read(a[i]); for i := 1 to n do read(b[i]); average(a, av_a); average(b, av_b); dif := av_a – av_b; writeln(‘Разность значений ‘, dif:6:2); end.
Листинг 4.7. Разность средних арифметических значений массивов (модуль)

Стандартные модули Паскаля

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

Модуль System

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

Модуль Crt

Модуль Crt предназначен для организации эффективной работы с экраном, клавиатурой и встроенным динамиком. При подключении модуля выводимая информация посылается в базовую систему ввода-вывода (ВIОS) или непосредственно в видеопамять. При этом ввод-вывод выполняется быстрее, кроме того, появляется возможность управлять цветом и размещением на экране.

Читайте также:
Через какую программу разогнать процессор

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

Модуль Crt позволяет:

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

Пример. Программа «Угадай число» ( пример 4.8).

program luck; uses crt; const max = 10; var i, k, n : integer; begin clrscr; < очистить экран >randomize; i := random(max); < загадать число >window(20, 5, 60, 20); < определить окно >TextBackGround(Blue); < цвет фона – синий >clrscr; < залить окно фоном >TextColor(LightGray); < цвет символов – серый >k := –1; < счетчик попыток >GotoXY(12, 5); writeln(‘ Введите число : ‘); repeat < цикл ввода ответа >GotoXY(20, 9); < установить курсор >readln(n); < ввести число >inc(k); until i = n; window(20, 22, 60, 24); < определить окно результата >TextAttr := 2 shl 4 + 14; < желтые символы за зеленом фоне >clrscr; < залить окно фоном >GotoXY(6, 2); < установить курсор >writeln(‘ Коэффициент невезучести : ‘, k / max :5:1); readkey; < ждать нажатия любой клавиши >TextAttr := 15; < белые символы на черном фоне >clrscr; < очистить после себя экран >end.
Листинг 4.8. Пример использования модуля Crt

Генератор случайных чисел формирует число, находящееся в диапазоне от нуля до max – 1 . Пользователь вводит числа в одну и ту же позицию на экране до тех пор, пока не угадает это число. При угадывании с первого раза коэффициент невезучести равен нулю.

Модули Dos и WinDos

Модули Dos и WinDos содержат подпрограммы, реализующие возможности операционной системы MS-DOS, такие как переименование, поиск и удаление файлов, получение и установка системного времени, выполнение программных прерываний и т. д. Эти подпрограммы в стандартном Паскале не определены. Для поддержки подпрограмм в модулях определены константы и типы данных.

Модуль Dos использует строки Паскаля, а WinDos — строки с завершающим нулем.

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек — пикселов (pixel, сокращение от picture element ). Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали ( разрешение экрана ) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы — графического драйвера.

В состав оболочки входят несколько драйверов, каждый из которых может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом. Самый «мощный» режим, поддерживаемый модулем Graph , — 640 480 точек, 16 цветов. Модуль Graph обеспечивает:

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

Модуль Strings

Модуль Strings предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Этот вид строк введен в Паскаль специально для работы с длинными строками и программирования под Windows. Модуль Strings содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string , поиска подстрок и символов.

Источник: intuit.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru