Часть полного текста документа:Создание библиотек подпрограмм в Turbo Pascal Стандартный язык Pascal не располагает средствами разработки и поддержки библиотек программиста (в отличие, скажем, от языка Fortran и других языков программирования высокого уровня), которые компилируются отдельно и в дальнейшем могут быть использованы как самим разработчиком, так и другими. Если программист имеет достаточно большие наработки, и те или иные подпрограммы могут быть использованы при написании новых приложений, то приходится эти подпрограммы целиком включать в новый текст. В Turbo Pascal это ограничение преодолевается за счет, во-первых, введения внешних процедур, во-вторых, разработки и использования модулей. В настоящей публикации на примерах рассмотрим работу с теми и другими программными единицами. Начнем с внешних подпрограмм. Такой механизм предусматривает, что исходный текст каждой процедуры или функции хранится в отдельном файле и при необходимости с помощью специальной директивы компилятора включается в текст создаваемой программы. Покажем это на примере задач целочисленной арифметики, где аргументы, результаты и промежуточные величины являются целыми (Integer, Word, LongInt и т.д.). Вот несколько таких задач. 1. Дано натуральное число n. Найти сумму первой и последней цифры этого числа. 2. Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа. 3. Дано натуральное число n. Дописать к нему цифру k в конец и в начало (если это возможно, т.е. результат не выйдет за диапазон допустимых значений), или сообщить о невозможности выполнения операции. 4. Найти наибольшую цифру в записи данного натурального числа. 5. Дано натуральное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами. При решении каждой из этих задач может быть использована функция, возвращающая количество цифр в записи натурального числа. Вот возможный вариант такой функции: Function Digits(N : LongInt) : Byte; Var Kol : Byte; Begin Kol := 0; While N 0 Do Begin Kol := Kol + 1; N := N Div 10 End; Digits := Kol End; Сохраним этот текст в файле с расширением .inc (это расширение внешних подпрограмм в Turbo Pascal), например, digits.inc. Еще необходима функция возведения натурального числа в натуральную степень. Function Power(A, N : LongInt) : LongInt; {файл power.inc} Var I, St : LongInt; Begin St := 1; For I := 1 To N Do St := St * A; Power := St End; Попробуем использовать функции при решении задачи номер один. Program Example1; Var N, S : LongInt; {$I digits.inc} {подключаем внешнюю функцию digits.inc, возвращающую количество цифр в записи числа} {$I power.inc} {внешняя функция, выполняющая возведение числа A в степень N} Begin Write('Введите натуральное число: '); ReadLn(N); {для определения последней цифры числа N берем остаток от деления этого числа на 10, а для определения первой делим N на 10 в степени на единицу меньшую, чем количество цифр в записи числа (нумерация разрядов начинается с 0)} S := N Mod 10 + N Div Power(10, Digits(N) - 1); WriteLn('Искомая сумма: ', S) End. Внешние процедуры создаются и внедряются в использующие их программы аналогично функциям, и мы не будем подробно на этом останавливаться. Далее речь пойдет о модулях: их структуре, разработке, компиляции и использовании. Модуль - это набор ресурсов (функций, процедур, констант, переменных, типов и т.д.), разрабатываемых и хранимых независимо от использующих их программ. ............ |