Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> C/C++ -> Borland C++ 5 для себя


Глава 4. Возвращаемые значения

В детстве, когда я только начал изучать программирование, самой первой непонятной вещью для меня были "Return Values" - значения, возвращаемые вызванной функцией.

Сейчас попробую Вам рассказать так, чтобы было понятно. Есть функция - например, "синус". Мы вызываем эту функцию, написав, обычно, в программе

y = sin(x) ;

Надеюсь, вы догадываетесь, что в тексте программы такая строка означает не уравнение, которое нужно решить. Если не догадываетесь, объясняю: мы вызываем функцию "синус", подсунув ей какое-то число "х". Функция вычисляется и результат вычисления синуса присваивается переменной "у". Так вот это вычисленное функцией значение и называется "возвращаемым значением". Любая функция всегда возвращает какое-либо значение в то "место", откуда она была вызвана. Причем, мы можем написать в программе просто

sin(x) ;

При этом функция "синус" вычислит значение синуса "х", и обязательно вернет это значение. Вот только в этом случае оно ничему не присвоится и пропадет.

А теперь вернемся в главу 2 - где мы создавали сообщения с помощью команды MessageBox. MessageBox - это тоже функция. Мы ее вызываем, подсовывая (передавая) ей некоторые значения (тексты) и параметры-флаги. Эта функция рисует на экране окно сообщения. Когда мы нажимаем на кнопку в этом сообщении - именно в этот момент функция считается полностью выполненной - и ВОЗВРАЩАЕТ вызвавшей ее программе какое-то значение. Что она может возвращать? Вспомним,что мы рассматривали возможные варианты сообщений - с тремя кнопками. Так вот, значение, которое вернет функция MessageBox, будет зависеть от того, на какую кнопку мы (пользователь программы) нажмем.

Давайте научим нашу программу понимать, на какую кнопку в сообщении мы нажали. Заодно и познакомимся с оператором "если" - "if". Введем в наше обычное место в файле "2000dlgc.cpp" следующие строки:

        void T2000DlgClient::BNClickedOne()
{
        // INSERT>> Your code here.
        if ( (MessageBox("Вы нажали на кнопку\nСпасибо Вам за это!",
        "Наше сообщение", MB_YESNO | MB_ICONINFORMATION) ) == IDYES)
{
MessageBox("А теперь Вы нажали\nна кнопку YES/ДА",
                        "Наше второе сообщение", MB_ОК | MB_ICONWARNING);
                }
else
{
MessageBox("А теперь Вы нажали\nна кнопку NO/НЕТ",
                        "Наше второе сообщение", MB_ОК | MB_ICONSTOP);
                }
}

Обратите внимание, что в нашем первом сообщении мы указали флаг MB_YESNO вместо MB_ОК - в результате мы получим окно сообщения с двумя кнопками - "ДА" и "НЕТ". Далее - в принципе, мы могли бы добавить в программу новую переменную, потом присваивать ей значение, возвращаемое функцией MessageBox - точно так же, как мы действуем с функцией "синус"; а потом мы сравнили бы эту переменную с IDYES и т.д. Но зачем нам лишние переменные? Мы сразу сравниваем функцию MessageBox (а точнее - значение, ею возвращаемое) с интересующим нас значением, а именно IDYES. Вот в этой части -

if ( (MessageBox(...) ) == IDYES)

и происходит сравнение. Знак "==" - это логический оператор "равно". Я сам до сих пор, когда пишу программы, путаю его с оператором присвоения - одиночным знаком "=". Ошибка страшная - поскольку с точки зрения языка это все допустимо - и компилляция не выдает ошибки - а программа работает не так, как задумано.

Но вернемся к нашей программе. Уточним теперь синтаксис оператора "если":

if ( условие )
                {
действие, выполняемое, если условие истинно
                }
        else
{
действие, выполняемое, если условие ложно
                }

Второй части может и не быть, т.е. оператор может выглядеть следующим образом:

if ( условие )
                {
действие, выполняемое, если условие истинно
                }

Это пишется в случае, когда мы делаем что-то лишь в случае истинности условия, а в случае невыполнения условия мы не делаем никаких действий.

В нашем примере программа будет работать следующим образом: Дойдя до строки с оператором "если", она полезет внутрь - к условию сравнения. Там она выяснит, что в одной из частей, подлежащих сравнению, должно стоять значение, возвращаемое функцией MessageBox. Программе "придется" вызвать эту функцию, в результате чего мы увидим на экране наше сообщение с двумя кнопками - см.рис.4.1.

Рис. 4.1. Сообщение с двумя кнопками.

Затем программа будет ждать, пока мы не нажмем одну из кнопок. Как только мы это сделаем, функция MessageBox вернет программе одно из двух значений - IDYES, если мы нажали кнопку YES, или IDNO, если мы нажали кнопку NO. Программа возьмет это значение и проверит, не равно ли оно второй части условия - а там мы записали IDYES. Если равно - значит, условие истинно - и программа выполнит то, что написано в первых фигурных скобках - т.е. снова вызовет функцию MessageBox, но уже с другими параметрами - и появится сообщение о том, что мы нажали кнопку ДА. Если же условие окажется ложным, то программа выполнит то, что написано в фигурных скобках после слова "иначе" ("else") - и появится сообщение о нажатии нами кнопки НЕТ.



 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.