Программирование >>  Дополнительные возможности наследования 

1 ... 6 7 8 [ 9 ] 10 11 12 ... 265


Использовапив коммвнторпвв

Раньше считалось хорошим тоном предварять блоки функций и саму программу комментариями, из которых должно было быть понятно, что делает эта функция и какое значение она возвращает.

Исходя из собственного опыта, могу сказать, что такие комментарии не всегда целесообразны. Комментарии в заголовке программы очень быстро устаревают, поскольку практически никто их не обновляет при обновлении текста программы. Функции должны иметь такие имена, чтобы у вас не оставалось ни тени сомнения в том, -что они делают, в противном случае имя функции нужно изменить. Зачем использовать бессмысленные и труднопроизносимые имена, чтобы потом раскрывать их смысл с помощью комментариев?

Впрочем, одно другому не помеха. Лучше всего использовать понятные имена и дополнительно вносить краткие разъяснения с помощью комментариев.

Листинг 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. Информация, представленная на этом занятии, является хотя и обзорной, но вполне достаточной для усвоения последующего материала, поскольку функции будут использоваться практически во всех программах, представленных в этой книге.



1 ... 6 7 8 [ 9 ] 10 11 12 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика