АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Функции преобразования форматов

Читайте также:
  1. I Психологические принципы, задачи и функции социальной работы
  2. I. Деньги и их функции.
  3. I. Функции эндоплазматической сети.
  4. II. Основные задачи и функции
  5. II. Основные задачи и функции
  6. II. Функции плазмолеммы
  7. II. Элементарные преобразования. Эквивалентные матрицы.
  8. III ПРЕОБРАЗОВАНИЯ ПРИ ПОЛОВОМ СОЗРЕВАНИИ
  9. III. Предмет, метод и функции философии.
  10. IV. Конструкция бент-функции
  11. Ms Excel: мастер функций. Логические функции.
  12. SALVATOR создает Знания-Образы, когнитивные имитационные модели сознания, расширяющие человеческие возможности и защитные функции.

При обработке выражений, введенных с помощью функции InputBox, и последующем выводе результата на экран, иногда приходится прибегать к функциям преобразования форматов (типов).

Преобразование строки в число и обратно осуществляются следующими функциями.

Val(<строка>) Возвращает число, содержащееся в строке, как значение числового типа
Str(<число>) Возвращает значение типа Variant (String), являющееся строковым представлением числа

Замечание. В качестве допустимого десятичного разделителя функция Str воспринимает точку.

Часто возникает потребность в выводе нескольких результатов в одном окне сообщений. Помимо операции конкатенации (сложения строк &) используют функцию Chr.

Chr(<число>) Возвращает строку, ASCII-код которой равен аргументу. Например, Chr (13) – возвращает символ “возврат каретки”, т.е. осуществляет переход на новую строку.

Например, такая следующая строка кода:

MsgBox "Первая строка" & Chr(13) & "Вторая строка" & Chr(13) & "Третья строка",, _

"Многострочное сообщение"

приводит к выводу следующего окна сообщения:

Демонстрационные примеры:

1. Рассмотрим очень полезный алгоритм, с которым при программировании часто приходится встречаться. Даны две переменные X и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было X=1, Y=2, то после обмена должно стать: X=2, Y=1.

Попытка обойтись без дополнительной переменной, написав

X = Y

Y = X

не приводит к цели (безвозвратно утрачивается начальное значение переменной X).

Хорошим аналогом для решения такой задачи является следующая: даны два стакана, в первом – молоко, во втором – вода; требуется произвести обмен их содержимым. Ясно, что в этом случае нужен дополнительный третий пустой стакан. Последовательность действий будет следующей:

1. перелить из первого в третий;

2. перелить из второго в первый;

3. перелить из третьего во второй.

По аналогии для обмена значениями двух переменных нужна дополнительная третья переменная. Назовем ее Z. Тогда задача решается последовательным выполнением трех операторов присваивания.

Z = X

X = Y

Y = Z

Построим трассировочную таблицу при следующих начальных значениях переменных: X=1, Y=2.

Команда X Y Z
Z = X      
X = Y      
Y = Z      

Действительно, в итоге значения переменных X и Y поменялись местами.

Аналогия со стаканами не совсем верна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (X =Y) переменная, стоящая справа (Y) сохраняет свое значение.

Программа на VBA для решения этой задачи может быть записана следующим образом:

Option Explicit

Sub Обмен_двух()

Dim X As Integer, Y As Integer, Z As Integer

'Осуществим ввод значений;

' функция Val используется для преобразования строки в число

X = Val(InputBox("Введите первое число", "Ввод числа"))

Y = Val(InputBox("Введите второе число", "Ввод числа"))

'Осуществим обмен значений переменных

Z = X

X = Y

Y = Z

'Выведем результат в окне сообщений;

'функция Str применяется для преобразования строки в число

'функция Chr (в данном случае) - для организации перевода строки

MsgBox "Первое число " & Str(X) & Chr(13) & "Второе число " & Str(Y),, "Вывод результата"

End Sub

2. Решим предыдущую задачу, не используя дополнительных переменных.

Приведем последовательность команд присваивания, приводящих к требуемому результату (начальные значения X и Y обозначим X0, Y0).

X = X + Y ‘X = X0 + Y0, Y = Y0

Y = X – Y ‘X = X0 + Y0, Y = X0

X = X – Y ‘X = Y0, Y = X0

Соотвествующую программу на VBA попытайтесь написать самостоятельно.

3. Составим алгоритм решения такой задачи: даны две простые дроби; получить дробь, являющуюся результатом их деления.

В школьном учебнике математики правило деления обыкновенных дробей описано следующим образом:

1. числитель первой дроби умножить на знаменатель второй;

2. знаменатель первой дроби умножить на числитель второй;

3. записать дробь, числителем которой является результат выполнения пункта (1), а знаменателем – результат выполнения пункта (2).

В алгебраической форме это выглядит следующим образом:

Теперь построим алгоритм деления дробей для компьютера. В этом алгоритме сохраним те же обозначения для переменных, которые использованы в записанной формуле. Исходными данными являются целочисленные переменные a, b, c, d. Результатом – так же целые величины m и n.

Представьте алгоритм вначале в виде блок-схемы. В блок-схемах приняты такие обозначения:

Начало или конец алгоритма
Простая команда
Ввод и вывод данных
Проверка условия
Начало цикла
Обращение к вспомогательному алгоритму

 

Option Explicit Sub Деление_дробей () Dim a As Integer, b As Integer, c As Integer, d As Integer Dim m As Integer, n As Integer a = Val(InputBox("Введите числитель", "Первая дробь")) b = Val(InputBox("Введите знаменатель", "Первая дробь")) c = Val(InputBox("Введите числитель", "Вторая дробь")) d = Val(InputBox("Введите знаменатель", "Вторая дробь")) m = a*d n = b*c MsgBox "Числитель: " & Str(m) & Chr(13) & "Знаменатель: " & Str(n),, "Результат деления" End Sub

4. Составим программу, в результате выполнения которой будет выведено значение TRUE, если точка с заданными координатами (x,y) лежит внутри заштрихованной области и FALSE в противном случае.

Рассматриваемая область состоит из двух частей, каждая из которых описывается системой неравенств.

1-я часть: х £ 0; х2 + у2 £ 9; у ³ -х - 3.

2-я часть: х ³ 0; х2 + у2 £ 25.

Точка с координатами (х, у) лежит в заштрихованной области, если она принадлежит 1-й или 2-й части. Программа осуществляет ввод координат точки, вычисление значения логического выражения, которое определяет принадлежность точки области и выводит полученную логическую величину на экран.

Option Explicit

Sub Принадлежность_точки ()

Dim x As Single, y As Single, L As Boolean

x = Val(InputBox("Введите абсциссу", "Ввод координат"))

y = Val(InputBox("Введите ординату", " Ввод координат"))

L = (x <=0) And (x*x+ y*y<=9) And (y >= -x-3) Or (x >=0) And (x*x+ y*y<=25)

MsgBox "Лежит ли точка в заданной области?" & L,, "Результат"

End Sub


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)