Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.87 Mб
Скачать
  1. Дискретность алгоритма. Это свойство означает, что процесс решения задачи расчленен на отдельные элементарные действия (шаги).

  2. Определенность алгоритма. Это свойство означает, что каждая команда алгоритма должна быть понятна исполнителю.

  3. Результативность алгоритма. Свойство алгоритма, состоящее в том, что он всегда приводит к результату.

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

    • Алгоритм

Алгоритм — последовательность инструкций исполнителю для решения доставленной задачи (от англ, algorithm; назван в честь великого узбекского математика IX Аль Хорезми). Существуют разные способы задания алгоритмов:

1) словесный - позволяет описать алгоритм с помощью слов и предложений.

2) графический — когда каждое действие записывается в соответствующей геометрической фигуре.

  • Применение аппарата схем для описания алгоритмов

Графическое представление хода решения задачи – самый наглядный способ записи алгоритма. Блок-схемы наиболее распространенный способ изображения алгоритмов

Алгоритм, заданный словесно или графически (блок-схемой), может быть обработан с помощью ЭВМ только в том случае, если он переведен на какой-либо язык программирования. Выбор языка зависит от многих факторов — как объективнее, так и субъективных: наличия техники, программного обеспечения, наличия литературы. Программа — запись алгоритма на языке программирования.

Система программирования Visual Basic относится к группе программных средств общим названием системы программирования. Система программирования обеспечивает пользователя средой для обработки программ, в Visual Basic это, называется проектированием приложений. В систему программирования Visual Basic входит текстовый редактор для написания текстов программ и конструктор форм. Программист пишет исходные тексты программ на формализованном языке, который представляет собой последовательность команд или операторов. Разработка интерфейса программы выполняется с помощью конструктора форм. Чтобы программа

выполнялась, исходные тексты переводятся на машинный язык. Это делает компилятор, который также входит в систему программирования. Не выходя из среды Visual Basic, вы монете многократно запускать свою программу на выполнение, проверяя и отлаживая ее работу, и возвращаться обратно. Таким образом, программа может находиться либо в проектирования, либо в режиме выполнения.

Структура программы:

  • Заголовок Sub(процедура).

  • Объявление переменных и констант Dim (переменные и константы).

  • Тело программы

  • Вывод результатов.

  • Конец программы Еnd Sub.

Способы записи чисел

Используются в основном 2 способа:

  1. Запись числа с фиксированной точкой, например:

123,456 454 9,456.

  1. Запись числа с плавающей точкой (нормализованная, экспоненциальная запись). Например: 2,14E+3 тоже, что и 2,14*103=2140.

Общая форма записи числа N в таком виде:

, т.е. ,

здесь - мантисса числа N ( ; - порядок числа N).

В языках программирования обычно .

Примеры:

1E+0=1; 9E-2=0,09 3,65E+2=365.

В Visual Basic используются числа с плавающей точкой обычной точности (Single) - количество чисел не более 7 и числа с плавающей точкой двойной точности - количество чисел не более 17.

Например 1/3=0,3333333 (для типа Single) и 1/3=0,333333333333333 (для типа Double).

Данные

В VBA могут использоваться следующие виды данных: 1)константы; 2)простые переменные и массивы.

Константы.VBA используются числовые и текстовые константы. Числовые константы записываются в программе в виде конкретного числа (вещественного или целого).

Переменная — именованное место в памяти компьютера, которое имеет ИМЯ (Идентификатор) и ЗНАЧЕНИЕ. Имя переменной (Идентификатор) — последовательность букв, цифр и спецсимволов (!, #, $, @, %^ А), начинающаяся с буквы и содержащая до 40 символов.

Типы данных

Типы данных являются одним из важнейших элементов языка VBA. Подобно всем современным языкам программирования VBA поддерживает несколько типов данных , которые можно использовать для объявления типов переменных или создания массивов.

При объявлении переменных тип данных указывается после ключевого слова As, с помощью одного из ключевых слов представленных в таблице 1.

Типы данных

Тип данных

Значения

Размер, байт

1

2

3

Byte (байт)

От 0 до 255

1

Boolean (логический)

True или False

2

Integer (целое)

От -32768 до 32767

2

Long (длинное целое)

От -2147483648 до 2147483647

4

Single (с плавающей точкой обычной точности)

От -3,402823E38 до -1,401129E-45 для отрицательных значений;

1,401129E-45 до 3,402823E38 для положительных значений

4

Double (с плавающей точкой двойной точности)

От -1,79769313486232E308 до

-4,94065645841247E-324 для отрицательных значений;

4,94065645841247E-324 до

1,79769313486232E308 для положительных значений

8

1

2

3

Currency (денежный)

От -922337203685477,5808

До 922337203685477,5807

8

Decimal (масштабируемое целое)

79228162514264337593545950335

без дробной части

7,9228162514264337593545950335

с 28 знаками справа от запятой, минимальное ненулевое значение равняется

0,0000000000000000000000000001

14

Date (даты и время)

От 1 января 100 г. До 31 декабря 9999 г.

8

Object (объект)

любой указатель объекта

4

String (строка переменной длины)

От 0 до приблизительно 2 миллиардов

10+длина строки

String (строка постоянной длины)

От 1 до приблизительно 654000

длина строки

Variant (числовые подтипы)

Любое числовое значение (до границ диапазона для типа Double)

16

Variant (строковые подтипы)

Как для строки (String) переменной длины

22+длина строки

Тип данных, определяемый пользователем (с помощью ключевого слова Type)

Диапазон каждого элемента определяется его типом данных

Размер определяется пользователем

Переменные типа Byte, Boolean,Integer, Long, Currency, Decimal, Double и Date в VBA называют числовыми переменными. Числовыми переменными также являются переменные подтипов Empty (что означает отсутствие инициализации переменной), Integer, Long, Currency, Decimal, Double, Date, Error и Bate типа Variant.

Переменные типа String относят к строковым переменным. Этот тип переменных может содержать буквы, цифры, знаки пунктуации, пробелы и специальные символы.

VBA не требует обязательного объявления переменных. В случае если переменная не была объявлена, ей автоматически присваивается тип Variant. Этот тип является универсальным и может содержать данные различных подтипов: Long, Integer, String и т.д.

Операторы

Операторы предназначены для выполнения различных операций над операндами. Например, оператор «+» выполняет операцию сложения двух чисел или выражений, являющихся операндами. Большинство операторов VBA требует наличия двух операндов. Все операторы можно разделить на несколько групп:

Арифметические операторы. Они используются для используются для выполнения основных арифметических операций над операндами, представляющие числовые выражения.

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

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

Оператор присваивания «=».

Арифметические операции

Знаки операций

Возведение в степень

^

Изменение знака на обратный

-

Умножение

*

Деление

/

Целочисленное деление

\

Определение остатка от целочисленного деления

MOD

Сложение

+

Вычитание

-

Операция сравнения

Знак операции

Равно

=

Не равно

<>

Меньше

<

Больше

>

Меньше или равно

<=

Больше или равно

>=

Булева операция

Оператор

Отрицание

NOT

Конъюнкция (логическое «И»)

AND

Дизъюнкция (логическое «Или»)

OR

Исключающее «Или»

XOR

Эквиваленция

EQV

Импликация

IMP

И – истина, Л – ложь.

Выражение 1

Выражение 2

NOT

AND

OR

XOR

EQV

IMP

И

И

Л

И

И

Л

И

И

И

Л

Л

Л

И

И

Л

Л

Л

И

И

Л

И

И

Л

И

Л

Л

И

Л

Л

Л

И

И

Функции

Тригонометрические функции

Функция

Оператор

Что делает

1

Arctg x

ATN(x)

Возвращает арктангенс указанного числового выражения

2

Cos 

COS()

Возвращает косинус указанного угла. Угол задан в радианах.

3

Sin 

SIN()

Возвращает синус указанного угла. Угол задан в радианах.

4

Tg 

TAN()

Возвращает тангенс указанного угла. Угол задан в радианах.

Уголв радианах=Уголв градусах ; где =3,141592654.

Связь между обратными тригонометрическими функциями

ArcSin x=Arctg( ; ArcCos=Arctg(

Математические функции

Математическая запись

Функция

Выполняемое действие

ABS(x)

Возвращает абсолютное значение числовой переменной x

CDBL(x)

Переводит числовое выражение в значение с двойной точностью

CSNG

Переводит числовое выражение в значение с обычной точностью

CINT

Округляет числовое выражение до целого значения

ex

EXP(x)

Возвращает e, возведенное в степень x

Ln(x)

LOG(x)

Возвращает натуральный числового выражения

INT(x)

Возвращает наибольшее целое, меньшее или равное числовому выражению

FIX(x)

Округляет выражение с плавающей точкой до его целой части

RND(x)

Возвращает случайное число одинарной точности от 0 до 1

SQR(x)

Возвращает квадратный корень числового выражения

SQN(x)

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

в частности

Работа с символьной информацией

Обработка числовой информации в тексте – функции val, str$.

Символьные функции

функция

Выполняемое действие

ASC(x)

Возвращает код ASII первого символа в символьной переменной x

CHR(x)

Возвращает символ соответствующий коду ASII x

INSTR(x,y)

Возвращает позицию первого обнаружения строки x в строке y

LEFT(x,n)

Возвращает n символов, стоящих с левого края символьной переменной x

LTRIM(x)

Удаляет начальные пробелы в символьной переменной x

MID(x,I,k)

Вырезает из символьной переменной x k символов, начиная с i-того

RIGTH(x,n)

Возвращает n символов, стоящих с правого края символьной переменной x

RTRIM(x)

Удаляет конечные пробелы в символьной переменной x

SPASE(n)

Возвращает n пробелов

STR(x)

Переводит числовое значение переменной в символьное

STRING(L,x)

Возвращает L символов, совпадающих с первым символом символьной переменной x

VAL(x)

Переводит символьное значение переменной x в числовое значение

Инструкции принятия решения (оператор условия и оператор выбора)

Инструкции принятия решения позволяют выполнять группы инструкций в зависимости от определенного условия. В VBA для принятия решения используются две инструкции: If …then …else и Select Case.

Инструкция If …then …else

Инструкция If …then …else задает выполнение определенных групп инструкций в зависимости от значения выражения. Ее синтаксис приведен ниже:

If Условие Then Инструкции [Else Инструкции_ Else]

Допускается также использование блоковой формы синтаксиса:

If Условие Then

[Инструкции]

[Else

[Инструкции_else]

End if

Или расширенная блоковая форма синтаксиса:

If Условие Then

[Инструкции]

[Elseif Условие-n Then

[Инструкции_elseif]]

[Else

[Инструкции_elseif_else]]

End if

При этом предложение ElseifThen может повторяться несколько раз. Синтаксис инструкции If …then …else содержит элементы, представленные в таблице 1

Таблица 1. Элементы синтаксиса инструкции If …then …else

Элемент

Описание

Условие

Инструкции

Условие 1

Инструкции_elseif

Инструкции_else

Инструщии_ elseif_else

Обязательный элемент, представляющий логическое выражение, имеющее значение True или False. Если Условие имеет значение Null, то значение Условие считается равным False

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

Обязательный элемент, аналогичный элементу Условие, если

употреблено выражение Elseif

Необязательный элемент — одно или несколько инструкций, которые выполняются, если Условие имеет значение False, а Условие-п — True

Необязательный элемент— одна или несколько инструкций, которые выполняются, если Условие имеет значение False

Необязательный элемент — одно или несколько инструкций,

которые выполняются, если ни Условие, ни Условие-n не имеют

значение False

Однострочная форма допускает выполнение нескольких инструкций в результате проверки одного условия if…Then. При этом все инструкции должны находиться на одной строке и разделяться двоеточием, как показано в приведенном ниже

примере:

Существуют четыре целых числа, если inta мешьше intв, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb.

Sub testsub()

Dim inta As Integer, intb As Integer, intc As Integer, _

intd As Integer, intanew As Integer, intbnew As Integer, _

intcnew As Integer

inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)

intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1):

If inta < intd Then intanew = inta + 3: intbnew = intb + 7

intcnew = intb + inta

MsgBox "inta=" & inta & Chr(10) & Chr(13) & _

"intb=" & intb & Chr(10) & Chr(13) & _

"intc=" & intc & Chr(10) & Chr(13) & _

"intd=" & intd & Chr(10) & Chr(13) & _

"intanew=" & intanew & Chr(10) & Chr(13) & _

"intbnew=" & intbnew & Chr(10) & Chr(13) & _

"intcnew=" & intcnew

End Sub

Если inta=4, intb=8, intc=1, intd=7, то intanew=7, intbnew=15, intc=12. Если inta=9, intb=8, intc=1, intd=8, то intanew=0, intbnew=0, intc=0.

Существуют четыре целых числа, если inta мешьше intd, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb, иначе inta прибавить 30 и intb прибавить 70 и intc приравнять сумме inta и intb

Sub testsub1()

Dim inta As Integer, intb As Integer, intc As Integer, _

intd As Integer, intanew As Integer, intbnew As Integer, _

intcnew As Integer

inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)

intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1)

