Public A, B, C Private X1, X2, X3
Однако, переменные в языке Basic можно и не объявлять с помощью этих описаний, достаточно написать в программе новый идентификатор и присвоить ему значение, после чего транслятор будет знать, что это пере- менная, например:
Z = 1.2345 'переменной с именем Z присвоено числовое значение 1,2345
S = ”Строка текста” dt = #12-31-08#
Разница между описаниями Dim, Public, Private существенна при ис- пользовании внутри программы функций пользователя. В этом случае раз- личается область действия переменных и массивов.
При отсутствии явного описания все переменные, используемые в головной программе, являются глобальными, отсутствующие в головной программе, но используемые в подпрограмме – локальные.
Если в начале программы написать строку:
Option Explicit
использование переменных без их явного описания в выражениях Dim, Pub- lic и Private будет запрещено. Попытка использовать необъявленную пере- менную вызовет сообщение об ошибке при выполнении программы.
Явное описание переменных способствует уменьшению количества ошибок при программировании, в частности, предотвращает конфликты между переменными, используемыми в основной программе и в процеду- рах при одинаковых именах; позволяет выявить неверно написанные име- на предопределенных констант языка (иначе неверные имена просто игно- рируются).
Учебное задание
В вариантах заданий в скобках < >задано значение переменных, ко- торые нужно получить, в скобках ( ) – номера констант Вашего задания. Значения переменных следует формировать из констант, пробелов и зна- ков препинания с использованием оператора конкатенации &.
1. Задайте в программе 3 константы и присвойте им значения 1) Вашего имени, 2) отчества, 3) фамилии. Создайте 2 переменные и присвойте им значения: первой – <(3), (1), (2)>, второй – <(1) (2) (3)>. Покажите кон- станты и переменные в модальном окне MsgBox (каждую в отдельной строке).
2. Задайте в программе 3 константы и присвойте им значения Ваших 1) дня, 2) название месяца, 3) года рождения. Создайте 2 переменные и присвойте им значения: первой – <(1).(2).(3)>, второй – <Я родился (1)
(2) (3) года .>. Покажите константы и переменные в модальном окне MsgBox (каждую в отдельной строке).
3. Задайте в программе 4 константы и присвойте им значения данных Ва- шего адреса проживания: 1) город; 2) улица 3) номер дома; 4) номер квартиры. Создайте 2 переменные и присвойте им значения: первой –
<(1), (2), (3), (4)>, второй – <Я живу в городе (1) на улице (2) в доме (3), квартира (4).>. Покажите константы и переменные в модальном окне MsgBox (каждую в отдельной строке).
4. Задайте в программе 4 константы и присвойте им значения данных о Вашей учебе: 1) учебное заведение; 2) специальность 3) курс; 4) группа. Создайте 2 переменные и присвойте им значения: первой – <(1),(2), (3), (4)>, второй – <Я учусь в (1) на специальности (2) курс (3), группа (4).>. Покажите константы и переменные в модальном окне MsgBox (каждую в отдельной строке).
5. Задайте в программе 3 константы и присвойте им значения данных о Вашей учебе в школе: 1) населенный пункт; 2) № школы; 3) любимый предмет. Создайте 2 переменные и присвойте им значения: первой –
<(1), (2), (3)>, второй – <Мой любимый предмет был (3), когда я учился в (2)-й школе города (или название другого типа населенного пункта) (1).>. Покажите константы и переменные в модальном окне MsgBox (каждую в отдельной строке).
6. Задайте в программе 4 константы и присвойте им значения паспортных данных (придумать близкие к возможным): 1) серия; 2) №; 3) кем вы- дан; 4) дата выдачи. Создайте 2 переменные и присвойте им значения: первой – <(1) – (2) , (3) (4)>, второй – <Паспортные данные: серия (1), номер (2), выдан (4) (3).>. Покажите константы и переменные в модаль-ном окне MsgBox (каждую в отдельной строке).
7. Задайте в программе 3 константы и присвойте им значения Ваших ан- тропометрических данных: 1) рост в см; 2) вес в кг; 3) окружность гру- ди; 4) талии; 5) бедер, в см. Создайте 2 переменные и присвойте им зна- чения: первой – <(1), (2), (3) – (4) – (5)>, второй – <Мой рост (1) см, вес (2), окружность груди, талии и бедер (3) – (4) – (5) см >. Покажите кон- станты и переменные в модальном окне MsgBox (каждую в отдельной строке).
8. Задайте в программе 3 константы и присвойте им названия предметов Вашего сегодняшнего расписания: 1) 1-я пара; 2) 2-я пара 3) 3-я пара. Создайте 2 переменные и присвойте им значения: первой – <(1) – (2) – (3)>, второй – <8.20-9.05 9.10-9.55 – (1); 10.10-10.55 11.00-11.45 – (2);
12.00-12.45 12.50-13.35 – (3)>. Покажите константы и переменные в мо-дальном окне MsgBox (каждую в отдельной строке).
9. Задайте в программе 3 константы и присвойте им названия окон VBS: 1) MsgBox; 2) InputBox3) Popup. Создайте 2 переменные и присвойте им значения: первой – <Окна VBS: (1), (2), (3)>, второй – <Их назначение и особенности: (1) – (здесь написать назначение), (2) – (здесь об этом окне), (3) – (здесь особенности этого окна).>. Покажите константы и пе- ременные в модальном окне MsgBox (каждую в отдельной строке).
10. Задайте в программе 6 констант и присвойте им названия подтипов данных VBS для работы с числами. Создайте 6 переменных и присвойте им значения: <(подтип) – диапазон данных (здесь указать диапазон)>. Покажите константы и переменные в модальном окне MsgBox (каждую в отдельной строке).
Лабораторная работа № 14. Программирование на языке VBS. Массивы
Цель работы
Освоение понятия массив алгоритмического языка
Учебные вопросы
1. Описание массивов.
2. Динамический массив.
3. Работа с элементами массива.
Краткое изложение учебного материала
Переменная, которая хранит единственное значение, называется ска- лярной. Переменная может использоваться и для хранения серии чисел, такая переменная является массивом.
| Массив– переменная, предназначенная для хранения пронумерован- ной серии значений (элементов массива).
|
1 Описание массивов
Скалярная переменная может использоваться без явного описания с использованием ключевых слов Dim, Publicили Private, если в начале про- граммы не присутствует директива Option Explicit.
| Массив обязательно должен быть описан перед его использованием.
|
Для описания массивов используются те же операторы, что и для пе- ременных, только после имени переменной в круглых скобках указывается количество индексов и их максимальное значение у элементов массива.
Полный синтаксис этих описаний следующий:
| Dim имя_м[([индексы])][, имя_м[([индексы])]]...
Public имя_м[([индексы])][, имя_м[([индексы])]]...
Private имя_м[([индексы])][, имя_м[([индексы])]]...
|
где:
Имя_м – имя массива;
Индексы – имеет формат: индекс1[,индекс2]...– максимальные значе- ния индексов, минимальное значение равно 0; массив мо- жет быть одномерный, двумерный и т. д. до 60.
Пример:
Dim X(99), Y(24,24), Z(99,99,99)
где:
X(99) – одномерный массив из 99 элементов;
Y(24,24) – двухмерный массив размерностью 24×24 элемента;
Z(99,99,99) – трехмерный массив размерностью 99×99×99.
Разница между описаниями Dim, Public, Private существенна при ис- пользовании внутри программы подпрограмм и функций пользователя. В этом случае различается область действия переменных и массивов.
Массив в языке VBS после его объявления имеет тип Variant, поэтому его элементам можно присваивать значения различных типов. Максималь- ный размер массива ограничен размером свободной виртуальной памяти операционной системы.
2 Динамический массив
Массив может быть динамический (изменяемой размерности), при его описании в круглых скобках размерность не указывают:
Dim имя_м()[, имя_м()]...
Для инициализации динамического массива следует использовать оператор:
ReDim [Preserve] имя_м(индексы)[, имя_м(индексы)]...
Параметр Preserve используется, если выполняется повторная иници- ализация для изменения размера массива и необходимо сохранить значе- ния переменных, которые им уже были присвоены.
Пример:
Dim X(), Y()
ReDim X(10), Y(10)
. . .
ReDim Preserve X(10, 10), Y(10, 10)
Другой способ создания переменной типа Variant, содержащей одно- мерный массив, – с помощью функции Array:
A = Array(10,20,30,40)
Эта функция описывает массив и задает значения его элементам. В примере значения элементов массива будут следующими:
A(0)=10, A(1)=20, A(2)=30 и A(3)=40.
3 Работа с элементами массива
Пример программы с использованием массивов:
Dim Y(99), Z(99,99,99)
Y(0) = "Это 1-ый элемент массива Y - строка" Y(1) = 123.456 ' Тип второго элемента - число Y(99)= #12-30-2007# ' Тип 100-го элемента - дата
Z(99,99,99)="Это элемент трехмерного массива Z "_ & "с индексом 99,99,99"
MsgBox Y(0) & vbLf & "2-ой элемент массива Y - число: " _ & Y(1) & vbLf & "100-ый элемент массива Y - дата: " _ & Y(99) & vbLf & Z(99,99,99),,"Студент Иванов И. И."
Окно, которое показывает эта программа, показаны на рисунке 14.1.

