Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf

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

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

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

Добавлен: 02.12.2019

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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

имя

 [(

список

аргументов

)] = 

выражение