Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
2.
Алгоритмы с разветвляющейся структурой применяются для составления программ, когда в них возникает необходимость проверить условия или (реже) неоднократно повторить однородные действия.
Оператор передачи управления (безусловного перехода) − GOTOn
Оператор даёт возможность перевести процесс выполнения программы в любую строку программы.
Формат конструкции: … GOTO метка … |
Блок-схема конструкции: Действие 1 Действие 2 1 … … |
В программе одному оператору GOTO всегда соответствуют две одинаковые метки. Одна расположена справа от оператора, вторая первым элементом строки, в которую передаётся управление. Допускается передача управления в одну и ту же строку программы несколькими операторами GOTO по одной и той же метке.
Метки могут быть цифровыми и текстовыми. Текстовая метка обязательно начинается с буквы и в целевой строке заканчивается двоеточием.
На блок-схемах GOTO обозначается окружностью с номером блока, которому передаётся управление.
Оператор используется в основном совместно с другими операторами для создания циклов (с операторами IF …) и для организации автоматического реагирования программы на ошибки (с оператором ON ERROR).
В QBasic широко используется группа операторов, в имени которых обязательно присутствует слово IF если со знаком сравнения.
Конструкция IF … THEN («если то»)
Позволяет в зависимости от проверки условия выполнять или не выполнять какое-либо действие.
Формат конструкции: … IF условие THEN действие … |
Блок-схема конструкции: … Нет … У Действие Да |
Условием всех конструкций IF является выражение со знаком сравнения. Оно может иметь только два значения TRUE (истина) при котором условие выполняется и FALSE (ложь) при котором условие не выполняется. В условиях используются знаки сравнения. Сравниваться могут не только числа и переменные, но и математические выражения.
Условие может задаваться довольно сложным образом и состоять из нескольких блоков. Для создания таких сложных условий используют специальные операторы AND, OR, NOT, IMP, XOR, EQV.
Особенность конструкции IF … THEN в том, что в зависимости от результата проверки условия Действие может не выполняться, конструкция заканчивает работу и передаёт управление.
Код простейшей программы:
Задание: Рассчитать значение математического выражения x=sin 35 + 2,25 + a. Если переменная x будет иметь значение меньше нуля, умножить её на (-1). Вывести результат (положительное значение переменной x).
X<0 а Конец Х х X=X*(-1) Да (+) Нет (-) Начало |
CLS INPUT “Ввести значение переменной а”; a X = SIN(35) + 2.25 + a IF X<0 THEN X = X * (-1) PRINT “X=”; X END |
Конструкция IF…THEN…ELSE («если − то − иначе»)
Позволяет выполнять одно из двух действий в зависимости от выполнения условия.
Формат конструкции: … IF условие THEN действие 1 ELSE действие 2 … |
Блок-схема конструкции: … У Действие 1 Да Действие 2 … Нет |
Особенность конструкции в том, что Действие 1 и действие 2 не могут выполняться последовательно. Выполняется одно из действий, в зависимости от выполнения или невыполнения условия.
Код простейшей программы:
Задание: Ввести X. Если его значение чётное или равно 0, то прибавить 2, если нечетное, то прибавить 1. Вывести результат.
X/2=X\2 Начало Х X=X+1 Нет Да X=X+2 Х Конец |
CLS INPUT «Введите значение x»; x IF X/2 = X\2 THEN X = X+2 ELSE X = X+1 PRINT x END |
Для двух переменных вопрос нахождения максимума (минимума) с помощью данной конструкции решается в одну строку.
…
IF A > B THEN PRINT “A > B” ELSE PRINT “A < B”
…
Для обработки нескольких переменных используется другой подход. Вводится дополнительная переменная эталон.
Задание: Определить, наименьшее значение одной из нескольких переменных.
Программный код:
INPUT “Введите значения переменных A1, A2, A3, A4”; A1, A2, A3, A4
IF A1 < A2 THEN MIN = A1 ELSE MIN = A2
IF A3 < MIN THEN MIN A3
IF A4 < MIN THEN MIN A4
PRINT “Минимальное значение”; MIN
В данном случае введена переменная эталон с именем MIN
Конструкция IF…THEN END IF (“если − то” многострочная)
Рассмотренные конструкции оператора IF требуют их написания в одной строке кода программы. Но если после проверки условия необходимо выполнить несколько действий, писать их одной строкой становится затруднительно.
Выход из этой ситуации предлагает конструкция IF…THEN END IF
Формат конструкции: … IF условие THEN действие 1 действие 2 … действие n END IF … |
Блок-схема конструкции: … У Действие 1 Действие 2 … Действие n … Да Нет |
Количество операторов, расположенных в теле конструкции ограничивается только размерами файла, занимаемого программой. Элементы оператора IF и END IF должны быть первыми элементами в своих строках кода программы. После THEN все операторы тела конструкции начинают записывать с новой строки.
Задание: Ввести значение X, извлечь из него квадратный корень и вывести результат. Если значение X меньше нуля, то сообщить «Введено отрицательное значение X» и умножить X на -1. Вывести значение подкоренного выражения.
X<0 Начало X=X*(-1) Нет Да Х “Введено ...” SQR(x) Конец |
CLS INPUT “Введите значение x”; x IF x < 0 THEN PRINT “Введено отриц. Значение X” X = X * (-1) END IF PRINT “Корень квадратный из X”; SQR(x) END |
Конструкция IF…THEN…ELSE…END IF (“если то − иначе” многострочная)
Эта конструкция многострочный аналог функции IF… THEN…ELSE
Формат конструкции: … IF условие THEN действие 1 действие 2 … действие n ELSE действие 1 действие 2 … действие m END IF … |
Блок-схема конструкции: Действие 1 Нет () Да (+) Действие n Действие n+1 Действие m У |
Задание: Ввести A и В. Если они имеют одинаковый знак (обе положительные или обе отрицательные) то рассчитать и вывести большее из них, иначе рассчитать и вывести меньшее.
Соответствие знаков переменных A и B проверяется условием A * B > 0. Если знаки идентичны условие выполняется.
Большее из двух чисел определяется формулой (A + B + ABS(A - B)) / 2
Меньшее соответственно (A + B − ABS(A-B)) / 2
A*B>0 Начало A, B minAB Нет Да maxAB minAB Конец maxAB |
CLS INPUT “Введите значения А, В”; A, B IF A * B > 0 THEN maxAB = (A + B + ABS(A − B)) / 2 PRINT “Максимум =”; maxAB ELSE minAB = (A + B ABS(A − B)) / 2 PRINT “Минимум =”; minAB END IF END |
Элементы многострочных операторов IF, ELSE и END IF должны быть первыми элементами в своих строках кода программы.
Конструкция IF…THEN…ELSEIF…ELSE…END IF (“перебор условий” или “выбор”)
Главной особенностью такой записи является дополнительное условие ELSEIF. Фактически ELSEIF это ELSE снабженное индивидуальным условием IF. Условие определяет выполнение или невыполнение следующего за ELSEIF блока операторов.
Формат конструкции: … ... IF условие 1 THEN Блок операторов_1 ELSEIF условие 2 THEN Блок операторов_2 ... ELSEIF условие n THEN Блок операторов_n ELSE Блок операторов_n+1 END IF ... |
Блок-схема конструкции: Блок операторов 1 Нет () Да (+) IF У1 ELSEIF У2 Блок операторов 2 Блок операторов n Блок операторов n+1 ELSEIF Уn Да (+) Да (+) Нет () Нет () |
Конструкция, в случае невыполнения первого условия переходит к проверке второго (в первом элементе ELSEIF) и т.д. Таким образом, реализуется возможность проверки нескольких условий.
Задание: Ввести целое число X в диапазоне от 0 < X < 100000. Определить сколько цифр входит в число. Вывести результат.
Конструкция SELECT CASE
Близка по логике работы с IF. Конструкции взаимозаменяемы при решении большинства задач. Формат конструкции представлен только многострочной формой, которая может содержать вложенные блоки аналогичного строения.
Конструкция получает параметр и в зависимости от его значения выполняет тот или иной блок операторов. Параметром может быть значение переменной любого типа или значение выражения. Если значение удовлетворяет условию, то программа выполняет блок операторов данного CASE и передаёт управление за пределы конструкции.
CASE условие это действие, поэтому операторы данного CASE должны записываться с новой строки или в этой же строке через двоеточие.
Между SELECT KASE и первым KASE нельзя размещать ничего кроме комментариев.
Условные выражения за KASE могут быть записаны в форматах:
Число. Например, KASE 5.
Диапазон от меньшего значения к большему. Например, KASE 10 TO 20. При записи от большего значения к меньшему, будет проверяться только первое значение.
Условие. В записи условия название параметра обязательно заменяется словом IS. Например, условие X > 10, должно быть записано как KASE IS > 10. Если в KASE будет несколько условий, разделённых запятыми, то он сработает при выполнении любого из них.
Сочетание форматов 1 3, разделённых запятыми. Например, KASE 5, 15, 10 TO 20, IS > 10. Программа отработает блок операторов, соответствующий данному KASE, если выполняется, хотя бы одно из перечисленных условий.
Формат конструкции: ... SELECT KASE CASE условие 1 Блок операторов_1 CASE условие 2 Блок операторов_2 ... CASE ELSE Блок операторов_n END SELEKT ... |
Блок-схема конструкции: … CASE ELSE CASE CASE … … Блок операторов_1 Блок операторов_2 Блок операторов_n + + + - - - |
Задание: Ввести число от 1 до 999 и определить количество знаков в нём. Если введено число, не принадлежащее данному диапазону, то сообщить об этом.
CLS INPUT “Введите значение Х”; Х SELECT CASE X CASE 1, 2, 3, 4, 5, 6, 7, 8, 9 PRINT “Одна цифра” CASE 10 TO 99 PRINT “Две цифры” CASE IS <= 0, IS >= 1000 PRINT “Ошибка ввода” CASE ELSE PRINT “Три цифры” END SELECT END |
Контрольные задания:
1. |
Составить блок-схему и код программы вычисления значения Y по заданному математическому выражению, при заданных с клавиатуры данных, предусмотрев возможность проверки значений знаменателя, подкоренного выражения и повторного ввода данных: |
2. |
Составить блок-схему и код программы вычисления значения Y по заданному математическому выражению, при заданных с клавиатуры данных, предусмотрев возможность проверки значений знаменателя, подкоренного выражения и повторного ввода данных: |
3. |
Составить блок-схему и код программы, которая в зависимости от введённого числа либо вычисляет функцию, либо выдаёт сообщение, что функция не определена и предлагает ввести новое значение аргумента: |
4. |
Составить блок-схему и код программы, которая в зависимости от введённого числа либо вычисляет функцию, либо выдаёт сообщение, что функция не определена и предлагает ввести новое значение аргумента: |
5. |
Составить блок-схему и код программы, для вычисления функции: |
6. |
Составить блок-схему и код программы, для вычисления функции: |
7. |
Составить блок-схему и код программы, для вычисления функции: |
8. |
Составить блок-схему и код программы, определяющей чётность или нечётность любого вводимого с клавиатуры целого числа. |
9. |
Составить блок-схему и код программы, находящей меньшее из двух введённых с клавиатуры чисел. |
10. |
Составить блок-схему и код программы, находящей сумму двух меньших из трёх введённых с клавиатуры положительных целых чисел. |
11. |
Составить блок-схему и код программы, находящей, большее и меньшее из трёх введённых с клавиатуры чисел. |
12. |
Заданы длины сторон треугольника A, B, C. Составить блок-схему и код программы, определяющей является ли треугольник равнобедренным. |
13. |
Составить блок-схему и код программы, которая по четырёхзначному номеру года, заданному с клавиатуры определит столетие (например, для 1476 г. ответ XIV век). Учесть, что началом века считается первый, а не нулевой год. |
14. |
Какое значение будет иметь переменная X после выполнения операторов: X = 0 |
15. |
Если N = 3, то, какое значение будет иметь переменная S после выполнения операторов: S = 1: K = 2 |
16. |
X > 0 X >=2 X “X >= 2” + + Записать фрагмент кода программы по данной блок схеме: |