Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

GoTo m1




Оператор перехода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 "Это ", помеченного меткой m1.

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

Private Sub Command1_Click()

m1: Debug.Print "Это ";

Debug.Print "тело ";

Debug.Print "цикла";

Debug.Print " ";

End Sub

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

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

А терерь запустите эту программу в пошаговом режиме. Посмотрите, как заполняется окно Immediate. Чтобы оно заполнялось быстрее, нажмите клавишу F8 и не отпускайте.

Зацикливание. Если вы уже запустили эту программу обычным образом (не в пошаговом режиме), то через некоторое время перед вами должен встать жизненно важный вопрос – как же ее остановить? Вы обнаружите, что кнопки не отзываются на нажатие мыши, и вообще, программа никак не реагирует ни на мышку, ни на клавиши клавиатуры. Любопытно, что так поступает любая нормальная программа, выполняя операторы кода. Разница в том, что в нормальной программе исключены ситуации, когда код выполняется бесконечно или на протяжении слишком долгого времени. Если же вы допустили ошибку и в программе выполняется бесконечный цикл, то возникает как раз такая ситуация. Вы вечно будете смотреть на экран, по которому бесконечно бегут непонятные числа или слова или рисуются графические объекты, а возможно и ничего не происходит, экран пустой – все зависит от характера ошибки.

Для прерывания работы программы, в том числе и зациклившейся, существует комбинация клавиш Ctrl-Break. Имеется в виду, что, удерживая нажатой клавишу Ctrl, вы должны щелкнуть по клавише Break. Программа прерывает свою работу, но не заканчивает. Visual Basic переходит в режим прерывания. Оператор программы, на котором она была прервана, выделяется полосой желтого цвета. Если вы снова запустите программу, она продолжит работу с прерванного места. Кстати, продолжить можно и в пошаговом режиме. Чтобы начать сначала, необходимо завершить работу программы обычным образом.

 

Группа операторов, выполняющихся многократно, называется телом цикла. У нас это все операторы, начиная с Debug.Print "Это " и кончая GoTo m1.

Пример программы:

k = 6

a = 100

GoTo 8

a = a + k

k = 2 * k

Print a

8: a = a + 1

k = k + 10

Print k, a

Эта программа напечатает 16 101. Операторы выполняются в такой последовательности:

k=6

a=100

GoTo 8

a=a+1

k=k+10

Print k, a

А операторы a=a+k, k=2*k, Print a выполнены не будут вообще, несмотря на то, что написаны. Цикла здесь нет.

 

 

Задание 32: Определить без компьютера, что будет печатать программа:

n = 10

k = 0

Debug.Print "Считаем зайцев"

met5: Debug.Print n;

n = n + k

GoTo m1

n = n + 1

m1: Debug.Print "зайцев"

k = k + 1

GoTo met5

Debug.Print "Посчитали зайцев"

Не можете определить - посмотрите в пошаговом режиме.

Задача: Бесконечно печатать 200 205 210 215 220 225 …

Программа:

Private Sub Command1_Click()

n = 200

m1: Debug.Print n

n = n + 5

GoTo m1

End Sub

 

Задания 33-35:

Написать программы для выполнения следующих заданий:

33. Бесконечно печатать букву А: ААААААААААА.....

34. Бесконечно печатать 10000 9999 9998 9997 9996......

35. Бесконечно печатать 100 50 25 12.5.... с 8 десятичными знаками.

Движение объектов по экрану

Вам уже приходилось заставлять кнопки прыгать по экрану. Попробуем добиться плавного движения объекта. Создайте проект с большой формой и добавьте в него маленький элемент управления Image (изображение). Поместите его в левой части формы. Придайте ему картинку (свойство Picture). Лучше всего, пока вы еще не умеете работать с изображениями, в качестве картинки взять один из файлов значков, находящихся по адресу c:\Program Files\ папка,посвященная Visual Basic \Graphics\Icons.

Напишем программу, которая двигала бы изображение плавно направо:

Dim x As Double

Private Sub Command1_Click()

x = Image1.Left 'Компьютер узнает, откуда начинать движение

m1: x = x + 1 'Компьютер увеличивает в уме горизонтальную координату на 1

Image1.Left = x 'Изображение встает на место, указанное гор. координатой

GoTo m1

End Sub

Если движение получилось слишком медленным, то прибавьте шаг - x = x + 2. Если слишком быстрым, то уменьшите - x = x + 0.3.

Не удивляйтесь, что вам не пришлось в цикле рисовать и стирать объект. Когда дело касается объекта, заботы о перерисовке берет на себя Visual Basic. А вот когда вы сами будете рисовать различные фигуры на форме и попытаетесь их двигать, тогда вам придется их и рисовать и стирать.

Задание 36: Заставьте изображение двигаться налево, вниз, вверх.

 

Пока мы никак не можем влиять на полученное движение. Только можем останавливать компьютер с клавиатуры. Как с помощью мышки или клавиатуры влиять на движение во время движения? Как хотя бы запрограммировать остановку в нужном месте? Об этом - в 6.2 и в 11.4.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 607; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.