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

Шрифт:

-
+

Закладка:

Сделать
1 ... 143 144 145 146 147 148 149 150 151 ... 192
Перейти на страницу:
— это высота < 3000 или высота > 3200.

Напишем для примера примитивный алгоритм, позволяющий имитировать вежливое общение компьютера с человеком при включении компьютера:

Покажи на мониторе текст "Здравствуйте, я — компьютер, а вас как зовут?"

Жди ответа с клавиатуры.

Если на клавиатуре человек набрал "Петя" или "Вася", то покажи на мониторе текст "Рад встретиться со старым другом!", иначе покажи на мониторе текст "Рад познакомиться!"

Покажи на мониторе текст "Чем сегодня будем заниматься — программировать или играть?"

Жди ответа с клавиатуры.

Если……………………

Выбор называют ветвлением по аналогии с разветвляющимся деревом (когда мы забираемся на дерево, мы время от времени делаем выбор, по какой из нескольких веток забираться дальше).

Идею разветвления в программе я изложил. Как видите, команды ветвления довольно просты. Как же с помощью таких простых команд запрограммировать сложное поведение компьютера? Ответ вы найдете в материале этой главы. Добавлю только, что вся мыслительная деятельность во всех программах (в том числе и той, что выиграла в шахматы у Каспарова) осуществляется при помощи сложного набора таких вот простых команд ветвления (выбора).

Условный оператор If или как компьютер делает выбор

Теперь посмотрим, как писать разветвляющиеся программы на Visual Basic. Выучим сначала три английских слова:

If читается "иф" переводится "если"

Then читается "зэн" переводится "то"

Else читается "элз" переводится "иначе"

Теперь приведем пример записи нового для вас оператора:

If а=28 Then Print f Else k=44

Переводится он так:

ЕСЛИ а=28 ТО печатай f ИНАЧЕ присвой переменной к значение 44.

Другими словами, мы предлагаем компьютеру сначала подумать, правда ли, что а=28, и если правда, то выполнить оператор Print f, в противном случае выполнить оператор к=44. Таким образом, мы с вами впервые написали оператор,

при выполнении которого компьютер не просто выполняет, что приказано, а сначала думает и делает выбор (пока одного из двух).

Мы видим, что оператор If включает в себя другие операторы, которые выполняются или не выполняются в зависимости от какого-то условия. Тем не менее, вся эта запись считается одним оператором If. Чтобы привыкнуть к оператору If, рассмотрим пару задач.

Задача 1. Компьютер должен перемножить два числа — 167 и 121. Если их произведение превышает 2000, то компьютер должен напечатать текст ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе текст ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого компьютер в любом случае должен напечатать само произведение.

Программа:

Dim a As Integer

Dim b As Integer

Dim у As Integer

Private Sub Form_Load()

   a = 167

   b = 121

   Y = a * b

      If Y > 20000 Then Debug.Print "ПРОИЗВЕДЕНИЕ БОЛЬШОЕ"

      Else Debug.Print "ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ"

    Debug.Print у

End Sub

Пояснение: В процедуре 5 операторов, последний — Debug.Print у. Поскольку эти 5 операторов выполняются по порядку, то он выполнится обязательно.

Обязательно выполните эту программу в пошаговом режиме. Обратите внимание, что подсветка после If у > 20000 Then перескакивает на Debug.Print "ПРОИЗВЕДЕНИЕ БОЛЬШОЕ", а затем на Debug.Print у.

Теперь замените в программе а = 167 на а = 1 и снова выполните программу в пошаговом режиме. Обратите внимание, что теперь подсветка после If у > 20000 Then перескакивает на Debug.Print "ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ", а затем уже на Debug.Print у.

Задача 2. В компьютер вводятся два произвольных положительных числа — длины сторон двух кубиков. Компьютер должен подсчитать объем одного кубика — большего по размеру.

Обозначим а1 — сторону одного кубика, а2 — сторону другого, bo1 — сторону большего кубика, V — объем кубика. Приведем три варианта программы:

ВАРИАНТ 1

Dim a1 As Double

Dim a2 As Double

Private Sub Command1 Click()

   a1 = InputBox("Введите сторону одного кубика")

   а2 = InputBox("Введите сторону другого кубика")

   If a1 > а2 Then Debug. Print a1 * a1 * a1 Else Debug.Print a2 * a2 * a2

End Sub

ВАРИАНТ 2

Dim a1 As Double

Dim a2 As Double

Dim V As Double

Private Sub Command1 Click()

    a1 = InputBox("Введите сторону одного кубика")

    а2 = InputBox("Введите сторону другого кубика")

        If a1 > а2 Then V = a1 * a1 * a1 Else V = a2 * a2 * a2

Debug.Print V

End Sub

ВАРИАНТ 3

Dim a1 As Double

Dim a2 As Double

Dim bo1 As Double

Private Sub Command1 Click()

     a1 = InputBox("Введите сторону одного кубика")

     а2 = InputBox("Введите сторону другого кубика")

        If a1 > а2 Then bo1 = a1 Else bo1 = a2 Debug.Print bo1 * bo1 * bo1

End Sub

Каждый из вариантов должен быть вами понят. Если возникают трудности, то используйте пошаговый режим и следите за значениями переменных. Для каждого варианта пошаговый режим используйте два раза — когда первый кубик больше и когда второй кубик больше. Как видите, одна задача может решаться разными программами.

Итак, если паровая машина избавила человека от тяжелого физического труда, то оператор if избавил человека от тяжелого умственного труда, в нашем случае — от необходимости решать, какое из двух чисел больше другого.

Оператор If можно записывать и без части Else. Например, If s<t Then w=a+1. Это означает, что если s<t, то нужно выполнить оператор w=a+l, в противном случае ничего не делать, а просто перейти к следующему оператору.

Для примера рассмотрим простейшую задачу: В компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введенным словом будет "колхозник", то компьютер должен напечатать вместо него слово "фермер".

Вот как будет выглядеть наша программа-"цензор":

Dim Slovo As String

Private Sub Command1_Click()

    Slovo = InputBox("Введите слово")

        If Slovo = "колхозник" Then Slovo = "фермер"

     Debug.Print Slovo

End Sub

До сих пор мы после Then и после Else писали только по одному оператору. А если нужно больше?

Задача: Если а не равно 4, выполнить операторы Ь=3 и Print Ь, а в противном случае — операторы Ь=0, а=Ь+5 и с=0.

Вот оператор, решающий эту задачу:

If а <> 4

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