пользователей: 27846
предметов: 11900
вопросов: 220537
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» qwert
» ped
» окн

программирование

 


Функции преобразования типов Str() и Val()
Str(число) 

Возвращает значение типа Variant (String), являющееся строковым представлением числа. Обязательный аргумент число может задаваться любым допустимым числовым выражением. 

При преобразовании числа в строку в начале строки обязательно резервируется позиция для знака числа. Если число является положительным, возвращенная строка будет содержать пробел на месте знака. 

Примечание. 

В качестве допустимого десятичного разделителя функция Str воспринимает только точку (.). При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr. 

Val(crpoкa)

Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа. 

Обязательный аргумент строка является любым допустимым строковым выражением. Функция Vа1 прекращает чтение строки на первом символе, который она не может распознать в качестве части числа. В качестве разделителя целой и дробной части распознается только точка (.). Пробелы, символы табуляции и символы перевода строк удаляются из значения аргумента. 

В следующем примере возвращается числовое значение 1615198: 

Vаl(" 1615 198-я ул. Н.Й.")
Организация ввода/вывода информации

Диалоговые функции ввода/вывода информации

При создании макрокоманд требуется организовать обмен информацией между макросом и пользователем, между макросом и документом. Эта задача решается с помощью функций InputBox, MsgBox. 

Функция InputBox
Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле. 

InputBox (сообщение [, заголовок] [, текст по умолчанию] ) 

сообщение — текст в диалоговом окне. 

заголовок — строковое выражение, отображаемое в строке заголовка диалого- вого окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения. 

текст по умолчанию — строковое выражение, отображаемое в поле ввода, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым. 

Если пользователь нажимает кнопку ОК или клавишу ENTER, функция InputBox возвращает содержимое поля ввода. 

Пример. Ввести значение X=0.5.

………………………………….

X=Val(InputBox(“Введите X”))

…………………………………..

В диалоговом окне ввести с клавиатуры 0.5.

Функция MsgBox

Функция MsgBox позволяет выводить результаты счета программы в диалоговом окне.

Синтаксис :

MsgBox (сообщение [, кнопки] [, заголовок] ) 

сообщение — строковое выражение, отображаемое в диалоговом окне. 

кнопки — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку. Значение по умолчанию этого аргумента равняется 0. 

заголовок — строковое выражение, отображаемое в строке заголовка диалого- вого окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения. 

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

Пример. Вывести результат на экран монитора.

…………………………………………

MsgBox(“Ответ=” + Str(y))

…………………………………………

Использование окна отладки

Окно отладки можно вывести на экран при помощи команды ^ Вид - Окно отладки или нажав клавиши <Ctrl>+<G> .

Для вывода текущих значений в окно Проверка непосредственно из макроса необходимо ввести в нужном месте кода макроса команду Debug сединственным методом Print. Синтаксис 

Debug.Print выражение.

В месте, где установлена эта команда, произойдет прерывание выполнения макроса и в окне Проверка появится текущее значение переменной или выражения. 

Пример.

…………………….

Debug.Print y

……………………

Использование объектов Excel

Объект WorkSheet – это лист рабочей книги. Он входит в коллекцию всех листов рабочей книги - семейство Sheets.Этот объект можно использовать для ввода/вывода данных. В этом случае к этому объекту можно применить метод Select, позволяющий выбирать конкретный лист. Например,

Sheets (“Лист1”) . Select

Если макрос написан для определенного листа, то удобно исходные данные поместить в соответствующие ячейки данного листа. В этом случае метод Select можно не использовать. При этом результаты счета будут помещены на этот же листе автоматически.. 

Поскольку одиночная ячейка не представлена собственным объектом, то доступ к ячейке можно осуществить с помощью свойства Cells , указывая номер строки и столбца. Для присвоения некоторой переменной x значения, находящегося в ячейке A2 используем оператор:

X=Cells(2,1) 

Пример.

Вывести значения переменных s и p во вторую и третью строки второй колонки (столбец В) третьего листа соответственно.

…………………………………………………………………….

Sheets(“Лист3”).Select ‘переходим на третий лист

Cells(2,8)=s ‘выводим s

Cells(3,8)=p ‘выводим p

