Вычисление конечного произведения
Алгоритмический язык QBASIC
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
Методические указания
Часть 3
Нижнекамск
НХТИ КНИТУ
Составители: ст. преп. Т.А. Хрузина
к.п.н., доцент В.А. Садыкова
Алгоритмический язык QBasic. Часть III. Циклические алгоритмы: Метод. указания для самостоятельной работы студентов / НХТИ КНИТУ; Сост.: Т.А. Хрузина, В.А. Садыкова. Нижнекамск, 2012. 74 с.
Подготовлены на кафедре информационных систем и технологий Нижнекамского химико–технологического института Казанского национального исследовательского технологического университета.
В пособии дано изложение основных теоретических положений языка QBasic по циклическим алгоритмам, операторам организации циклов. Содержат методические указания к разработке алгоритмов и практическому программированию на языке Qbasic, которые могут быть использованы для подготовки к выполнению контрольных, лабораторных и практических заданий по дисциплине «Информатика».
Адресовано студентам технологических и механических специальностей дневной, вечерней и заочной форм обучения. Рекомендуется также студентам других специальностей, желающим самостоятельно изучить основы алгоритмического языка QBasic.
Печатаются по решению методической комиссии факультета Управления и Автоматизации Нижнекамского химико–технологического института Казанского национального исследовательского технологического университета.
Рецензенты: к. т. н., доц. Н.В.Лежнева
к. ф.-м.н., доц. Н.Н.Саримов
1. Понятие циклического алгоритма
При решении многих задач возникает необходимость многократного повторения одних и тех же действий, но над различными значениями переменных, определяющих эти действия. Такие вычислительные процессы называются циклическими, а многократно повторяемые участки — телом цикла.
Любой алгоритм циклической структуры в общем случае предусматривает:
1) задание начальных значений переменным, изменяющимся в цикле;
2) выполнение действий, выполняемых непосредственно в цикле;
3) изменение значений переменных цикла по некоторому закону, т. е. подготовка исходной информации для нового выполнения тела цикла;
4) проверка условия продолжения или окончания цикла и соответственно переход к началу цикла, если он не завершен, или выход из цикла по его окончании, т. е. управление циклом. Выход из цикла может быть преждевременным, он осуществляется с помощью специального оператора.
В языке программирования Qbasic имеется стандартный набор из трех разновидностей цикла – цикл с параметром, цикл с предусловием («До») и цикл с постусловием («После»):
Циклические алгоритмы содержат несколько типовых блоков. Основной блок, называемый телом цикла, производит требуемые вычисления. Остальные блоки имеют вспомогательное значение, они организуют циклический процесс: устанавливают начальные и новые значения данных, проверяют условия окончания или продолжения циклического процесса. Циклический алгоритм позволяет компактно описать большое число одинаковых вычислений над разными данными для получения необходимого результата.
В QBASIC существуют три типа операторов организации циклов: FOR...NEXT; DO...LOOP; WHILE...WEND. Рассмотрим подробнее каждый из них.
2. Организация циклов с параметром
Этот оператор по-другому называется – оператор организации цикла с заранее заданным количеством повторений. В качестве параметра цикла в нем выступает переменная, которая используется при проверке условия продолжения цикла и при каждом прохождении цикла изменяется на одну и ту же величину, называемую шагом цикла. Если параметр цикла целочисленный, он называется счетчиком цикла.
Общий вид оператора:
FOR параметр = nz TO kz [STEP h]
[блок_операторов]
[EXIT FOR]
NEXT параметр
где
параметр – числовая переменная, используемая как счетчик цикла,
nz и kz – начальное и конечное значение счетчика цикла,
h – приращение счетчика при каждом шаге цикла (по умолчанию h=1),
EXIT FOR – позволяет выйти из цикла преждевременно, до его окончания.
Работает данный оператор следующим образом: для всех значений параметра (FOR параметр), начиная с начального значения nz и до (TO) конечного значения kz с шагом (STEP) равным h, выполняется блок_операторов. Ключевое слово NEXT меняет значение параметра цикла следующим образом:
параметр = параметр + h
Рассмотрим некоторые особенности выполнения этого цикла:
1) тело цикла выполняется только в том случае, если:
· nz+h kz;
· kz<nz и h < 0;
2) тело цикла выполняется только один раз, если kz=nz;
3) произойдет зацикливание, если h=0;
Существует множество задач, в которых требуется использование оператора FOR…NEXT: табулирование функции, нахождение наибольшего и наименьшего значения функции, вычисление конечной суммы, вычисление конечного произведения и др. Рассмотрим некоторые задачи более подробно.
Табулирование функции
Типичным примером циклического процесса является задача табулирования функции одной переменной, которая формулируется следующим образом:
Вычислить значение функции некоторой переменной х, изменяющейся от начального значения х0 до конечного хk с постоянным шагом h.
При программной реализации данного алгоритма на печать выводится множество пар значений аргумента x и функции y с помощью оператора печати, расположенного внутри тела цикла.
При решении данной задачи необходимо учесть, что тригонометрические функции в Qbasic вычисляются от угла заданного в радианах, поэтому переведем исходные данные из градусов в радианы:
Алгоритм решения задачи:
Программа:
CLS
'Вводим значения чисел х0, хk, h
INPUT “X0,XK,H=”; X0,XK,H
X0=X0*3.14/180: XK=XK*3.14/180: H=H*3.14/180
FOR X=X0 TO XK STEP H
Y=SIN(X)
PRINT X, Y
NEXT X
END
Результаты работы программы:
X | Y |
-3,14 | -0,001592653 |
-2,791111111 | -0,343350116 |
-2,442222222 | -0,643736039 |
-2,093333333 | -0,8665558 |
-1,744444444 | -0,984961013 |
-1,395555556 | -0,98468459 |
-1,046666667 | -0,865759839 |
-0,697777778 | -0,642516449 |
-0,348888889 | -0,341853849 |
0,348888889 | 0,341853849 |
0,697777778 | 0,642516449 |
1,046666667 | 0,865759839 |
1,395555556 | 0,98468459 |
1,744444444 | 0,984961013 |
2,093333333 | 0,8665558 |
2,442222222 | 0,643736039 |
2,791111111 | 0,343350116 |
3,14 | 0,001592653 |
График:
При построении графика полученные результаты необходимо округлить до десятых.
Алгоритм решения задачи:
Программа:
CLS
'Вводим значения х0,хk,h
INPUT “X0,XK,H=”; X0,XK,H
FOR X = X0 TO XK STEP H
IF X < = 1 THEN
Y = X ^ 2
ELSE
Y = SQR(X)
ENDIF
PRINT X, Y
NEXT X
END
Результаты работы программы:
| График: |
Уравнение прямой на отрезке [0;2]: .
Найдем уравнение прямой, проходящей через точки (-2;0) и (0;1) используя уравнение прямой, проходящей через две точки:
.
Аналогично определяем уравнения остальных прямых. В результате кусочно-гладкая функция примет вид:
Алгоритм решения задачи:
Программа:
CLS
INPUT “X0,XK,H=”; X0,XK,H
FOR X = X0 TO XK STEP H
SELECT CASE X
CASE IS<0
Y = 0.5 * X + 1
CASE IS>3
Y = -X + 3
CASE 0 TO 2
Y = 1
CASE ELSE
Y = X - 1
END SELECT
PRINT X, Y
NEXT X
END
Результаты работы программы:
X | Y | X | Y | X | Y | X | Y |
-3 | -0,5 | -0,6 | 0,7 | 1,8 | 4,2 | 0,8 | |
-2,8 | -0,4 | -0,4 | 0,8 | 4,4 | 0,6 | ||
-2,6 | -0,3 | -0,2 | 0,9 | 2,2 | 1,2 | 4,6 | 0,4 |
-2,4 | -0,2 | 2,4 | 1,4 | 4,8 | 0,2 | ||
-2,2 | -0,1 | 0,2 | 2,6 | 1,6 | |||
-2 | 0,4 | 2,8 | 1,8 | 5,2 | -0,2 | ||
-1,8 | 0,1 | 0,6 | 5,4 | -0,4 | |||
-1,6 | 0,2 | 0,8 | 3,2 | 1,8 | 5,6 | -0,6 | |
-1,4 | 0,3 | 3,4 | 1,6 | 5,8 | -0,8 | ||
-1,2 | 0,4 | 1,2 | 3,6 | 1,4 | -1 | ||
-1 | 0,5 | 1,4 | 3,8 | 1,2 | |||
-0,8 | 0,6 | 1,6 |
Алгоритм решения задачи:
Программа:
CLS
'Вводим значения чисел х0, хk, h
INPUT “X0,XK,H=”; X0,XK,H
MIN = TAN(2 * X0 + 3)
MAX = TAN(2 * X0 + 3)
FOR X = X0 + H TO XK STEP H
Y = TAN(2 * X + 3)
IF Y<MIN THEN MIN = Y
IF Y>MAX THEN MAX = Y
NEXT X
PRINT “MIN, MAX=”; MIN, MAX
END
Результаты работы программы:
MIN, MAX=-225,9508465 0,871447983
Алгоритм решения задачи:
Программа:
CLS
Y = 2: P = 2
FOR X = 0 TO 1.2 STEP 0.3
Z = EXP(X + Y) * P
PRINT X, Y, P, Z
Y = Y + 1
P = P + 1
NEXT X
END
Результаты работы программы:
X | Y | P | Z |
14,7781122 | |||
0,3 | 81,33791676 | ||
0,6 | 397,9372626 | ||
0,9 | 1825,187339 | ||
1,2 | 8036,584586 |
Программа:
CLS
a = 0.4
FOR i = 1 TO 10
y = sin(a) ^2 - a
PRINT a, y
a = a + 0.2
NEXT i
END
Алгоритм решения задачи:
Результаты работы программы:
a | y |
0.4 | 0.2483534 |
0.6 | 0.2811789 |
0.8 | 0.2854002 |
0.2919266 | |
1.2 | 0.3313031 |
1.4 | 0.4288889 |
1.6 | 0.6008528 |
1.8 | 0.8516211 |
1.173179 | |
2.2 | 1.546334 |
Вычисление конечной суммы
Вычисление конечной суммы сводится к нахождению суммы заданного количества слагаемых:
где i – номер слагаемого; f(i) – слагаемое с номером i.
Вычисление конечной суммы организуется в виде циклического алгоритма, когда при каждом прохождении цикла номер слагаемого i увеличивается на единицу, а сумма изменяется на величину i-го слагаемого f(i), т. е. используется следующее рекуррентное соотношение:
где – суммы слагаемых i и i–1 соответственно.
Цикл повторяется до тех пор, пока не будут просуммированы все n слагаемых. Для того чтобы начальное значение суммы не исказило результат, она предварительно должна быть обнулена (S0=0). Вывод результата осуществляется после окончания работы цикла.
Рассмотрим в качестве примеров несколько задач.
Алгоритм решения задачи:
Программа:
CLS
S = 0
FOR i = 1 TO 100
S = S + 1 / i ^ 2
NEXT i
PRINT "S="; S
END
Результаты работы программы:
S= 1.634984
Программа:
CLS
INPUT "n="; n
S = 0
FOR i = 1 TO n
S = S + (-1) ^ i / (2 * i + 1)
NEXT i
PRINT "S="; S
END
Алгоритм решения задачи:
Результаты работы программы:
n=? 5
S=-.2559885
Программа:
CLS
INPUT "n="; n
s = 0
FOR i = n TO 1 STEP -1
s = SQR(2 + s)
NEXT i
PRINT "S="; s
END
Алгоритм решения задачи:
Результаты работы программы:
n=? 10
S= 1.999998
Вычисление конечного произведения
Вычисление конечного произведения представляет собой процесс нахождения произведения заданного количества сомножителей по формуле:
Как и суммирование вычисление произведения организуется с помощью циклического процесса по рекуррентному соотношению:
где Pi и Pi-1 – произведения сомножителей i и i–1 соответственно, причем i изменяется от 1 до n. В отличие от суммирования начальное значение произведения Р0 должно быть равно единице.
Рассмотрим в качестве примеров несколько задач.
Алгоритм решения задачи:
Программа:
CLS
P = 1
FOR i = 1 TO 100
P = P * (SQR(i) + 2) / SQR(i)
NEXT i
PRINT "P="; P
END
Результаты работы программы:
P= 1.379896E+13
Программа:
CLS
INPUT "x="; x
P = 1
FOR i = 1 TO 6
P = P * (x - (2 ^ i - 1)) / (x - 2 ^ i)
NEXT i
PRINT "P="; P
END
Алгоритм решения задачи:
Результаты работы программы:
x=? 0.1
P= .274885
Программа:
CLS
INPUT "n,x="; n, x
P1 = 1
P2 = 1
S = 0
FOR i = 1 TO n
P1 = P1 * i
P2 = P2 * x
S = S + P2 / P1
NEXT i
PRINT "S="; S
END
Алгоритм решения задачи:
Результаты работы программы:
n,x=? 10,2
S= 6.388995
Вложенные циклы
Допускается вкладывать циклы FOR…NEXT, то есть помещать цикл FOR…NEXT внутри другого цикла FOR…NEXT. Существуют две конструкции вложенных циклов
Особенности вложенных циклов:
· счетчикам необходимо давать разные имена,
· оператор NEXT для внутреннего цикла должен предшествовать оператору NEXT для внешнего цикла.
· Оператор NEXT K,J,I эквивалентен операторам NEXT K: NEXT J: NEXT I
| |||
Программа:
CLS
INPUT "vvod x="; x
P = 1
pi = 3.14
FOR i = 1 TO 4
S = 0
FOR j = 1 TO 5
S = S + (x * SIN(i * pi / 180) + 2 ^ j)
NEXT j
P = P * S
NEXT i
PRINT "P="; P
END
Алгоритм решения задачи:
Результаты работы программы:
vvod x=? 0.2
P= 1.481793E+07
vvod x=? 1.5
P= 1.50903E+07
vvod x=? 3.4
P= 1.549465E+07
3. Организация циклов с предусловием и постусловием
В цикле с предусловием проверка условия продолжения цикла выполняется перед телом цикла. Если при входе в цикл условие не выполняется, он не будет выполнен ни разу.
В цикле с постусловием проверка условия продолжения цикла выполняется после тела цикла. Поэтому такой цикл хотя бы один раз выполнится всегда.
Одним из разновидностей операторов цикла с предусловием является оператор WHILE ... WEND, который выполняет серию операторов, пока указанное условие верно:
WHILEусловие
[ тело цикла ]
WEND
где
условие - выражение логического типа, которое QBasic оценивает как истинное (не-ноль) или ложное (ноль);
тело цикла - любое количество операторов.
Пока условие истинно (его значение не равно нулю), операторы будут циклически выполняться. Если условие ложно (его значение равно нулю), выполняется оператор, следующий за WEND. Важнейшим требованием при использовании описанного цикла является необходимость изменения условия выполнения цикла при исполнении тела цикла. В противном случае цикл будет повторяться до бесконечности (такая ситуация на жаргоне программистов называется "зацикливанием"). Таким образом, для организации цикла необходимо выполнять следующие действия:
1) перед началом цикла задать начальное значение параметров (переменных, используемых в логическом выражении, отвечающем за продолжение или завершение цикла);
2) внутри цикла изменять переменную (или переменные), которая сменит значение логического выражения, за счет которого продолжается цикл, на противоположное (для того чтобы цикл в определенный момент завершился);
3) вычислять логическое выражение — проверять условие продолжения или окончания цикла;
4) выполнять операторы внутри цикла;
5) управлять циклом, то есть переходить к его началу, если он не закончен, или выходить из цикла в противном случае.
Другой разновидностью оператора цикла с условием является цикл DO ... LOOP. Оператор DO ... LOOP, как и предыдущий оператор цикла WHILE … WEND, используется в программе в том случае, когда необходимо организовать цикл, причем число повторений неизвестно. Существует два варианта цикла DO... LOOP:
· цикл DO ... LOOP с проверкой условия в начале:
DO WHILEусловие [ тело цикла ] [ EXIT DO ] LOOP |
где
условие - выражение логического типа, которое QBasic оценивает как истинное (не ноль) или ложное (ноль);
тело цикла - любое количество операторов.
WHILE в операторе цикла DO ... LOOP означает, что операторы в теле цикла будут выполняться если условие истинно. Опишем схематически как работает этот вид цикла:
шаг 1 | вычисляется значение условия; |
шаг 2 | если условие принимает значение «истина», то переход к следующему шагу 3, иначе к шагу 5; |
шаг 3 | выполняются операторы в теле цикла; |
шаг 4 | переход к шагу 1; |
шаг 5 | конец цикла. |
DO UNTILусловие
[ тело цикла ]
[ EXIT DO ]
LOOP
UNTIL в операторе цикла DO ... LOOP означает, что операторы цикла будут выполняться если условие ложное. Если условие истинно, то управление передается на оператор, следующий за оператором LOOP. Опишем схематически как работает этот вид цикла:
шаг 1 | вычисляется значение условия; |
шаг 2 | если условие принимает значение «ложь», то переход к следующему шагу 3, иначе к шагу 5; |
шаг 3 | выполняются операторы в теле цикла; |
шаг 4 | переход к шагу 1; |
шаг 5 | конец цикла. |
· цикл DO ... LOOP с проверкой условия в конце:
DO [ тело цикла ] [ EXIT DO ] LOOP WHILEусловие |
Главное отличие оператора цикла с проверкой условия в конце от оператора с проверкой вначале состоит в том, что находящиеся между словами DO ... LOOP операторы цикла в любом случае выполняются по крайней мере один раз. Так, например, схема цикла с постусловием с WHILE будет следующей:
шаг 1 | выполняются операторы в теле цикла; | ||
шаг 2 | вычисляется значение условия; | ||
шаг 3 | если условие принимает значение «истина», то переход к шагу 1, иначе к следующему шагу 4 | ||
шаг 4 | конец цикла. | ||
DO [тело цикла ] [ EXIT DO ] LOOP UNTILусловие | |||
Тогда как для UNTIL цикл с постусловием будет следующим:
шаг 1 | выполняются операторы в теле цикла; |
шаг 2 | вычисляется значение условия; |
шаг 3 | если условие принимает значение «ложь», то переход к шагу 1, иначе к следующему шагу 4 |
шаг 4 | конец цикла. |
Если опустить проверку условия в начале или в конце цикла DO ... LOOP, то получим бесконечный цикл. Чтобы выйти из бесконечного цикла DO ... LOOP необходимо использовать оператор EXIT DO.
Алгоритм решения задачи:
Программа:
CLS
S = 0
i = 1
WHILE i <= 10
INPUT "a="; a
IF a > 0 THEN S = S + a
i = i + 1
WEND
PRINT "S="; S
END
Результаты работы программы:
a=? 1
a=? -2
a=? 0
a=? 3
a=? 6
a=? -9
a=? 5
a=? 5
a=? -8
a=? 3
S= 23
В данной задаче нам необходимо получить все цифры, которые используются для записи числа 103 062, то есть цифры 1, 0, 3, 0, 6. Их получим последовательно, начиная с конца. Для этого сначала воспользуемся операцией МОD, которая позволяет получить остаток от деления одного числа на другие. Пусть n=103 062, тогда n MOD 10=2, то есть
103 062 | |
103 060 | 10 306 |
Чтобы получить следующую цифру уменьшим число n в 10 раз, воспользовавшись операцией целочисленного деления, то есть n\10= 10 306. Таким образом повторяем эти действия пока n>0/
Алгоритм решения задачи:
Программа:
CLS
INPUT "n="; n
max = 0
DO WHILE n > 0
cifra = n MOD 10
IF cifra > max THEN
max = cifra
ENF IF
n = n \ 10
LOOP
PRINT "max="; max
END
Результаты работы программы:
n=? 102106
max= 6
Алгоритм решения задачи:
Программа:
CLS
INPUT "a="; a
s = 0
DO WHILE s < a
i = i + 1
s = s + 1 / i
LOOP
PRINT "s="; s
END
Результаты работы программы:
a=? 4
s= 4.027246
4. Итерационные циклы
Циклы, характеризующиеся последовательным приближением вычисляемых величин к искомому значению, называются итерационными.
Для итерационных циклов характерно то, что количество повторений до реализации вычислительного процесса неизвестно. Циклом управляет не параметр цикла, а заданная погрешность вычислений e. Путем последовательного приближения к заданному значению e по рекуррентной формуле получается искомый результат. Если на очередной итерации погрешность больше или равна e, то цикл продолжается для вычисления очередного приближенного результата, иначе происходит выход из цикла. К итерационным циклам приводят задачи вычисления сумм бесконечных рядов, реализации численных методов интегрирования, решения алгебраических и нелинейных уравнений, решения систем уравнений, задачи оптимизации.
В итерационных процессах результаты, полученные на текущем шаге, используются в качестве исходных данных для расчета на следующем шаге цикла. При реализации итерационного циклического процесса на ЭВМ необходимо задавать начальные значения и критерий, в соответствии с которым произойдет окончание процесса.
В задачах с итерационными процессами, как правило, требуется определить:
- значение текущего элемента числового ряда;
- значение предыдущего элемента ряда;
- сумму элементов ряда;
- количество элементов ряда.
В конкретной задаче на числовой ряд обычно задается условие прекращения суммирования элементов ряда, например:
- значение текущего элемента ряда меньше (больше) заданного числа;
- сумма элементов ряда больше заданного числа;
- разность между текущим и предыдущим элементами ряда больше (меньше) заданного числа;
- номер элемента ряда больше заданного числа.
Рассмотрим пример итерационного процесса.
Программа:
CLS
x = 3!
e = .00001
y1 = -.5
DO
y0 = y1
y1 = (y0 - x) / (2 * x)
LOOP UNTIL ABS(y1 - y0) < e
PRINT "yn="; y1
END
Алгоритм решения задачи:
Результаты работы программы:
yn=-.5999997
5. Вычисление суммы ряда
Задача сводится к нахождению суммы:
каждое слагаемое которой является функцией от номера n, определяющего место этого слагаемого в сумме, а также может являться функцией одного или нескольких дополнительных параметров, например
или
Особенностью решения задачи является то, что число суммируемых слагаемых заранее неизвестно. Условием окончания цикла по накоплению суммы является достижение заданной точности. Если член ряда по абсолютной величине становится меньше заданной точности e ( ), то производится выход из цикла.
Обычно формула общего члена ряда принадлежит к одному из двух типов:
1)
2)
В первом случае каждый член ряда вычисляется по формуле общего члена ряда, подставляя нужное значение n. Примером этого случая является следующая задача.
Программа:
CLS
e = .001
s = 0
n = 1
a = 1 / ((2 * n - 1) * (2 * n + 1))
DO WHILE ABS(a) >= e
s = s + a
n = n + 1
a = 1 / ((2 * n - 1) * (2 * n + 1))
LOOP
PRINT "s="; s
END
Алгоритм решения задачи:
Результаты работы программы:
s= .483871
Во втором случае для вычисления члена ряда целесообразно пользоваться реккурентной формулой, то есть выражать каждый последующий член ряда через предыдущий. Это позволит существенно сократить объем вычислительной работы.
Для вывода реккурентных соотношений многих стандартных математических функций используются их разложения в степенные ряды (ряды Тейлора). Например, функцию cos(x) можно разложить в такой ряд:
Выражение для n-го слагаемого имеет вид , ряд начинается с n=0, a0=1.
Одним из свойств «хороших» степенных рядов является то, что любое слагаемое превышает оставшуюся бесконечную сумму «хвоста» ряда. На этом основании точность вычисления может быть оценена значением очередного слагаемого.
Для «экономии вычислений» степеней, факториалов и других регулярных выражений выводится рекуррентная формула, позволяющая вычислить текущее слагаемое через предыдущее. Это можно сделать аналитически, разделив в общем виде выражение an на an-1
Таким образом, чтобы получить текущее слагаемое необходимо умножить предыдущее на K(x,n):
Программа:
CLS
INPUT "x="; x
s = 0
n = 0
a = 1
e = .000001
WHILE ABS(a) >= e
s = s + a
n = n + 1
a = a * (-1) * x ^ 2 / ((2 * n - 1) * (2 * n))
WEND
PRINT "s="; s
PRINT "cos("; x; ")="; COS(x)
END
Алгоритм решения задачи:
Результаты работы программы:
x=? 0
s= 1
cos( 0 )= 1
x=? 1.57
s= 7.957619E-04
cos( 1.57 )= 7.962743E-04
x=? 3.14
s=-.9999988
cos( 3.14 )=-.9999987
x=? 4.71
s=-2.389011E-03
cos( 4.71 )=-2.38894E-03
Вычислим формулу вычисления текущего слагаемого:
Таким образом, чтобы получить текущее слагаемое необходимо умножить предыдущее на K(x,n):
Программа:
CLS
INPUT "x="; x
s = 0
n = 0
a = 1
e = .000001
WHILE ABS(a) >= e
s = s + a
n = n + 1
a = a * x * LOG(3) / n
WEND
PRINT "s="; s
PRINT "3^"; x; "="; 3 ^ x
END
Алгоритм решения задачи:
Результаты работы программы:
x=? 4
s= 80.99998
3^ 4 = 81
6. Контрольные вопросы
1. Какой алгоритм называется циклическим?
2. Какие структуры циклических алгоритмов Вы знаете?
3. Опишите работу оператора организации цикла с параметром.
4. В каких случаях применяется оператор FOR …NEXT?
5. Как работает оператор FOR …NEXT, если в его записи отсутствует величина шага, т. е. нет оператора STEP?
6. По какому правилу изменяется параметр цикла?
7. В каких случаях оператор организации цикла с параметром не выполнится ни разу?
8. В каких случаях оператор FOR …NEXT будет работать бесконечно?
9. Для чего предназначен оператор EXIT FOR?
10. Опишите работу оператора WHILE…WEND.
11. Опишите работу оператора DO…LOOP.
12. В чём отличие конструкции WHILE от конструкции UNTIL?
13. В чем отличие между операторами DO…LOOP с проверкой условия в начале и в конце?
14. Какие операторы относятся к циклической структуре типа «До»?
15. Какие операторы относятся к циклической структуре типа «После»?
7. Задачи для самостоятельной работы
Табулирование функции
Блок заданий 1. Составить программу и протабулировать функцию у.
1. при изменении аргумента а от 30 с шагом 40 до получения 20 значений.
2. , а = 0,4 (0,2) до получения 15 значений.
3. , а = 0,4 (0,2) до получения 17 значений.
4. , а = 0,2 (0,3); b = 0,4 (0,2)до получения 12 значений.
5. , а = 0,4 (0,2) до получения 10 значений.
6. , а = 0,4 (0,2) до получения 18 значений.
7. , а = 0,4 (0,2) до получения 14 значений.
8. , х = 2,6 (0,2) до получения 20 значений.
9. , х = 3,4 (0,4) до получения 18 значений.
10. , х = 1,5 (0,6) до получения 15 значений.
11. , х = 1,5 (0,6) до получения 12 значений.
12. , х = 3,5 (0,5) до получения 16 значений.
13. , х = 2 (2) до получения 20 значений.
14. , х = 5 (2) до получения 17 значений.
15. , х = 5 (2) до получения 15 значений.
16. , х = 5 (2) до получения 12 значений.
17. , х = 5 (2) до получения 18 значений.
18. , х = 5 (2) до получения 20 значений.
19. , х = 1,5 (0,2) до получения 12 значений.
20. , а = 20 (20) до получения 14 значений.
21. , а = 20 (20) до получения 15 значений.
22. , а = 150 (20) до получения 15 значений.
23. , а = 150 (20) до получения 17 значений.
24. , а = 150 (20) до получения 14 значений.
25. , а = 150 (20) до получения 20 значений.
26. , а = 150 (20) до получения 16 значений.
27. , а = 150 (20) до получения 12 значений.
28. , а = 25 (2) до получения 15 значений.
29. , а = 150 (20) до получения 11 значений.
30. , а = 1,5 (0,4) до получения 16 значений.
31. , х = 1,5 (0,2) до получения 20 значений.
32. , х = 2 (0,5) до получения 15 значений.
Блок заданий 2. Составить программу и протабулировать функцию y.
1. , при 0º ≤ х ≤ 45º , h = 5º , а = 2.5
2. ; при a =3,14; 0° £ х £ 60°; h =10°
3. ; при a =2,1; 15° £ х £ 90°; h =15°
4. ; при a = 5,45; 2° £ х £ 72°; h =14°
5. ; при a =3,63; 0° £ х £ 100°; h =20°
6. ; при a =0,12; 1° £ х £ 46°; h =9°
7. ; при a =8,45; 5° £ х £ 65°; h =10°
8. ; при a =9,4; 5° £ х £ 65°; h =10°
9. ; при a =4,8; 0° £ х £ 75°; h =15°
10. ; при a =1,57; 7° £ х £ 67°; h =10°
11. ; при a = 1,5; 5° £ х £ 67°; h =10°
12. ; при a = 3,16; 10° £ х £ 135°; h =25°
13. ; при a = 0,25; 5° £ х £ 130°; h =25°
14. ; при a = 0,26; 45° £ х £ 125°; h =10°
15. ; при a = 0,26; 10° £ х £ 35°; h =5°
16. ,при 0º ≤ х ≤ 45º , h = 5º,а = 2.5
17. ; при a = 2,15; 30° £ х £ 70°; h = 8°
18. ; при a = p/21; 8° £ х £ 40°; h = 8°
19. ; при a =0,5p; 3° £ х £ 33°; h = 6°
20. ; при a =0,4p; 7° £ х £ 25°; h = 3°
21. ; при a = 0,123; 2° £ х £ 32°; h =5°
22. ; при a = 2,51; 16° £ х £ 40°; h = 4°
23. ; при a = 5,32; 4° £ х £ 44°; h = 8°
24. ; при a = 1,25; 10° £ х £ 40°; h = 6°
25. ; при a = 4,82; 9° £ х £ 34°; h = 5°
26. ; при a = 3·lnp; 11° £ х £ 29°; h =3°
27. ; при a =3,14; 0° £ х £ 60°; h =10°
28. ; при a = 5,32; 4° £ х £ 44°; h = 8°
29. ; при a = 1,25; 10° £ х £ 40°; h = 6°
30. ; при a = 4,82; 9° £ х £ 34°; h = 5°
31. ; при a = 3·lnp; 11° £ х £ 29°; h =3°
32. ; при a =3,14; 0° £ х £ 60°; h =10°
Блок заданий 3. Составить программу и протабулировать функцию z.
1. z= при ,x = 0.6(0.2)1.6
2. z = при у = ln x , x = 0.5(0.2)1.3
3. z = при у = cos x + sin x , x = 4(1) 9
4. z = при у = tg x , x = 1.0(0.2)1.8
5. z = при у = ctg x , x = 1.0(0.2)1.6
6. z = при у = , x = 13(4)33
7. z = при у = , x = 2(1)6
8. z = при у = , x = 30(10)60
9. z = при у =50 – ex , x = 2.5(0.5)5.
10. z = при у = 4-ex , x = 0.8(0.2)1.6
11. z = при у = 5x+0.1 , x = 0.4(0.2)1.0
12. z = при у = 2x+1/2 , x = -1.0(0.5)1.5
13. z = при у = cos x , x = 0.5(0.2)1.3
14. z = при у = 25-2x , x = 0.4(0.2)1.0
15. z = при у = ln x , x = 0.5(0.2)1.1
16. z = при у = ln x , x = 0.5(0.2)1.1
17. z = при у = ln2x , x = 1.5(0.5)4.0
18. z = при у = 1/(x-14) , x = 4(4)16
19. z = при у = 11/(x-2)2 , x = 4.0(0.5)6.5
20. z = при у = x2 , x = 0.4(0.2)1
21. z = при у = sin x , x = 0.5(0.2)1.3
22. z = при у = 2ln x-1 , x = 0.5(0.2)1.
23. z = при у = cos x+sin x , x = 4(1)9
24. z = при у = cos x , x = 1.0(0.2)1.8
25. z = при у = sin x , x = 1.0(0.2)1.8
26. z = при у = 2tg x-p , x = 1.0(0.2)1.6
27. z = при у = p-sin x , x = 4.0(0.5)6.5
28. z = при у = (x-p/2)2 , x = 0.4(0.2)1
29. z = при у = sin x , x = 0.5(0.2)1.3
30. z = при у = lg |x-1| , x = 0.5(0.2)1
31. z = при у = cos x - p , x = 4(1)9
32. z = при у = cos x , x = 1.0(0.2)1.8
Блок заданий 4. Протабулировать функцию y, заданную графически:
Блок заданий 5. Составить программу и вычислить значение функции z, если переменные x,y и p изменяются одновременно.
1. где
2. где
3. где
4. где
5. где
6. где
7. где
8. где
9. где
10. где
11. где
12. где
13. где
14. где
15. где
16. где
17. где
18. где