Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

azbuka_visual_basic

.pdf
Скачиваний:
37
Добавлен:
03.05.2015
Размер:
214.49 Кб
Скачать

Line (1000,1000)-(5000,5000),Form.BackColor,BF

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

4.5 Команды со значением (функции)

Если Basic-программисты говорят о функциях, то они подразумевают под ними специальные команды, которые находятся в программах там, где должны быть числа или символы. Пример, который был уже затронут выше - это RGB-функция, которую подставляют туда, где должны быть коды цветов. Вместо того, чтобы в программе писать :

PSet (500,1000), 8887245

чтобы нарисовать свело-коричневую точку, можно просто написать:

PSet (500,1000), RGB(205,155,135)

что означает тоже самое! RGB-функция переводит части красного, зелёного и синего цветов в длиный номер цвета.

Поэтому

Print RGB(205,155,135)

не выдаст ничего другого как число 8887245 в окне.

И тут же другой пример функции:

Print Weekday("29.10.1970")

компьютер напишет цифру 5, номер дня недели той даты, которая стоит в скобках (причём: 1-воскресенье, 2-понедельник, 3-вторник и т.д.). Короче дата будет переведена в номер дня недели. (англ. weekday: день недели)

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

4.6 MsgBox, InputBox

При помощи этих двух команд можно вызывать так называемые диалоговые окна на экран - это такие окна, которые о чём-то уведомляют пользователя или о чём-то спрашивают. Тогда пользователь "принуждён" на них отреагировать, т.к. пока он этого не сделает, не сможет использовать программу дальше.

С помощью команды MsgBox (англ. message box: ящик сообщения) получают окно, в котором просто стоит текст, и в котором можно видеть некоторые иконки. Пользователь должен ответить, чтобы продолжить дальше. Простейшая программа, если нужен только текст и ОК-кнопка:

MsgBox "Не надо паники!"

появится маленькое окошко с текстом "Не надо паники!". Окошко с заголовком можно получить при помощи команды:

MsgBox "Не надо паники!", 0,"Клёво..."

Почему между запятыми стоит нуль сейчас будет разъяснено, но сначала вот что: позади второй запятой можно определять надпись для заголовка диалогового окна, в этом примере - "Клёво...". Если эта часть будет пропущена, в этом заголовке будет просто имя проекта.

А теперь этот "мистический" нуль: эта часть кода определяет для компьютера, какая иконка и сколько кнопок должно быть показано в диалоговом окне. Часть этого кода я хочу здесь раскрыть:

0показать только "OK" (это будет сделано также тогда, когда там не будет ничего вообще).

1показать "OK" и "Отмена".

2показать "Отмена", "Повторить" и "Игнорировать".

3показать "Да", "Нет" и "Отмена".

4показать "Дa" и "Нет".

5показать "Повторить" и "Отмена".

Команда

MsgBox "... пока смерть не разлучит вас?", 3

поставит пользователя перед выбором между "Да", "Нет" и "Отмена". Однако такие команды в программах не встречаются, т.к. программа так никогда может и не узнать решение пользователя! Поэтому для таких случаев имеется практичный вариант команды MsgBox: команда MsgBox как функция! Можно к примеру объявить переменную "Reshenie" и потом написать:

Reshenie = (MsgBox "... пока смерть не разлучит вас?", 3)

Если эта строка будет выполнена, на экране появится диалоговое окно с тремя кнопками, и в зависимости от того какую кнопку нажмёт пользователь, переменная Reshenie получит соответсвующее значение:

Значение

Нажатая кнопка

1

OK

2, 3

Отмена

4

Повторить

5

Игнорировать

6

Дa

7

Нет

Программа может тогда при помощи команды If (см. ниже) продолжать в зависимости от значения переменной.

Но только как функция имеется очень похожая команда InputBox (англ. input: ввод). Которую применяют, если от пользователя требуется больше чем просто решение - например, его имя или возвраст. Пример:

FirstName = InputBox("Введите ваше имя!")

Выдаст диалоговое окно с текстом, двумя кнопками (ОК и Отмена) и полем для ввода (некрасивое, но практичное). То, что введёт пользователь будет стоять в переменной FirstName. Если будет нажата кнопка "Отмена", тогда перменная FirstName окажется пустой. Как и у команды MsgBox имеется возможность задать заголовок окна. Также имеется возможность вписать текст в текстовое поле, так сказать, предложить пользователю один из вариантов.

Otpusk = InputBox("Ваше времяпровождение?","Что я люблю","Компьютер")

выдаст под заголовком "Что я люблю" вопрос "Ваше времяпровождение?" и в поле ввода уже будет стоять ответ "Компьютер". [мои прим.: Вы должны будете либо согласится с предлогаемым вариантом и подтвердить или ввести свой и подтвердить]. Попробуйте!

4.7 Математические операторы

Решать компьютер, конечно же, может! Повсюду в Basic-программе, где стоят цифры, может вместо них стоять также сложные математические выражения, из которых полается одно число. Компюьер знает также правила деления на нуль, скобки и т.д. Кроме того, повсюду, где находятся цифры могут находиться переменные, константы, функции или также свойства объектов, вместо которых компьютер подставит потом числа.

Математические операторы в Visual Basic (в порядке, в котором они будут решаться):

() скобки

^возвести в степень

*умножение

/деление

+плюс

-минус

и пара функций:

Sqr(число) вычесть корень (англ. square root)

Fix(число) обрезает все числа после запятой, округление

Fix(3.5) - это 3, Fix(-3.5)- это -3.

Символы, конечно же, нельзя приминять в таких случаях, но их можно объединять символом &:

Dim One, Two

One = "Компьютер"

Two = One & " - это сумасшествие!"

Print Two

выдаст на форме: Компьютер - это сумасшествие!

4.8 Выбор: If...Then

Очень часто бывает, что компьютер в зависимости от значения переменной должен выполнять различные вещи. Например, в переменной может стоять какую кнопку нажал пользователь в диалоговом окне (см. MsgBox). Для таких случаев имеются команды If...Then...Else...End If (англ. if: если, then: тогда, else: иначе).

Легче всего понять со следующим примером:

Otwet = MsgBox("Как

дела?" ,4)

If Otwet = 6 Then

' выбрано "да"

MsgBox "Это

чудесно!"

Else

' иначе, т.е. выбрано "нет"

MsgBox "Ну тогда удачи!"

End If

В зависимости от того, правильно или ложно решение "Otwet = 6" (пользователь выбрал "да"), будут выполнены различные команды. Те команды, которые находятся между Then и Else будут выполнены если условие истинно, а команды между Else и End If, если условие ложно. Но в любом случае после End If исполнение команд будет продолжено. Часть Else можно вообще-то не вставлять, если оно не нужно. Кроме того существует ещё и короткая форма: если должна быть выполнена только одна команда и если условие истинно, можно также писать в этом роде:

If GamerLife = 1 Then Print "У Вас осталась только одна жизнь!"

В этом случае не нужны слова End If.

Конечно же, существуют также сложные условия:

If a / 7 = Fix(a / 7) Then

Print a; " можно поделить на семь без остатка!"

End If

В Бэйсике существуют следующие возможности, для того что сравнить два выражения:

< меньше <= меньше либо равно

> больше >= больше либо равно

= равно

<> не равно

Эти сравнения можно также использовать при сравнении символов. Причём "меньшее" выраженее не то, которое короче, а то которое в алфавите стоит ближе к началу. И "Apfelkern" меньше, чем "Birne"!

Также имеются логические операторы And(и), Or(или) и Not(не). При помощи них можно связывать различные условия и противопоставлять:

Not Life <=3 - тоже самое, что и Life > 3.

Old >= 10 And Old <= 18 - истино тогда и только тогда, когда значение Old находится в промежутке от 10 до 18

Old < 10 Or Old > 18 истинно тогда, и только тогда, когда значение Old не находится в промежутке от 10 до 18

Со сложными условиями с And, Or и Not можно иногда легко запутаться!

4.9 Комментарии строк ( ' или Rem )

Иногда программы, которые мы пишем становятся очень сложными. Усложнёными настолько, что если просмотреть коды спустя пару недель и они будут возможно уже изменены, то станет почти невозможным понять, что там имеется ввиду и как это работает. Но это нормально! И поэтому ко всему, что Вы делаете в сложной программе, надо делать пометки. Чтобы вводить такие заметки в программу, существует возможность комментирования строк: всё, что стоит позади символа "'" будет распознано компьютером при запуске программы, как строки, которые не нужно брать во внимание. Пример:

Line (0,0)-(2000,2000) 'линия сверху слева в

'право вниз в окне

Вместо ' можно также применять слово Rem (англ. remark = заметка), но уже для полной строки, не разбитой на две части, иначе можно запутаться:

Rem линия сверху слева в право вниз в окне

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

4.10 Команда End

Закончить программу можно, нажав на кнопку "End" в панели VB. Однако иногда нужно прекратить программу командой, например, если игра подошла к концу и возникла критическая ошибка. Для этого существует команда End, которой тотчас же прекращает программу. Visual Basic возвращается тогда сразу в режим design.

4.11 Цикл Do...Loop

Под словом "цикл" (на английском loop) программисты подразумевают часть программы, которая будет исполнена несколько раз подряд. Вы познакомитесь ещё со многими примерами из этого курса, т.к. циклы нужны очень часто. Здесь же я только объясню, как правильно применять цикл Do...Loop:

Этот цикл существует для того, чтобы выполнять ряд команд, так называемые тела циклов, так долго, пока не будет испонено какое-нибудь определённое условие - условие прерывания. Или до тех пор, пока пока какое-нибудь определённое условие будет не исполнено. Два следующие примера делают одно и

тоже: они вызывают диалоговое окно на экран до тех пор, пока пользователь не нажмёт "Да". А потом они выдают шутку:

Do

YesNo = MsgBox("Хотите шутку?",4)

' диалоговое окно с выбором между "Да" и "Нет"

Loop Until YesNo = 6

' 6 соотвествует ответу "Да"

MsgBox "Печь можно и без муки!" ' сама шутка !!! -[мои прим. Ах, как смешно! :)]

' (c) Helge Schneider

(англ. until: до тех пор, во время) другая версия:

Do

YesNo = MsgBox("Хотите шутку?",4)

Loop While YesNi <> 6

MsgBox "Печь можно и без муки!"

(англ. while: пока не...). Условие "YesNo = 6" или "YesNo <> 6" будет перепроверяно каждый раз после выполнения, и в зависимости от того, верно или ложно ли условие, будет выполнен цикл ещё раз или прекращён и далее будут исполнены команды, следующие за ним.

Если условие должно быть перепроверяно уже перед первой "петлёй" цикла, можно поставить While или Until в начале цикла:

Do Until Aepfel > 6

(...) ' здесь находится тело цикла

Loop

или:

Do While Aepfel <= 6

(...) ' здесь находится тело цикла

Loop

Настоятельно рекомендую как вверху отделять тело цикла сверху и снизу пустыми строками!!!

Также можно покидать цикл в середине тела, а именно при помощи команды Exit Do. Тогда сразу будет исполнена следующая команда после цикла. В основном Exit Do применяют вместе с If...Then. Также, если цикл может быть покинут только при помощи Exit Do, проверку условия Until или While можно и не испоьзовать:

Do

(...)

If Aepfel > 6 Then Exit Do

(...)

Loop

Программист всегда должен быть внимателен, чтобы цикл в любом случае когданибудь мог закончиться! Так называемые бесконечные циклы относятся к частым ошибкам программистов. Часто в этом случае может помочь только прерывание программы при помощи клавиш Ctrl + Break.

4.12 Оператор GoTo

(англ. go to: иди к/на [мои прим.: :-))]) При помощи GoTo можно приказать программе, продолжать в каком-нибудь другом месте программы, вместо того, чтобы исполнять следующие команды. Т.е. GoTo заставляет перепрыгнуть программу от одних операторов к другим. Но прежде перед тем местом, куда должны "прыгнуть" программа, нужно установить метку - это всего лишь слово с двоеточием позади. Этоже слово, но без двоеточия, ставится потом позади команды GoTo. Этим определяют куда программа должна перепрыгнуть. Метка должна стоять в той же процедуре, что и сама команда GoTo и оно не должно быть зарезервированным словом VB, переменной или константой! Кроме того метка должна всегда стоять перед нужным оператором.

(...

)

 

 

Metka:

'

это метка на которую нужно прыгнуть

(...)

 

 

GoTo Metka

'

сейчас программа перепрыгнет наверх

' то, что здесь стоит никогда не будет выполнено!

Если используется много GoTo-команд, программа станет нечитаемой ("спагеттикод"). Поэтому эту команду надо избегать. Учёные специализируюшиеся на компьютерах доказали, что все программы можно писать без GoTo, и применять вместо этого If...Then...Else и Do...Loop.

4.13 Генератор случайных чисел (Randomize, RND)

(англ. random: случайно) Иногда в программе нужно где-нибудь применить случайное число. Для этого в Бэйсике существует функция RND: она возвращаетчисло между 0 (включительно) и 1 (исключительно), но какое именно - чистая случайность!

Чтобы получить случайное значение между 0 и каким-нибудь другим числом, например, между 0 и 256, случайное число можно просто умножить на это число: RND * 256 выдаст случайное число между 0(включительно) и 256(исключительно). Командой

PSet (RND*1000,RND*1000), RGB(RND*256,RND*256,RND*256)

поставит точку со случайными координатами в верхнем левом углу окна со случайным цветом. Если заставить компьютер сделать это пару сотен раз, окно будет скоро выглядеть засыпанным конфетти!

Осторожно: Каждый раз старте программы случайные числа будут всё время онинаковыми! Компьютер берёт случайные числа из, так сказать, одинаково рассортированых карт. Чтобы этого избежать в начале программы нужно просто "перетусовать карты". И для этого имеется команда Randomize. Если в программе Вам нужно использовать случайные числа, эту команду лучше всего вызывать из события Form_Load.

5. Важные свойства объектов

5.1 Свойство Name

Это свойство имеется у всех объектов. Оно определяет имя объекта, под которым этот объект будет применяться в Basic-содах. Это свойство может быть изменено только в режиме design и не в самой программе. Предустановки для этого свойства - это, например, "Form1" у окна. Если где-нибудь в программе нужно обратиться к этому объекту, к примеру, если надо поменять его свойство, то надо использовать имя этого объекта.

5.2 Свойство Caption

Это свойство имеется у окон, кнопок, "этикеток" и у могих других элемнтов управления. У окон это свойство задаёт текст, который будет отображён в заголовке этого окна. Этот текст отображается также в иконке окна в таскбаре. У элементов управления это свойство определяет текст, который находится на самих элементах управления или в близи них. Это свойство может быть изменено как в режиме design, так и в ходе самой программы. Пример:

Form1.Caption = "ExZell V5.0 Vollzugsanstaltsverwaltung"

5.3 Свойство Visible

(англ. visible: видимый) Это свойство имеется у окон и всех элементов управления, кроме таймера (он всегда "невидим"). Это свойство определяет, видим или скрыт объект, и может быть изменено, как в режиме design, так и в ходе программы. Это свойство может принимать значения только True (англ. true: истинно, объект видим) или False (англ. false: ложно, объект невидим). Пример:

Command1.Visible = False

Объект копка с именем Command1 будет удалён с экрана - сделан невидимым.

5.4 Свойство Enabled

Это свойство присутсвует у всех окон и элементов управления. Оно определяет будет ли форма или элемент управления реагировать на события произведённые пользователем. Этим свойством они будут либо включены либо выключены. Если элементы управления будут выключены они станут серыми вместо чёрных и становятся неактивными, "потушенными". Это свойство также, как и свойство Visible принимает значения только True или False:

True

объект реагирует на события.

False

объект не реагирует на события.

На этой основе элементы управления, которые не должны быть использованы, правильнее "запирать" с помощью свойства Visible. Можно к примеру закрыть текстовое поле, которое будет применено только как вывод информации.

Или если, например, отключить свойство Enbled y таймерa (Timer1.Enabled = False), то он перестанет реагировать на события и выполнять заданные задания до тех пор, пока его не включат снова.

5.5 Свойство BackColor

(англ. background color: цвет заднего фона) BackColor определяет цвет фона для объекта и может быть изменён, как в режиме design, так и в ходе программы. Пример:

Form1.BackColor = RGB(0,255,0)

окрасит фон

окна в

зелёный цвет. Внимание: если

это свойство будет изменено

в ходе программы, то

всё, что было написано или

нарисовано на форме с помощью

графических

команд

и

с помощью команды Print, будет стёрто!

Если свойство BackColor Вы изменяете в окне свойств, можно выбрать цвет из многих предложеных там цветов. Если предложенных цветов там не хватает, можно создавать свои собственные цвета и они будут отображены тоже. Смотрите также главу о графических командах.

5.6 Свойство ForeColor

