Многие из вас, скорее всего решали задачи, которые требуют написания большого кода. Зачастую, когда что-то написано не так и вы начинаете отладку, лазить по большому коду неудобно. Поэтому легче разбить программу на отдельные подзадачи, из которых будет состоять решение одной задачи. Для этого на помощь приходят функции и процедуры. Функция, всегда должна ОБЯЗАТЕЛЬНО что-то возвращать. Будь то целое, дробное число или строка. Процедура тоже, должна возвращать значение в основную программу, но процедура вернув число в основную программу, забывает это число в отличии от функции. Процедуры и функции хороши тем, что их локальные переменные не занимают памяти в основной программе. И если процедура вернула какое-либо число, то его можно запомнить(будь то какая-либо переменная или название функции). Процедура вызывается в программу, делает что-либо и возвращает память назад компьютеру. Рассмотрим пример написания программы: Сосчитать сумму двух чисел и вывести её на экран. Напишем в виде функции и процедуры.
Сначала в верху программы, нужно обязательно описать ПОСТОЯННЫЕ ПЕРЕМЕННЫЕ(не константы, т.е. не локальные). Но в данном случае, нам это не понадобится. function symma:integer; { здесь мы описываем функцию и задаем её имя, под которым будем вызывать в основной программе, так же пишем тип возвращаемых данных } var a,b:integer; { описываем переменные } begin { начинаем работу функции } writeln('Введите два числа'); readln(a,b); writeln('Сумма двух чисел равна = ',a+b); end; { конец функции } begin { начало основной программы } symma; { вызов функции и указанным именем } end.
Теперь напишем такую же программу в виде процедуры. var ch1,ch2:integer; { описание глобальных переменных } procedure symma(a,b:integer); { описание процедуры, в скобках указаны две переменные которые будут взяты из основной программ, а так же указан их тип } begin writeln('Сумма двух чисел = ',a+b); end; begin writeln('Введите два числа'); readln(ch1,ch2); { читаем два числа } symma(ch1,ch2); { вызываем процедуру } end.
Теперь как же работала наша процедура, попав на строчку symma(ch1,ch2); переменной a было присвоено значение ch1, переменной b было присвоено значение ch2.
Потренируйтесь писать небольшие функции и процедуры. Например: 1. Отсортируйте введенный с клавиатуры одномерный массив. { процедурой и функцией } 2. Найдите максимум во введенном одномерном массиве. { процедурой и функцией } 3. Найдите НОК и НОД двух чисел. { процедурой и функцией } 4. Напишите рекурсивную процедуру поиска n-ого члена последовательности чисел Фибоначчи. { только процедурой }\ Pascal, Pascal, Pascal.... Кто решил пишем в комментарии.
|