k=20: k=k+10: If k+10<>30 Then k=8 Else k=k-1
Print k
k=20: k=k+10: If k+10 = 30 Then k=8 Else k=k-1
Print k
р=1: If р>0 Then р=р+5
If р>6 Then р=р+1
Print р
Задания 18–20: В компьютер вводятся два числа. Если первое больше второго, то напечатать их сумму, иначе — произведение. После этого компьютер должен напечатать текст ЗАДАЧА РЕШЕНА.
В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, правда ли, что первый отрезок достаточно мал, чтобы образовать с другими двумя отрезками треугольник.
Указание: Для этого его длина должна быть меньше суммы длин двух других отрезков.
Замечание: Пока не думайте о том, что слишком длинными могут быть второй или третий отрезки.
Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет — только по две. Сколько голов и глаз у дракона, которому N лет?
Если в выражения, входящие в условие оператора If, включить свойства объектов, то вы можете заставить компьютер работать с ними. Например, компьютеру нужно определить, правда ли, что форма красная. Делает это такая программа:
Private Sub Command1_Click()
If Form1.BackColor = vbRed Then MsgBox ("Правда") Else MsgBox ("Неправда")
End Sub
Задание 21: Если кнопка на форме слишком высоко, пусть при нажатии на нее она будет пониже на 200 твипов.
Случайные величины
Без случайных величин компьютер всегда бы, как робот, на одинаковые действия человека реагировал одинаково. Но тогда невозможны игры.
Запустите такую программу:
Private Sub Command1_Click()
р = Rnd Debug.Print p
End Sub
Вот результат: 0,7055475. Это случайное число из диапазона от 0 до 1. Вырабатывает это число функция Rnd.
Щелкнем несколько раз по кнопке. Получим серию случайных чисел:
0,7055475
0,533424
0,5795186
0,2895625
0,301948
Завершим работу программы и снова запустим. Получаем ту же серию:
0,7055475
0,533424
0,5795186
0,2895625
0,301948
Выходит, что числа хоть и случайные, но после каждого запуска одинаковые. Не очень-то, получается, случайные. Как сделать их разными от запуска к запуску? Добавим оператор Randomize:
Private Sub Command1_Click()
Randomize
p = Rnd
Debug.Print p
End Sub
Теперь числа и случайные и разные от запуска к запуску.
Как получить случайное число из диапазона от 0 до 20? Так — р = 20 * Rnd.
А из диапазона от 6 до 7? Так — р = 6 + Rnd. А из диапазона от 200 до 210? Так — р = 200 + 10 * Rnd.
Как получить случайное целое число из диапазона от 200 до 210? Так — р = Int(200 + 11 * Rnd). Подумайте, почему я написал 11, а не 10. Если не можете додуматься, запустите такой проект:
Private Sub Command1_Click()
t = 200 + 11 * Rnd
p = Int(t)
Debug.Print t, p
End Sub
Щелкайте по кнопке, наблюдая за значениями t и р, до тех пор, пока не поймете, в чем тут дело.
Задание 22: "Ловля кузнечика или измеритель шустрости". Создайте проект с большой формой и одной маленькой кнопкой. При нажатии на кнопку она должна прыгать в случайное место формы.
Щелкая по кнопке, старайтесь щелкать как можно чаще. Можете засечь, сколько раз вам удалось щелкнуть за 1 минуту. (В дальнейшем вы сможете научить компьютер, чтобы он сам засекал время и сам подсчитывал количество нажатий. Кстати, попробуйте опередить книгу и сами организуйте подсчет. В этом вам поможет оператор вида k=k+1.)
Указание: Чтобы кнопка прыгнула в случайное место формы, вам достаточно задать случайные значения двум свойствам кнопки — Left и Тор. При этом вы должны добиться, чтобы кнопка не "упрыгивала" с формы.
Подсказка: Вам могла бы понадобиться такая, например, случайная величина — Form1.Width * Rnd. Только имейте в виду, что размеры формы больше размеров ее рабочего пространства на размеры заголовка и бордюров. Поэтому указанную формулу надо немного подкорректировать в сторону уменьшения.
Задание 23: "Угадай число или экстрасенс ли вы". Это ваша первая простейшая игра с компьютером. Компьютер загадывает число — 0 или 1. Ваше дело — отгадать. А дело компьютера — сказать "Угадал" или "Не угадал". Некоторые экстрасенсы утверждают, что благодаря сверхчувственному контакту с компьютером они могут из 100 раз угадать 80.
Программа готова? Настройтесь на контакт! Пуск!
Указание: Здесь вам нужно получить целое число из диапазона от 0 до 1. Получается оно по той же методе, что и целое число из диапазона от 200 до 210.