Шрифт:
Закладка:
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.
Многострочный If
Вспомним недавнюю задачу: Если а не равно 4, выполнить операторы Ь=3 и Print b, а в противном случае — операторы Ь=0, а=Ь+5 и с=0. Вот одно
строчный оператор If, решающий эту задачу:
If а <> 4 Then b=3: Print b Else Ь=0: а=Ь+5: с=0
Однако, часто количество операторов после Then и Else бывает гораздо большим, да и сами эти операторы бывают гораздо более сложными и длинными. В этом случае строка становится неудобочитаемой, да и вообще не умещается на экране. Для таких случаев создан многострочный (или блочный) оператор If. Вот как решается наша задача с его помощью:
If а <> 4 Then
Ь=3
Print Ь
Else
Ь=0
а=Ь+5
с=0
End If
Конструкция End If означает просто, что в этом месте оператор If заканчивается.
Часть Else может и отсутствовать. Например,
If а <> 4 Then
Ь=3
Print Ь
End If
Самое замечательное в блочном If то, что здесь можно одно за другим проверять несколько условий. Проиллюстрирую на примерах.
Задача: В компьютер вводится целое число а.
Если а<0, то компьютер должен сказать "Число отрицательно".
Если а=0, то компьютер должен сказать "Вы ввели нуль".
Если а>100, то компьютер должен сказать "Число большое".
В остальных случаях компьютер ничего не должен говорить, а только вычислить и напечатать его квадрат.
В любом случае после всего этого компьютер должен сказать "До свидания".
Вот программа:
Private Sub Command1_Click()
а = InputBox("Введите число")
If а < 0 Then
MsgBox ("Число отрицательно")
Elself а = 0 Then
MsgBox ("Вы ввели нуль")
Elself а > 100 Then
MsgBox ("Число большое")
Else
Print а^2
End If
MsgBox ("До свидания!")
End Sub
Elself переводят так — "иначе если". Получается вот что: Если а < 0, то.. иначе если а = 0, то иначе если а > 100, то
Блочный If выполняется так: Сначала проверяется первое условие (а < 0). Если оно не выполняется, то Visual Basic переходит к проверке второго условия(а = 0) и так далее. Наткнувшись наконец на условие, которое выполняется, Visual Basic выполняет операторы, стоящие после его Then и на этом заканчивает работу, даже если ниже есть условия, которые тоже выполняются. Если не выполняется ни одно из условий, Visual Basic выполняет операторы, стоящие за Else.
Вот синтаксис многострочного оператора If:
If условие Then
операторы
операторы
………….
[Elself условие Then
операторы
операторы
…………]
………………….
[Else
операторы
операторы
…………]
End If
Частей Elself может быть сколько угодно или совсем не быть. Часть Else, если она есть, то одна и стоит последней.
Имейте в виду, что у вас нет права, экономя место по вертикали экрана, объединять строки многострочного оператора If, например, так:
If условие Then операторы Elself операторы
и я вам не советую (а часто вы и не сможете) переносить слова Then, Elself и другие со своего законного места, например, так:
If условие
Then операторы
Elself операторы
Задание 24: Компьютер спрашивает пользователя, как его зовут, а затем приветствует его в соответствии с именем: Колю — "Привет", Васю — "Здорово", Джона — "Hi", а остальных — "Здравствуйте". Для Васи, кроме этого, он красит форму в зеленый цвет.
Задание 25: Видоизменить диалог с компьютером, начатый ранее. Пусть компьютер, узнав возраст человека, дальнейшую беседу ведет по двум вариантам. Если возраст больше 17, то компьютер должен задать вопрос: "В каком институте ты учишься?" и получив ответ, глубокомысленно заметить "Хороший институт". Если же возраст меньше или равен 17, то соответственно — "В какой школе ты учишься?" и "Неплохая школа". После этого, каков бы ни был вариант, компьютер должен попрощаться: "До следующей встречи!".
Ступенчатая запись программы
Ступенчатая запись программы — это как правила хорошего тона — можно и не соблюдать, но посмотрят косо.
Возьмем бессмысленную программу и посмотрим, как она записана. Конкретнее — обратим внимание на то, на что не обращает внимания компьютер, а именно на отступы от левого края листа в записи каждой строки.
Private Sub Command1_Click()
а = InputBox("Введите число")
If а > 4 Then
b=3
Print b
Else
b=0
a=b+5
c=0
End If
b=5
MsgBox ("До свидания!")
End Sub
Строки начала и конца процедуры записаны