- •Для начинающих
- •Содержание
- •Глава 2. Работа в среде Visual Basic 32
- •Часть II. Программирование на Visual Basic – первый уровень 40
- •Глава 0. Переменные величины 41
- •Глава 4. Типичные маленькие программы 86
- •Глава 5. Графика 92
- •Глава 6. Процедуры 106
- •Глава 7. Работа с таймером, временем, датами 115
- •Глава 1. Разветвляющиеся программы 58
- •Глава 2. Циклические программы 72
- •2.5. Оглядимся вокруг 81
- •Глава 3. Отладка программы 82
- •Глава 7. Объекты пользователя 193
- •Глава 2. Устройство и работа компьютера 229
- •Глава 0.Предисловие
- •0.1.Кому предназначена эта книга?
- •0.2.Задачи, игры.
- •0.3.Почему Visual Basic?
- •0.4.Какой вам нужен компьютер и какая версия Visual Basic?
- •0.5.Краткое содержание с рекомендациями
- •Часть I. Программирование без программирования.
- •От автора
- •К читателю
- •Часть I. Программирование без программирования
- •Глава 0.Первые шаги
- •0.1.Что такое программа?
- •0.2.Не программа, а проект
- •0.3.Первые шаги - за ручку
- •Глава 1.Проект - "Калькулятор"
- •1.1.Задание на проект
- •1.2.Проектируем
- •1.3.Свойства форм и элементов управления
- •1.4.Имена и надписи
- •1.5.Программируем. Проект готов
- •1.7.Помещаем фото на калькулятор
- •1.8.Музыка в проекте
- •1.9.Система координат
- •1.10.Вывод сообщений - MsgBox
- •1.11.Меню пользователя
- •1.12.Кино в проекте
- •Val(Число1.Text) _
- •Глава 2.Работа в среде Visual Basic
- •Глава 3. - Отладка программы
- •2.1.Что нужно знать и уметь перед тем, как сесть за компьютер
- •2.2.Инсталляция Visual Basic
- •2.3.Порядок работы над проектом в Visual Basic
- •2.4.Загрузка Visual Basic и выход из него
- •2.5.Сохранение проекта на диске. Загрузка проекта с диска
- •2.6.Окна среды Visual Basic
- •2.7.Главное меню Visual Basic
- •2.8.Перенос вашего проекта на другие компьютеры
- •Часть II. Программирование на Visual Basic – первый уровень
- •Глава 0.Переменные величины
- •0.1.Переменные величины. Оператор присваивания
- •0.2.Объявление переменных величин
- •0.3.Еще об именах
- •0.4.Математика. Запись арифметических выражений
- •0.5.Типы данных и точность вычислений
- •Integer и Long - целые числа
- •Три совета
- •0.6.Порядок создания простого вычислительного проекта
- •Задача:
- •Порядок создания проекта:
- •5. Теперь нужно задать компьютеру действия, которые он должен проделать с исходными данными, чтобы получить результат.
- •0.7.Строковые переменные
- •0.8.Как выводить информацию оператором Print
- •0.9.Диалог с компьютером
- •0.10.Как выводить информацию в текстовое поле
- •0.11.Оглядимся вокруг
- •Глава 1.Разветвляющиеся программы
- •1.1.Что такое выбор (ветвление)
- •1.2.Условный оператор If или как компьютер делает выбор
- •1.3.Правила записи однострочного оператора If
- •1.4.Случайные величины
- •1.5.Многострочный If
- •If условие Then операторы ElseIf операторы
- •1.6.Ступенчатая запись программы
- •1.7.Вложенные операторы If. Логические операции и выражения
- •1.8.Оператор варианта Select Case
- •1.9.Улучшаем калькулятор.
- •If IsNumeric("-67,3") Then MsgBox ("Это число") Else MsgBox ("Это не число")
- •1.10.Функция MsgBox
- •Глава 2.Циклические программы
- •2.1.Оператор перехода GoTo. Цикл. Метки
- •2.2.Выход из цикла с помощью If
- •2.3.Операторы цикла Do
- •2.4.Оператор цикла For
- •2.5.Оглядимся вокруг
- •Глава 3.Отладка программы
- •3.1.Типы ошибок. Сообщения об ошибках.
- •3.2.Отладка программы. Окна отладки. Режимы отладки.
- •Глава 4.Типичные маленькие программы
- •4.1.Вычислительная циклическая программа
- •4.2.Роль ошибок
- •4.3.Счетчики
- •4.4.Сумматоры
- •4.5.Вложение циклов в разветвления и наоборот
- •4.6.Вложенные циклы
- •4.7.Поиск максимального из чисел
- •Глава 5.Графика
- •5.1.Объекты. Их свойства, их события, их методы
- •5.2.Три способа рисовать
- •5.3.Первый способ - Загрузка в Visual Basic готовых изображений
- •5.4.Второй способ - Объекты Line и Shape
- •5.5.Взаимное перекрытие объектов. Метод zOrder
- •5.6.Цвет в Visual Basic
- •5.7.3 Способ - Рисуем при помощи графических методов
- •Снеговик Ефрем
- •5.8.Используем в рисовании переменные величины
- •5.9.Использование случайных величин при рисовании
- •Глава 6.Процедуры
- •6.1.Зачем нужны процедуры пользователя
- •6.2.Операторы Stop, End и Exit Sub
- •6.3.Переменные вместо чисел
- •6.4.Константы
- •6.5.Процедуры с параметрами
- •Private Sub Рисуем_мой_значок (Otstup As Integer, Razmer As Integer, Tsvet As Long)
- •Глава 7.Работа с таймером, временем, датами
- •7.1.Тип данных Date
- •7.2.Таймер
- •7.3.Проект "Будильник-секундомер"
- •7.4.Анимация
- •Глава 8.Работа с мышью и клавиатурой
- •8.1.Работа с мышью
- •8.2.Работа с клавиатурой
- •8.3.Проект - Гонки (игра)
- •8.4.Задание на игру “Торпедная атака
- •Часть III. Программирование на Visual Basic - второй уровень
- •Глава 0.Массивы
- •0.1.Переменные с индексами
- •0.2.Одномерные массивы переменных величин
- •0.3.Двумерные массивы
- •0.4.Какие бывают массивы
- •0.5.Использование массивов при программировании игр
- •0.6.Массивы элементов управления
- •Глава 1.Разные звери в одном ковчеге
- •1.2.Пользовательский тип данных
- •1.3.Коллекции
- •1.4.Рамка (Frame)
- •Глава 2.Элементы управления
- •2.1.Флажок (CheckBox)
- •2.2.Переключатель (OptionButton)
- •2.3.Полосы прокрутки (hScrollBar и vScrollBar)
- •2.5.Список (ListBox) и поле со списком (ComboBox)
- •2.6.Знакомство с другими элементами управления
- •Глава 3.Строки, файлы, обработка ошибок
- •3.1.Строки
- •3.2.Файлы
- •3.3.Функция Shell
- •3.4.Обработка ошибок. Оператор On Error
- •Глава 4.Функции. Параметры процедур и функций
- •4.1.Функции. Параметры функций
- •4.2.Локальные переменные
- •4.3.Массивы как параметры
- •4.4.Передача параметров по ссылке и по значению
- •4.5.Индукция. Рекурсия
- •4.6.Сортировка
- •4.7.Объекты, как параметры процедур
- •Глава 5.Проект, который выглядит солидно
- •5.1.Из чего бывает "сделано" приложение Windows
- •5.2.Элемент управления CommonDialog
- •5.3.Панель инструментов Toolbar
- •5.4.Проект - "Графический редактор"
- •Глава 6.Проекты из нескольких форм и модулей
- •6.1.Работа с несколькими формами
- •6.2.Модули кода
- •6.3.Структура проекта. Окно Project Explorer.
- •6.4.Зоны видимости
- •6.5.Затенение
- •6.6.Префиксы имен
- •6.7.К чему все эти сложности?
- •Глава 7.Объекты пользователя
- •7.1.Инкапсуляция - "Объект в футляре"
- •7.2.Игра "Сачок". Постановка задачи
- •7.3.Таймер и общая механика работы проекта
- •7.4.Этап проектирования
- •7.5.Порядок создания объектов
- •7.6.Создаем ловца
- •7.7.Создаем шар. Завершаем проект
- •7.8.Еще об объектах
- •Глава 8.Visual Basic и Интернет
- •8.1.Понятие об Интернет, Web-станицах и языке html
- •8.2.Создание Web-страницы
- •8.3.Сценарий на Web-странице
- •8.4.Доступ к локальному диску
- •8.5.Собственный броузер
- •Глава 9.Visual Basic и базы данных
- •9.1.Понятие о базах данных
- •9.2.Создаем заготовку базы данных при помощи Visual Data Manager
- •9.3.Работа с базами данных. Элементы управления Data и dbGrid. Язык sql.
- •Глава 10.До свидания
- •10.1.Нерассмотренные возможности Visual Basic
- •10.2.Миг между прошлым и будущим
- •Приложение 1. Необходимые сведения о компьютере и программе
- •Глава 0.Первое представление о компьютере и программе
- •0.1.Что такое компьютер. Первое представление о программе.
- •0.2.Как человек общается с компьютером
- •Глава 1.Программа и программирование
- •1.1.Список команд. Командный и программный режимы
- •Последовательность работы человека с роботом
- •1.2.Что важно знать о программе
- •1.3.Понятие о процедуре. Может ли робот поумнеть?
- •1.4.Программа для компьютера на машинном языке
- •1.5.Языки программирования
- •1.6.Пример настоящей программы для компьютера на языке Лого
- •1.7.Последовательность работы программиста на компьютере
- •1.8.Основные приемы программирования
- •Глава 2.Устройство и работа компьютера
- •2.1.Как устроен и работает компьютер
- •Процессор
- •Порядок обмена информацией между устройствами компьютера
- •2.2.Устройство и размеры оперативной памяти
- •2.3.Взаимодействие программ в памяти
- •2.4.Внешние устройства компьютера
- •Устройства ввода
- •1. Клавиатура.
- •2. Мышь.
- •Устройства вывода
- •Внешняя память
- •Связь компьютеров между собой. Модем. Сети
- •2.5.Кодирование информации в компьютере
- •Приложение 2. Работа в Windows. Ввод текста
- •Работа в Windows
- •Файлы и папки
- •Как вводить программу в компьютер или работа с текстом в текстовом редакторе
- •Решение заданий
- •Список литературы
- •Предметный указатель
4.7.Поиск максимального из чисел
Задача программисту: Найти максимальное из вводимых в компьютер чисел.
Задача рыбаку: Принести домой самую большую из выловленных рыб.
Решение рыбака: Рыбак приготовил для самой большой рыбы пустое ведро. Первую пойманную рыбу рыбак не глядя бросает в это ведро. Каждую следующую рыбу он сравнивает с той, что в ведре. Если она больше, то он бросает ее в ведро, а ту, что была там раньше, выпускает в реку.
Решение программиста: Программист приготовил для самого большого числа ячейку и придумал ей название, скажем, max. Первое число программист не глядя вводит в эту ячейку. Каждое следующее число (назовем его chislo) он сравнивает с max. Если оно больше, то он присваивает переменной max значение этого числа.
Напишем программу для определения максимального из 10 вводимых чисел:
Private Sub Command1_Click()
Max = InputBox("Введите число") 'первую рыбу - в ведро
For i = 2 To 10 'ловим остальных рыб:
chislo = InputBox("Введите число") 'поймали очередную рыбу
If chislo > Max Then Max = chislo 'и если она больше той, что в ведре, бросаем ее в ведро
Next i
Debug.Print Max 'несем самую большую рыбу домой
End Sub
Задание 58: Найти из N чисел минимальное. Каким по порядку было введено минимальное число? Указание: для номера минимального числа тоже нужно отвести специальную ячейку.
Задание 59: У вас есть данные о росте ваших одноклассников. Правда ли, что рост самого высокого отличается от роста самого низкого больше, чем на 40 см.?
Глава 5.Графика
Графикой у компьютерщиков принято называть все то, что связано с рисунками и изображениями.
В этой главе вы изучите все необходимые графические средства Visual Basic. Применяя их в дальнейших главах, вы научитесь создавать все те замечательные программы и игры, которые я перечислил в предисловии, и почувствуете, что нет такой игры на неподвижном поле, которую бы вы не могли запрограммировать, будь то танковая битва, морской бой, гонки, крестики-нолики и т.д. и т.п. Правда, некоторые игры (типа лабиринтов) требуют для своего создания еще и отличного логического мышления, но к Visual Basic это уже не относится.
Прежде чем рисовать, познакомимся с некоторыми новыми понятиями.
5.1.Объекты. Их свойства, их события, их методы
То, что у каждого объекта есть свойства, мы уже усвоили. Так, у формы Form1 есть свойство BackColor (цвет фона), а у метки Label8 есть свойство Caption (надпись). У кнопки Command2 тоже есть свойство Caption, но оно у ней свое. Принадлежность свойства указывается через точку - Label8.Caption, Command2.Caption, Text1.Width.
Что вы можете делать со свойствами объектов? Вы можете их устанавливать и менять вручную в режиме проектирования. Вы можете запрограммировать их автоматическое изменение в режиме работы.
Что касается событий, я как-то не акцентировал, кому они принадлежат. Создавалось впечатление, что они, вроде, сами по себе, не относятся ни к какому объекту. Нет же. Посмотрите на процедуры, написанные нами ранее. Кроме процедуры Command1_Click, мы встретились с такими процедурами, как Form_Load и Form_Terminate. Вы видите, что в заголовке процедуры справа от знака подчеркивания мы указываем событие, а слева - объект, к которому это событие относится. Таким образом, события принадлежат объектам и принадлежность события указывается через знак подчеркивания в заголовке процедуры.
Событий в Visual Basic огромное количество и многие из них мы изучим. Чтобы посмотреть, какие события могут случиться с таким-то объектом, нужно запустить так называемый Object Browser ("перелистыватель объектов" - его найдете в меню View):
В окне Object Browser в левом списке вы кроме всего прочего найдете названия всех элементов управления, находящихся в данный момент в Toolbox. Щелкните по интересующему вас объекту (я щелкнул по CommandButton) - в правом списке вы увидите свойства, события и так называемые методы данного объекта. Свойства помечены значком в виде руки, что-то нажимающей на каком-то пульте (вы можете видеть на картинке свойство Caption). События помечены значком в виде зигзага молнии, методы помечены непонятным значком, по-моему это летящий кирпич. Щелкните по интересующему вас элементу правого списка (я щелкнул по событию Click) - в нижней части окна Object Browser появится краткое описание этого элемента.
Кстати, в Object Browser вы найдете много свойств, которых нет в знакомом вам окне свойств, потому что существуют свойства, которые нельзя задавать в режиме проектирования.
Что вы можете делать с событиями? Вы можете программировать в соответствующих процедурах реакцию компьютера на них, а в режиме работы вы можете многие из них вызывать мышкой или с клавиатуры.
Кроме свойств и событий у объектов есть так называемые методы. Метод - это кое-что из того, что умеет делать данный объект. Вспомним пример с игрушечной железной дорогой из 0.2. Там были объекты: паровозы, светофоры, стрелочники и т.п. У паровоза могут быть такие методы: ехать, гудеть, тормозить … У светофора - зажигать красный, зажигать зеленый … У стрелочника - переводить стрелку, петь песни … Обратите внимание, что все эти умения вам не надо было программировать, они заложены в конструкцию объектов еще на заводе. Вы могли только регулировать их: с какой скоростью ехать, когда зажигать зеленый и т.д.
Для знакомства с методами Visual Basic выберем метод SetFocus. Чтобы его понять, сначала нужно узнать, что такое фокус. Создайте проект с двумя кнопками и двумя текстовыми полями. Запустите его. Щелкните по одной кнопке, по другой, по одному полю, по другому. Ничего, конечно, не происходит, но если последний раз вы щелкнули по кнопке, то она имеет несколько другой, чем раньше, "нажатый" вид. А если последний раз вы щелкнули по текстовому полю, то именно в нем мигает курсор. Таким образом, можно сказать, что из множества объектов на форме один какой-то выделяется, то есть находится в фокусе. Этим объектом оказывается как раз тот объект, которым вы пользовались последним. Говорят, что объект обладает фокусом.
У объектов, способных иметь фокус, имеется два события: GotFocus, которое возникает в момент приобретения объектом фокуса, и LostFocus, которое возникает в момент потери фокуса.
Запишите в окно кода такие процедуры:
Private Sub Text1_GotFocus()
Debug.Print "Text1 получил фокус"
End Sub
Private Sub Text2_GotFocus()
Debug.Print "Text2 получил фокус"
End Sub
Private Sub Text1_LostFocus()
Debug.Print "Text1 потерял фокус"
End Sub
Private Sub Text2_LostFocus()
Debug.Print "Text2 потерял фокус"
End Sub
Пощелкайте по текстовым полям. Понаблюдайте, что появляется при этом в окне Immediate и в какой последовательности.
Фокус можно переводить на объект и программным путем. Дополним наш проект двумя процедурами:
Private Sub Command1_Click()
Text1.SetFocus
End Sub
Private Sub Command2_Click()
Text2.SetFocus
End Sub
Запустите проект. Щелкните по кнопке Command1. Фокус, вопреки ожиданиям, переместился не на кнопку Command1, а в поле Text1. Произошло это благодаря оператору Text1.SetFocus, который можно перевести так - "Установи фокус в объект Text1". Щелкните по кнопке Command2. Фокус переместился в поле Text2. Метод SetFocus принадлежит объекту и отделяется от своего хозяина точкой. Дело его простое - переводить фокус на своего хозяина.
Не все объекты обладают методом SetFocus. Например, у метки его нет. Зачем Бэйсику нужен фокус, мы узнаем позже.
Мы раньше уже познакомились с одним методом - это Print. Объект, обладающий этим методом, печатает информацию на своей поверхности. Поместите в проект элемент управления PictureBox (с именем Picture1) и выполните оператор Picture1.Print "Hello!". Текст будет напечатан не на форме, а на самом объекте.
Если хозяина метода мы не указываем, то есть пишем просто Print, то по умолчанию считается, что хозяином является форма. То же относится и к свойствам. Например, оператор Width = 5000 устанавливает ширину именно формы, а не чего-нибудь другого.
Всё ли умеют делать методы, которые мы видим в Object Browser? Нет, далеко не всё, и даже мало что. Гораздо более богатые результаты мы достигаем, меняя свойства объектов или программируя реакцию на события, как все время делали раньше. Но вот когда мы научимся создавать собственные объекты, тогда мы будем писать для них методы сами, и уж тогда от нас самих будет зависеть, насколько богаты они будут.
