|
||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Функции преобразования форматовПри обработке выражений, введенных с помощью функции InputBox, и последующем выводе результата на экран, иногда приходится прибегать к функциям преобразования форматов (типов). Преобразование строки в число и обратно осуществляются следующими функциями.
Замечание. В качестве допустимого десятичного разделителя функция Str воспринимает точку. Часто возникает потребность в выводе нескольких результатов в одном окне сообщений. Помимо операции конкатенации (сложения строк &) используют функцию Chr.
Например, такая следующая строка кода: 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 поменялись местами. Аналогия со стаканами не совсем верна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (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. Представьте алгоритм вначале в виде блок-схемы. В блок-схемах приняты такие обозначения:
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 Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |