Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
основы программирования-2010-qb.DOC
Скачиваний:
26
Добавлен:
11.05.2015
Размер:
432.13 Кб
Скачать

Определение нестандартных функций оператором def fn.

Общий вид оператора

DEF FNV(<аргументы>) = <арифметическое выражение>,

где V - имя функции; <аргументы> - простые переменные - формальные аргументы функции; <арифметическое выражение> - формула, по которой вычисляется функция.

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

Оператор DEF FN должен располагаться в программе до первого использования определяемой им функции.

Вычисление функции, описанной оператором DEF FN, осуществляется при обращении к ней при помощи записи указателя функции

FNV (<арифметические выражения>) ,

где <арифметические выражения>, заменяют формальные параметры в арифметическом выражении правой части оператора DEF FN перед вычислением.

Пример 2. Вычислить значение функции

, где .

Здесь m - номер варианта, n –номер группы.

Программа для примера 2:

REM LR-1-2, m=13, n=5

DEF fnf(x,y) = cos(x^2+y^2)

INPUT m, n

z=(fnf(m/n, -2*n)+ fnf(3*(m+n), -5.5*m))/2/(m+n)

PRINT “z=”; z

END

2.5.2. Программы ветвящейся структуры

на языке BASIC.

Для составления разветвляющихся программ используются операторы безусловной и условной передачи управления (см. рис. 2.2). В разветвляющихся вычислительных процессах последовательность выполнения операций заранее не определена и ставится в зависимость от результатов проверки заданных условий.

Оператор безусловного перехода. Общий вид оператора

GO TO N,

где N метка. Этот оператор передает управление первому оператору в строке с меткой N.

Условные операторы. Условные операторы служат для изменения порядка выполнения операторов в зависимости от какого - либо условия.

Условные операторы могут использоваться для организации циклов и ветвлений.

Общий вид условных операторов

1) If «условие» then (или go to) n;

2) If «условие» then «действие»;

3) If «условие» then «действие 1» else «действие 2»;

4) If «условие 1» then

«Блок

ELSEIF «условие 2» THEN

«Блок

. . .

ELSE

«Блок K»

ENDIF

где условие имеет вид

(арифметическое выражение 1) θ (арифметическое выражение 2)

θ - одна из операций отношения <, <=, >, >=, =, <>;

N - метка; действие - любой оператор BASICа, в том числе это может быть другой условный оператор.

Сочетание THEN IF позволяет "вкладывать" условия друг в друга. Например,

IF Q >= 3.5 THEN IF Q < 7.4 THEN 20

Действие условного оператора заключается в следующем:

если условие удовлетворяется, то в первом случае осуществляется переход к строке с меткой N=20, во втором и в третьем случаях выполняется оператор, следующий за THEN.

Если условие не удовлетворяется, то в первом случае осуществляется переход к оператору, следующему за условным. Во втором случае осуществляется переход к первому оператору следующей строки,

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

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

OR - условие считается выполненным, если выполняется хотя бы одно из проверяемых условий;

AND - условие выполнено, если выполняются все проверяемые условия одновременно;

XOR - условие выполнено, если выполняется ровно одно из двух проверяемых условий.

Пример 3. Вычислить

г

Начало

де.

Ввод m, n

X<0

y=x+3x-7

да

нет

да

X≥1

y=e

нет

y=2x-1

Печать x, y

Конец

Рис. 2.2. Блок - схема разветвляющегося вычислительного процесса

Программа для примера 3 (см. рис. 2.2.):

INPUT "m,n="; m,n

X=3*COS(m/n)

IF X<0 THEN

Y=X^2+3*X-7

ELSEIF X>=1 THEN

Y=EXP(X)

ELSE

Y=2*X-1

ENDIF

PRINT "X="; X, "Y="; Y

END

2.5.3. Программы циклической структуры

на языке BASIC.

Циклическим называется вычислительный процесс, в котором отдельные этапы решения задачи многократно повторяются за счет передачи управления на начало этой группы этапов. Управление количеством повторений этих этапов происходит за счет использования параметра цикла (управляющей переменной).

Циклические алгоритмы применяются при решении задач на табулирование функций (составление таблицы значений функции), на вычисление суммы и произведений, по обработке массивов.

Операторы цикла. Для организации циклов в BASICе применяются операторы FOR и NEXT. Общий вид операторов