(англ. foreground color: цвет переднего фона) В окнах и многих других элементах управления этим свойством можно устанавливать цвет, которым будут напечатаны на них буквы и рисунки. Если это свойство будет изменено в ходе программы, то этим цветом будут напечатаны только те буквы, которые будут напечатаны после этих изменений.

5.7 Свойства Left, Top

(англ. top: вверх; left: лево) Эти свойства имеются у окон и почти всех элементов управления. Они определяют координаты левого верхнего угла объекта. У окон это координаты относительно экрана, а у элементов управления относительно к верхнему левому углу "внутренней" площади, т.е. окна, в котором они находятся. В режиме design эти свойства могут быть изменены при перетягивании мышкой и в окне свойств. В ходе программы эти свойства могут быть изменены тоже, но уже путём присвоения.

5.8 Свойства Width, Height

(англ. width: ширина; height: высота) Эти свойства определяют ширину и высоту объекта. Также Вы можете изменять их как в режиме design, так и в ходе программы. Размеры объекта изменяются тогда сразу.

У окон к высоте и ширине относятся также края окна сверху, снизу и боковые стороны. У элементов управления измерения происходят от середины объекта, чтобы они могли симпатично выглядеть с различными размерами.

Screen.Width и Screen.Height являются шириной и высотой эерана в твипах [мои прим.: чтобы получить высоту и ширину экрана в пикселах (разрешение), эти значения на просто поделить на количество твипов на один пиксел по игреку и

иксу: Screen.TwipsPerPixelX и Screen.TwipsPerPixelY]. Эти значения могут быть считаны только в ходе программы и никогда не могут быть изменены.

6. Элементы управления и их свойства

6.1 Кнопки (Button)

Командные кнопки (button) применяются чаще всего и являются простейшими элементами управления: как правило - это такие серые ящички, на которых находится текст, как например, "OK" или "Отмена", и по которым просто кликают.

Особенные свойства: Если свойство Cancel установлено как истинно (True), то кнопка будет реагировать на каждое нажатие кнопки Esc. Свойство Default действует тоже только тогда, когда установлено на True. Оно "садит" на кнопку чёрную рамку, которая означает, что кнопка реагирует на все нажатия кнопки Enter. При помощи свойства Font можно изменять вид и стиль шрифта на кнопке.

События: Нужно собственно только событие Click (кнопка нажата)

6.2 Таймер

Таймер назван так правильно: он никакой не настоящий элемент управления и на окне невидим, если программа запущена. Всё, что он делает - это в через определённые отрезки времени выполняет какое-нибудь событие, событие Timer'a. Много таймеров применять не надо, т.к. в Windows'e постоянно имеется максимум 16 таймеров одновременно. [мои. прим.: теперь речь идёт видимо о ранних версиях Windows и VB, т.к. сейчас таёмеров можно вешать сколько угодно]

Особенные свойства: Свойство Interval задаёт отрезок времени между двумя процедурами таймера в миллисекундах. Чтобы таймер работал свойство Enabled должо быть установленно на True.

События: Имеется только событие таймера (см. выше).

6.3 Линии и фигуры

Два этих элементов управления для того, чтобы украшать окна программы линиями, кругами, прямоугольниками и другими фигурами. Исполнять какие-либо события они не могут!

Особенные свойства линии: Свойство BorderWidth определяет толщину линии. Со свойством BorderStyle из обычной линии можо сделать к примеру прерывистую линию - однако если её толщина не толще 1, то видно её очень плохо. X1, Y1, X2 и Y2 определяют координаты начальной точки(1) и конечной точки(2) линии. При помощи изменений этих своёств из программы можно заставлять эти линии "двигаться". И, наконец, свойств BorderColor определяет цвет линии.

Особенные свойства фигуры: Свойство Shape определяет что за геометрическую фигуру должна принять сама фигура: прямоугольник, квадрат. овал, круг, прямоугольник с закругленными углами и такой же квадрат. Три свойства Border... определяют вид рамки фигуры по цвету, стилю и толщине. Должна ли фигура быть заполнена цветом определяет свойство BackStyle. Цвет заднего фона определяет свойство BackColor. Для стиля заполнения фигуры цветом можно выбрать шесть стилей (свойство FillStyle) и, конечно же, заполнить фигуру можно любым цветом (FillColor-свойство).

6.4 Текстовое поле и поле надписи

Соседние файлы в предмете Информатика