Рисунок 14.1 – Пример на использование массивов
Учебное задание
1) Опишите в программе два одномерных массива размерностью 3 и 5 элементов, присвойте значения элементам первого массива – нечетные числа, начиная с 21, второго – буквы русского алфавита, начиная с мяг- кого знака. Покажите все данные в окне сообщений.
2) Опишите в программе динамический массив. Выполните вначале его инициализацию для размерности 3 элемента и присвойте значения эле- ментам массива – любые числа. Покажите все данные в 1-м окне сооб- щений. Затем выполните повторную инициализацию для размерности 7 с сохранением значений определенных ранее элементов. Присвойте элементам с 4 по 7-й любые даты. Покажите все данные во 2-м окне со- общений.
3) Опишите в программе двухмерный массива размерностью 2 × 3 элемен- тов и присвойте значения каждому элементу массива – время в диапа- зоне от 7:00 до 19:00. Покажите данные в окне сообщений в виде мат-
рицы, в которой номер строки – первый индекс, в строке изменяется второй индекс.
4) Задайте с помощью функции Array значения 5-ти элементам массива, представляющим собой геометрическую прогрессию. Покажите все данные в окне сообщений.
5) Создайте с помощью функции Array одномерный массив, состоящий из 6-ти чисел. Покажите данные в окне сообщений. С помощью функции ReDimпереопредилите его размерность до двухмерного размерностью 3
× 2. Задайте значения всем его элементам и покажите их в окне сообще- ний в виде матрицы, в которой номер строки – первый индекс, в строке изменяется второй индекс.
6) Опишите в программе трехмерный массива размерностью 2 × 3 × 4 эле- ментов и присвойте числовые значения элементам массива. Покажите данные в окне сообщений с указанием элемента массива и его значение (например, A(0,0,0)=1 и т. д.).
7) Задайте элементам двумерного массива текстовые значения – каждому одно слово какого-либо четверостишия. Покажите элементы массива в окне сообщений в виде стихотворения.
8) Опишите в программе два одномерных массива X и Y размерностью 5 элементов, присвойте числовые значения элементам массивов. Покажи- те данные в окне сообщений в виде таблицы, в первой строке которой показаны имена массивов, в последующих – значения их элементов.
9) Опишите в программе одномерный массив из 7 элементов. Присвойте значения элементам – целые числа. Покажите элементы массива в окне сообщений в следующем порядке: 1, 7, 2, 6, 3, 5, 4.
10) Опишите в программе два одномерных массива размерностью 5 элементов, присвойте числовые значения элементам массивов. Покажи- те данные в окне сообщений: в первой строке элементы первого масси- ва от первого до 5-го, во второй строке – элементы второго массива от 5-го до первого.
Лабораторная работа № 15. Программирование на языке VBS. Условные операторы IF и CASE
Цель работы
Освоение приемов организации разветвляющихся алгоритмов в про- грамме на алгоритмическом языке.
Учебные вопросы
1. Строчный синтаксис оператора условного перехода.
2. Блочный синтаксис оператора условного перехода.
3. Оператор выбора Case.
Краткое изложение учебного материала
| Оператор условного перехода IFпозволяет выполнить те или иные строки программы в зависимости от логических условий.
|
В языке VBS он может использоваться в двух различных видах (строчный и блочный синтаксисы).
1 Строчный синтаксис оператора условного перехода
If <условие> Then <операторы1> [Else <операторы2>]
где:
условие – логическое выражение, результатом вычисления которого может быть истина (True), ложь (False) или Null которое приравни- вается к False;
операторы1 – один оператор или более (разделенных двоеточиями для строкового синтаксиса); выполняются, если условие истинно (True);
операторы2 – выполняются, если условие не является истиной (False).
В логических выражениях могут использоваться следующие основ- ные операторы сравнения и логические операции:
| =
| Равно
| And
| Логическое «И»
| | <>
| Не равно
| Or
| Логическое «ИЛИ»
| | <
| Меньше
| Xor
| Логическое исключение
(E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе – False)
| | >
| Больше
|
| | <=
| Меньше или равно
|
| | >=
| Больше или равно
| Eqv
| Логическое «эквивалентно»
| | Is
| Сравнение объектов
| Imp
| Логическая импликация
|
| Not
| Логическое отрицание
| (E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе –True)
| Для простых условных операторов следует использовать строчный синтаксис.
Два примера строчного синтаксиса:
If A <= 0 Then A = A + 1 : B = B + A Else B = B + A
If X > 0 and X <= 1 Then Y = 1 else Y = 0
2 Блочный синтаксис оператора условного перехода
Блочный синтаксис является более структурированным, имеет боль- шие возможности, легче читается и отлаживается. В одном операторе мо- жет быть выполнена проверка нескольких условий с заданием различных исполняемых фрагментов программы.
| If <условие> Then [операторы]
[ElseIf <условие-n> Then [операторы-n]] ...
[Else
[else-операторы]]
End If
|
где:
условие – логическое выражение, результатом вычисления которого может быть истина (True), ложь (False) или Null которое приравни- вается к False;
операторы – один оператор или более (разделенных двоеточиями для строкового синтаксиса), которые выполняются, если условие истинно (True);
условие-n – то же, что и условие;
операторы-n – выполняются, если условие-n является истиной (True);
else-операторы – один оператор или более, выполняющиеся, если предшествующие условия не были истинны.
Когда выполняется блочный If, проверяется условие, и, если оно ис- тинно (True), выполняются операторы, следующие за Then. Если условие не является истинным (False), каждое условие-n, идущее за ElseIf (если они есть) проверяется. Когда истинное значение найдено, выполняются опера- торы-n, следующие за Then после истинного условия, после чего програм- ма выходит за End If (т. е. последующие ElseIf, если они есть, не проверяют- ся). Если истинных условий для ElseIf не найдено, выполняются else- операторы, следующие за Else.
Пример блочного синтаксиса:
FIO = "Лютикова Лилия Максимовна"
a = InputBox("Задайте значение переменной a", "Пример IF. " & FIO)
a = Eval(a) 'преобразование строки в число
If a > 10 Then
b = "a > 10"
ElseIf a > 0 Then
b = "a > 0" 'строка будет выполнена даже при а=1!
ElseIf a = 1 Then
b = "a = 1" 'эта строка никогда не будет выполняться!
Else
b = "Нет данных для заданного значения a" End If
MsgBox "Результат выполнения IF для a = "& a & ": " &
B,,FIO
Примеры исполнения программы показаны на рисунке 15.1.