FOR V = TO STEP

Операторы

NEXT V

где v - любая неиндексированная переменная - управляющая переменная цикла; ,,- начальное и конечное значения и шаг изменения управляющей переменной цикла - любые арифметические выражения. Если=1, то конструкцию STEPможно опустить. Операторы, расположенные между операторами FOR и NEXT, образуют тело цикла и выполняются многократно.

Выполнение цикла, образованного операторами FOR и NEXT, заключается в следующем: - переменной V присваивается начальное значение и она сравнивается с конечным значением. Если при положительном шагеудовлетворяется условие, или при отрицательном шагеудовлетворяется условие, то выполняются операторы, расположенные между операторами FOR и NEXT, и по оператору NEXT осуществляется возврат к началу цикла. Значение V изменяется на, т.е. V=V+, и снова проверяется условие. Если условие удовлетворяется, то тело цикла выполняется повторно. В противном случае происходит выход из цикла и переход к оператору, следующему за NEXT.

Например, следующая программа печатает квадраты натуральных чисел от 4 до 20 с шагом 2.

FOR I = 4 TO 20 STEP 2

PRINT I, I^2

NEXT I

END

Есть и другие операторы цикла. Например,

WHILE условие

Операторы

WEND

Здесь операторы выполняются, пока выполняется условие

Оператор PRINT USING. Дает возможность задать точный образ вывода отдельных элементов списка.

Оператор PRINT USING имеет вид

PRINT USING "формат"; <список>

где формат задает образ распечатки.

При выводе числовых значений предусматривается символ # для каждой выводимой цифры, а также знака числа. Если предполагается вывод с порядком, то для порядка предусматриваются символы ^ ^ ^ ^. Все остальные символы, включая пробелы, обозначают сами себя и выводятся без изменений. Для вывода числа, содержащего дробную часть, в формате задается столько символов #, сколько всего цифра требуется вывести, и точка для отделения цифр целой части от дробной. То есть использование формата позволяет отсечь при печати ненужные цифры. Результат при этом округляется.

Например, оператор

PRINT USING "#.## ##.#"; 5.629, -1.1

печатает строку

5.63 -1.1

Если в формате задан только один образ, то он может использоваться многократно для каждого элемента в списке вывода. При этом вывод каждого следующего элемента будет осуществляться в новую строку.

Пример 4. Составить таблицу значений функции y при изменении значений переменной x на отрезке [-2,2] с шагом h=0,5:

Начало

Ввод m, n

Печать x, y

x=x+0,5

да

X≤2

нет

Конец

Рис. 2.3. Блок - схема циклического вычислительного процесса

Программа для примера 4 (см. рис. 2.3.):

INPUT "M,N"; M,N

FOR X=-2 TO 2 STEP 0.5

Y=(EXP(-X)+5*M)/(X+N)

PRINT "X="; X, "Y="; Y

NEXT X

END

Пример 5. Составить таблицу значений функции z=f(x;y) при изменении значений переменной x на отрезке [a,b] с шагом h , переменной y на отрезке [c,d] с шагом l: , гдеa=1, b=2, h=0,2; c=2, d=4, l=0,2.

Начало

Ввод m, n

Печать x,y,z

y=y+0,2

да

y≤4

нет

x=x+0,2

да

X≤2

нет

Конец

Рис. 2.4. Блок - схема циклического вычислительного процесса

Программа для примера 5 :

INPUT "M,N"; M,N

PRINT " X/Y ";

FOR Y=2 TO 4 STEP 0.2

PRINT USING "##.##"; Y;

NEXT Y: PRINT

FOR X=1 TO 2 STEP 0.2

PRINT USING "##.##"; X;

FOR Y=2 TO 4 STEP 0.2

Z=(X^2-Y^2+M)/(X^2+Y^2)/N

PRINT USING "##.##"; Z;

NEXT Y : PRINT

NEXT X : PRINT

END

Пример 6. Вычислить где,

Программа для примера 6 (см. рис. 2.5.):

INPUT "M,N"; M,N

REM “Вычисление произведения”

P=1

FOR K=1 TO 15

P=P*N^2/SQR(M*k^2+1)

NEXT K

REM “Вычисление суммы”

S=0

FOR K=2 TO 20

S=S+N^2/SQR(M*k^2+1)

NEXT K

T= P - S

PRINT "T="; T

END