…………………………………………………………………….
Часто используется свойство Value, возвращающее содержимое ячейки. Например, 

Cells(2,8).Value=s ‘выводим s

Операторы языка VBA и реализация основных алгоритмических конструкций


В языке VВА используется множество инструкций или операторов. Они служат для выполнения каких-либо стандартных действий. Условно из них можно выделить группы. 

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

Например: 

REM произвольный текст комментария

' произвольный текст комментария 

Al=5 ' комментарий к строке оператора 

Оператор присваивания

Присваивает выражение переменной или константе. Инструкции присвоения всегда включают знак равенства (=). 
ПЕРЕМЕННАЯ = ВЫРАЖЕНИЕ
Вначале вычисляется выражение, а затем результат запоминается в переменной. 

Выделяют следующие алгоритмические структуры:
 


  1. линейная, когда все действия выполняются последовательно (без условий) от начала до конца;

  2. разветвленная, когда на некотором шаге встречается условие, в зависимости от которого процесс решения может пойти по одной из нескольких ветвей;

  3. циклическая, когда некоторые фрагменты программы должны выполняться несколько раз.


Г  ОСТом установлены следующие геометрические фигуры для обозначения действий:
^ Программирование алгоритмов линейной структуры

Программа линейного вычислительного процесса представляет собой последовательность операторных строк, содержащих операторы присваивания, а также средства ввода и вывода.

При составлении линейных программ необходимо: 
 


  • выделить начальные данные; 

  • установить последовательность вычислений;

  • определить исходные данные до момента их использования;

  • желательно снабжать программу комментариями для удобства ее чтения.


Пример. Вычислить значение выражения для любых a и b.

Программа

Sub Lin()

Dim a As Double, x As Double

a = Val(InputBox("Введите а")) 'ввод значения переменной a

x = Val(InputBox("Введите x")) 'ввод значения переменной x

b = 1 / (x) ^ (1 / 4) 'вычисляем значение b'

c = Sin(a ^ 2 + b ^ 2) 'вычисляем значение C

MsgBox ("Ответ=" + Str(c))

End Sub

Пример. Составить программу для вычисления площади S треугольника ABC по заданным значениям сторон a,b,c.

Программа

Sub Geron()

Dim a, b, c, p, s As Double

a = Val(InputBox("Введите a")) 'ввод значения переменной a

b = Val(InputBox("Введите b")) 'ввод значения переменной b

c = Val(InputBox("Введите c")) 'ввод значения переменной c

'P - полупериметр,S - площадь

p = (a + b + c)

s = Sqr(p * (p - a) * (p - b) * (p - c))

Cells(1, 1) = "Площадь="

Cells(1, 2) = s

End Sub

Операторы управления порядком выполнения команд 

Обычно выполнение макроса начинается с выполнения инструкций SUB или FUNCTION и продолжается в порядке следования строк с операторами до тех пор, пока не встретится инструкция END SUB или END FUNCTION. 

Но часто, при проектировании макросов, необходимо выполнять различные варианты программы, в зависимости от значения каких-либо переменных или параметров (условий), задаваемых пользователем во время выполнения программы. На этот случай в VВА предусмотрен ряд операторов, предназначенных для изменения порядка выполнения операторов в программе. 

^ Оператор безусловного перехода GoТо 

Позволяет изменить порядок выполнения команд. Задает безусловный переход на указанную строку внутри той процедуры, в которой она находится. 

Синтаксис инструкции GoTo:

Gото строка 

Обязательный аргумент строка может быть любой меткой строки или номером строки. 

Метка строки — это строка программы, в начале которой указывается имя метки и двоеточие (:). Метки должны иметь уникальные имена в пределах одной процедуры. 

Примечание. 

Слишком большое число инструкций GoTo затрудняет чтение и отладку программ. По воэможности следует использовать структурные управляющие инструкции (Do...Loop, For...Next, If...Then...Else, Select Case). Инструкция GoTo в VBA применяется, главным образом, для обработки ошибок. 

Оператор If... Then... Else 

Условный оператор If... Then...Else выполняет определённые инструкции или наборы инструкций в зависимости от значения заданных условий. 

