Онлайн
библиотека книг
Книги онлайн » Разная литература » Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Шрифт:

-
+

Закладка:

Сделать
1 ... 145 146 147 148 149 150 151 152 153 ... 192
Перейти на страницу:
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.

Многострочный 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

Строки начала и конца процедуры записаны

1 ... 145 146 147 148 149 150 151 152 153 ... 192
Перейти на страницу: