Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб 3_Операторы выбора.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
267.78 Кб
Скачать

3.3.1. Оператор выбора if

Синтаксис оператора имеет следующий вид:

if (выражение) оператор;

Выражение в круглых скобках может быть любым, но обычно оно содержит операторы отношения. Если это выражение возвращает значение false, то последующий оператор пропускается. Если же оно возвращает значение true, то оператор выполняется.

Блок-схема выполнения оператора if приведена на рис. 3.1.

Например, предположим, что проходной балл на экзамене равен 60. Оператор псевдокода

Если оценка студента больше или равна 60

Вывести на экран «Зачет»

определяет, является ли условие «оценка студента больше или равна 60» истинным или ложным. Если условие истинно, на экран выводится «Зачет» и «выполняется» следующий по порядку оператор псевдокода. Если условие ложно, вывод на экран игнорируется и выполняется следующий по порядку оператор псевдокода.

Предыдущий условный оператор псевдокода может быть написан на С++ как

if (grade >= 60 )

cout << “Зачет”;

Обратите внимание, что код на C++ близко соответствует псевдокоду. Это является одним из свойств псевдокода, делающих его таким полезным инструментом разработки программ.

Следующая программа демонстрирует использование операторов отношения и логических операторов:

Листинг 3.2. Пример использования операторов отношения и логических операторов

// DemoOperLog.cpp : Defines the entry point for the console application.

//Демонстрация операторов отношения и логических.

#include "stdafx.h"

#include <iostream>

using namespace std;

int main() {

int i, j ;

bool b1, b2;

i = 10;

j = 11;

if (i < j) cout << "i < j\n";

if (i <= j) cout << " i <= j\n" ;

if ( i != j ) cout << " i != j \n" ;

if (i == j) cout << "это не будет выполняться\n" ;

if (i >= j) cout << " это не будет выполняться\n" ;

if (i > j) cout << " это не будет выполняться\n" ;

b1 = true;

b2 = false;

if (b1 && b2) cout << " это не будет выполняться\n" ;

if ( ! (b1 && b2 ) ) cout << " !(bl && Ь2 ) is true\n" ;

if (b1 || b2) cout << "bl || Ь2 is true\n" ;

cin >> i;

return 0 ;

}

Еще один пример использования оператора if с анализом

  1. #include <iostream>

  2. using namespace std;

  3. int main(int argc, char* argv[])

  4. {

  5. int MetsScore, YankeesScore;

  6. cout << "Enter the score for the Mets: ";

  7. cin >> MetsScore;

  8. cout << "\nEnter the score for the Yankees: ";

  9. cin >> YankeesScore;

  10. cout << endl;

  11. if (MetsScore > YankeesScore)

  12. cout << "Let's Go Mets!\n";

  13. if (MetsScore < YankeesScore)

  14. {

  15. cout << "Go Yankees!\n";

  16. }

  17. if (MetsScore == YankeesScore)

  18. {

  19. cout << "A tie? Naah, can't be.\n";

  20. cout << "Give me the real score for the Yanks: ";

  21. cin >> YankeesScore;

  22. if (MetsScore > YankeesScore)

  23. cout << "Knew it! Let's Go Mets!";

  24. if (YankeesScore > MetsScore)

  25. cout << "Knew it! Go Yanks!";

  26. if (YankeesScore == MetsScore)

  27. cout << "Wow, it really was a tie!";

  28. }

  29. cout << "\nThanks' for telling me.\n" ;

  30. return 0;

  1. }

Анализ

В этой программе пользователю предлагается ввести счет очков для двух бейсбольных команд; счет сохраняется в целочисленных переменных MetsScore и YankeesScore. Значения этих переменных сравниваются оператором if в строках 12, 14 и 18.

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

Обратите внимание: если начальный счет Yankees превышает счет Mets, то оператор if в строке 12 возвратит значение false, а строка 13 выполняться не будет. В результа­те проверки в строке 14 будет возвращено значение true и выполнено выражение в строке 16. Затем с помощью оператора if в строке 18 будет проверено равенство очков и, если результат этой проверки вернет значение false (иначе и быть не может, поскольку проверка в строке 14 вернула значение true), то программа пропустит целый блок и сразу перейдет к выполнению строки 30.

В данном примере истинный результат одного оператора if не избавляет от проверки результатов других операторов if.

Обратите внимание на выражения первых двух операторов if (строки, выводящие на экран сообщения "Let' s Go Mets ! " и "Go Yankees ! "). В данном случае (в строке 13) выполняемый блок не взят в фигурные скобки преднамеренно, поскольку блок, состоящий из одной строки, в них не нуждается. Но и фигурные скобки тоже допустимы, они использованы в строках 15—17.