drBatty писал(а): ↑25.11.2007 14:52
Друзья! Я знаю, что это возможно, и даже представляю, как это работает. Кто-нибудь может показать мне пример кода, в котором есть смысл так делать?
Я могу. И хоть код с множеством пояснений, боюсь, Вам с ходу будет не разобраться, а ковыряться- лень. Поэтому сперва на пальцах.
Программа, которую я написал, учебная и, наверное, никакого практического интереса не представляет, но тем не менее, я учусь всё же, а не работаю программистом. В этой программе разработана функция, которая принимает в качестве аргумента строку, а возвращает значение типа структура, в который входят два элемента: первый элемент типа bool, а второй типа float. Если в принимаемой строке-аргументе в начале есть число, то функция возвращает true и это самое число, приведённое к float. Например, строка -0.4567erty, возвртится число -0.45670000. Если числа в начале строки нет, первое возвращаемое значение будет false, а второе неопределено.
Так вот, в этой функции я разработал две вспомогательные функции, которые очень-очень специфичны и вряд ли я их смогу применить в других моих программах.. А раз так, какой смысл мне делать их внешними, а не вложенными?
Вопрос: а что, без вспомогательных функций нельзя было обойтись? Ответ: можно. Но основная функция такова, что в разных местах делаются одинаковые действия с разными значениями. Грамотно быо бы использовать в этих местах функции. Возможно, без них обойтись было бы проще, но хочется сразу приучивать себя к грамотной работе. В понятие "грамотность" я, среди прочего, вкладываю использование функций, если больше, чем в одном месте выполняется одинаковая последовательность операторов. (Понятное дело, правило не абсолютное. Каждый подобный случай нужно рассматривать отдельно.)
Про goto. Не очень я ему доверяю. Ещё с Pascal недоверие. Навскидку если- он в моей программе не подошёл бы.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?