Выбрать главу

Итак, правило простое — при нажатии на F8 Visual Basic выполняет очередной оператор программы и подсвечивает тот оператор, которому предстоит быть выполненным.

Обратите внимание, что сменился режим Visual Basic. Мы знаем пока два режима: режим проектирования [design] и режим работы [run]. Теперь в заголовке главного окна Visual Basic вы видите слово [break]. Это означает, что Visual Basic сейчас находится в режиме прерывания. Можно сказать, что режим прерывания — это режим работы с остановками. Вы можете указать Бэйсику, на каких именно операторах останавливаться. Когда же вы нажимаете на F8, вы приказываете Бэйсику останавливаться на каждом операторе. Такая разновидность режима прерывания называется пошаговым режимом.

F8. Visual Basic выполняет у= а+Ь+1, а следующий оператор подсвечивается. Проверьте, чему сейчас равны а, Ь, у в памяти.

F8. Visual Basic выполняет Debug.Print у + 200, а следующий оператор подсвечивается. В окне Immediate возникает число 217.

F8. Подсветка уходит, так как процедура выполнена. Можно снова жать на кнопку Command1.

Замечание об отладке в пошаговом режиме: При отладке в пошаговом режиме вам часто нужно на экране видеть одновременно окно кода, окно Immediate и саму форму. Но при нажатии на F8 то одно, то другое часто пропадает из вида, будучи закрыто другими окнами. Чтобы этого не происходило, еще до начала отладки расположите окно кода и окно Immediate так, чтобы они не перекрывали друг друга, а главное окно Visual Basic уменьшите до части экрана. Затем после запуска отладки форму перетащите на освободившуюся часть экрана. Тогда окно Visual Basic не будет перекрывать форму и проблема исчезнет.

Итак, компьютер сделал все то, что сделал бы при нажатии Start, но только в медленном темпе.

В любой момент пошагового выполнения программы вы можете вместо F8 нажать Start, которая по такому случаю переименовывается в Continue, и программа продолжит выполняться в обычном режиме.

Оператор присваивания меняет значения переменных величин.

Пока я не рассматривал программы, в которых переменные меняют свою величину. Теперь настало время такую программу рассмотреть:

Dim k As Integer

  Private Sub Command1_Click()

  k = 10: Debug.Print k: k = 25: Debug.Print k: k = 4: Debug.Print k

End Sub

Запишем схематически процесс изменения информации в ячейке к:

Как видите, в процессе работы программы содержимое ячейки к меняется. Так, при выполнении оператора к=25 там вместо значения 10 появляется 25. А куда же девается десятка? Она стирается, то есть компьютер забывает ее безвозвратно. Здесь действует общий принцип работы всех компьютеров:

Если в какое-нибудь место памяти или диска записывается новая информация, то старая информация, записанная там раньше, автоматически стирается, даже если она кому-то и нужна.

Раз теперь вместо 10 в ячейке к находится 25, то оператор Debug.Print к печатает уже 25. (Слова "печатает" и "Print" устарели, они остались от тех времен, когда мониторов еще не было, а вместо них были принтеры. Когда я по старинке говорю, что информация печатается, я подразумеваю, что она появляется на мониторе в том или ином окне.) Следующий оператор к=4 запишет на место 25 четверку, a Debug.Print к ее напечатает. Проверьте.

А что напечатает следующая программа?

Dim f As Integer

Private Sub Command1_Click()

  f=30: f=f+4: Debug.Print f

End Sub

Оператор f=30 запишет в ячейку f число 30. А что сделает странный оператор f=f+4? Не думайте, что это уравнение или что-нибудь в этом роде. Это оператор присваивания, а значит и выполнится он согласно определению оператора присваивания, то есть сначала вычислит правую часть f+4, подставив туда вместо f его значение, взятое из ячейки, и получит 34. Затем число 34 будет записано в ячейку, отведенную под переменную, обозначенную в левой части, то есть опять в ячейку f. При этом старое значение 30 будет стерто. Debug.Print f напечатает 34.

Таким образом, оператор f=f+4 просто увеличивает число в ячейке f на четверку или, другими словами, увеличивает f на 4.

Зачем это нужно? Узнаете позже. Очень даже нужно.

Задание 8:

Определите без компьютера, что будет напечатано при выполнении следующих фрагментов программ:

а=100: а=10*а+1: Debug.Print а

а=100: а= — а: Debug.Print а

а=10: b=25: a=b-a: b=a-b: Debug.Print а, b

Еще об именах

Как правильно дать имя объекту, мы говорили в 0. Переменные же величины мы привыкли обозначать буквами (a, s, d…). Большинство языков программирования, в том числе и Visual Basic, позволяет обозначать переменные именами. Вот два равносильных фрагмента программы:

а=3; | Summa=3;