Алгоритм рішення задачі проектується шляхом декомпозиції всього завдання в окремі підзадачi. Звичайно підзадачi реалізуються у вигляді підпрограм. Підпрограма - це послідовність операторів, що визначені і записані в одному місці програми, проте їх можна викликати для виконання з однієї або деяких точок програми. Кожна підпрограма визначається унікальним ім'ям. В мові Паскаль існують два типи підпрограм - процедури і функції. При використанні процедур чи функцій Паскаль-програма повинна містити текст процедури чи функції і звертання до процедури чи функції. Тексти процедур і функцій поміщаються в розділ описів процедур і функцій. Процедура може містити такі - ж розділи описів, що й програма, а саме : розділи опису модулів, міток, констант, типів, змінних, процедур і функцій.
В багатьох задачах, особливо в завданнях обчислювальної математики, необхідно передавати імена процедур і функцій у вигляді параметрів. Для цього в Turbo Pascal запроваджений новий тип даних - процедурний або функціональний, залежно від того, що описується. Опис процедурних і функціональних типів здійснюється в розділі опису типів:
type Functype = Function( z : Real) : Real;
Proctype = Procedure( a, b : Real; var x, y : Real);