Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2019
Просмотров: 3185
Скачиваний: 1
функции
∏
=
+
=
Α
n
k
k
x
1
2
2
при
x
,
изменяющегося
от
0
до
5
с
шагом
0.5
и
для
любого
значения
n
:
INPUT “
Введите
значение
n”; n
FOR x=0 TO 5 STEP 0.5
A=1
FOR k=1 TO n
A=A*SQR(x^2+k^2)
NEXT
k
A
NEXT x
Обратите
внимание
,
что
вычисление
произведения
организуется
в
теле
цикла
путем
последовательного
перебора
и
умножения
отдельных
со
-
множителей
A=A*f(x,k
)
.
При
этом
первое
произведение
получается
пу
-
тем
умножения
первого
сомножителя
на
единицу
(
А
=1
).
Если
необходимо
организовать
вычисление
суммы
,
Α =
=
∑
f x k
k
n
(
,
)
1
,
то
в
теле
цикла
необходи
-
мо
последовательно
перебирать
и
складывать
отдельные
слагаемые
по
формуле
A=A+f(x,k)
.
При
этом
первая
сумма
получается
путем
сложе
-
ния
первого
слагаемого
с
нулем
,
т
.
е
.
перед
внутренним
циклом
необходи
-
мо
присвоить
А
значение
,
равное
нулю
.
Если
несколько
циклов
имеют
общий
конечный
оператор
,
можно
указать
для
них
один
оператор
NEXT
,
перечислив
в
нем
переменные
цик
-
лов
в
порядке
,
обратном
порядку
операторов
FOR
.
2.7.2.
Циклы
с
неопределенным
количеством
повторений
позволяет
задавать
конструкция
WHILE/WEND
,
в
которой
указывается
условие
про
-
должения
цикла
:
WHILE x
...[
операторы
]
WEND
где
x
−
числовое
выражение
.
Цикл
повторяется
до
тех
пор
,
пока
выражение
x
не
станет
равным
нулю
.
При
x=0
операторы
до
WEND
включительно
пропускаются
,
и
про
-
грамма
выполняется
дальше
.
Например
,
для
алгоритма
рис
. 2.3
будет
иметь
следующий
вид
:
WHILE x<20
y=sin(x)
PRINT y
x=x+2
WEND
Циклы
могут
быть
вложенными
.
Всякий
оператор
WEND
относится
к
ближайшему
оператору
WHILE.
2.7.3.
Наиболее
общая
форма
организации
циклов
с
помощью
опера
-
тора
DO/LOOP
позволяет
проверять
условие
окончания
цикла
в
начале
или
в
конце
цикла
.
DO {WHILE
|
UNTIL} x
...
...[
операторы
]
...
WEND
или
DO
...
...[
операторы
]
...
LOOP {UNTIL
|
WHILE} x
где
x
−
числовое
выражение
.
Если
условие
продолжения
цикла
проверяется
в
конце
цикла
,
то
по
-
следним
оператором
этой
конструкции
должен
быть
оператор
LOOP
,
если
же
условие
продолжения
цикла
проверяется
в
конце
цикла
,
то
последним
оператором
этой
конструкции
должен
быть
оператор
LOOP
.
При
исполь
-
зовании
ключевого
слова
WHILE
цикл
повторяется
,
пока
выражение
x
ис
-
тинно
(
не
равно
нулю
)
и
завершается
,
когда
оно
равно
нулю
.
При
исполь
-
зовании
ключевого
слова
UNTIL
,
наоборот
,
цикл
завершается
,
когда
x
не
равно
нулю
,
и
повторяется
,
если
x
равно
нулю
.
Например
,
программы
,
реализующие
алгоритм
рис
. 2.3,
с
помощью
операторов
DO/LOOP
имеют
следующий
вид
:
DO WHILE x<20
y=sin(x)
PRINT y
x=x+2
LOOP
или
DO UNTIL x>=20
y=sin(x)
PRINT y
x=x+2
LOOP
или
DO
y=sin(x)
PRINT y
x=x+2
LOOP UNTIL x>=20
или
DO
y=sin(x)
PRINT y
x=x+2
LOOP WHILE x<20
2.7.4.
Для
изменения
естественного
порядка
последовательного
вы
-
полнения
операторов
в
программе
служат
оператор
перехода
GOTO
,
после
которого
указывается
метка
или
номер
строки
.
Оператор
GOTO
вызывает
переход
к
оператору
с
указанной
меткой
или
номером
строки
.
Программа
,
реализующая
алгоритм
рис
. 2.3,
использующая
для
ор
-
ганизации
цикла
операторы
GOTO
и
IF THEN
,
имеет
вид
:
x=0
NACH:
IF x>20 TNEN END
y=SIN(x)
PRINT y
x=x+2
GOTO NACH
2.8.
Подпрограммы
,
функции
и
процедуры
в
TURBO BASIC
Программу
на
TB
можно
упростить
,
если
использовать
определяе
-
мые
функции
,
подпрограммы
и
процедуры
.
Функция
определяется
как
набор
операторов
,
вычисляющих
ее
зна
-
чение
,
которое
может
быть
как
числовым
,
так
и
символьным
и
обычно
свя
-
зано
с
параметрами
,
передаваемыми
функции
.
Реализация
выполняющих
специальные
функции
(
ввод
данных
,
вывод
графика
и
т
.
п
.)
или
часто
ис
-
пользуемых
частей
программы
в
виде
этих
структур
может
существенно
ее
упростить
.
Подпрограмма
представляет
собой
набор
операторов
,
имеющий
мет
-
ку
,
переход
к
которой
осуществляется
с
помощью
оператора
GOSUB
.
Ис
-
пользование
подпрограмм
−
самый
традиционный
способ
структурирова
-
ния
программы
на
части
.
Подпрограмма
заканчивается
оператором
RETURN
.
Процедура
−
это
вспомогательная
программа
,
которая
может
быть
вызвана
по
имени
.
Процедуры
и
определяемые
пользователем
функции
−
во
многом
похожие
понятия
.
Основное
их
отличие
заключается
в
том
,
что
функция
возвращает
одно
значение
,
поэтому
ее
имя
(
которое
обязательно
должно
начинаться
с
символов
FN
)
может
появляться
в
выражениях
,
при
вычислении
которых
и
происходит
вызов
функции
.
Процедуру
необходи
-
мо
вызывать
явно
.
Процедуры
и
функции
в
Турбо
Бейсике
представляют
собой
конст
-
рукции
,
свойственные
только
достаточно
развитым
языкам
высокого
уров
-
ня
.
Они
допускают
рекурсию
(
т
.
е
.
вызов
самих
себя
),
передачу
параметров
,
доступ
к
локальным
,
статическим
и
глобальным
переменным
.
На
схеме
алгоритма
для
обозначения
подпро
-
грамм
,
процедур
и
функций
пользователя
исполь
-
зуется
символ
предопределенного
процесса
,
изо
-
браженный
на
рис
. 2.4.
Сам
предопределенный
процесс
должен
быть
описан
в
своей
схеме
алго
-
ритма
как
отдельная
программа
,
включая
символы
начала
и
конца
программы
.
Рис
. 2.4.
2.8.1.
Вызов
подпрограммы
осуществляется
с
помощью
оператора
GOSUB
метка
,
по
которому
происходит
переход
к
оператору
,
перед
кото
-
рым
находится
метка
.
Подпрограмма
выполняется
,
пока
в
ее
тексте
не
встретится
оператор
RETURN
,
после
чего
происходит
возврат
к
оператору
,
стоящему
за
GOSUB
.
Можно
применять
вложенные
подпрограммы
.
Коли
-
чество
вложений
ограничено
только
стековой
памятью
TB
,
в
которой
хра
-
нятся
адреса
возврата
из
подпрограмм
.
Ниже
приводится
пример
програм
-
мы
,
для
сравнения
двух
треугольников
по
площади
.
REM
Присвоение
значений
сторонам
1
треугольника
a=5
b=6
c=7
GOSUB triangle
sl=s
REM
Присвоение
значений
сторонам
2
треугольника
a=4
b=8
c=6
GOSUB triangle
s2=s
IF
s2<sl
THEN
PRINT "
Площадь
треугольника
1_
больше
,
чем
треугольника
2"
ELSEIF
s2>s1
THEN
PRINT "
Площадь
треугольника
2_
больше
,
чем
треугольника
1"
ELSE
PRINT “
Площади
треугольников
равны
”
END
IF
END
REM
Подпрограмма
для
вычисления
площади
triangle:
p=(a+b+c)/2
s=SQR(p*(p-a)*(p-b)*(p-c))
RETURN
Обратите
внимание
,
что
перед
подпрограммой
,
стоит
оператор
END
,
иначе
бы
в
конце
программы
она
выполнилась
бы
еще
раз
,
даже
без
опера
-
тора
GOSUB
.
2.8.2.
Ознакомиться
с
операторами
TB,
используемыми
для
опреде
-
ления
функций
пользователя
.
В
общем
виде
формат
определения
функции
имеет
или
строчный
вариант
:
DEF
FN
имя
[(
список
аргументов
)] =
выражение