Синтаксис, т.е. правила записи строчной инструкции If...then...else следующий: 

If условие Then [оператор1] [Else оператор2] . 

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

Обязательный параметр условие — представляет собой логическое выражение, которое возвращает значение (истина) TRUE или (ложь) FALSE. Если условие равно TRUE, то выполняется оператор1, если условие равно FALSE, то выполняется оператор2. Далее выполняется, если иное не предусмотрено программой в операторах1 или 2, инструкция, следующая по порядку за строкой с инструкцией If... Then...Else. 

Часть оператора If, а именно ключевое слово Else и следующие за ним инструкции можно опустить, тогда при условии равном FALSE выполняется оператор, следующий за строкой с инструкцией If. Т.е. инструкция If выглядит так: 

If условие Then [оператор

Примечание. 

В квадратных скобках обозначены те элементы инструкции, которые не явля ются обязательными для записи. 

В реальных случаях часто требуется обработка нескольких инструкций при выполнении условия. В этих случаях предпочтительнее блочный вид инструкции If, синтаксис которой выглядит следующим образом: 


If условие Then 

[Блок операторов]

[Else 

[^ Блок операторов]]

End If 

Блочная структура If удобнее, так как каждый блок операторов может включать в себя произвольное число утверждений. Кроме того, допускается вложение структур If. 

Оператор Select Саsе

Это оператор выбора из многих возможных вариантов. Оператор Select Case выполняет одну из нескольких групп операторов в зависимости от значения выражения. В языках высокого уровня такой оператор называется переключателем. 

Синтаксис инструкции 

Select Саsе выражение

[Case список условий-1

[операторы-1]] 

[Саsе список условий-2 

[операторы-2]] 



[Саsе список условий-n 

[операторы-n]] 

[Case Else

[операторы_ else]]

End Select 

выражение — обязательный параметр, может быть любым выражением любо- го типа данных VBA, включая числовой, строковый, или логический. 

Список условий — обязательный при наличии инструкции CASE. Содержит результаты вычисления выражения, записанные в одном из видов: 
 


  1. Саsе КОНСТАНТА1, КОНСТАНТА2, KOHCTAHTA3, ... 

  2. Саsе Is ЗНАК_ ОТНОШЕНИЯ КОНСТАНТА 

  3. Case КОНСТАНТА1 to КОНСТАНТА2 


Выполняется оператор Select Case следующим образом — сначала вычисляется значение выражения, стоящего после ключевых слов Select Case, затем производится проверка на совпадение значения выражения и одного из Case условий, в случае совпадения выполняютсяоператоры, помещенные за этим Case условием. В случае, если совпадения не обнаружено ни в одном из Case условий, то выполняются операторы, находящиеся после ключевых слов Саsе Else. Если список выражений в Саsе условии записан в первой форме, то необходимо, чтобы результат вычислений выражения равнялся одной константе из списка, если Case условие записано во второй форме, то необходимо, чтобы выполнялось условие отношения между значением выражения и константой. Если же в третьей форме, то необходимо выполнение соотношения 

КОНСТАНТА1<=выражение<=КОНСТАНТА2.

^ Программирование алгоритмов разветвляющейся структуры

Алгоритм разветвляющейся структуры – это алгоритм такого процесса, в котором его реализация осуществляется по одному из заранее предусмотренных (возможных) направлений в зависимости от исходных условий или промежуточных результатов. Каждое отдельное направление обработки информации в таком процессе называется ветвью. Выбор ветви определяется проверкой выполнения логического условия, определяющего свойства исходных данных или промежуточных результатов. В каждом конкретном случае процесс обработки данных выполняется лишь по одной из ветвей. Для их реализации используются операторы управления порядком выполнения команд, рассмотренные выше.

Пример. Дано действительное число x. Вычислить y.

Программа.

Sub Raz2()

Dim x, y As Double

x = Val(InputBox("Введите x")) 'ввод значения переменной x

If x > 0 Then y = Sin(x) Else y = 2 * x

MsgBox ("Значение y=" + Str(y#))

End Sub

Пример. Дано действительное число x. Вычислить y.
Программа

Sub Raz3()

Dim x, y As Double

x = Val(InputBox("Введите x"))

If x < 0.1 Then y = Cos(x ^ 2) Else If x > 0.1 Then y = Exp(x) Else y = x ^ 3 - 2

MsgBox ("Значение y=" + Str(y#))

End Sub

Пример. Даны три числа. Выяснить, существует ли треугольник с такими сторонами.

Программа

Sub Treug()

Dim a, b, c As Double

a = Val(InputBox("Введите сторону a"))

b = Val(InputBox("Введите сторону b"))

c = Val(InputBox("Введите сторону c"))

If (a + b) > c And (b + c) > a And (a + c) > b Then MsgBox ("Треугольник существует") Else MsgBox ("Треугольник не существует") ‘оператор печатать в одной строке 

End Sub

Пример. Дано действительное число x. Вычислить z,y,h, если известно, что

Программа 

Sub Raz3()

Dim x, z, y, h As Double

x = Val(InputBox("Введите x"))

If x > 0.8 Then

z = 2 * Sin(x)

y = Log(x) + 4 * x

h = Cos(x)

Else

If x = 0.8 Then

z = Sqr(Sin(x))

y = Cos(x ^ 2) + x

h = 2 * x

Else

z = Abs(x - 2)

y = 2 + x ^ 2 * Sin(x)

h = 0

End If

End If

Cells(1, 1) = "x=": Cells(1, 2) = x

Cells(2, 1) = "z=": Cells(2, 2) = z

Cells(3, 1) = "y=": Cells(3, 2) = y

Cells(4, 1) = "h=": Cells(4, 2) = h

End Sub
^ Программирование алгоритмов циклической структуры

Решение многих практических задач сводится к выполнению вычислений по одним и тем же зависимостям, но при разных значениях входящих в них величин. Такой вычислительный процесс называется циклическим, а многократно повторяющиеся участки этого процесса называются циклами.

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

^ Операторы цикла

Оператор цикла While... Wend 

Оператор имеет синтаксис 

While условие

[операторы]

Wend 

Синтаксис инструкции While... Wend содержит следующие элементы: 

условие — обязательный элемент. Числовое выражение или строковое выражение, которое имеет значение True или False. 

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

Этот оператор называют оператором цикла с предусловием. Выполняется оператор While... Wend следующим образом. Если условие имеет значение True, выполняются все операторы до инструкции Wend. Затем управление возвращается инструкции While и вновь проверяетсяусловие. Если условие по-прежнему имеет значение True, процесс повторяется. Если оно не имеет значение True, выполнение возобновляется с инструкции, следующей за инструкцией Wend. В связи с этим элемент условие здесь является условием выполнения цикла. Циклы While... Wend могут иметь любую глубину вложенности. 

^ Оператор цикла Do...Loop 

Оператор Do...Loop также используется для выполнения наборов операторов неопределенное число раз. Оператор имеет синтаксис: 

Do 

[операторы

Loop Until [условие

Синтаксис инструкции Do Loop содержит следующие элементы:

условие — необязательный элемент. Числовое или строковое выражение, которое имеет значение True или False. 

операторы— один или несколько операторов, выполнение которых повто- ряется, пока условие не приобретет значение True. 

Этот оператор называют оператором цикла с постусловием. Выполняется оператор Do...Loop следующим образом. Если условие имеет значение False, выполняются все операторы после инструкции Do. Затем управление передается инструкции Until и вновь проверяется условие. Еслиусловие по-прежнему имеет значение False , процесс повторяется. Если оно имеет значение True, управление передается следующему за инструкцией Loop Until оператору. В связи с этим элемент условие здесь является условием выхода из цикла.

^ Оператор цикла For...Next

Часто при составлении макроса заранее известно количество повторений группы операторов, в таких случаях можно использовать инструкцию For...Next

Оператор For...Next используется для выполнения наборов операторов указанное число раз. Циклы For используют в качестве счетчика переменную, значение которой увеличивается или уменьшается при каждом выполнении цикла на указанное значение. 

Синтаксис инструкции For...Next 

For счетчик = начало То конец [step шаг]

[операторы]

Next [ счетчик

счетчик — обязательный элемент. Это должна быть числовая переменная. Она не может иметь тип Boolean или быть элементом массива. 

начало — обязательный элемент, содержит начальное значение переменной счетчик. 

конец — обязательный элемент, содержит конечное значение переменной счетчик. 

шаг — элемент необязательный, это значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен единице. Шаг может быть как положительным, так и отрицательным. 

операторы— необязательный элемент. Один или несколько операторов между For и Next, которые выполняются указанное число раз. 

Инструкция For...Next работает следующим образом: начальное значение элемента счетчик сравнивается с конечным значением. Если шагположителен и начальное значение меньше конечного или если шаг отрицателен и начальное значение больше конечного, то управление передается внутрь тела цикла. После выполнения всех операторов в теле цикла значение шаг добавляется к текущему значению переменнойсчетчик. После этого операторы тела цикла либо выполняются еще раз (на основе того же условия, которое привело к начальному выполнению цикла), либо цикл завершается и выполнение продолжается с оператора, следующей за Next. 

Допускается вложение циклов For...Next (один цикл For...Next располагается внутри другого). Счетчик каждого цикла должен иметь уникальное имя.

Пример. Составить таблицу значений функции y=x2 на отрезке [2,8] с шагом 0.5.

Программа

Sub Tablica()

Dim x, y As Double, i As Integer

i = 1

Cells(1, 1) = "X": Cells(1, 2) = "Y"

For x = 2 To 8 Step 0.5

y = x ^ 2

i = i + 1

Cells(i, 1) = x: Cells(i, 2) = y

Next x

End Sub

Пример. Вычислить сумму квадратов n чисел: 1,4,9,16,25,… . Число n задать произвольно при вводе.

Программа

Sub sum()

Dim n, i As Integer, s As Double

n = Val(InputBox("Введите количество слагаемых n"))

s = 0

For i = 1 To n

s = s + i ^ 2

Next i

MsgBox ("Сумма s=" + Str(s#))

End Sub

Пример. Вычислить произведение квадратов n чисел: 1,4,9,16,25,… . Число n задать произвольно при вводе.

Программа

Sub Proiz()

Dim n, i As Integer, p As Double

n = Val(InputBox("Введите количество слагаемых n"))

p = 1

For i = 1 To n

p = p * i ^ 2

Next i

MsgBox ("Произведение p=" + Str(p#))

End Sub

Пример. Дана числовая последовательность:

Вычислить сумму данной последовательности при n=µ с точностью 0.000001.
Программа

Sub Iter()

Dim a, e, s As Double

a = 1 'первый член ряда

s = a 'сумма ряда

e = Val(InputBox("Введите точность вычислений"))

Do 'начало цикла

a = -a / 2 'вычисляем очередной член последовательности

s = s + a 'накапливаем сумму

Loop Until Abs(a) < e 'конец цикла

MsgBox ("Сумма s=" + Str(s#))

End Sub
^ Вложенные циклы
Внутри одного цикла могут находится один или несколько других циклов. В этом случае охватывающий цикл называется внешним, а вложенные в него циклы – внутренними. Правила организации как внешнего, так и внутренних циклов аналогичны правилам организации простого цикла. Параметры внешнего и внутреннего циклов изменяются не одновременно, т.е. при одном значении параметра внешнего цикла параметр внутреннего последовательно принимает все возможные значения. При организации вложенных циклов необходимо следить за тем, чтобы область действия внутреннего цикла не выходила за область действия внешнего цикла.

Пример. Составить таблицу значений функции на отрезке [1,4] c шагом h=0.5.

Программа

Sub VlCircle()

Dim x, s, a, b, h As Double, i, n, k As Integer

a = Val(InputBox("Введите а"))

b = Val(InputBox("Введите b"))

h = Val(InputBox("Введите шаг h"))

n = Val(InputBox("Введите количество слагаемых n"))

k = 1

Cells(1, 1) = "X": Cells(1, 2) = "S"

For x = a To b Step h

s = 0

For i = 1 To n

s = s + x / i

Next i

k = k + 1

Cells(k, 1) = x: Cells(k, 2) = s

Next x

End Sub

 

 


хиты: 128
рейтинг:0
Гуманитарные науки
история
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2018. All Rights Reserved. помощь