Рисунок 15.1 – Примеры работы программы с использованием блочного оператора IF
3 Оператор выбора Case
| Оператор выбора Caseпозволяет выполнить те или иные операторы в зависимости от множества значений заданного выражения или перемен- ной.
|
Синтаксис оператора выбора:
| Select Case <тест-выражение> [Case <список_выр-n>
[<операторы-n>]] . . . [Case Else
[<else-операторы-n>]]
End Select
|
где:
тест-выражение –любое числовое или строковое выражение;
список_выр-n – список из одного или более выражений для соответ- ствующего Case;
операторы-n – один оператор или несколько, выполняющихся, если тест-выражение имеет то же значение, что и значение одного из выражений списка-n;
else-операторы-n – один оператор или несколько, выполняющихся, если тест-выражение не совпадает ни с одним из значений Case-структур.
Пример использования структуры Case:
FIO = "Иванов Иван иванович"
X = InputBox("Задайте значение переменной a", _ "Пример Case. " & FIO)
X = Eval(X) 'преобразование строки в число
Select Case X
Case -3, -2, -1 Y = "X из списка -1, -2, -3" Case 0 Y = "X равно 0"
Case 1, 2, 3 Y = "X из списка 1, 2, 3" Case Else Y = "Нет данных"
End Select
MsgBox "Результат выполнения Case для X = "& X & _ ": " & Y, 4096, FIO
Рисунок 15.2 – Примеры работы программы с использованием структуры Case
Учебное задание
1) Для Вашего варианта таблицы 15.1 задайте в окне ввода значение пере- менной X с учетом заданного подтипа данных.
При вводе маленьких или больших чисел с использованием буквы e(например, -1e15) используйте преобразование подтипа строка в число с использованием функции Eval. При вводе даты и времени используйте функцию преобразования подтипа Cdate. При работе с датами учитывать, что их основные форматы #мм/дд/гггг# или #мм-дд-гг#.
Вычислите переменную Y по одному из выражений в зависимости от значения X. Значения переменных X и Y покажите в окне сообщений.
Для тех заданий, где варианты X охватывают не все возможные значе- ния этой переменной (например, номер месяца – целое число только от 1 до 12, а не любое другое целое число), предусмотреть вывод сообщения
«Нет решения для заданного значения X»
Выполнить данное задание с использованием:
a) строчного синтаксиса оператора условного перехода,
b) | №
| Условие
| Y
|
| №
| Условие
| Y
| | 1.1
| X ≤ -1015
| Y= «маленькое число»
| 1.6
| X – месяц от 1 по 3
| Y= «1-й квар- тал»
| | X>-1015 и X<0
| Y= «отрица- тельное число »
| X – месяц от 4 по 6
| Y= «2-й квар- тал»
| | X≥0 и X<1015
| Y= «положи- тельное число »
| X – месяц от 7 по 9
| Y= «3-й квар- тал»
| | X ≥ 1015
| Y= «большое число»
| X – месяц от 10 по 112
| Y= «4-й квар- тал»
| | 1.2
| X – символ до
«Г»
| Y= 1
| 1.7
| X < -10308
| Y= -∞
| | X – символ от
«Г» до «Ж»
| Y= 2
| X ≥ -10308 и X≤ 1030
| Y= «диапазон действитель- ных чисел»
| | X – символ по- сле «Ж»
| Y= 3
| X > 10308
| Y= +∞
| | 1.3
| X – дата меньше 01.01.1900
| Y= 19
| 1.8
| X от 0 по 255
| Y = «подтип Byte»
| | X – дата от 01.01.1900 до
31.12.1999
| Y= 20
| X от -32768 по 32767
| Y = «подтип Integer»
| | X – дата начи- ная с 01.01.2000
| Y= 21
| X – целые числа другие
| Y = «подтип Long»
| | 1.4
| X – время от 0 час. 00 мин. до 6 час. 00 мин.
| Y= «ночь»
| 1.9
| X – дата и время = 1.1.2010 0:0:0
| Y = «С Но-
вым годом!»
| | X – время от 6 час. 01 мин. до 12 час.00 мин.
| Y= «утро»
| X – дата от 1 января 0000 года по 31 де- кабря 2099
| Y = «21 век!»
| | X – время от 12 час. 01 мин.
до 18 час. 00 мин.
| Y= «день»
| X – дата от 1 января 1900 года по 31 де- кабря 0099 года
| Y = «20 век!»
|
| блочного синтаксиса оператора условного перехода. Таблица 15.1 – Варианты заданий
|
| X – время от 18 час. 01 мин.
до 23 час. 59 мин.
| Y= «вечер»
|
|
| X – дата от 1 января 100 года по 31.12.9999
| Y = «верный диапазон дат!»
| | 1.5
| X – месяц от 12 по 2
| Y= «зима»
| 1.10
| X<0
| Y= «X отри- цательное»
| | X – месяц от 3 по 5
| Y= «весна»
| X≥0 и X<10-15
| Y= «X ма-
ленькое по- ложительное число»
| | X – месяц от 6 по 8
| Y= «лето»
| X≥ 10-15 и X<1
| Y= «X мень- ше 1»
| | X – месяц от 9 по 11
| Y= «осень»
| X≥ 1
| Y= «X не меньше 1»
|
2) С использованием оператора выбора Case выполнить задания 1-го пунк- та:
для компьютеров с № 1 по № 5 – вариант 1.5, с № 6 по № 10 – вариант 1.6.
Лабораторная работа № 16. Программирование на языке VBS. Операторы цикла Do и While
Цель работы
Освоение приемов организации циклов в программе на алгоритмиче- ском языке.
Учебные вопросы
1. Цикл типа Do... Loop.
2. Цикл типа While ... Wend.
Краткое изложение учебного материала
| Оператор циклапозволяет выполнить группу операторов несколько раз в соответствии с заданными условиями повтора.
|
Существует несколько видов оператора цикла:
| 1) Do... Loop
2) While ... Wend
3) For ... Next
4) For Each ... Next.
|
Данная лабораторная работа посвящена первым двум.
1 Цикл типа Do... Loop
Синтаксис оператора Do...Loop следующий
(здесь и далее в фигурных скобках {} приведены два возможных варианта, разделенных вертикальной чертой |, один из которых необходимо исполь- зовать):
1) первый вариант – проверка условия в начале цикла
| Do [{While | Until} <условие>] [<операторы>]
[Exit Do] [<операторы>]
Loop
|
2) второй вариант – проверка условия в конце цикла
| Do
[<операторы>] [Exit Do] [<операторы>]
Loop [{While | Until} <условие>]
|
где:
условие – логическое выражение, которое имеет значение истина (True)или ложь (False); значение условия Nullто же, что и False; для While (англ. пока) выполнение цикла продолжается, пока
условие истинно,
для Until (англ. до) – выход из цикла, когда условие истинно;
операторы – один или несколько операторов, выполнение которых повторяется, пока условие после while истинно (True)или усло- вие после Until ложно (False);
Exit Do – может использоваться, как альтернативный выход из цикла (на следующую строку программы после Loop); любое количе- ство Exit Do может быть помещено внутри цикла. Обычно эта команда используется с вычисляемым логическим выражением оператора If...Then.
Пример использования операторов циклов Do While...Loop и Do Until...Loop – вычисление числа p по формуле Беллара
∞
1 (−1)𝑛
256 1
64 32 4
𝜋= 26 �1024𝑛�10𝑛 + 1 + 10𝑛 + 9 − 10𝑛 + 3 − 4𝑛 + 1 − 10𝑛 + 5
𝑛=0
4 1
− 10𝑛 + 7 − 4𝑛 + 3�
eps = 1e-3 'точность расчета суммы на стадии отладки
n = 0
a = -1^n/1024^n*(256/(10*n+1)+1/(10*n+9)-64/(10*n+3)-_ 32/(4*n+1)-4/(10*n+5)-4/(10*n+7)-1/(4*n+3))
s = a
t1 = Time
Do While Abs(a) > eps 'цикл выполняется, пока |a| > eps
' или Do Until Abs(a) <= eps, что аналогично предыдущему
n = n + 1
a = -1^n/1024^n*(256/(10*n+1)+1/(10*n+9)-64/(10*n+3)-_ 32/(4*n+1)-4/(10*n+5)-4/(10*n+7)-1/(4*n+3))
s = s + a Loop
t2 = Time
dt = FormatDateTime(t2-t1)
pi = 3.1415926535897932384626433832795 ‘копия из Калькулятора
r_pi = 1/2^6*s ‘расчетное значение pi
MsgBox "Eps = " & eps & vblf & "Ист. Pi = " & pi _ & vblf & "Расч. Pi = " & r_pi & vbLf & "n = " & n _ & vbLf & "dt = " & dt, 4096, "Иванов И. И."
Результаты работы программы при eps = 1e-3 и при eps = 1e-15 пока- заны на рисунке 16.1.
| Внимание!При неверном написании условий окончания цикла про- грамма может зациклиться (будет работать бесконечно долго). Чтобы пре- кратить выполнение зациклившейся программы, необходимо открыть средство Windows Диспетчер Задач (Task Manager) с использованием со- четания клавиш Ctrl+Alt+Delete или, щелкнув правой кнопкой мыши на пустом месте панели задач, и выбрав в контекстном меню это средство, далее в разделе процессов найти и выделить wscript.exe и нажать кнопку
| |
| Завершить процесс
| (End Process).
|

