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

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Windows Movie Maker 2.6
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Программирование -> 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") - и появится сообщение о нажатии нами кнопки НЕТ.



 
Популярные книги

Общая информатика. Универсальный курс

Подробнее

SQL для "чайников", 5-е издание

Подробнее

Дизайн помещений и интерьеров в 3ds max 7 (+CD)

Подробнее


 
Новости ИТ
09.01.2009  Exeda -- корпоративный цифровой ассистент с Android Linux
09.01.2009  Правительство Вьетнама массово переходит на Open Source
09.01.2009  Windows 7 build 7000
09.01.2009  Silicon Power представила скоростную SDHC
09.01.2009  CES 2009: RealView 360 3D Desktop Scanner - настольный 3D-сканер, один из первых в мире
09.01.2009  W90 - очень быстрый мультимедийный ноутбук ASUS «Ultimate-уровня»
09.01.2009  CES 2009: SanDisk представила семейство G3 - самых быстрых SSD-накопителей на флэш-памяти MLC
09.01.2009  ZOTAC GeForce GTX 285 и GTX 285 AMP! Edition - 3D-ускорители для геймеров на новом GPU NVIDIA
09.01.2009  Net Applications: в декабре доли Firefox и Chrome росли за счет IE
09.01.2009  Imation говорит о «новом классе» SSD и первом в отрасли полном наборе для модернизации на основе SSD
09.01.2009  Маршрутизатор D-Link Xtreme N DIR-685 может играть роль NAS, сервера печати... и цифровой фоторамки
09.01.2009  Очень тонкая фотокамера Pentax Optio P70 имеет разрешение 12 Мп
09.01.2009  pureSilicon 1TB Nitro - первый в мире 2,5-дюймовый SSD объемом 1 ТБ
09.01.2009  Дебютировали мобильные GPU ATI Mobility Radeon HD 4000
09.01.2009  NVIDIA GeForce GTX 285 и GTX 295 представлены официально
09.01.2009  Scythe выпустила процессорный кулер Mugen 2
09.01.2009  Optio E70 - новая компактная камера Pentax начального уровня
09.01.2009  Новый iPhone получит четырехъядерный процессор?
08.01.2009  FreeBSD 7.1-RELEASE -- обновление операционной системы
08.01.2009  Появилась сборка Om 2008.12 для Neo FreeRunner от bytestore
 
Полезно

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