Основы программирования на C++, PASCAL

Навигация

ГЛАВА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ

ГЛАВА 2. ВВЕДЕНИЕ В ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ГЛАВА 3. ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ

ГЛАВА 4. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ++

ГЛАВА 5. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

ГЛАВА 6. ЗАДАЧИ ПО ПРОГРАММИРОВАНИЮ

ПРИЛОЖЕНИЯ

СПИСОК ЛИТЕРАТУРЫ

3.22. Внешние подпрограммы и модули

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

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

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

Проиллюстрируем этот прием на примере задачи целочисленной арифметики. Условие задачи: дано натуральное число п. Найти сумму первой и последней цифр этого числа.

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

Function Digits(N: Longint): Byte;

Var Ko1: Byte;

Begin

Ko1:=0;

While N<>0 Do

Begin

Ko1:=Ko1+1;

N:=N Div 10

End;

Digits:=Ko1

End;

Сохраним этот текст в файле с расширением inc (это расширение внешних подпрограмм в Турбо Паскале), например digits.inc.

Опишем еще одну функцию: возведение натурального числа в натуральную степень (аn).

Function Power(A,N:Longint): Longint;

Var I,St: Longint;

Begin

St:=l;

For I:=1 To N Do

St:=St*A;                      

Power:=St

End;

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

Program Examplel;

Var N,S: Integer;

{$1 digits.inc} {подключение внешней функции из файла digits.inc, вычисляющей количество цифр в записи числа}

{$1 power.inc} {подключение внешней функции из файла power.inc, вычисляющей результат возведения числа А в степень N}

Begin

Write('Введите натуральное число:'); ReadLn(N) ;

(для определения последней цифры числа N берется остаток от деления этого числа на 10, а для определения первой цифры N делится на 10, возведенное в степень на единицу меньшую, чем количество цифр в записи числа (т.к. нумерация разрядов начинается с 0))