Рисунок 16.1 – Результаты расчета числа Pi по формуле Беллара
2 Цикл типа While ... Wend
Синтаксис оператора цикла While...Wendследующий:
| While <условие> [<операторы>]
Wend
|
Выполнение операторов цикла повторяется, пока <условие> истинно (True).
Пример использования оператора While...Wend для расчета значения y =
arcctg(x) с использованием итерационного ряда:
¥
y = å
n=0
(-1)n × x2n+1
(2n + 1)

eps = 1e-28
'x = 0.9 'вариант для предварительного тестирования
x = 0.999999
n = 0
a = -1^n*x^(2*n+1)/(2*n+1) s = a
t1=Time
While Abs(a) > eps n = n + 1
a = -1^n*x^(2*n+1)/(2*n+1) s = s + a
Wend t2=Time
dt = FormatDateTime(t2-t1)
MsgBox "Истинное значение " & Atn(x) & vbLf & _ "Расчетное значение "& s & vbLf &_ "Продолжительность расчета " & dt & vbLf &_
" x = " & x &" n = " & n , 4096,_ "Y = arcctg(x). Иванов И. И."
Результат выполнения этой программы показан на рисунке 5.2.

Рисунок 16.2. – Результаты расчета с циклом While... Wend
Учебное задание
Вычислите число p по итерационной формуле с номером, соответ- ствующим номеру Вашего ПК, с абсолютной погрешностью вычисления от 10-5 до 10-16. Найдите величину погрешности, при которой в числе p по- стоянными остаются 7 знаков после запятой. Определите программно вре- мя расчета для каждого варианта, покажите в окне сообщений расчетные значения p, n и продолжительность расчета для различной погрешности.
Напишите пять вариантов программы для цикла DO с проверкой условия в начале и в конце и для цикла WHILE. Расчет для максимальной точности выполнить для одного варианта, т. к. его продолжительность мо- жет составлять 15 – 30 мин.
|
1)
|
|
2)
|
| |
3)
|
|
4)
|
| |
5)
|
|
6)
|
| |
7)
|
| |
8)
|
|
| |
9)
|
| |
10)
|
| Лабораторная работа № 17. Программирование на языке VBS. Операторы цикла For и For Each
Цель работы
Освоение особенностей использования цикла For... в программе на алгоритмическом языке.
Учебные вопросы
1. Цикл типа For... Next.
2. Цикл типа For Each... Next.
Краткое изложение учебного материала
1 Цикл типа For... Next
Синтаксис оператора цикла For...Nextследующий:
| For <счетчик> = <нач.знач.> To <кон.знач.> [Step <шаг>] [<операторы>]
[Exit For] [<операторы>]
Next
|
где:
счетчик – числовая переменная, используемая как счетчик (параметр) цикла; может быть положительной или отрицательной величиной
нач.знач. – начальное значение счетчика;
кон.знач. – конечное значение счетчика;
шаг – шаг изменения счетчика; на данную величину автоматически из- меняется счетчик после каждого выполнения операторов цикла; ес- ли шаг не указан, значит, он равен 1;
операторы – выполняются повторно столько раз, сколько определено значениями, заданными для счетчика: один раз, много раз или ни одного;
Exit For – может использоваться, как альтернативный выход из цикла; обычно используется с проверкой условия выхода в операторе If...Then; выход выполняется на строку программы, следующую за Next.
Пример использования цикла For...Next (результат исполнения про- граммы показан на рисунке 17.1):
n = 17
Redim x(n) Randomize
For i = 1 to n 'генерация nслучайных чисел
x(i) = 10 - 20*Rnd 'в диапазоне от -10.000 до 9.999
Next s = 0
For i = 1 to n
s = s + x(i) 'расчет суммы всех элементов массива x
Next
Ms =”” 'Ms - строка для показа всех элементов массива x
For i = 1 to n
ms = ms & x(i) & vblf Next
ms = ms & ”Сумма всех x = ” & S MsgBox ms, 4096, " For ... Next"
|
|
| | Рисунок 17.1 – For...Next
| Рисунок 17.2 – For...Exit For ...Next
| Рисунок 17.3 – Цикл For Each
| Пример программы с альтернативным выходом (результат исполне- ния см. на рисунке 17.2):
S = " X Y" & vbLF
S = S & "---------------" & vbLF
For X = 1 to 5 step 0.11
Y = FormatNumber(Tan(X),3)
If Abs(Y) < 0.5 Then
s = s & "---------------" & vbLf _
& "Выход из цикла" & vbLf & "при |Y| < 0.5" Exit For
End If
s = s & FormatNumber(X,3) & " " & Y & vblf Next
MsgBox S,4096," For...Exit For...Next"
2 Цикл типа For Each... Next
Синтаксис оператора цикла ForEach...Nextследующий:
| For Each <элемент> In <группа> [операторы]
[Exit For] [операторы]
Next [<элемент>]
|
где:
элемент – переменная, которая используется для перебора всех элементов коллекции или массива;
группа – имя коллекции объектов или массива.
Пример программы с использованием оператора For Each для работы с массивом:
N=19
ReDim x(n) Randomize
For i = 0 to n 'генерация n+1 случайных чисел
x(i) = 5 - 10*Rnd 'в диапазоне от -5.000 до 4.999
Next
S = ""
For Each iks in X
S = S & iks & vblf Next
MsgBox S, 4096," For Each... "
В данной программе цикл For Each использует все значения массива X
для формирования строки S (результат исполнения см. на рисунке 17.3).
Учебное задание
С использованием оператора цикла FOR и функции RND сгенериро- вать массивы из n действительных чисел, необходимые для вычисления по заданной ниже формуле. Для расчета по заданной формуле использовать оператор For Each. Программу выполнить несколько раз для различных значений n. Исходные данные и результаты показать в окне сообщений.
|
1)
|
n
s = å xi× x j
i=1
j=n
|
|
2)
|
n
yi = xi å xi
i=1
| |
3)
| ci = ai × bi
|
4)
| z = (n - i ) × xii y
i
| |
5)
| z = xi
i x - x
max min
xmax, xmin- максимальное и минимальное значенияя x
|
6)
| y = xi
i xср
n
xср = å xi / n
i=1
| |
7)
| n
s = å xi/i
i=1
|
8)
| y = xi
i n
å xi
i=1
| |
9)
| yi = axi + bxi + c
|
10)
| s n-1 x
= å i
i=1 xi+1
| Приложение 1. Горячие клавиши Windows 7
Операции с текстом и файлами
· Ctrl + A– Выделить всё.
· Сtrl + С– Копировать.
· Сtrl + Х– Вырезать.
· Сtrl + V– Вставить.
· Сtrl + Z– Отменить.
· Ctrl + Y– Повторить действие.
· Сtrl + B– Сделать жирным (только текст).
· Shift +Delete– Удалить файл без перемещения в корзину.
· CTRL+S– Сохранение текущего файла или документа (работает в боль- шинстве программ)
· ALT+F4– Закрытие текущего элемента или выход из активной программы
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2025 stydopedia.ru Все материалы защищены законодательством РФ.
|