Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
----Программа 5.1. Решить квадратное уравнение ax2 + bx + c =
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;
Занятие 6. Организация простейших меню в бейсик - программах. Более сложные конструкции использования оператора IF...THEN
На занятии 5 были рассмотрены простейшие конструкции реализации разветвляющихся алгоритмов. Рассмотрим более сложные конструкции с введением новых понятий и операторов.
Типовые задачи: составление тренажеров, тестов, простейших меню в бейсик программах.
Начнем с задачи: первокласснику необходимо хорошо запомнить таблицу умножения. Составляем для него специальный тренажер.
Программа может выглядеть так.
*****Программа 6.1 Простейший тренажер****
INPUT”Сколько примеров тебе задать”;n
(Введем понятие СЧЕТЧИКА. Это целочисленная переменная, которая увеличивает свое значение как правило, на единицу при выполнении определенных условий)
k = 0:’**Обнуление счетчика неверных ответов
k1 = 0:’**Обнуление счетчика верных ответов
5 a = 1 + INT(10*RND): b = 1 + INT(10*RND): с = a * b
‘**формирование случайных целых чисел и расчет их произведения
10 ? a; “x”; b;” = “;:INPUT m:’**печать вопроса и запрос ответа
IF m<>c THEN
?”Неверно, попробуй еще”
k = k + 1
IF k < 4 THEN 10
END IF
‘**В полном формате IF..THEN анализируется ответ и дается всего 4 попытки на ввод правильного ответа
k1 = k1 + 1:’**Подсчет числа верных ответов
IF n < k1 THEN?”Умница, следующее задание”:GOTO 5
Предлагается усложнить эту программу, выдавать в заключение резюме: с какой попытки и сколько ученик дал правильных ответов.
Более сложные программы представляют тесты, модные в наше время. В качестве пробного примера приведем тест для второклассника, осваивающего устный счет в пределах 100, кстати, второклассник не знает отрицательных чисел и это необходимо учесть при составлении теста.
Программа может выглядеть так.
******Программа 6.2****
10 CLS : INPUT "Сколько примеров тебе предложить"; n
k = 0:’***Обнуление счетчика предлагаемых примеров
kp = 0:’***Обнуление счетчика правильных ответов
IF n < 10 THEN PRINT "Это очень мало!" ELSE 12
PRINT "Нажми любую клавишу и закажи побольше примеров"
11 IF INKEY$ = "" THEN 11 ELSE GOTO 10
(Здесь впервые нами использована функция INKEY$. Она принимает СИМВОЛЬНОЕ значение, один символ, первой нажатой клавиши. Если она не имеет никакого значения – клавиша не нажата, т. е “” – «пусто-пусто», то управление передается на ту же 11 строку, пока не будет нажата какая-либо клавиша)
12 t = SGN(-.5 + RND): IF t = -1 THEN a$ = "-" ELSE a$ = "+"
(В строке 12 формируется знак + или -, т. е. определяется на сложение или вычитание будет выполнятся пример)
13 IF t = -1 THEN 50
(Строка 13: если упражнение на вычитание, то управление передается на строку 50)
15 a = INT(10 + 90 * RND): b = INT(10 + 80 * RND)
IF a + b > 100 THEN 15
(Формирование слагаемых с проверкой условия: не превышает ли сумма числа 100)
k = k + 1’***Увеличение счетчика примеров на 1
PRINT a; a$; b; "="; : INPUT c: IF c = a + b THEN kp = kp + 1
(Увеличение счетчика правильных ответов)
GOTO 100
50 a = INT(10 + 90 * RND): b = INT(10 + 80 * RND)
IF a < b THEN 50’***Проверка условия: уменьшаемое меньше вычитаемого)
k = k + 1
PRINT a; a$; b; "="; : INPUT c: IF c = a - b THEN kp = kp + 1
100 IF k < n THEN 12’***”Идем за следующим прмером****
(Далее формируем оценку, разберитесь самостоятельно - как)
IF kp / n > .9 THEN oc = 5
IF kp / n <= .9 AND kp / n > .75 THEN oc = 4
IF kp / n <= .75 AND kp / n > .5 THEN oc = 3
IF kp / n <= .5 THEN oc = 2
PRINT "Ваша оценка"; oc
PRINT "1 - продолжим, 2 - достаточно. Нажмите цифру"
200 b$ = INKEY$
IF b$ = "1" THEN 10
IF b$ = "2" THEN END ELSE 200
И наконец, на этом занятии рассмотрим организацию простейших меню в бейсик - программах. Приведем наглядный пример.
*****Программа 6.3**
5 CLS: PRINT TAB(30); "МЕНЮ"
PRINT TAB(20); "1.Сказка про белого бычка"
PRINT TAB(20); "2.Сказка про серого волка"
PRINT TAB(20); "3.Сказка про козленка"
PRINT TAB(20); "4.Сказка про веселых гусей"
PRINT TAB(20); "5.Сказка про курочку рябу"
PRINT TAB(20); "6.Выход из мира сказок"
100 INPUT”Введите соответствующую цифру”;t
ON t GOTO 110, 120, 130, 140, 150, 160
(Впервые применен оператор ON)
110 CLS : PRINT TAB(20); "1.Сказка про белого бычка"
PRINT”&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&”:GOTO 200
GOTO 200
120 CLS : PRINT TAB(20); "2.Сказка про серого волка"
PRINT "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&": GOTO 200
130 CLS : PRINT TAB(20); "3.Сказка про козленка"
PRINT "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&": GOTO 200
140 CLS : PRINT TAB(20); "4.Сказка про веселых гусей"
PRINT "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&": GOTO 200
150 CLS : PRINT TAB(20); "5.Сказка про курочку-рябу"
PRINT "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&": GOTO 200
160 STOP
200 IF INKEY$ = "" THEN 200 ELSE 5
На примере этой простой программки по организации простенького меню необходимо хорошо уяснить как работает оператор ON и функция INKEY$. По возможности для закрепления приемов использования IF..THEN, INKEY$ можно использовать и другие конструкции. Например, передачу управления в строках 100-160 возможно организовать следующим образом:
100 t$=INKEY$
<Акцентируйте внимание на глаголах: «введите» и «нажмите»>
IF t$=”1” THEN 110 ELSE IF t$=”2” THEN 120
IF t$=”3” THEN 130 ELSE IF t$=”4” THEN 140
IF t$=”5” THEN 150 ELSE IF t$=”6” THEN 160 ELSE 100
Необходимо отметить, что при организации меню или других фрагментов выбора использование буквенных клавиш иногда приводит начинающих пользователей к естественным проблемам, они забывают, что под каждой клавишей 4 различных символа.
Пример.
?”Продолжить работу (Д) или выйти из программы (В), нажмите соответствующую клавишу”
100 t$=INKEY$
IF t$=”Д” OR t$=”д” OR t$=”L” OR t$=”l” THEN 200
IF t$=”В” OR t$=”в” OR t$=”D” OR t$=”d” THEN STOP ELSE 100
Фрагмент «реагирует» только на указанные символы, но такая конструкция не очень удобна.
5.Программа, которая запрашивает неполное имя, а выдает полное, может выглядеть, например, так:
…………………Программа 6.5…………………………………….
10 CLS : PRINT TAB(35); "Для друзей": PRINT
PRINT TAB(15); "Введите своё имя с заглавной буквы не полное": PRINT
PRINT TAB(20); : INPUT a$
b$ = "Тебя зовут"
IF a$ = "Миша" THEN PRINT b$; " Михаил"
IF a$ = "Ира" THEN PRINT b$; " Ирина"
IF a$ = "Лёха" THEN PRINT b$; " Алексей"
IF a$ = "Аня" THEN PRINT b$; " Анна"
IF a$ = "Женя" THEN PRINT b$; " Евгений"
PRINT "Я тебя не знаю": PRINT
PRINT TAB(15); "Если хочешь попробовать еще введи 1"
PRINT TAB(15); "Если хочешь уйти введи 2"
INPUT a
IF a = 1 THEN 10 ELSE IF a = 2 THEN STOP
В качестве домашнего задания запишите тексты программ с более простыми конструкциями на закрепление IF..THEN.
1.Даны три положительных числа. Могут ли эти числа выражать длины сторон треугольника? Если да, то определите вид этого треугольника: остроугольный, прямоугольный, тупоугольный
2.Даны 2 точки в прямоугольной системе координат. Определить какая из точек ближе к началу координат.
3.Точка задана своими координатами в прямоугольной системе координат. Определить: какой четверти, или какой координатной оси принадлежит эта точка.
4.Остроумно реализуйте фрагмент русской сказки о витязе, который на коне перед камнем с надписью: налево пойдешь.. направо пойдешь.. прямо пойдешь.
5.Дано комплексное число z = a + bi. Найдите его модуль и аргумент. Помните, что аргумент комплексного числа принадлежит интервалу
(-180o; 180o).
6.Дан квадрат с вершинами в точках (-1; -1); (-1; 1); (1; -1); (1; 1). В него вписан круг единичного радиуса. Генерируйте точки, принадлежащие квадрату, подсчитывайте их число, а также подсчитывайте число точек, принадлежащих кругу. Через каждую 1000 точек рассчитывайте отношение точек, принадлежащих кругу к числу всех точек, это отношение умножайте на площадь квадрата, т. е. на 4, и выдавайте сообщение. Вы будете удивлены результатом!
7.Составьте меню, содержащее темы курса математики, которые Вы изучили в первом семестре. Постарайтесь вспомнить, о чем шла речь в каждой из тем.
8.Известно, что если приращение функции в точке положительно, то эта функция в данной точке возрастает, в противном случае – убывает. Выдайте соответствующее сообщение.
9.Переработайте тренажер (Программа 6.1) и получите из проверочный тест с выставлением оценки.
10.Занимательная задача, содержащаяся во всех научно-популярных изданиях. Пусть Ваша программа реализует игру «Угадай число». Программа генерирует двузначное (трехзначное) натуральное число и предлагает пользователю угадать это число. Играющий вводит свои догадки, программа сравнивает и выдает одно из сообщений: «Недолет», «Перелет» или «Молодец! Угадал с _ попыток».
Разработайте дома 2-3 из предложенных задач, запишите их тексты, по возможности, разместите на магнитном носителе, чтобы было удобно проверить Вашу работу.
Что нового Вы узнали, какие умения и навыки приобрели на занятии №6?
· познакомились с более сложными программами разветвляющихся структур на примерах;
· усвоили и закрепили на практике форматы оператора IF..THEN;
· познакомились с методикой организации простейших меню в QB;
· ознакомились c оператором ON, функцией INKEY$ при организации разветвляющихся структур;
· получили навыки в умении программно реализовать несложные текстовые задачи.
Занятие 7. Составление, отладка и тестирование программ
разветвляющихся структур.
Цели занятия: закрепление и контроль усвоения, простейших умений в использовании оператора IF..THEN,
Вам самостоятельно предстоит конструировать несложные программы разветвляющихся структур. Вам будет предложено целый ряд заданий различного объема и сложности. Оценивать Вашу деятельность преподаватели будут по объему выполненной работы, по подробности помощи, оказываемой Вам со стороны преподавателя.
Проверим выполнение домашнего задания: настоящее занятие – продолжение выполнения этих заданий.
Рассмотрим задачу 6 из предыдущего занятия. Вы понимаете, что отношение числа точек, попавших в круг, к числу всех точек – это отношение площадей круга и квадрата. Если это отношение умножить на площадь квадрата, то получим площадь круга. Так как радиус круга равен 1, то его площадь численно равна числу
.

Вот один из вариантов программы.
SCREEN 9: COLOR 14, 1: CLS
RANDOMIZE TIMER
n = 0: '****Обнуление счетчика всех точек*****
k = 0: '****Обнуление счетчика точек, попавших в круг*****
'***Генерируем x и y, попадающие в квадрат 2х2
10 x = -1 + 2 * RND: y = -1 + 2 * RND
n = n + 1: '****Увеличиваем значение счетчика на 1
IF SQR(x ^ 2 + y ^ 2) <= 1 THEN k = k + 1: '****Увеличиваем значение счетчика на 1**
IF n / 9999 = n \ 9999 THEN
s# = k / n * 4
PRINT "При n= "; n; "площадь круга "; s#
END IF
GOTO 10
А так может выглядеть один из вариантов занимательной игры «Угадай число»
SCREEN 9: COLOR 14, 1: CLS
RANDOMIZE TIMER
x = INT(10 + 90 * RND)
k = 0
10 PRINT TAB(20); : INPUT "Введите n"; n: k = k + 1
IF n < x THEN PRINT TAB(20); "Недолет": GOTO 10
IF n > x THEN PRINT TAB(20); "Перелет": GOTO 10
PRINT TAB(20); "Молодец! Угадал с "; k; "-ой попытки"
Следующие задачи для самостоятельной разработки. Постарайтесь разобраться в их смысле, составить алгоритм, разработать программу, отладить ее, подготовить доклад преподавателю о работе Вашего программного продукта.
1.Пользователем задана функция y = f(x). Выдать одно из сообщений: «Функция четная», «Функция нечетная», «Функция не относится ни к четным, ни к нечетным». Усложнить задачу, организовав предварительный диалог с пользователем: «Вы вели в программу функцию для исследования на четность – нечетность?»…
2.Пользователем заданы координаты точки на плоскости. Проверить, лежит ли эта точка в прямоугольнике, определяемой координатами вершин (-2;-2); (-2;4); (5;4); (5;-2).
3.Задана величина угла d в градусах. Определить в какой четверти он находится. Та же задача для случая, если величина угла задана в радианах.
4.Даны два действительных числа x, y. Найти среднее геометрическое, если x, y>0 среднее арифметическое этих чисел x, y<0, среднее гармоническое, если числа имеют разные знаки.
5.Определить принадлежит ли введенная точка кругу с центром (0;0) и радиусом R.
6.Написать программу, которая спрашивала бы сокращенное имя, а печатало полное для пяти ваших друзей. Ввод незнакомого имени должен провоцировать заявление типа "Я с Вами не знакома"
7.Составьте программу, которая после ввода цифры с клавиатуры распечатывает ее буквами, т. е. если введена 1, то выводит «один», если 2, то «два» и т. д.
8.Задать с клавиатуры стороны двух прямоугольников. Выдать сообщение: у какого прямоугольника большая площадь или площади равны.
9.Выдать сообщение: принадлежит ли случайное число х из отрезка [2n; 2m] отрезку [n;m].
10.Заданы площади квадрата и круга. Определить поместится ли квадрат в круге или круг в квадрате.
11.Пользователь вводит натуральное число меньше 100 обозначающее его возраст. Выдайте сообщение: Вам 16 лет, или 41 год, или 54 года.
12.Вы изучаете на уроках математики производную и знаете, что если производная функции в точке положительна, то функция возрастает, если производная отрицательна, то функция убывает. Численными методами производная находится по формуле:
f`(x) =
, где h какое-либо малое число, например 0,01. Задача. Задана функция y = f(x) и значение аргумента х0. Определите, возрастает или убывает эта функция в заданной точке.
13.Даны 2 точки в прямоугольной системе координат. Определить какая из точек ближе к началу координат.
14.По координатам точки определить какой четверти или какой координатной оси она принадлежит
15.Пользователем задана функция y = f(x). Выдать одно из сообщений: «Функция четная», «Функция нечетная», «Функция не относится ни к четным, ни к нечетным».
16.Составить программу, которая проверяет, лежит ли точка с координатами (x, y) в прямоугольнике (0;0); (0;2); (5;2); (5;0)
17.Задана величина угла в градусах. Определить в какой четверти он находится.
18.Задана величина угла в радианах Определить в какой четверти он находится.
19.Заданы три числа. Выдать одно из сообщений: треугольник остроугольный, треугольник тупоугольный, треугольник прямоугольный, эти число не могут быть сторонами треугольника.
20.Определить принадлежит ли введенная точка кругу с центром (0;0) и радиусом R.
21.Написать программу, которая спрашивала бы сокращенное имя, а печатало полное для трех ваших друзей. На незнакомое имя программа должна ответить "Я с Вами не знакома"
22.Напишите программу, которая после ввода цифры с клавиатуры распечатывает ее буквами, т. е. если введена 1, то выводит «один», если 2, то «два» и т. д.
23.В зависимости от цвета светофора выдавать сообщение: стой, иди, жди.
24.Выдать сообщение: принадлежит ли число х интервалу [n;m].
25.Заданы площади квадрата и круга. Определить поместится ли квадрат в круге или круг в квадрате.
26.Пользователь вводит натуральное число меньше 100 обозначающее его возраст. Выдайте сообщение: Вам 16 лет, или 41 год, или 54 года.
27.Задан рост 10-ти призывников. На подводной лодке могут служить те, кто выше 165см. и ниже 175см. Сколько из них будет служить на подводной лодке?
28.Даны 2 точки в прямоугольной системе координат. Определить какая из точек ближе к началу координат.
29.По координатам точки определить какой четверти или какой координатной оси она принадлежит
30.Пользователем задана функция y = f(x). Выдать одно из сообщений: «Функция четная», «Функция нечетная», «Функция не относится ни к четным, ни к нечетным».
31.Составить программу, которая проверяет, лежит ли точка с координатами (x, y) в прямоугольнике (0;0); (0;2); (5;2); (5;0)
32.Задана величина угла в градусах. Определить в какой четверти он находится.
33.Задана величина угла в радианах Определить в какой четверти он находится.
34.Заданы три числа. Выдать одно из сообщений: тр-к косоугольный, тр-к тупоугольный, тр-к прямоугольный, эти число не могут быть сторонами треугольника.
35.Определить принадлежит ли введенная точка кругу с центрам (0;0) и радиусом R.
36.Написать программу, которая спрашивала бы сокращенное имя, а печатало полное для трех ваших друзей. На незнакомое имя программа должна ответить "Я с Вами не знакома"
37.Напишите программу, которая после ввода цифры с клавиатуры распечатывает ее буквами, т. е. если введена 1, то выводит «один», если 2, то «два» и т. д.
38.В зависимости от цвета светофора выдавать сообщение: стой, иди, жди.
39.Выдать сообщение: принадлежит ли число х в интервалу [n;m].
40.Заданы площади квадрата и круга. Определить поместится ли квадрат в круге или круг в квадрате.
41.Пользователь вводит натуральное число меньше 100 обозначающее его возраст. Выдайте сообщение: Вам 16 лет, или 41 год, или 54 года.
42.Задан рост 10-ти призывников. На подводной лодке могут служить те, кто выше 165см. и ниже 175см. Сколько из них будет служить на подводной лодке?
Что нового Вы узнали и чему научились на занятии №7
· закрепили понимание программ разветвляющихся структур;
· на примерах ознакомились с методом Монте - Карло;
· узнали, как определять переменные двойной точности;
· научились создавать несложные конструкции, реализующие выбор по задаваемым условиям.
Занятие 8. Понятие о циклах.
Организация циклов с использованием IF…THEN и DO.. LOOP
В теоретической части изучения дисциплины Вас ознакомили с понятием циклов, циклических алгоритмов. Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов.
Цикл программы – последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия.
Программную реализацию организации циклов с использованием IF..THEN продемонстрируем на достаточном количестве различных примеров. Самые «яркие» и популярные задачи – это задачи на суммирование, с них и начнем демонстрацию программ по организации циклов.
1.Найти сумму всех двузначных чисел. Программа может выглядеть, например, так.
…………………Программа 8.1…………………………………….
s = 0: n = 9
10 n = n + 1
if n < 100 then s = s + n: goto 10
?”Сумма двузначных чисел равна”; s
Проверка условия n<100 проводится ДО операции суммирования.
Обратите внимание на конструкции типа n = n + 1 и s = s + n. Они на первых порах трудно воспринимаются студентами т. к. с точки зрения математики они бессмысленны.
Составим эту же программу, организовав проверку условия «число двузначное» ПОСЛЕ операции суммирования.
…………………Программа 8.1.2…………………………………….
s = 0: n = 9
10 n = n + 1
s = s + n
if n < 100 then 10
?”Сумма двузначных чисел равна”; s
Одними из самых популярных задач являются задачи на суммирование по формуле с прекращением его по различным условиям.
Обратите внимание на «золотое правило» организации суммирования: s = 0
2.Найти сумму членов числовой последовательности с общим членом an =
,
используя различные варианты по завершению суммирования, например: 2.1 сумму k членов, 2.2 суммировать до тех пор, пока общий член не станет меньше заданного ε.
…………………Программа 8.2…………………………………….
s = 0: i = 0
input”Задайте точность ε”;e
10 i = i +1: a = i^3/(2^i + i)
if a > e then s = s + a: goto 10
?”Запишите сумму”;s
Переработайте программу и найдите сумму 50 членов числовой последовательности.
Как и прежде, и в дальнейшем подчеркиваем, что приводится один из возможных вариантов программы, рекомендуем и коллегам и студентам искать и обязательно находить другие варианты.
3.Аналогично организуются циклы по нахождению произведений. Пример: найти произведение 50 сомножителей числовой последовательности с общим членом: an = ![]()
…………………Программа 8.3…………………………………….
i = :0 p = 1: ‘******Золотое правило нахождения произведения**
10 i = i + 1
p = p*(i + 1)/(i^2 + 3)
if < 50 then 10
?”Пишите искомое произведение”;p
В QB существуют и другие способы организации циклических программ. Наиболее удобной является конструкция DO…LOOP. Законспектируйте ее форматы.
DO WHILE <условие, при ВЫПОЛЕНИИ которого выполняется цикл>
<операторы, тело цикла>
LOOP
Обратите внимание, что выполняемое условие проверяется ДО операторов цикла. Возможна проверка ПОСЛЕ цикла:
DO
<операторы, тело цикла>
LOOP WHILE <условие, при ВЫПОЛЕНИИ которого выполняется цикл>
Иногда удобнее использовать конструкции «отрицания», т. е. исполнение цикла происходит при НЕВЫПОЛНЕНИИ условия.
DO UNTIL <условие, при НЕВЫПОЛЕНИИ которого выполняется цикл>
<операторы, тело цикла>
LOOP
или
DO
<операторы, тело цикла>
LOOP UNTIL <условие, при НЕВЫПОЛЕНИИ которого выполняется цикл>
Приведем конкретные примеры.
4.Дано a и n. Вычислить сумму
.
…………………Программа 8.4…………………………………….
LOCATE 10, 25: INPUT "Введите значение а "; a
LOCATE 12, 25: INPUT "Число слагаемых"; n
i = 0: s = 0
DO WHILE i < n
i = i + 1
s = s + 1 / a ^ i
LOOP
LOCATE 14, 25: PRINT "Запишите сумму"; s
5. Вывести на экран таблицу умножения по требованию.
…………………Программа 8.5…………………………………….
REM****Таблица умножения по требованию******
LOCATE 3, 4
INPUT "Введите число для распечатки таблицы умножения"; a
n = 0
DO WHILE n < 10
n = n + 1
PRINT TAB(10); a; "x"; n; "="; a * n
LOOP
Или так:
…………………Программа 8.5.1…………………………………….
LOCATE 3, 4
INPUT "Введите число для распечатки таблицы умножения"; a
n = 0
DO
n = n + 1
PRINT TAB(10); a; "x"; n; "="; a * n
LOOP WHILE n < 10
6.Вы знаете две знаменитые математические константы: число p и число e. Эйлер открыл число, названное его именем, так: это предел на бесконечности выражения
![]()
Составим программу вычисления числа Эйлера, выдавая результат через n, кратные 10000, чтобы убедиться, что такой предел действительно существует. Эта программа не имеет естественного окончания, потому выход из нее только через «аварийный» останов.
Один из вариантов программы.
…………………Программа 8.6…………………………………….
CLS : s# = 0: n = 0
10 n = n + 1: m# = LOG(n + 1)
s = s + 1 / n
IF n / 10000 = n \ 10000 THEN PRINT "при n="; n; "c= "; s# - m#
GOTO 10
В этой программе использовались переменные, имя которых оканчивается знаком #. Это признак переменной ДВОЙНОЙ точности, запустив программу, Вы в этом убедитесь.
8.Условия могут быть «вложенными». Рассмотрим популярную задачу. Найти все числа в пределах 1000, делящиеся, например, на 73
…………………Программа 8.8………………………………….
10 IF i < 1000 THEN
i = i + 1
IF i MOD (73) = 0 THEN PRINT i
GOTO 10
END IF
Использовалась функция MOD. Конструкцию i MOD (73) = 0 можно описать так: остаток от деления числа i на 73 равен нулю.
9.Еще одна популярная задача. Найти все делители введенного пользователем числа.
…………………Программа 8.9………………………………….
LOCATE 2, 29: INPUT "Введите число"; n
10 IF i < n THEN
i = i + 1
IF n MOD (i) = 0 THEN PRINT TAB(10); i
GOTO 10
END IF
10.В заключение урока рассмотрим еще одну задачу на суммирование.
В операторе DATA заданы 10 целых, среди которых положительные и отрицательные, чисел. Найдите количество и суммы положительных и отрицательных чисел.
…………………Программа 8.10…………………………………….
DATA 1,-3,9,-4,7,8,-3,0,-4,2
k = 0:’****Это счетчик чтения чисел
kp = 0:’****Это счетчик числа положительных чисел
kо = 0:’****Это счетчик числа отрицательных чисел
sp = 0:’****Это сумма положительных чисел
so = 0:’****Это сумма отрицательных чисел
5 READ a: k = k + 1
IF a > 0 THEN kp = kp + 1: sp = sp + a
IF a < 0 THEN ko = ko + 1: so = so + a
IF k < 10 THEN 5
?”Сумма положительных чисел”;sp;”таковых”; kp
?”Сумма отрицательных чисел”;sо;” таковых”; kо
Вам предлагается интересное домашнее задание.
.Двое любителей азартных игр поочередно бросают по две игральных кости, первый поставил на сумму очков 7, второй – на 8. Игра продолжается бесконечно. Кто из них выиграет? Генерируя бросание костей случайными числами, зациклите программу и выдавайте результат в процентах для каждого игрока через каждые 1000 бросаний костей каждым игроком. Таким образом, Вы узнаете, что чаще выпадает в сумме 7 или 8.
Что нового Вы узнали и чему научились на занятии №8
· ознакомились на конкретных примерах с организацией программ циклических структур средствами операторов IF…THEN и DO…LOOP;
· открыли для себя еще одну математическую константу: число Эйлера;
· узнали, как определять переменные двойной точности;
· научились организовывать счетчики и суммирование по различным условиям;
· научились создавать несложные конструкции, реализующие циклические процессы.
Занятие 9. Составление, отладка и тестирование программ
циклических структур.
Завершающее занятие по составлению и отладке программ разветвляющихся и циклических структур с помощью оператора IF…THEN и DO…LOOP. На этом занятии рассмотрим программирование решений задач различной сложности: простые и более сложные конструкции организации циклов. В то же время, учитывая Ваши индивидуальные способности к программированию, максимально дифференцируем познавательный процесс на этом занятии: сильным – задачи по подготовке к олимпиаде, другим – типовые конструкции.
Вначале рассмотрим занимательные задачи вычисления числа p.
Вычислим число p по различным формулам и по различным программам.
Найти число p
1) по формуле p = 4 *
.
Нетрудно видеть, что общий член ряда (так называется бесконечная сумма) можно выразить так:

|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


