МОУ СОШ №1 с. В.Балкария

Работа написана с целью помочь учителю информатики при подготовке и проведении уроков по теме "Основы объектно-ориентированного программирования".

Система

программирования

Visual Basic

Программируем

таблицу умножения

/Из опыта работы/

Предыдущая работа содержала в основном теоретический материал. Здесь же приводится пошаговые инструкции программирования на Visual Basic

учитель математики и информатики

Программируем таблицу умножения

Конечно, компьютеры предназначены, в первую очередь, для авто­матизации математических вычисле­ний. Таблица умножения, которую мы сейчас запрограммируем, для компью­тера — очень простая задача. Но наша задача – научится работать в среде Visual Basic. Здесь в основном мы будем работать с такими компонентами как движок и флажок. Поэтому, сомножители, участвующие в операции будут вводится не с клавиатуры, а будут выбираться графическим способом — с помощью элемента управления, кото­рый называется движком.

Итак, начнем.

Описание программы.

Движок — это новый для нас элемент управления. Он состоит из шкалы и движущегося по ней бегунка. Бегу­нок передвигают методом перетаскивания или при помощи клавиш управления курсором. Для двух со­множителей нам потребуются два движка. Первым движком выбирается первый сомножитель, а вторым — второй сомножитель. При этом значение, установлен­ное движком, можно увидеть в поле, которое сделано с помощью объекта Надпись.

Значение произведения тоже представлено в виде над­писей, но его мы еще особо выделим рамкой. Для пере­хода от таблицы умножения к таблице квадратов и об­ратно применим специальный флажок. Когда он включен, второй движок становится не нужным, ведь квадрат числа — это произведение двух одинаковых чисел, а их можно задать и одним движком.

НЕ нашли? Не то? Что вы ищете?

Общий вид окна программы должен получиться при­мерно такой, как показано на рисунке.

Готовимся к работе.

Запустим систему Visual Basic и создадим новый проект. Сохраним его в папке Умножение. Для системы Visual Basic движки — это дополнительные компоненты. Давайте подключим их. Щелкните на панели компонентов пра­вой кнопкой мыши. Откроется контекстное меню. Вы­берите в нем пункт Components (Компоненты). Откроется одноименное диалоговое окно. Установите в списке флажок возле пункта Microsoft Windows Common Controls 6.0 (Стандартные элементы управления Windows). Щелкните на кнопке ОК. В нижней части панели компонентов по­явятся дополнительные кнопки.

Размещаем движки.

Теперь на панели компонентов появилась кнопка Slider (Движок). Щелкните на ней, а затем нарисуйте движок на форме методом протягивания. Дви­жок — довольно крупный объект и занимает много места. Подобрать размер области движка можно с помо­щью маркеров изменения размеров. Затем поместите на форму второй движок прямо под первым.

Настраиваем движки.

Пусть наша графическая таблица умножения будет работать только с однозначными и двузначными чис­лами. То есть значения сомножителей могут изменять­ся от 2 до 99. Нам надо так настроить свойства движ­ков, чтобы ими было удобно пользоваться. Оба движка должны работать совершенно одинаково, так что их свойствам можно задать одинаковые значения. С по­мощью панели свойств изменим следующие свойства движков.

Min (Минимум). Минимальное значение движка. Оно достигается, когда бегунок находится на левом краю полосы. Зададим здесь значение 2.

Max (Максимум). Максимальное значение движ­ка — бегунок на правом краю полосы. Зададим для этого свойства значение 99.

Value (Значение). Это свойство задает текущее положение бегунка. При его движении это свой­ство изменяется автоматически. С помощью этого свойства удобно задать начальное положе­ние бегунка. Пусть сначала бегунок находится в крайнем левом положении. Укажем для свой­ства значение 2.

SmallChange (Малое изменение). Бегунок не обяза­тельно перетаскивать с помощью мыши. Его можно двигать и курсорными клавишами: ВЛЕ­ВО и ВПРАВО, ВВЕРХ и ВНИЗ. При этом значение, заданное движком, изменяется на величину, за­данную этим свойством. Здесь надо задать ми­нимальное значение: 1.

LargeChange (Большое изменение). Бегунок также можно двигать клавишами PAGE UP и PAGE DOWN. Тот же эффект дает щелчок левой кнопкой мыши на полосе движка рядом с бегунком. Зна­чение движка при этом изменяется на величи­ну, заданную этим свойством. Давайте зададим здесь значение 7.

TickFrequency (Частота засечек). Это свойство указы­вает, как плотно будут располагаться засечки на полосе движка. Засечки помогают следить за положением бегунка. Давайте укажем здесь число 7, такое же, как значение свойства LargeChange (Большое изменение). В этом случае по щелчку на полосе бегунок будет

перепрыгивать от одной засечки к следующей.

Вид движка после настройки частоты засечек

Для второго движка все настройки задайте точно так же.

Добавляем рамку.

Заключим произведение в рамку. Рамка — это новый для нас элемент управления, до сих пор мы таким ком­понентом еще не пользовались. Рамка может иметь свой заголовок и окружать группу других элементов управления. Мы добавляем рамку просто для красоты. Для этого служит компонент Frame (Рам­ка). Выберите его на панели компонентов и нарисуйте рамку на форме методом протягивания. Можно сразу поместить ее ниже и правее движков. Позже мы уточ­ним положение рамки.

Заголовок рамки, принятый по умолчанию, нам не подходит. Измените ее свойство Caption (Заголовок). Пусть над рамкой будет написано Произведение. Заголовок рамки всегда находится возле ее левого верх­него угла. Изменить его положение нельзя.

Добавляем надписи.

Надписи, как мы знаем, создаются при помощи ком­понента Label (Надпись). Нам потребуются три надписи: две для сомножителей и одна для произведения. Вы­берите компонент Label (Надпись) и нарисуйте надпись на форме методом протягивания. Первую надпись надо разместить справа от верхнего движка. Остальные надписи добавляются на форму точно так же. Вторую надпись поместите рядом со вторым движ­ком, а третью расположите внутри заготовленной рамки. Чтобы числа выглядели красиво, выровняйте правые границы надписей по одной вертикальной линии.

Настраиваем надписи.

Начнем настройку созданных объектов. Числа, кото­рые должны отображаться в надписях, могут быть одно­значными, двузначными, трехзначными и четырех­значными. Хотелось бы, чтобы отведенное им место не зависело от длины числа. Для этого надо, чтобы значе­ние свойства AutoSize (Автоподбор) для всех трех надпи­сей было равно False (Нет). К счастью, именно это значе­ние задается по умолчанию, так что менять его не надо.

Уточните с помощью маркеров размеры каждой над­писи. Еще нам надо изменить их текст. Так как наши движки установлены в крайнее левое положение, на­чальные значения множителей равны 2, а начальное значение произведения равно, соответственно, 4. Вве­дем нужные значения в свойство Caption (Заголовок) каж­дой из надписей.

Форма все еще не очень красива, так как наши числа примыкают не к правому, а к левому краю области над­писи. Но это легко исправить, изменив значение свой­ства Alignment (Выравнивание) для объектов-надписей. За­дайте для всех трех надписей значение 1 - Right Justify (Выравнивание по правому краю).

Добавляем и настраиваем флажок.

Выберите компонент CheckBox (Флажок) на панели компонентов и нарисуйте флажок под движками

В полученном объекте нас устраивает все, кроме под­писи. Поэтому измените свойство Caption (Заголовок) — введите подпись Квадрат. Можно также изменить зна­чение свойства Alignment (Выравнивание). Если выбрать значение 1 - Right Justify (Выравнивание по правому краю), то метка флажка окажется не слева, а справа от подписи.

Теперь форма, готова, и мы можем приступать к про­граммированию.

Программируем работу движков.

Движки в нашей программе — это основные элементы управления. Для них мы должны предусмотреть два режима работы. Когда флажок сброшен, движки рабо­тают независимо. Однако если флажок установлен, то сомножители должны совпадать, а это значит, что оба движка должны всегда иметь одно и то же значение, а их бегунки — одно и то же положение. Первый режим (с выключенным флажком) кажется бо­лее простым, так что давайте сначала запрограммиру­ем его.

Движок — это как бы счетчик, но не кнопочный, а гра­фический. Его самое важное свойство — текущее зна­чение. При этом совершенно неважно, как было изме­нено состояние движка: перетаскиванием бегунка или щелчком на полосе, а может быть клавишами ВПРАВО-ВЛЕВО или PAGE UP - PAGE DOWN. Важно только новое значение. Поэтому нам надо обработать событие Change (Изменение). Оно возникает всякий раз, когда положе­ние бегунка меняется.

Щелкните правой кнопкой мыши на верхнем движке. Откроется контекстное меню. Выберите в нем пункт View Code (Показать код)— откроется окно кода.

Первый объект-движок называется Slider 1. Выберите название этого объекта в окне кода в раскрывающемся списке слева. В списке справа выберите событие Change (Изменение). Система Visual Basic создаст процедуру Slider1_Change для обработки этого события.

(Система Visual Basic могла создать и заготовку процедуры Slider 1_Click. Ее можно уничтожить, ток как обрабатывать щелчок мы не собираемся).

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

сомножителей, то изменится и произведение. Так, ее поменяется положение первого бегунка, то изменять надо свойства надписей Label 1.Caption и Label3.Caption. Аналогично, если поменяется положение второго бегун­ка, то изменять надо как свойство Label2.Caption, так й свойство Label3.Caption.

Все это нам знакомо, но здесь есть одна трудность: над­пись содержит строку текста, а положение движка — это число. Это не страшно — преобразовать число в строку может стандартная функция Str$. Итак, нам надо из­менить две надписи, а значит, добавить два оператора.

Private Sub Sliderl_Change()

Labell. Caption = Str$(Sliderl. Value)

Label3.Caption = Str$(Sliderl. Value * Slider2.Value)

End Sub

1 и 4 операторы ввела система

2 и 3 операторы добавили мы сами

Для обработки изменения второго движка надо создать аналогичную процедуру-обработчик. Выберите в окне кода в раскрывающемся списке слева объект Slider2. В списке справа выберите событие Change (Изменение). Нам нужно сделать почти то же, что и раньше. Разница в том, что мы меняем содержимое другой надписи, ис­ходя из значения другого движка. Вот как выглядят нужные операторы:

Label2.Caption = Str$(Slider2.Value)

Label3.Caption = Str$(Sliderl. Value * Slider2.Value)

Проверяем нашу программу.

Самое важное мы уже сделали. Программу можно за­пустить, нажав клавишу F5. Наша таблица умножения работает — вычисляет произведение двух целых чисел. Более того, мы уже можем устанавливать и сбрасывать флажок — это его базовая функция. Однако никакого эффекта на работу программы это пока не оказывает.

Флажок надо обработать особо. Сейчас мы этим и зай­мемся. Закройте окно программы щелчком на закры­вающей кнопке.

Программируем влияние флажка.

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

Выберите в окне кода в раскрывающемся списке слева объект Check 1 (это и есть флажок). Система Visual Basic сама создаст процедуру обработки щелчка Check1_Click. Мы можем привести движки к одинаковому виду, про­сто сделав значение второго движка таким же, как у первого. Для этого нужен оператор:

Slider2.Value = Sliderl. Value

Событие Click (Щелчок) происходит как при установке, так и при сбросе флажка. Но в этом нет ничего страш­ного, так как при сбросе флажка значения движков уже равны между собой и этот оператор ничего не ис­портит.

А почему мы не меняем содержимое надписи? Потому что событие Change (Изменение) произойдет при любом изменении зна­чения движка, е том числе программном. У нас уже есть обработ­чик этого события — он и выполнит всю работу.

Эта процедура готова. Теперь нам надо внести измене­ния в обработчики события Change (Изменение) для движков. Эти процедуры приведены здесь же в окне кода.

Выяснить, установлен флажок или сброшен, можно с помощью свойства Value (Значение). Если флажок сбро­шен, это свойство содержит 0, а если установлен — 1. Мы уже знаем, что для исполнения проверок в програм­мах используется условный оператор, например такой:

Checkl. Value = 1 Then

Если флажок установлен, приводим второй движок к значению первого:

Slider2.Value = Sliderl. Value

Завершается условный оператор ключевыми словами:

End If

Такие же операторы надо вставить и во вторую проце­дуру обработки. Единственное отличие состоит в том, что мы приводим первый движок в соответствие со вто­рым.

If Checkl. Value = 1 Then

Sliderl. Value = Slider2.Value

End If

Все! Программа готова. Запустите программу, нажав клавишу F5. Проверьте, как работают движки и как влияет на работу программы установка и сброс флаж­ка. Испытайте разные способы управления движками.