|
Программирование >> Дополнительные возможности наследования
Использовапив коммвнторпвв Раньше считалось хорошим тоном предварять блоки функций и саму программу комментариями, из которых должно было быть понятно, что делает эта функция и какое значение она возвращает. Исходя из собственного опыта, могу сказать, что такие комментарии не всегда целесообразны. Комментарии в заголовке программы очень быстро устаревают, поскольку практически никто их не обновляет при обновлении текста программы. Функции должны иметь такие имена, чтобы у вас не оставалось ни тени сомнения в том, -что они делают, в противном случае имя функции нужно изменить. Зачем использовать бессмысленные и труднопроизносимые имена, чтобы потом раскрывать их смысл с помощью комментариев? Впрочем, одно другому не помеха. Лучше всего использовать понятные имена и дополнительно вносить краткие разъяснения с помощью комментариев. Листинг 2.3 демонстрирует использование комментариев, доказывая, что они не влияют на выполнение профаммы и ее результаты. Ацстннв 2.3. Деменстрацня кемментариев на примере цреараммьг hello, срр 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Sinclude <iostrearn. h> int mainO { /* это комментарий, который продолжается до тех пор, пока не встретится символ конца комментария в виде звездочки и слэша */ cout Hello world!\ n ; Этот комментарий оканчивается в конце строки cout That comment ended!\ n ; после двойного слеша может не быть никакого текста, /* как, впрочем, и между этими символами / return 0; нзтш Hello world! That comment ended! Комментарии в сфоках 5-7 полностью игнорируются компилятором, как и комментарии в сфОках 9, 12 и 13. Комментарий в сфоке 9 завершается в конце этой сфоки, но для завершения комментариев, начавшихся в сфоках 5 и 13, фе-буется символ окончания комментария ( /) НапвсАвдок првдупрвждвпив: всторожнвв с коммвнтариями! в комментариях, разъясняющих очевидные места, проку немного. Но они могут даже вводить в заблуждение, если при изменения текста программы вы забудете их скорректировать. Однако очевидность - понятие относительное. То, что очевидно для одного человека, может быть непонятно другому. Всегда старайтесь разумно комментировать свои действия и не забывайте обновлять комментарии при обновлении программы. И последнее, комментарии должны разъяснять, не что это за операторы, а для чего они тут используются. Шункции Вы уже познакомились с функцией rnain(), правда, это необычная, единственная в своем роде функция. Чтобы приносить пользу, функция должна быть вызвана во время сеанса работы программы. Функция main() вызывается не профаммой, а операционной системой. Профамма выполняется по строкам в порядке их расположения в исходном тексте до тех пор, пока не встретится вызов какой-нибудь функции. Затем управление передается строкам этой функции. После выполнения функции управление возвращается той строке профаммы, которая следует сразу за вызовом функции. Есть прекрасная аналогия для работы профаммы с функцией. Например, если во время рисования у вас ломается карандаш, вы прекращаете рисовать и затачиваете его. После этого вы возвращаетесь к тому месту рисунка, где сломался карандаш. Когда профамма нуждается в выполнении некоторой сервисной операции, вызывается функция, ответственная за выполнение этой операции, после чего профамма продолжает свою работу с того места, где была вызвана функция. Эта идея демонстрируется в листинге 2.4. Ансшннг 2.4. Прпмвр вызова функции 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream.h> Функция DemonstrationFunction выводит на экран информативное сообщение void DemonstrationFunction() cout << In DemonstrationFunction\ n ; Функция main выводит сообщение, затем вызывает функцию DemonstrationFunction и выводит на экран второе сообщение, int main() { cout << In main\ n ; DemonstrationFunction(); cout << Back in main\ n ; return 0; In main In DemonstrationFunction Back in main в строках 5-8 определяется функция DemonstrationFunction(). Она выво-дит на экран сообщение и возвращает управление программе. Функция mainO начинается в строке 13, и в строке 15 выводится на экран сообщение, уведомляющее о том, что сейчас управление программой находится в функции main(). После вывода этого сообщения в строке 16 вызывается функция DemonstrationFunction(). В результате этого вызова выполняются команды, содержащиеся в функции DemonstrationFunction(). В данном случае вся функция состоит из одной команды, содержащейся в строке 7, которая выводит другое сообщение. По за-верщении выполнения функции DemonstrationFunctionO (строка 8) управление программой возвращается туда, откуда эта функция была вызвана. В данном случае выполнение программы продолжается со строки 17, в которой функция main() выводит на экран заключительное сообщение. Использование функций Функции возвращают либо некоторое реальное значение, либо значение типа void, т.е. ничего не возвращают. Функцию, которая складывает два целых числа и возвращает значение суммы, следует определить как возвращающую целочисленное значение. Функции, которая только выводит сообщение, возвращать нечего, поэтому для нее задается тип возврата void. Функции состоят из заголовка и тела. Заголовок содержит установки типа возвращаемого значения, имени и параметров функции. Параметры позволяют передавать в функцию значения. Следовательно, если функция предназначена для сложения двух чисел, то эти числа необходимо передать в функцию как параметры. Вот как будет выглядеть заголовок такой функции: int Sum(int а, int b) Параметр - это объявление типа данных значения, передаваемого в функцию. Реальное значение, передаваемое при вызове функции, называется аргументом. Многие программисты используют эти два понятия как синонимы. Другие считают смещение этих терминов признаком непрофессионализма. Возможно, это и так, но в данной книге эти термины взаимозаменяемы. Тело функции начинается открывающей фигурной скобкой и содержит ряд строк (хотя тело функции может быть даже нулевым), за которыми следует закрывающая фигурная скобка. Назначение функции определяется содержащимися в ней строками программного кода. Функция может возвращать значение в программу с помощью оператора возврата (return). Этот оператор также означает выход из функции. Если не поместить в функцию оператор возврата, то по заверщении функции автоматически возвращается значение типа void. Значение, возвращаемое функцией, должно иметь тип, объявленный в заголовке функции. примечание Более подробно функции рассматриваются на занятии 5; типы значений, возвращаемых функциями, - на занятии 3. Информация, представленная на этом занятии, является хотя и обзорной, но вполне достаточной для усвоения последующего материала, поскольку функции будут использоваться практически во всех программах, представленных в этой книге.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |