МОУ СОШ №1 с. В.Балкария
Работа написана с целью помочь учителю информатики при подготовке и проведении уроков по теме "Основы объектно-ориентированного программирования".


Программируем
таблицу умножения
/Из опыта работы/
Предыдущая работа содержала в основном теоретический материал. Здесь же приводится пошаговые инструкции программирования на 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. Проверьте, как работают движки и как влияет на работу программы установка и сброс флажка. Испытайте разные способы управления движками.