If inta < intd Then

intanew = inta + 3

intbnew = intb + 7

intcnew = intb + inta

Else

intanew = inta + 30

intbnew = intb + 70

intcnew = intb + inta

End If

MsgBox "inta=" & inta & Chr(10) & Chr(13) & _

"intb=" & intb & Chr(10) & Chr(13) & _

"intc=" & intc & Chr(10) & Chr(13) & _

"intd=" & intd & Chr(10) & Chr(13) & _

"intanew=" & intanew & Chr(10) & Chr(13) & _

"intbnew=" & intbnew & Chr(10) & Chr(13) & _

"intcnew=" & intcnew

End Sub

Если inta=5, intb=3, intc=7, intd=7, то intanew=8, intbnew=10, intc=8. Если inta=6, intb=10, intc=10, intd=3, то intanew=36, intbnew=80, intc=60.

При выполнении блоковой формы инструкции if также сначала проверяется Условие. Если оно имеет значение True, то выполняются инструкции, следующие за словом then. Если же Условие имеет значение false, то при наличии одного или нескольких условий elseif выполняется последовательная проверка каждого из них.В случае истинности одного из условий осуществляется выполнение следующих за соответствующим предложением then. В том случае, если ни из условий elseif не имеет значение true или предложения elseif отсутствуют, то выполняются инструкции, следующие за else.После выполнения инструкций, следующих за then или else, происходит передача управления на инструкцию, расположенную непосредственно за end if.

