к оглавлению

Организация простейших меню в бейсик - программах. Более сложные конструкции использования оператора 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.Выход из мира сказок"

PRINT

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?

к оглавлению

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

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

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


Рыцари теории эфира
 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