|
Вот теперь можно приступать к описанию функции. В первом приближении это будет выглядеть так. функция Максимум(...) { перем П = Параметры[1]; перем Имя; ДляВсех(Элементов(Параметры,Имя)) П = Макс(П,Параметры[Имя]); вернуть П; } Обязательные параметрыНа первый взгляд, вроде бы, всё о'кей. И это на самом деле в большинстве случаев будет работать. Но что будет, если эту функцию вызвать без параметров? Можно сразу сказать – “Ничего хорошего!” Потому что в первой строке функции мы рассчитываем на существование параметра с номером “1”. Конечно, по большому счету, функция “Максимум” без параметров смысла не имеет, но нужно ведь это донести и до программы. Для этого необходимо в заголовке функции указать обязательные параметры, а уж потом ставить три точки, например, так. функция Максимум( A, ... ) Здесь параметр “А” является обязательным, а уж потом идут необязательные параметры. Описанную таким образом функцию программа не разрешит вызывать без параметров. Как минимум один параметр должен быть указан. Теперь при таком вызове Максимум(120,230,403); …будет создана переменная с именем “А”, хранящая значение “120”, и массив “Параметры”, состоящий из двух элементов:
Вооружившись новыми знаниями, перепишем нашу многострадальную функцию так: функция Максимум( А, ... ) { перем Имя; ДляВсех(Элементов(Параметры,Имя)) А = Макс(А,Параметры[Имя]); вернуть А; } Ну вот, теперь наша функция сделана по последнему слову науки и техники. Хотя, как говорится, нет предела совершенству. Количество параметровИ еще один прием, который может пригодиться при написании функций, принимающих произвольное количество параметров. Для определения количества переданных при вызове функций переменных удобно использовать функцию “Размер”. Информация к размышлению: Например, хочется Вам сообщать об ошибке, если нашей функции “Максимум” передан только один параметр. функция Максимум( А, ... ) { Если( Размер(Параметры)==0 ) Сообщить(“Ошибка!!!”); иначе { перем Имя; ДляВсех(Элементов(Параметры,Имя)) А = Макс(А,Параметры[Имя]); } вернуть А; } Как видите, функции таят в себе много нового и неожиданного, так что не расслабляйтесь! Продолжение следует… Операторы ++ и --Наконец-то в СБиС++'е можно писать ++ и даже --. В отличие от большинства других операторов это унарные операторы, то есть в них участвует только одна переменная. Итак, оператор ++ увеличивает значение переменной на единицу, а оператор -- соответственно уменьшает значение переменной на единицу, например: A = 10; A++; # в этой точке А равно 11 A--; # в этой точке А равно 10 Конечно, то же самое можно было бы написать и по-другому, но так гораздо короче. Для сравнения – три следующие строчки делают практически одно и то же. А = А + 1; А += 1; A++; Как правило, рассматриваемые операторы используются для организации циклов. Например, если некоторое действие нужно выполнить энное количество раз, можно написать так. i = 1; Пока( i <= N ) { ... i++; } Кроме того, что эти операторы увеличивают или
уменьшают на единицу переменную, они еще и возвращают некоторое значение. Что
вернет оператор, зависит от того, до или после переменной он стоит. Да, да!
Операторы ++ и -- можно писать как до, так и после переменной. Если сначала идет
оператор, а потом переменная, то вернется значение после выполнения
оператора. Если же сначала идет переменная, а потом оператор, то вернется
значение переменной до выполнения оператора. А = 0; Сообщить(++А); Сообщить(А++); Попробуйте сами догадаться, какие
сообщения порадуют Ваш взгляд при выполнении данного фрагмента
текста. i = 0; Пока( i++ < N ) { ... } Безусловно, использовать или нет операторы ++ и -- личное дело каждого. Так что нравится - пользуйтесь, не нравится - не пользуйтесь. |