Ввести три числа: x, y, z.Если сумма трех попарно различных чисел x, y, z меньше 1, то меньшее из x,y заменить полусуммой y и z, иначе большее из x и z заменить на y4 .

Sub lop177()

Dim x, y, z, s

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

y = Val(InputBox("введите y:"))

z = Val(InputBox("введите z:"))

If (x + y + z) < 1 Then

If x < y Then

x = (y + z) / 2

Else

y = (y + z) / 2

End If

MsgBox "x=" & x & Chr(10) & Chr(13) & _

"y=" & y & Chr(10) & Chr(13) & _

"z=" & z

Else

If x > z Then

x = y ^ 4

Else

z = y ^ 4

End If

MsgBox "x=" & x & Chr(10) & Chr(13) & _

"y=" & y & Chr(10) & Chr(13) & _

"z=" & z

End If

End Sub

Инструкция Select Case

Инструкция Select Case выполняет одну из нескольких групп инструкций в зависимости от значения некоторого выражения. Ниже приведен ее синтаксис:

Select Case Выражение

[Case Список_выражений-n

[Инструкции-n

[Case Else

[Инструкции_else]]

Еnd Select

Элементы синтаксиса инструкции Select Case представлены в табл.2

Таблица 2 Элементы синтаксиса инструкции Select Case

Элемент

Описание

Выражение

Список_выражений-n

Инструкции-n

Инструкции_else

Обязательный элемент — любое числовое или строковое выражение

Обязательный элемент синтаксиса при наличии предложения Case. Представляет собой список с разделителями. Синтаксис такого списка может быть одним из представленных ниже:

Выражение,

Выражение_1 To Выражение_2,

Is Оператор сравнения_сравнения выражения

Ключевое слово To задает диапазон значений. При использовании ключевого To слова перед ним должно находиться меньшее значение.

Ключевое слово Is с операторами сравнения [не должны

использоваться операторы Is и Like) задает диапазон значений.

Если ключевое слово Is не указано, оно вставляется по умолчанию.

Необязательный элемент — одна или несколько инструкций,

которые выполняются в том случае, если выражение совпадает с любым компонентом списка Список_выражений-n

Необязательный элемент — одна или несколько инструкций,

выполняемых в том случае, если выражение не совпадает

ни с одним из предложений Case

Перейдем к алгоритму работы инструкции Select Case. Если выражение совпадает с любым выражением из Списка_выражений-n в предложении Case, то все инструкции, следующие за данным предложением Case до следующего выражения Case (в случае если это предложение является последним, то до инструкции End Select). После этого управление передается инструкции, следующей за End Select.

В Н И М АН И Е . Если выражение совпадает с выражениями из списка в нескольких предложениях Сазе, то выполняются только инструкции, расположенные после первого из этих предложений.

Отметим некоторые свойства инструкции Case Else:

Предложение Case Else задает список Инструкции_else. Эти инструкции будут

выполнены, если нет ни одного совпадения Выражения и элемента Список_вы-

ражений-n ни в одном из предложений Case .

Хотя предложение Case Else не является обязательным, рекомендуется поме-

щать его в блок Select Case, чтобы предусмотреть неожиданные значения выра-

жения.

Если ни в одном предложении Case элемент Слисок_выражений-n не содержит

значения, отвечающего аргументу Выражение, и отсутствует инструкция Case Else, выполнение программы продолжается с инструкции, следующей за инст-

рукцией End Select.

В предложении Case допускается использование нескольких выражений или

диапазонов. Например, допустимым является следующее предложение Case :

Case 1 То 5, 8 То 10, 15, 18, Is > Мах _number

(ПРИМЕЧАНИЕ Обратите внимание, что следует отличать оператор сравнения Is от ключевого слова 1з, которое используется в инструкции Select Case.

Допускается вложенность инструкций Select Case. При этом каждой вложен-

ной инструкции Select Case должна соответствовать инструкция End Select.

Sub testsub1()

Dim sngналог As Single, intпараметр, sngсумма

intпараметр = Val(InputBox("введите целое число:"))

sngсумма = Val(InputBox("введите число:"))

Select Case intпараметр

Case 0

sngналог = sngсумма * 0

Case 1

sngналог = sngсумма * 0.05

Case 2

sngналог = sngсумма * 0.1

Case 3

sngналог = sngсумма * 0.15

Case 4

sngналог = sngсумма * 0.2

Case Else

sngналог = sngсумма * 0

End Select

MsgBox "sngналог=" & sngналог

End Sub

В этом примере осуществляется выбор ставки налога (0; 0,05; 0,10; 0,15; 0,20) в

зависимости от значения выражения intпараметр. Предусмотрен также вариант

выбора, когда значения выражения intпараметр не совпадают ни с одним выражением в предложениях Case.

Инструкция Go to

Существует еще одна инструкция безусловного перехода Go to, которая в общем виде записывается так:

Go to Метка.

Метка это идентификатор с двоеточием, стоящий перед инструкцией, которая должна быть выполнена после инструкции Go to.

Пример 1 написать программу вычисления , если введен правильный пароль.

Sub pparol()

Dim parol, x, y

finish:

parol = (InputBox("введите пароль"))

If parol <> "nataly" Then 'nataly правильный пароль

MsgBox "неверный пароль, доступ запрещен"

GoTo finish

End If

x = Int(Rnd * 10 + 1): y = x ^ 0.5

MsgBox "x=" & x & "y=" & y

End Sub

Sub pr42()

'Ввести три любых числа, сумму двух чисел поделить на третье, сделать про‘верку, что в знаменателе число <>0.

Dim x, y, sum, z

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

y = Val(InputBox("введите y:"))

1: z = Val(InputBox("введите z:"))

If z <> 0 Then

sum = (x + y) / z

ElseIf z = 0 Then

MsgBox "введен ноль"

GoTo 1

End If

MsgBox "sum=" & sum

End Sub

Циклы

Циклы предназначены для многократного выполнения группы инструкций. В VBA для организаций циклов используются инструкции For…next, While…Wend, Do …Loop и For Each… Next.

Инструкция For…next

Эта инструкция повторяет выполнение группы инструкций указанное число раз.

Синтаксис инструкции For…next:

For Счетчик = Начало To Конец [Step Шаг]

[Инструкции]

[Exit For]

[Инструкции]

Next[Счетчик]

Синтаксис инструкции содержит For…next элементы, представленные в табл. 1.

Таблица Элементы синтаксиса инструкции For…next

Элемент

Описание

Счетчик

Обязательный элемент. Числовая переменная (за исключением типа Boolean), используемая в качестве счетчика цикла. Эта переменная не может быть элементом массива

Начало

Обязательный элемент — начальное значение переменной Счетчик

Конец

Обязательный элемент конечное значение переменной Счетчик

Шаг

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

Инструкции

Необязательный элемент — одна или несколько инструкций. составляющих тело цикла

Аргумент Шаг может быть как положительным, так и отрицательным. Значение этого аргумента определяет выполнение цикла в соответствии с правилами, приведенными в табл. 2.

Таблица 2. Выполнение цикла в зависимости от значения аргумента Шаг

Значение

Условие

Положительное или 0

Отрицательное

Счетчик<= Конец

Счетчик>= Конец

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

Пример цикла For…Next

Подсчитать сумму четных чисел в диапазоне от 0 до 10 включительно.

Sub p1()

Dim i As Integer, sum As Integer

For i = 0 To 10 Step 2

sum = sum + i

Next i

MsgBox "sum=" & sum

End Sub

Подсчитать произведение четных чисел в диапазоне от 2 до 10 включительно.

Sub p2()

Dim i As Integer, pr As Integer

pr = 1

For i = 2 To 10 Step 2

pr = pr * i

Next i

MsgBox "pr=" & pr

End Sub

Допускается организация вложенных циклов For..Next. При этом счетчик каждого цикла должен иметь уникальное имя.

Пример вложенных циклов: создать таблицу умножения.

Sub p3()

Dim i, j As Integer

Dim a(2 To 9, 1 To 10), str_a

For i = 2 To 9

For j = 1 To 10

a(i, j) = i & "x" & j & "=" & (i * j)

str_a = str_a & " " & a(i, j) & " "

Next j, i

MsgBox str_a

End Sub

Инструкция DoLoop

Инструкция Do…Loop имеет два варианта синтаксиса: в первом варианте условие проверяется в начале цикла, во втором условие проверяется после выполнения инструкций тела цикла.

При использовании ключевого слова While цикл будет выполняться, пока условие имеет значение True со словом Until - пока условие не примет значение True.

Первый вариант синтаксиса инструкции Do…Loop:

Do [{While | Until} Условие]

[Инструкции]

[Exit Do]

[Инструкции]

loop

Пример. Даны два положительных целых числа найти их наибольший общий делитель (например 45 и 27 нод=9)

Sub nod()

Dim a, b, r, nod

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

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

Do While (a Mod b) <> 0

r = a Mod b

a = b

b = r

Loop

nod = b 'nod – наибольший общий делитель

MsgBox "a=" & a & " " & "b=" & b & Chr(10) & Chr(13) & _

"nod=" & nod

End Sub

Пример. Определение простого числа. Например 11 mod 2=1,

11 mod 3=2, 11 mod 4=2, 11 mod 5=1, 11 mod 6=5, 11 mod 7=4,

11 mod 8=3, 11 mod 9=2, 11 mod 10=1, 11 mod 11=0, 11 простое число.

Sub prostoe()

Dim n, d, r

n = Int(Rnd * 100) + 1

d = 2

Do While n Mod d <> 0

r = n Mod d

d = d + 1

Loop

If d = n Then

MsgBox "n простое число" & " " & "n=" & n

Else

MsgBox "n – непростое число" & " " & "n=" & n

End If

End Sub

Второй вариант синтаксиса инструкций Do… Loop

Do

[Инструкции]

[Exit Do]

[Инструкции]

Loop [{While | Until} Условие]

Пример. Определение простого числа.

Sub prostoe1()

Dim n, d, r

n = Int(Rnd * 100) + 1

d = 2

Do

r = n Mod d

d = d + 1

Loop While n Mod d <> 0

If d = n Then

MsgBox "n простое число " & "n=" & n

Else

MsgBox "n не простое число" & " " & "n=" & n

End If

End Sub

Таблица 3, Элементы синтаксиса инструкции Do Loop

Элемент

Описание

Условие

Необязательный элемент. Представляет числовое выражение или строковое выражение, которое имеет значение True или False. Если условие имеет значение Null, то оно рассматривается как значение False.

Инструкции

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

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