Лабораторная работа № 2. Программирование разветвляющихся алгоритмов
Цель работы: овладеть практическими навыками программирования вычислительного процесса разветвляющейся структуры.
Краткие теоретические сведения Оператор C++ if позволяет вашим программам осуществлять проверку и затем на основании этой проверки выполнять операторы. Формат оператора if следующий: if (условие_выполняется) оператор; Обычно оператор if выполняет проверку, используя операцию сравнения C++ (таблица 2). Если результат проверки является истиной, if выполняет оператор, который следует за ним. Таблица 2 Операторы сравнения С++
При использовании оператора if для условной обработки в некоторых случаях, если условие истинно, программе потребуется выполнить один оператор, а в других случаях несколько операторов. Когда программа выполняет только один оператор, следующий за if, такой оператор называется простым оператором: if (test_score > = 90) cout < < " Поздравляем" < < endl; //-------> Простой оператор Если программе необходимо выполнить несколько инструкций, когда результат сравнения — истина, операторы должны быть сгруппированы внутри левой и правой фигурных скобок {}. Операторы, которые находятся внутри фигурных скобок, образуют составной оператор, как показано ниже: if (test_score > = 90) { cout < < " Поздравляем" < < endl; cout < < " Отлично " < < endl; } //-----------------> Составнойоператор В большинстве случаев вашим программам потребуется указать один набор операторов, выполняющийся, если условие истинно, и второй набор, выполняющийся, если условие ложно. Для указания операторов, которые должны выполняться, когда условие ложно, ваши программы должны использовать оператор else. Ниже приведен формат оператора else: if (условие_истинно) оператор; else Оператор switch вызывает передачу управления на один из нескольких операторов в зависимости от значения выражения. switch (выражение) { [объявление]: [ case константное-выражение1]: [ список-операторов1] [ case константное-выражение2]: [ список-операторов2] [ default: [ список операторов ]] } Схема выполнения оператора switch следующая: - вычисляется выражение в круглых скобках; - вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case; - если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case; - если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор. Конструкция со словом default может быть не последней в теле оператора switch. Ключевые слова case и default в теле оператора switch существенны только при начальной проверке, когда определяется начальная точка выполнения тела оператора switch. Все операторы между начальным оператором и концом тела выполняются вне зависимости от ключевых слов, если только какой-то из операторов не передаст управления из тела оператора switch. Таким образом, программист должен сам позаботится о выходе из case, если это необходимо. Чаще всего для этого используется оператор break.
Задание 1. Изучить возможности языка программирования для реализации: а) условной и безусловной передачи управления; б) вычислительного процесса разветвляющейся структуры. 2. Разработать блок-схему алгоритма решения в соответствии с заданием. 3. Составить программу решения задачи. 4. Произвести тестирование программы (число тестов равно числу ветвей вычислительного процесса). 5. Составить отчет о проделанной работе.
Пример выполнения работы Условие: Составить программу нахождения корней квадратного уравнения. Блок схема алгоритма изображена на рисунке 2. Рис. 2 Блок –схема алгоритма
#include < iostream.h> #include < math.h> void main(void) { setlocale(LC_ALL, " Russian"); float a, b, c, x1, x2; cout < < " a*x^2+b*x+c\nВведите a\n-> "; cin > > a; cout < < " Введите b\n-> "; cin > > b; cout < < " Введите c\n-> "; cin > > c; x2 = b*b-4*a*c; if (x2< 0){ cout < < " Решений нет! \n"; } else if (x2){ x1 = (-1*b + sqrt(x2))/(2*a); x2 = (-1*b - sqrt(x2))/(2*a); cout < < " х1 = " < < x1 < < " \nx2 = " < < x2 < < endl; } else{ x1 = -1*b/(2*a); cout < < " x1 = " < < x1 < < endl; } system(" pause"); } Задания для самостоятельного выполнения 1. По заданному значению аргумента вычислить значения функции В программе определить функцию, возвращающую значение y по заданному значению x. 2. Треугольник задан координатами вершин. Определить, принадлежит ли точка M(x, y) треугольнику. 3. Треугольник задан координатами вершин. Найти уравнение одной медианы. 4. Треугольник задан координатами вершин. Найти уравнение одной биссектрисы. 5. Треугольник задан координатами вершин. Найти уравнение одной высоты. 6. Равнобедренная трапеция задана координатами вершин. Найти точку пересечения боковых сторон. 7. Даны две пересекающиеся прямые и точка M(x, y). Определить, лежит ли точка между прямыми или вне их. 8. Даны координаты четырех вершин. Определить, является ли данный четырехугольник прямоугольником. 9. На плоскости даны две окружности и точка M(x, y). Определить взаимное положение точки относительно этих окружностей. 10. На плоскости два отрезка задаются координатами. Определить, имеют ли эти отрезки общие точки. 11. Дано целое число n < 10000. Определить, делится ли это число на 3. 12. Две точки на плоскости даны координатами. Выдать на экран терминала уравнение прямой линии. 13. Записать условие принадлежности точки с заданными координатами (x, y) заштрихованной части плоскости, изображенной на рисунке 3а). 14. Записать условие принадлежности точки с заданными координатами (x, y) заштрихованной части плоскости, изображенной на рисунке 3б).
Рис. 3. Заштрихованные части плоскостей Контрольные вопросы 1. Каково назначение инструкции if? 2. Какие операторы отношений реализованы в С++? 3. Какого типа должно быть выражение, управляющее инструкцией switch? 4. Поясните назначение инструкции break. 5. В чем состоит назначение инструкции С++ безусловного перехода? 6. В чем отличие символов = и ==? 7. Как записать на языке C, что число находится в допустимых значениях. 8. В чем состоит назначение ключевого слова else.
|