к оглавлению

Реализации разветвляющихся алгоритмов. Форматы оператора IF... THEN

Программ линейной структуры на практике нет или почти нет. Программа на любом языке должна “уметь” осуществлять ВЫБОР в зависимости от тех или иных условий. Такой выбор определяет дальнейший ход решения задачи, обработки данных и т.д.

Этот выбор реализуется оператором 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?

  • познакомились с программами разветвляющихся структур;
  • усвоили и закрепили на практике форматы оператора IF..THEN;
  • познакомились на конкретных примерах с программами, реализующие разветвляющиеся алгоритмы;
  • ознакомились с типовыми задачами, решение которых предполагает использование IF..THEN;
  • закрепили умение программировать математические формулы на языке QB;

Знаете ли Вы, что абстракция через спецификацию - это прием программирования, позволяющий абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры. Абстракция через спецификацию позволяет абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution