Реферат: Калькулятор на VB - это легко
а) Если была нажата точка, то набирается дробное число. Очевидно, мы не можем ввести число, которое не умещается в табло. И нам надо учитывать, что число не обязано быть целым (то есть не всегда число оканчивается точкой).
б) Нет согласованных действий. Нельзя поставить точку, если число уже дробное.
в) Нет согласованных действий. Действие можно выполнить всегда!
г) Вычисление значения заданной операции. Действие можно выполнить всегда.
д) Нет согласованных. Действие можно выполнить всегда, если значение принадлежит области допустимых значений для данной арифметической операции
е) Нет согласованных. Нельзя выполнить, если на табло ноль.
ж) Нет согласованных. Действие выполнимо всегда!
з) Состояние первоначальной готовности. Действие выполнимо всегда!
Заметим также, что включение совпадает с первоначальным состоянием нашей счётной машинки.
Итак ... определили не только какие действия может выполнить пользователь калькулятора и что при этом отобразится на табло, но и выявили некоторую взаимосвязь между действиями и даже одним состоянием. Остаётся "рассказать" про это всё компьютеру. Но каким образом? В нашем распоряжении VB!
Третий шаг или приближение к программному коду!
"Увидим" же программный код! При определении чего нам надо, будем исходить только из того какие элементы управления у пользователя "в руках", зачем ему нужен калькулятор и тех выкладок, которые мы с лёгкостью проделали в предыдущем шаге! А потребуется нам из того богатого ассортимента возможностей, который предоставляет VB всего-то несколько операторов, функций, свойств и событий известных объектов да понять какие управляющие переменные создать, каков их тип.
Как калькулятор поймет, что его только-что включили или был произведён сброс в первоначальное состояние? (з) И как он узнает какое действие ему задал пользователь? (г) Понятно, что без переменной здесь не обойтись! Поэтому в перменной mode типа String , будем хранить данные режима вычислений.
А каким образом калькулятор "запомнит" слагаемое, множитель, делимое, вычитаемое (то есть "первое" число операции)? Для этого можно объявить глобальную перменную pervoe .
На вопрос нужны ли ещё переменные отвечать пока воздержимся.
Вначале была точка.
Поскольку представление целого числа на табло оканчивается точкой, то будем "её ставить" в процедуре обработке события (далее - процедуре) Change метки Tablo :
Private Sub Tablo_Change()
Dim z As Byte, t As Byte
z = InStr(1, Tablo.Caption, ",") ' если результат - дробное число ищем позицию запятой
t = InStr(1, Tablo.Caption, ".") ' определяем позицию точки
Ift = 0 Then
' если точка не найдётся, то ставим её в конце:
Tablo.Caption = Tablo.Caption & "."
ElseIf z <> 0 Then
' если событие наступает, в результате "выброса" на табло значения операции, которое является дробным числом, то запятую меняем на точку:
Tablo.Caption = Mid(Tablo.Caption, 1, z - 1) & "." & Mid(Tablo.Caption, z + 1, Len(Tablo.Caption) - z - 1)
EndIf
Здесь, как видите, учитывается тот случай, когда результатом операции является дробное число или уже имеется дробное число.
Учимся писать ... числа.
Теперь наступило время "набрать" нашему пользователю число! Позволим ему сделать это ... но пока с помощью мыши. При этом предусмотрим следующее: 1) он вводит цифру, когда на табло ноль.
2) он не знает (или может забыть) сколько цифр может поместиться в табло.