Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.12.2019

Просмотров: 3185

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

функции

 

=

+

=

Α

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 

  PRINT 

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 

будет

 

иметь

 

следующий

 

вид


background image

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 


background image

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 


background image

2.8.

 

Подпрограммы

функции

 

и

 

процедуры

 

в

 TURBO BASIC 

Программу

 

на

 

TB

 

можно

 

упростить

если

 

использовать

 

определяе

-

мые

 

функции

,

 

подпрограммы

 

и

 

процедуры

Функция

 

определяется

 

как

 

набор

 

операторов

вычисляющих

 

ее

 

зна

-

чение

которое

 

может

 

быть

 

как

 

числовым

так

 

и

 

символьным

 

и

 

обычно

 

свя

-

зано

 

с

 

параметрами

передаваемыми

 

функции

Реализация

 

выполняющих

 

специальные

 

функции

  (

ввод

 

данных

вывод

 

графика

 

и

 

т

.

п

.) 

или

 

часто

 

ис

-

пользуемых

 

частей

 

программы

   

в

 

виде

 

этих

 

структур

 

может

 

существенно

 

ее

 

упростить

Подпрограмма

 

представляет

 

собой

 

набор

 

операторов

имеющий

 

мет

-

ку

переход

 

к

 

которой

 

осуществляется

 

с

 

помощью

 

оператора

 

GOSUB

Ис

-

пользование

 

подпрограмм

 

 

самый

 

традиционный

 

способ

 

структурирова

-

ния

 

программы

 

на

 

части

Подпрограмма

 

заканчивается

 

оператором

 

RETURN

Процедура

 

 

это

 

вспомогательная

 

программа

которая

 

может

 

быть

 

вызвана

 

по

 

имени

Процедуры

 

и

 

определяемые

 

пользователем

 

функции

 

 

во

 

многом

 

похожие

 

понятия

Основное

 

их

 

отличие

 

заключается

 

в

 

том

что

 

функция

 

возвращает

 

одно

 

значение

поэтому

 

ее

 

имя

 (

которое

 

обязательно

 

должно

 

начинаться

 

с

 

символов

 

FN

может

 

появляться

 

в

 

выражениях

при

 

вычислении

 

которых

 

и

 

происходит

 

вызов

 

функции

Процедуру

 

необходи

-

мо

 

вызывать

 

явно

Процедуры

 

и

 

функции

 

в

 

Турбо

 

Бейсике

 

представляют

 

собой

 

конст

-

рукции

свойственные

 

только

 

достаточно

 

развитым

 

языкам

 

высокого

 

уров

-

ня

Они

 

допускают

 

рекурсию

 (

т

.

е

вызов

 

самих

 

себя

), 

передачу

 

параметров

доступ

 

к

 

локальным

статическим

 

и

 

глобальным

 

переменным

На

 

схеме

 

алгоритма

 

для

 

обозначения

 

подпро

-

грамм

процедур

 

и

 

функций

 

пользователя

 

исполь

-

зуется

 

символ

 

предопределенного

 

процесса

изо

-

браженный

 

на

 

рис

. 2.4. 

Сам

 

предопределенный

 

процесс

 

должен

 

быть

 

описан

 

в

 

своей

 

схеме

 

алго

-

ритма

 

как

 

отдельная

 

программа

включая

 

символы

 

начала

 

и

 

конца

 

программы

 

Рис

. 2.4. 

2.8.1.

 

Вызов

 

подпрограммы

 

осуществляется

 

с

 

помощью

 

оператора

 

GOSUB

 

метка

по

 

которому

 

происходит

 

переход

 

к

 

оператору

перед

 

кото

-

рым

 

находится

 

метка

Подпрограмма

 

выполняется

пока

 

в

 

ее

 

тексте

 

не

 

встретится

 

оператор

 

RETURN

после

 

чего

 

происходит

 

возврат

 

к

 

оператору

стоящему

 

за

 

GOSUB

Можно

 

применять

 

вложенные

 

подпрограммы

Коли

-

чество

 

вложений

 

ограничено

 

только

 

стековой

 

памятью

 

TB

в

 

которой

 

хра

-


background image

нятся

 

адреса

 

возврата

 

из

 

подпрограмм

Ниже

 

приводится

 

пример

 

програм

-

мы

для

 

сравнения

 

двух

 

треугольников

 

по

 

площади

.

 

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

имя

 [(

список

 

аргументов

)] = 

выражение