5.6. Арифметические операции и функции преобразования типов данных


            Проект 5.6. «Мультисистемный калькулятор». Для создания мультисистемного калькулятора воспользуемся возможностью проведения арифметических операций в десятичной системе счисления и функциями преобразования типов данных, позволяющих осуществлять перевод чисел из десятичной системы счисления в восьмеричную и шестнадцатеричную системы и, наоборот, из восьмеричной и шестнадцатеричной систем в десятичную.

            Сначала создадим калькулятор для работы в десятичной системе. На форме разместим три текстовых поля: два поля txt1Dec и txt2Dec для ввода числовых данных и одно txt3Dec для вывода результата. Пять кнопок для реализации событийных процедур: сложения cmdPlus, вычитания cmdMinus, умножения cmdUmn, деления cmdDelen и завершения работы cmdExit.

            Событийные процедуры арифметических операций. Событийная процедура сложения CmdPlus_Click должна изменить свойство Text текстового поля txt3Plus так, чтобы оно являлось суммой числовых значений свойства Text объектов txt1Dec и Text2Dec. Для преобразования строковых значений, вводимых в текстовые поля, в десятичное число, воспользуемся функцией Val.  Код событийной процедуры будет следующим:

Private Sub cmdPlus_Click()

txt3Dec.Text = Val(txt1Dec.Text) +  Val(txt2Dec.Text)

End Sub

 

            Событийные процедуры вычитания, умножения и деления создаются аналогично.  

Проект «Мультисистемный калькулятор».

1

Создать новый проект. Разместить на форме три текстовых поля и пять кнопок. Присвоить им имена: txt1Dec, txt2Dec, txt3Dec, cmdPlus, cmdMinus, cmdUmn, cmdDelen, cmdExit.

2

Для каждой из кнопок ввести программные коды событийных процедур.

3

Установить для свойства Alignment текстовых полей значение Right Justufy.

4

Запустить проект на выполнение. Ввести числа в два первых текстовых поля. Щелкнуть по любой кнопке арифметических операций и соответствующая она будет выполнена.

 

            Перевод чисел из десятичной системы счисления в восьмеричную с помощью функции Oct. Для перевода чисел из десятичной системы счисления в восьмеричную воспользуемся функцией Oct, аргументом которой являются десятичные числа, а значением вщсьмеричные числа в строковой форме.

            Введенные в десятичные поля числа переведем сначала из строковой формы в числовую с помощью функции Val, а затем из десятичной числовой переведем в строковую шестнадцатеричную с помощью  функции Oct. Создадим кнопку cmdDecOct и запишем для нее событийную процедуру перевода чисел:  

Private Sub cmdDecOct_Click()

txt1Oct.Text = Oct(Val(txt1Dec.Text))

txt2Oct.Text = Oct(Val(txt2Dec.Text))

txt3Oct.Text = Oct(Val(txt3Dec.Text))

End Sub

 

5

Добавить на форму три текстовых поля txt1Oct, txt2Oct и  txt3Oct.

6

Поместить на форму кнопку cmdDecOct и ввести программный код событийной процедуры cmdDecOct_Click().

7

Поместить на форму две метки с надписями Десятичная система и Восьмеричная система.

8

Запустить проект на выполнение. Ввести числа в два первых текстовых поля десятичной системы. Щелкнуть по кнопке «+», а затем Dec-Oct. Будет выполнено сложение десятичных чисел и их перевод в восьмеричную систему.

 

            Перевод чисел из восьмеричной системы счисления в десятичную с помощью функции Val. Для перевода чисел из восьмеричной системы счисления в десятичную воспользуемся функцией Val, аргументом которой являются восьмеричные числа в строковой форме, а значением десятичные числа.

            Введенные в восьмеричные поля в строковой форме числа переведем сначала в восьмеричное представление добавлением приставки "&O" с помощью операции конкатенации строк. Полученное восьмеричное число в строковой форме переведем в десятичную числовую с помощью функции Val. Создадим кнопку cmdOctDec и запишем для нее событийную процедуру перевода чисел:

 

Private Sub cmdOctDec_Click()

txt1Dec.Text = Val("&O" + txt1Oct.Text)

txt2Dec.Text = Val("&O" + txt2Oct.Text)

txt3Dec.Text = Val("&O" + txt3Oct.Text)

End Sub

 

9

Поместить на форму кнопку cmdOctDec и ввести для нее программный код событийной процедуры перевода чисел.

10

Запустить проект на выполнение. Ввести числа в два первых текстовых поля восьмеричной системы. Щелкнуть по кнопке Oct-Dec. Будет выполнен их перевод в десятичную систему.

10

Выполнить арифметическую операцию в десятичной системе, щелкнув, например, по кнопке «-».

Перевести результат в восьмеричную систему, щелкнув по кнопке Dec-Oct.

11

Сохранить проект в файле prj6.vbp.

  

Задания для самостоятельного выполнения (Ответы)

5.21. Усовершенствовать проект 6 «Мультисистемный калькулятор», расширив его функциональные возможности. Обеспечить возможность перевода чисел из десятичной системы счисления в шестнадцатеричную и обратно.

5.22. Преобразовать проект «Мультисистемный калькулятор» в проект «Инженерный калькулятор», который позволяет вычислять значение тригонометрических и других функций.

5.23. Создать проект «Подсчет цифр в числе», который позволяет определить количество цифр во введенном натуральном десятичном числе.

5.24. Модернизировать проект-задание 5.23, так чтобы можно было определить количество цифр во введенном целом десятичном числе.

5.25. Создать проект «Печать цифр числа», который обеспечивает вывод на печать (по зонам) цифр, составляющих введенное целое десятичное число.

5.26. Создать проект «Сумма цифр», который позволяет вычислить сумму десятичных цифр заданного целого десятичного числа.

5.27. Создать проект «Числа без одинаковых цифр», который печатает в возрастающей последовательности натуральные двухзначные числа, в которых нет одинаковых цифр.

5.28. Создать проект «Перевертыш чисел», который заменяет  заданное натуральное число на число, которое получается из исходного путем записи его цифр в обратном порядке.

5.29. Создать проект «Перевод натуральных десятичных  чисел в двоичную систему счисления».