close

Вход

Забыли?

вход по аккаунту

код для вставкиСкачать
Универсальный калькулятор
для пересчета между системами счисления
Системы счисления. Интерактивный числовой конвертер.
Назначение
Универсальный калькулятор предназначен для пересчета числа из
первой системы счисления во вторую систему счисления.
В калькуляторе из набора стандартных программ Windows
используются основания 2, 8, 10 и 16. В Универсальном калькуляторе могут
быть заданы любые основания систем счисления от 2 до 36. Это очень
удобно для проверки решений в задачах ЕГЭ.
Программа «Универсальный калькулятор» является хорошим учебным
примером для изучения современных языков программирования.
Описание алгоритма
Ввод входных данных
Входное число вводится и хранится как строка цифр длиной до 60
символов. Используются цифры от 0 до 9, а далее цифры от 10 до 35 вводятся
буквами латинского алфавита от A до Z (регистр не учитывается).
Выходное число формируется также как строка цифр-символов от 0 до
Z. Длина строки – до 256 символов.
Основания первой и второй систем счисления base1 и base2 вводятся
как целые числа от 2 до 35. При неправильном вводе формируется сообщение
об ошибке.
Входное число вводится и хранится как строка символов. Для
преобразования символов A-Z в числа 10-35 используется 2-мерный массив
пар символов прописной – строчный с номерами 10-35. При совпадении
входного символа с любым символом пары возвращается ее номер, число.
Если число входного символа превысит границу base1 – 1,
формируется сообщение об ошибке и прекращается ввод строки до
исправления ошибки.
Если нет ошибок ввода
Основание первой системы счисления base1 используется для
пересчета входного числа-строки в десятичное число d10. Оно хранится как
вещественное число двойной точности: тип Double, 8 байт, 15 значащих
цифр, диапазон значений от 10-324 до 10308. Это обеспечивает необходимую
точность и исключает переполнение.
Десятичное число отображается в отдельном окне калькулятора. Так
что Универсальный калькулятор пересчитывает числа из первой системы
счисления в десятичную и во вторую систему счисления.
Основание второй системы счисления base2 используется для
преобразования десятичного числа d10 в выходное число-строку цифр
1
от 0 до Z. Длина строки – до 256 символов, она отображается в окне вывода в
несколько строк.
Входное и выходное число являются строками символов, поэтому здесь
не может быть переполнения и потери точности.
Если пользователь введет новое основание второй системы счисления
base2, программа отображает новое пересчитанное число-строку. Это очень
удобно для проверки решений в задачах ЕГЭ.
VBA
Современные информационные технологии предполагают в каждой
серьезной программе наличие встроенного языка программирования,
стандартом которого де-факто стал VBA – Visual Basic for Applications
(Визуальный Бейсик для Приложений).
Программа написана на языке VBA в табличном процессоре MS Excel.
Это современный язык визуального программирования, использующий
технологию классов. Он сделан также как другие современные языки
программирования. Стандартный интерфейс среды программирования.
В центре – окно кода, здесь пишется текст программы. Слева сверху – окно
проекта, здесь представлены объекты проекта (нашего приложения). Слева
снизу – окно свойств, здесь представлены значения свойств объекта, который
выделен в окне проекта.
Написание программы «Универсальный калькулятор» является
хорошим учебным примером для изучения современных языков
программирования.
Классы
Массив содержит цепочку переменные одного типа, одной длины.
У всех переменных одно имя, как у массива, но разные номера, индексы.
Структура (или запись в Паскале) появилась как расширение понятия
массива. Структура – это группа переменных разного типа, группа членов
структуры. Имя члена структуры формируется по правилу:
ИмяСтруктуры.ИмяПеременной
Точка обозначает переход к члену структуры. Фактически вычисляется адрес
структуры и адрес члена внутри структуры.
Пусть, например, структура называется «Персона» и состоит из двух
переменных: «ГодРождения» – целое двухбайтовое число и «Фамилия» –
строка длиной 25 символов. Присвоим значения членам структуры:
Персона.ГодРождения = 1980
Персона.Фамилия = “Николаев”
Структуры одного типа могут образовывать массив (или семейство,
коллекцию) структур. И тогда запись данных для 5-й персоны будет
выглядеть так:
Персона(5).ГодРождения = 1980
Персона(5).Фамилия = “Николаев”
2
Класс появился как расширение понятия структуры. Членами класса
могут свойства – данные, и методы – программы для обработки этих данных.
Это очень удобно, когда программа содержит много входных и выходных
переменных разного типа, не ошибешься в написании вызова программы, все
спрятано внутри класса.
Членами класса могут быть также другие классы, а в них – еще классы.
Поэтому говорят, что класс похож на матрешку.
Объектная модель
В классе могут содержаться свойства и методы, а также несколько
подчиненных классов, а в них – свои свойства, методы и классы, и так далее.
Эта иерархическая модель называется «объектная модель». Понятие
«объекты» заменяет слова свойства, методы и классы. Наверху объектной
модель находится само приложение Application. В нашем случае это MS
Excel, в другом случае – MS Word или 1С Бухгалтерия. То есть во всех
современных приложениях язык VBA один, но разные объектные модели,
разные библиотеки классов. Из-за этого кажется, что в приложениях разные
языки программирования.
Чтобы помочь пользователю, в VBA существует система контекстных
меню. При описании типа переменной после ключевого слова As (Как)
нажатие пробела вызывает список допустимых типов переменной.
В операторе VBA доступ к подчиненному объекту записывается через точку.
После ввода точки открывается список подчиненных объектов: свойств,
методов, классов. Выбор – двойной щелчок мыши. Так что пользователю
почти ничего не надо запоминать.
Запишем число 5 в ячейку A1 из семейства ячеек листа Лист1 из
семейства рабочих листов книги Книга1 из семейства рабочих книг, с
которыми работает приложение Application. Полный оператор:
Application.Workbooks("Книга1").Worksheets("Лист1") _
.Range("A1").Value = 5
Здесь _ (пробел и подчеркивание) обозначает продолжение оператора на
следующей строке. Точка обозначает переход к подчиненному объекту.
Или можно написать сокращенный оператор
Range("A1").Value = 5
но тогда он будет записывать число 5 в ячейку A1 на любой активный лист
в любой активной книге.
Интерфейс программы
Пользовательская форма
Для создания интерфейса программы используется визуальные
компоненты. Это классы из библиотеки визуальных компонентов, которые
имеют графические программы для отображения объектов на экране.
Главный визуальный компонент – Пользовательская форма UserForm.
Это диалоговое окно программы пользователя, на котором можно разместить
3
визуальные компоненты, элементы программного интерфейса: командные
кнопки, переключатели, окна ввода/вывода данных, списки, полосы
прокрутки и так далее. Визуальные компоненты реагируют на события,
действия пользователя: одиночные и двойные щелчки мышью, ввод данных и
так далее. Чтобы сделать программный интерфейс, нужно расписать в
алгоритме, на какие события должны реагировать визуальные компоненты, и
какова должна быть реакция. Иногда говорят: запрограммировать триаду:
свойства, методы, события.
С каждой пользовательской формой связан модуль формы, который не
отображается в окне проекта в папке Modules. В модуле формы находятся
макросы (Private Sub...), которые обрабатывают реакцию визуальных
компонентов на события. На каждое событие реагирует свой макрос.
Поэтому с одним визуальным компонентом может быть связано несколько
макросов. Ключевое слово Private делает макросы невидимыми для
программ в обычных модулях папки Modules и на рабочем листе в окне
Макросы.
В нашем случае, используются две пользовательские формы:
«Универсальный калькулятор» и предварительного окно «Старт».
Пользовательскую форму «Универсальный калькулятор» мы назвали
SSCalc (СистемСчисленияПересчет). Для этого в первой строке окна свойств
мы задали свойство:
(Name) SSCalc
Визуальные компоненты
Работа пользователя с Универсальным калькулятором – это работа с
пользовательской формой SSCalc, с визуальными компонентами на
пользовательской форме.
Команда меню View/Toolbox открывает панель Toolbox, палитру
визуальных компонентов. Ее можно перетащить мышкой на любое удобное
место, или скрыть щелчком по системной кнопке  в правом верхнем углу.
CommandButton
Каждая пользовательская форма имеет системную кнопку  в правом
верхнем углу, которая закрывает окно. При этом исчезают все значения,
рассчитанные в пользовательской форме. Поэтому для закрытия
пользовательской формы чаще всего используется командная кнопка,
визуальный компонент CommandButton. Она будет запускать программу,
чтобы перед закрытием окна сохранить рассчитанные значения.
Прямоугольник кнопки выделен тенью, которая имитирует нажатое или не
нажатое состояние кнопки.
Создадим на форме командную кнопку с именем Выход, свойство
(Name), и с надписью Выход, свойство Caption. С командной кнопкой
можно связать один из нескольких стандартных макросов, обработчиков
событий. Мы используем событие «щелчок мышью по командной кнопке»,
4
оно запускает макрос, в нашем случае Выход_Click(). В теле макроса
пользователь пишет операторы VBA для выполнения действий по щелчку.
Запишем в макрос программный код закрытия пользовательской
формы.
Private Sub Выход_Click()
Unload ValCalc 'окно удаляется из оперативной памяти
End Sub
TextBox
TextBox – это прямоугольное окно для ввода строки символов.
Введенная строка символов помещается в свойство (переменную) Text.
В Универсальном калькуляторе используются три визуальных
компонента TextBox:
Base1 и Base2 – для ввода оснований двух систем счисления;
TextBox1 – для ввода строки символов входного числа.
Обработчик события Change запускается при любом изменении строки
символов. Приведем текст обработчика событий для визуального компонента
Base1, для Base2 – аналогично, только в конце добавлен вызов программы
Пересчет2 для пересчета десятичного числа во вторую систему счисления.
Label
Визуальный компонент Label (метка) отображает текст, который
помещен в его свойство Caption. В окне Toolbox этот элемент обозначен
буквой «A». При наведении на него указателя мыши снизу появляется
подсказка «Label». Такие подсказки имеют все визуальные компоненты.
В Универсальном калькуляторе визуальные компоненты Label
отображают все надписи, сообщения об ошибках, десятичное число и
выходное пересчитанное число. Всего у нас 12 разных Label. Визуальные
компоненты Label, которые изменяются при вводе данных, получили
смысловые имена, чтобы не вспоминать, какая метка для чего. Например,
Tbase1 – надпись «первое основание» над окном ввода основания base1
для первой системы счисления. В случае ошибки ввода она меняет текст:
«введите целое число от 2 до 36».
5
1/--страниц
Пожаловаться на содержимое документа