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

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

ОК — просто принять сообщение к сведению, Cancel — отменить намечавшееся действие, Abort — прекратить неудавшуюся попытку (например, когда ваша процедура занимается распечаткой документа на принтере и приходит сообщение "Принтер не готов"), Retry — повторить неудавшуюся попытку, Ignore — проигнорировать предупреждение и продолжать, как ни в чем не бывало, Yes-No — ответить да или нет на вопрос, содержащийся в сообщении.

Циклические программы

Идею цикла я поясню на примере движения объектов по экрану. Возьмем игру в воздушный бой. Самолетик по экрану должен двигаться. Но в списках операторов большинства языков программирования, используемых профессиональными программистами для создания игр, нет команды движения. Здесь нужно задаться вопросом — а что такое движение? Рассмотрим иллюзию движения, возникающую на экране кинотеатра. Если вы держали в руках кинопленку фильма, изображающего, скажем, движение автомобиля, то должны были обратить внимание, что она состоит из множества неподвижных слайдов-кадров, на каждом следующем из которых автомобиль находится чуть-чуть в другом месте, чем на предыдущем. Показывая эти кадры один за другим с большой скоростью, мы создаем иллюзию движения автомобиля. Точно так же поступают с созданием иллюзии движения на экране компьютера. Запишем алгоритм движения самолетика по экрану слева направо:

Зададим в уме компьютера позицию самолетика в левой части экрана.

Нарисуем самолетик.

Сотрем его.

Изменим в уме компьютера позицию самолетика на миллиметр правее.

Перейдем к команде 2.

Каждая из приведенных команд алгоритма легко программируется на большинстве языков. Любой компьютер, выполнив очередную команду, автоматически переходит к выполнению следующей. Так, выполнив команду 2, компьютер всегда перейдет к выполнению команды 3, независимо от того, какую команду он выполнял перед командой 2. Однако, если мы захотим, то можем заставить компьютер изменить этот порядок, что мы и сделали в команде 5. Из-за нее компьютер выполняет команды в таком порядке: 1-2-3-4-5-2-3-4-5-2-3-… Таким образом, многократно выполняется последовательность команд 2-3-4-5. Такая многократно выполняемая последовательность называется циклом. Можно сказать, что цикл — это одно из средств заставить компьютер долго работать при помощи короткой программы.

В коротком промежутке времени после выполнения команды 2 самолетик будет появляться на экране и на команде 3 исчезать, но этого достаточно, чтобы человеческий глаз его заметил. Благодаря циклу самолетик будет мелькать каждый раз в новом месте, а поскольку смена "кадров" будет очень быстрой, нам будет казаться, что происходит плавное движение самолетика.

Не нужно думать, что циклы применяются лишь при движении. Они пронизывают все программирование.

Оператор перехода GoTo. Цикл. Метки

Посмотрим, как осуществить цикл в Visual Basic. Предположим, мы хотим, чтобы компьютер бесконечно повторял выполнение следующего фрагмента:

Debug.Print "Это";

Debug.Print "тело";

Debug.Print "цикла";

Debug.Print " ";

в результате чего в окне Immediate мы бы увидели:

Это тело цикла Это тело цикла Это тело цикла Это тело цикла….

Если бы операторы Visual Basic можно было писать по-русски, то для достижения нашей цели было бы естественно воспользоваться такой конструкцией:

метка m1: Debug.Print "Это";

Debug.Print "тело";

Debug.Print "цикла";

Debug.Print " ";

иди к оператору, помеченному меткой m1.

Здесь мы видим новый для нас "оператор" ИДИ, который выполняется после Debug.Print " " и единственная работа которого заключается в том, чтобы заставить компьютер перескочить к выполнению оператора Debug.Print "Это", помеченного меткой ml.

А вот как этот фрагмент выглядит реально на Visual Basic:

Private Sub Command1_Click()

m1: Debug.Print "Это";

Debug.Print "тело";

Debug.Print "цикла";

Debug.Print " ";

Go To ml

End Sub

Здесь GoTo — оператор безусловного перехода, переводится "иди к", m1 — метка.

Метка — это произвольное имя или произвольное не слишком большое целое положительное число. Оператор GoTo можно писать в любых местах процедуры и метку можно ставить перед любым оператором процедуры, заставляя компьютер таким образом перескакивать внутри процедуры откуда угодно куда угодно. Правда, в сложных процедурах и внутри сложных операторов эта свобода перескакивания существенно ограничивается, так что я не советую вам врываться снаружи внутрь вложенных операторов, а вот изнутри наружу — пожалуйста. Метка должна заканчиваться двоеточием (хотя, в случае метки-числа это не обязательно).