Шрифт:
Закладка:
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;
Ь=4-а; | ROBBY=4-Summa;
Debug.Print а, b+50 | Debug.Print Summa, ROBBY+50
В том и другом случае будут напечатаны числа 3 и 51. Очевидно, компьютеру все равно, как мы обозначаем переменные величины или объекты, в смысл имен он не вдумывается и не удивляется, что переменная Summa никакой суммой не является, а просто числом 3.
Многие авторы не рекомендуют использовать в именах русские буквы, говорят, что это опасно. Лично я в связи с этим практически ни разу с большими проблемами не столкнулся. Мой совет: если у вас с английским все ОК, то избегайте русских букв, в противном случае ничего страшного, если вы будете все именовать по-русски.
Примеры правильной записи имен:
a
polnaja_Summmma
tri_plus_dva
s25
а1Ь8 8qqQQQQQQQQQQQQ
oshibka
Это_не_имя
Примеры неправильной записи имен:
polnaja summa — содержится символ (пробел), не являющийся буквой, цифрой или знаком подчеркивания
2as — начинается с цифры
Domby&Son — содержится символ &, не являющийся буквой, цифрой или знаком подчеркивания
Visual Basic игнорирует в именах разницу между строчными и прописными буквами. Так, для него Summa и sUmmA — одно и то же имя. И он присматривает за тем, чтобы в окне кода они были написаны одинаково (но не за всеми русскими именами он так присматривает).
Математика. Запись арифметических выражений
Простые арифметические вычисления лучше делать на калькуляторе, чем на компьютере, а вот сложные — наоборот. В этом разделе вы научитесь правильно вводить в компьютер сложные формулы. Если вы — школьник не самых старших классов, то не все, что здесь написано, будет вам понятно. Не огорчайтесь, при дальнейшем чтении непонятные вещи вам не понадобятся.
Действия арифметики обозначаются в Visual Basic следующим образом:
На уроках математики мы привыкли писать ab+cd, подразумевая: а умножить на b плюс с умножить на d. В Visual Basic это выражение мы обязаны писать так: a*b+c*d. Иначе компьютер подумает, что нужно к переменной, имеющей имя ab, прибавить переменную, имеющую имя cd. Во избежание двусмысленности знак умножения положено писать всегда, в том числе и перед скобками. Например, а * (Ь+с).
Скобки. Ввиду того, что с клавиатуры всю информацию приходится вводить символ за символом в одну строку, ввод двухэтажных выражений, таких как
очень затруднен. Поэтому для обозначения деления и выбрана косая черта. Это выражение на Visual Basic положено записывать так: (а+1)/(Ь+1). Если бы мы не поставили скобок, то выражение получилось бы таким а+1/b+1, а это неправильно, так как компьютер, как и мы, всегда перед сложением