Лабораторная_работа 2. Лабораторная работа 2 Организация ветвлений
Скачать 21.36 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА 2 Организация ветвлений Цель работы: формирование первичных умений в разработке разветвляющихся программ. Что нужно знать для выполнения задания лабораторной работы Структуру программы, назначение и порядок следования ее отдельных частей. Оператор присваивания, математические и логические операции, их приоритет. Операторы ввода-вывода. Стандартные математические функции С. Структуры выбора if, if/else, switch. Задания по вариантам Написать программу нахождения суммы большего и меньшего из трех чисел. Найти max{min(a, b), min(c, d)} Даны три числа a, b, c. Определить какое из них равно d. Если ни одно не равно d, то найти max(d-a, d-b, d-c). Составьте программу, которая проверяет, является ли введенное число нечетным, а также делится ли оно на пять. Создайте программу, которая проверяет, является ли введенный год високосным (это год, номер которого делится на 4, но не делится на 100, а также год, номер которого делится на 400). Написать программу решения уравнения ax^3+bx=0 для произвольных a,b. Даны числа x, y, z. Найти значение выражения: u = (max^2(x, y, z) – 2*min(x, y, z)) / (sin 2x+max(x, y, z)/min(x, y, z)). Заданы размеры А, В прямоугольного отверстия и размеры x, y, z кирпича. Определить, пройдет ли кирпич через отверстие. Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной. Составьте программу, которая проверяет, является ли введенное число четным, а также делится ли оно на три. Напишите программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 150000 рублей, в 5% - если сумма больше 200000 рублей.. Найти min {max (a, b), max (c, d)} Написать программу, которая по заданным трем числам определяет, является ли разность каких-либо двух из них положительной. Введите номер месяца в году. Выведите на экран сообщение о времени года. Введите номер дня недели. Выведите на экран название дня. Основные теоретические сведения Конструкция if Конструкция if проверяет истинность условия, и если оно истинно, вы-полняет блок инструкций. Этот оператор имеет следующую сокращенную форму: if (условие) { инструкции;} В качестве условия использоваться условное выражение, которое воз-вращает true или false. Если условие возвращает true, то выполняются по-следующие инструкции, которые входят в блок if. Если условие возвращает false, то последующие инструкции не выполняются. Блок инструкций заклю-чается в фигурные скобки. Например: #include int main() { int x = 60; if(x > 50) { std::cout << "x is greater than 50 \n"; } if(x < 30) { std::cout << "x is less than 30 \n"; } std::cout << "End of Program" << "\n"; return 0;} Здесь определены две условных конструкции if. Они проверят больше или меньше значение переменной x, чем определенное значение. В качестве инструкции в обоих случаях выполняется вывод некоторой строки на кон-соль. В первом случае x > 50 условие истинно, так как значение переменной x действительно больше 50, поэтому это условие возвратит true, и, следова-тельно, будут выполнятся инструкции, которые входят в блок if. Во втором случае операция отношения x < 30 возвратит false, так как условие ложно, поэтому последующий блок инструкций выполняться не бу-дет. В итоге при запуске программы вывод консоли будет выглядеть следу-ющим образом: x greater than 50 End of Program Также мы можем использовать полную форму конструкции if, которая включает оператор else: if(выражение_условия) инструкция_1 else инструкция_2 После оператора else мы можем определить набор инструкций, кото-рые выполняются, если условие в операторе if возвращает false. То есть ес-ли условие истинно, выполняются инструкции после оператора if, а если это выражение ложно, то выполняются инструкции после оператора else. 5 int x = 50; if(x > 60) std::cout << "x is greater than 60 \n"; else std::cout << "x is less or equal 60 \n"; В данном случае условие x > 60 ложно, то есть возвращает false, по-этому будет выполняться блок else. И в итоге на консоль будет выведена строка "x is less or equal 60 \n". Однако нередко надо обработать не два возможных альтернативных варианта, а гораздо больше. Например, в случае выше можно насчитать три условия: переменная x может быть больше 60, меньше 60 и равна 60. Для проверки альтернативных условий мы можем вводить выражения else if: int x = 60; if(x > 60) { std::cout << "x is greater than 60 \n"; } else if (x < 60) { std::cout << "x is less than 60 \n"; } else { std::cout << "x is equal 60 \n";} То есть в данном случае мы получаем три ветки развития событий в программе. Если в блоке if или else или else-if необходимо выполнить только одну инструкцию, то фигурные скобки можно опустить: int x = 60; if(x > 60) std::cout << "x is greater than 60 \n"; else if (x < 60) std::cout << "x is less than 60 \n"; else std::cout << "x is equal 60 \n"; Конструкция switch Другую форму организации ветвления программ представляет кон-струкция switch...case. Она имеет следующую форму: switch(выражение) { case константа_1: инструкции_1; case константа_2: инструкции_2; default: инструкции;} После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями по-сле оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase. В конце конструкции switch может стоять блок default. Он необязате-лен и выполняется в том случае, если значение после switch не соответствует ни одному из операторов case. Например: #include int main() { int x = 2; switch(x) { case 1: std::cout << "x = 1" << "\n"; break; case 2: std::cout << "x = 2" << "\n"; break; case 3: std::cout << "x = 3" << "\n"; break; default: std::cout << "x is undefined" << "\n"; break; } return 0;} Чтобы избежать выполнения последующих блоков case/default, в конце каждого блока ставится оператор break. То есть в данном случае будет вы-полняться оператор case 2: std::cout << "x = 2" << "\n"; break; После выполнения оператора break произойдет выход из конструкции switch..case, и остальные операторы case будут проигнорированы. Поэтому на консоль будет выведена следующая строка x = 2 Стоит отметить важность использования оператора break. Если мы его не укажем в блоке case, то после этого блока выполнение перейдет к следу-ющему блоку case. Например, уберем из предыдущего примера все опера-торы break: #include int main() { int x = 2; switch(x) { case 1: std::cout << "x = 1" << "\n"; case 2: std::cout << "x = 2" << "\n"; case 3: std::cout << "x = 3" << "\n"; default: std::cout << "x is undefined" << "\n"; } return 0;} В этом случае опять же будет выполняться оператор case 2:, так как пе-ременная x=2. Однако так как этот блок case не завершается оператором break, то после его завершения будет выполняться набор инструкций по-сле case 3: даже несмотря на то, что переменная x по прежнему равна 2. В итоге мы получим следующий консольный вывод: x = 2 x = 3 x is undefined |