Программ линейной структуры на практике нет или почти нет. Программа на любом языке должна “уметь” осуществлять ВЫБОР в зависимости от тех или иных условий. Такой выбор определяет дальнейший ход решения задачи, обработки данных и т.д.
Этот выбор реализуется оператором IF... THEN…
Реализуется он в таких форматах.
IF <условие> THEN <операторы>
или
IF <условие1> THEN <операторы1> ELSE <операторы2>
или
IF <условие1> THEN <операторы1> ELSE <операторы2> IF <условие2> THEN <операторы3>
Наконец, так называемый “полный формат” оператора
IF <условие> THEN
<операторы1>
<операторы2>
………………..
END IF
Если условие выполняется, то будут выполнены все операторы, размещенные между строкой IF <условие> THEN и строкой END IF, которая означает: конец условия.
Рассмотрим конкретные примеры, вводя новые понятия и служебные слова.
5.1.Выдать сообщение: делится ли число на 3
IF a / 3 = a \ 3 THEN ?”Число”;a;”делится на 3”: ‘это простейший формат
5.2. Выдать сообщение, какое из двух чисел больше.
IF a>b THEN ?” Число”;a;”больше числа”;b ELSE ” Число”;b;”больше числа”;a:’
ELSE – иначе
5.3. Выдать одно из сообщений: число а – четное или число а не является целым
IF a MOD(2)=0 THEN ?” Число”;a;”четное” ELSE IF a - INT(a) <>0 THEN ?” Число”;a;”не является целым"
Объясните самостоятельно: что означает конструкция: a - INT(a) <>0?
Обратите внимание, как использовалась функция MOD, практически не используемая в математике
Пример применения полного формата:
IF a>0 THEN
?”Натуральный логарифм числа”;a”равен”;LOG(a)
?”Десятичный логарифм числа”;a”равен”;LOG(a)/LOG(10)
?”Квадратный корень из числа”;a”равен”;SQR(a)
END IF
Условия, следующие за IF, могут быть более сложные.
Примеры более сложных условий в операторе IF с использованием служебных слов AND и OR. (и, или)
Приведем примеры. Запросы очевидны.
IF x>a AND x<b THEN ?”Число “;x;”принадлежит отрезку [“;a”;”;b;”]”
IF x<a OR x>b THEN ?”Число “;x;”не принадлежит отрезку [“;a”;”;b;”]”
“Под” каждой буквенной клавишей четыре различных символа, приводимый фрагмент напоминает Вам об этом.
?”Вы ввели функцию для исследования? (Y/N)”;:INPUT a$
IF a$=”Y” OR a$=”y” OR a$=”н” OR a$=”Н” THEN ?”Умница”
IF a$=”n” OR a$=”N” OR a$=”т” OR a$=”Т” THEN ?”Не забудьте ввести”
Определить, могут ли три положительных числа выражать длины сторон треугольника.
IF a+b>c AND a+c>b AND b+c>a THEN ? ” Числа”;a,b,c;”могут быть сторонами треугольника”
В дальнейшем Вам практически в каждой программе придется создавать конструкции с IF.. THEN. Будьте внимательны.
Для расширения круга задач, введем понятие МЕТКИ и оператора перехода.
Метка в QB (как вариант, существуют другие способы) это НОМЕР строки.
Простой пример:
IF a$=”r” THEN GOTO 10 ELSE GOTO 100
Это означает, что если a$ имеет значение r, то УПРАВЛЕНИЕ передается на строку, начинающуюся с натурального числа 10, если a$ имеет другое значение, управление будет передано на строку 100.
Вы поняли, что означает оператор GOTO, переведите с английского.
Для закрепления рассмотрите и законспектируйте конкретные программы.
----Программа 5.1. Решить квадратное уравнение ax2 + bx + c = 0---------
5 INPUT”Введите коэффициенты квадратного уравнения a, b, c”;a,b,c
d = b^2-4*a*b
IF d<0 THEN 10
x1 = (-b + SQR(d))/2/a: x2 = (-b-SQR(d))/2/a
?”Записывайте действительные корни:”;x1,x2:GOTO 100
END IF
10 m = -b/2/a: n = SQR(ABS(d))/2/a
?”Записывайте комплексные корни:”
?”x1= ”;m;” + i*”;n
?”x2= ”;m;” – i*”;n
100 ?”1 – продолжение решения уравнений, 2 – хватит, введите соответствующую цифру”;
INPUT t
IF t = 1 THEN 5 ELSE IF t = 2 THEN STOP
Для завершения работы программы применен оператор STOP. А теперь замените его оператором END и объясните различия.
Предлагается усложнить программу и вывести корни квадратного уравнения и по признаку равенства действительных корней, т.е. для случая d = 0.
Составим программу с использованием случайных чисел – функция RND: на координатной плоскости выбрана случайная точка: -10 < x < 10; -10 < y < 10. Определить, в какой координатной четверти она находится и ее расстояние до начала координат.
----Программа 5.2.Положение точки в координатной плоскости---------
x = -9 + INT(19 * RND)
y = -9 + INT(19 * RND)
PRINT "("; x; ","; y; ")"
r = SQR(x ^ 2 + y ^ 2)
IF x > 0 AND y > 0 THEN PRINT "Точка находится в I четверти, расстояние до начала координат"; r
IF x < 0 AND y > 0 THEN PRINT "Точка находится в II четверти, расстояние до начала координат"; r
IF x < 0 AND y < 0 THEN PRINT "Точка находится в III четверти, расстояние до начала координат"; r
IF x > 0 AND y < 0 THEN PRINT "Точка находится в IV четверти, расстояние до начала координат"; r
Следующие задачи выполните самостоятельно, введите в ЭВМ, добейтесь безусловно верной работы программ и представьте на проверку преподавателю.
5.3.Составить программу, классифицирующую треугольники (остроугольные, прямоугольные, тупоугольные).
5.4.Даны 2 точки в прямоугольной системе координат. Определить какая из точек ближе к началу координат.
5.5.Задана величина угла d в градусах. Определить в какой четверти он находится.
5.6.В киоске продается газета стоимостью 5 руб. и журнал стоимостью 15 руб. Составить программу, которая спрашивает о желании покупателя (журнал или газета?), принимает деньги и предлагает причитающуюся сдачу.
5.7.Даны два действительных числа x, y. Найти среднее геометрическое, если x,y>0 среднеарифметическое этих чисел x,y<0.
5.8.Определить принадлежит ли введенная точка кругу с центрам (0;0) и радиусом R.
5.9.Составить программу, которая спрашивала бы сокращенное имя, а печатало полное для пяти ваших друзей. Ввод незнакомого имени должен провоцировать заявление типа: я с Вами не знаком.
5.10.Напишите программу, которая после ввода цифры с клавиатуры распечатывает ее буквами, т.е. если введена 1, то выводит “один”, если 2, то “Два” и т.д.
5.11.В зависимости от цвета светофора выдавать сообщение: стой, иди, жди.
5.12.По введенной пользователем температуре воздуха выдать одно из сообщений: „Хорошая погода”, „Плохая погода”.
5.13.Запросить у пользователя стороны двух прямоугольников. Выдать сообщение, у какого прямоугольника большая площадь.
5.14.Заданы площади квадрата и круга. Выдать сообщение, поместится ли квадрат в круге или круг в квадрате.
5.15.Ссгенерируйте случайное число из (0;20). Выдайте сообщение, принадлежит ли это число интервалу (5;15).
Задача для самостоятельной разработки дома. Специалисту необходимо настроить торговый автомат, реализующий два вида товара, для определенности – молоко и кефир в пакетах. Цена в течение дня не изменяется, рекомендуется задать ее операторами LET или DATA – READ. Организовать диалог примерно в такой форме.
“Сколько молока и кефира покупаете?” Покупатель вводит два натуральных числа. С Вас _ рублей, _ копеек, сколько платите?” Если покупатель предлагает сумму меньшую, чем стоит покупка, пожурить его и предложить последний вопрос. “Получите _ пакетов молока, _ пакетов кефира и сдачу: _ рублей, _ копеек.” предоставить выбор: следующий покупатель или закрыто на обед. Это увлекательная задача должна понравиться Вам.
В заключение занятия предлагается выполнить письменную самостоятельную работу, цель которой проверить умение набирать формулы и использование IF…THEN.
Варианты работы:
По введенному пользователем значению аргументов вычислить значение функций, если
Дано: действительное число x. Вычислить f(x), если:
При х > 2 выдать сообщение "Аргумент не входит в область определения"
Дано: действительное число x. Вычислить f(x), если:
При x <-3 и x > 5 выдать сообщение "Аргумент не входит в область определения"
Дано: действительное число x. Вычислить f(x), если:
При x <-4 и x > 4 выдать сообщение "Аргумент не входит в область определения"
Дано: действительное число x. Вычислить f(x), если:
При x <-1 и x > 5 выдать сообщение "Аргумент не входит в область определения"
Дано: действительное число x. Вычислить f(x), если:
При x <-1.5 и x > 2 выдать сообщение "Аргумент не входит в область определения"
Что нового Вы узнали и чему научились на занятии №5?