Ответ:
Процедура выполняет действия и не обязана возвращать значение. Функция также выполняет действия, но обязательно возвращает одно значение, которое можно использовать в выражении.
Например, процедуру вызывают отдельно:
PrintRectangle(5, 3, '*');
А результат функции можно присвоить переменной:
k := CountDigits(n);
