При написании программы может оказаться, что некоторые группы действий повторяются в программе неоднократно, хотя, возможно, и над различными данными. Кроме того, такие однотипные действия могут встречаться в различных программах. Если эти действия имеют законченный смысл, их целесообразно выделить в отельную подпрограмму.
В языке Turbo Pascal существуют 3 типа программных единиц:
- основная программа (начинающаяся заголовком Program),
- функция (заголовок Function),
- процедура (заголовок Procedure).
Два последних типа являются подпрограммами, отдельно они выполняться не могут, а должны вызываться из других программных единиц. Очевидно, что начинаться выполнение может только с основной программы.
Все программные единицы строятся по единому принципу, аналогичному описанному для основной программы. Описание любой подпрограммы должно быть проведено до ее использования в другой подпрограмме или основной программе. Программная единица, в которой производится обращение к подпрограмме, называется вызывающей.
Очевидно, что вызывающая программная единица и подпрограмма должны обмениваться информацией, т.е. часть переменных должна быть доступна в них обеих. Остальные переменные должны быть локализованы в своих программных единицах (быть недоступными из других подпрограмм). Поэтому все переменные, константы, типы данных могут быть или глобальными, или локализованными в программной единице. Метки всегда локальны в каждой подпрограмме. Все переменные основной программы, глобальны по отношению к подпрограммам, описанным в этой программе, если в подпрограммах не заведены (не описаны повторно) переменные с такими же именами.