Возвращаемые значения.
Есть функция – например, «синус». Мы вызываем эту функцию, написав, обычно, в программе
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 ( условие )
{
действие, выполняемое, если условие истинно
}
Это пишется в случае, когда мы делаем что-то лишь в случае истинности условия, а в случае невыполнения условия мы не делаем никаких действий.
Свежие записи
- SportDepot.Ru – Новый интернет магазин спортивных товаров
- Аренда спецтехники – плюсы и минусы
- hvosting обзор – тонкости виртуального хостинга
- Что необходимо учесть в реконструкции загородного дома.
- Холодильники Вестфрост и редкая необходимость их ремонта.
- IP-АТС за 39тыс. руб.
- Порожки на ступени крупным оптом в фирме «Симплекс».
- КомпьютерТехСервис оказывает своевременный и качественный ремонт ноутбуков и компьютеров
- Качественный ремонт Вашего холодильника
- Йо-йо (Yo-yo) – чертик на веревке!