Бояться не надо |
Статьи о DelphiПроцедурное программированиеС развитием языков программирования развивались и технологии, используемые при написании программного кода. Первые программы писались сплошным текстом. Это была простая последовательность команд, записанная в столбец. Все это выглядело приблизительно так:Листинг 1. Текст линейной программы Начало программы Команда 1 Команда 2 Команда 3 ... Команда N Конец программы Используя такой подход к программированию, можно было сделать очень мало. Единственное, что было доступно программисту для создания логики в данном случае — это условные переходы. Под условным переходом понимается переход на какую-то команду при определенных условиях, которые сложились в процессе обработки данных на процессоре. Например: Листинг 2. Пример условного перехода Если выполнено условие, то перейти на команду 1, иначе на команду 3 Команда 1 Команда 2 Команда 3 ... Команда N. Это единственная логика, с помощью которой можно было выполнять определенные действия, зависящие от конкретных ситуаций, которые могут сложиться в процессе вычислений. Но программы оставались плоскими и неудобными, потому что написать таким образом логику современных программ невозможно. Линейным программированием можно создать только линейную логику, которая проведет вас по определенным шагам. Например, мастера в программах имеют линейную логику. Она может разветвляться по ходу выполнения шагов мастера, но не может делать что-то более сложное. Взгляните на программу MS Word. В ней трудно представить себе линейность, потому что здесь как бы присутствует диалог с программой. Вы говорите, что вам надо, а она выполняет ваши действия. При линейном программировании можно создать только такую логику, при которой компьютер запрашивает определенные параметры (данные), и вы вводите их, а отступить от линейности, заложенной в такую логику, невозможно. Следующим шагом стал процедурный подход. При этом подходе какой-то код программы мог объединяться в отдельные блоки (процедуры). После этого такой блок команд можно вызывать из любой части программы. Например: Листинг 3. Процедурное программирование Начало процедуры 1 Команда 1 Команда 2 Конец процедуры 1 Начало программы Команда 1 Команда 2 Если выполнено условие, то выполнить код процедуры 1. Команда 3 Конец программы. В результате появилась возможность использовать один и тот же код в одной программе неоднократно. Код программ стал более удобным и простым для понимания. Именно таким был отец Delphi — язык программирования Turbo/Borland Pascal, который со временем превратился в Object Pascal. Но вернемся к процедурам. В процедуры можно передавать различные значения, заставляя их что-то рассчитывать: Листинг 4. Пример процедур с параметрами Начало процедуры 1 (Переменная 1:строка) Команда 1 Команда 2 Конец процедуры 1 Начало программы Команда 1 Команда 2 Если выполнено условие, то выполнить код процедуры 1. Команда 3 Конец программы. В этом примере после начала процедуры в скобках указан тип передаваемой переменной. Таким образом, в процедуру можно поместить код каких-нибудь расчётов и определить параметры в виде переменных, которые используются в этом коде, а затем только передавать ей разные значения в качестве этих параметров. Процедуры остались и в наше время. Использование процедуры часто называют "Вызов процедуры". Это действительно так, т. е. процедура как бы вызывается. Давайте рассмотрим пример процедуры, приближенный к реальности. Листинг 5. Пример процедуры, приближенный к реальному Начало процедуры 1 (Переменная 1:Целое число) Посчитать факториал числа, находящегося в Переменная 1. Вывести результат на экран. Конец процедуры 1 Начало программы Процедура1(10) Процедура1(5) Процедура1(8) Конец программы. В этом примере условно используется процедура, которая вычисляет факториал переданного ей значения и потом выводит результат на экран. В самой программе эта процедура используется как процедура1(10), где цифра в скобках означает переданное ей значение. Вот так получается универсальная процедура, которая считает факториал и выводит результат на экран. Как это все работает? Давайте рассмотрим алгоритм. 1. Начало программы. 2. Вызов процедуры процедура1(10) и передача ей значения 10. 3. Процедура вычисляет факториал числа 10 и выводит результат на экран. 4. Выход из процедуры и продолжение выполнения программы. 5. Вызов процедуры процедура1(5) и передача ей значения 5. 6. Процедура вычисляет факториал числа 5 и выводит результат на экран. И так далее. Как видите, код программы очень удобный. Но процедуры — это мелочи жизни. Более удобным стало использование функций. Функция — это та же процедура, только она умеет возвращать значение, т. е. результат своего выполнения. Листинг 4.6. Пример функции Начало Функции 1: Тип возвращаемого значения — целое число Команда 1 Команда 2 Конец Функции 1 Начало программы Команда 1 Команда 2 Если выполнено условие, то выполнить код процедуры 1. Команда 3 Конец программы. Заметьте, что после двоеточия идет описание типа возвращаемого значения. Теперь рассмотрим ту же ситуацию с факториалом. Допустим, нам надо рассчитать факториал для последующего использования, но не для вывода на экран. Такая задача легко решается с помощью функций. Листинг 7. Расчет факториала с помощью функции Начало Функции 1 (Переменная 1: Целое число): Целое число Посчитать факториал числа, находящегося в Переменная 1. Вернуть результат расчета. Конец Функции 1 Начало программы Переменная 1:=Функция 1 (10) Переменная 2:=Функция 1 (5) Переменная 3:=Переменная 1+Переменная 2 Вывести на экран Переменную 3 Конец программы. В этом примере в "переменную 1" записывается результат расчета факториала 10! (переменная 1—Функция 1 (10)). В "переменную 2" записывается результат расчета факториала 5!. После этого значения переменных складываются и результат сложения записывается в "переменную 3". Последнее действие программы — вывод на экран "переменной 3". По материалам сайта О Delphi |
|
© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля |