Часть полного текста документа:Калькулятор на VB - это легко! (автор: Есин И. В., email: tofriend@list.ru) О чём ... Статья имеет две редакции: для начинающих осваивать язык и для тех у кого не только аббревиатура VB не вызывает вопросов, но и более-менее владеющих им. В данной редакции от читателя требуется знание VB на достаточно хорошем уровне, что означает владение навыками визуального программирования, событийно-управляемого программирования и конечно "основных" операторов языка. Предлагается один из способов поиска решения подобных задач. Первый шаг или интерфейс пользователя Здесь особо ничего фантазировать не надо, а просто вспомнить, как выглядит обычный калькулятор, какие кнопки у него и каково их назначение. У меня получилось так: Инструмент CommandButton содержит такие интересующие нас свойство и событие, которые дают нам полную ясность его выбора. Аналогичное можно сказать и про инструмент Label. Декоративный инструмент Line необязателен. Для понимания моего программного кода вам надо будет согласиться со следующими именами представленных объектов и их свойствами: * Форме присвоим имя Calculator. * Кнопки с цифрами образуют массив кнопок Knopki индексы, которых совпадают с их надписями. * Кнопка точка - это объект с именем Tochka, a кнопка изменения знака числа [+/-] - Plusmin. * Кнопки арифметических операций имеют общее имя Operacia, но проиндексированы. Причём кнопка с надписью + имеет индекс 4, кнопка со знаком минус - индекс 2, кнопка "разделить" - 0, а кнопка соответствующая умножению - 5. * Кнопка "сброс" [С] - Sbros. * Кнопка "очистить" [CE] - Ochistka. * Кнопка "удалить" [ 0 Tablo.Caption = "-" & Tablo.Caption End Select End Sub Другая - возможность ввода дробного числа: Private Sub Tochka_Click() ' если число целое, то разрешаем ввести дробное число: If Fix(Val(Tablo.Caption)) = Val(Tablo.Caption) Or Ravno.Tag = "второе" Then Tablo.Tag = "не целое" ' к тому же ... если вводить дробное число после указания операции, то целая его часть - ноль: If Ravno.Tag = "второе" Then Tablo.Caption = "0" End Sub Исправление ошибок ... Позволим также стирать набранное число и удалять последнюю цифру числа на табло, что обеспечит следующий фрагмент программного кода: Private Sub ochistka_Click() ' щелчёк по кнопке CE "превращает" число на табло в ноль: Tablo.Caption = "0" Tablo.Tag = "" ' вводим целое число End Sub Private Sub udalit_Click() umnaya.SetFocus ' является ли число целым? If Fix(Val(Tablo.Caption)) = Val(Tablo.Caption) Then ' если целое - удалим последнюю цифру Tablo.Caption = Mid(Tablo.Caption, 1, Len(Tablo.Caption) - 2) ' а если число было нулём - то так и оставим - "ноль": If Tablo.Caption = "." Then Tablo.Caption = "0" Else ' если на табло число не целое, то просто удалим последнюю цифру надписи Tablo.Caption = Mid(Tablo.Caption, 1, Len(Tablo.Caption) - 1) End If End Sub Считать, считать и ещё раз считать! Далее пользователь, скорее всего, захочет указать одно из арифметических действий: сложить, вычесть, умножить, разделить заданное число с каким-то другим. Предоставим ему такую возможность! Здесь необходимо предусмотреть следующее: 1) пользователь может изменить выбранную операцию (не изменив до этого числа на табло), 2) если пользователь уже выбирал до этого какую-то операцию, не вычислял её значение с помощью клавиши равно или не задавал состояние первоначальной готовности, то вычисляется результат этой операции. Легко понять, что эти особенности взаимосвязаны между собой: вторая возможна только тогда, кода пользователь не изменяет выбор операции. Первая особенность выбора арифметического действия частично рассмотрена. ............ |