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 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|