Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Операторы цикла DO WHILE/UNTIL LOOP и WHILE WEND.



Эти циклы называются циклами с предусловием, т. к. проверка проводится до начала очередной операции:

DО [{WHILE UNTIL}условие]

< тело цикла>

LOOP

или

WHILE < условие>

< тело цикла>

WEND

Цикл WHILE выполняется, пока условие истинно. Как только условие нарушается, выполнение цикла завершается. Если используется UNTIL, то выполнение происходит до тех пор, пока условие не станет истинным.

Например, та же проверка вводимой длины последовательности может быть задана как

INPUT N%

WHILE N% < =0

PRINT " ВВЕДИТЕ ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N ="

INPUT N%

WEND

Обратите внимание, что до первого входа цикл переменной N% уже должно быть присвоено какое-либо значение!

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

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

Рассмотрим пример вычисления суммы бесконечного ряда чисел.

Структурный подход предполагает использование простейших структур, перечисленных и списанных выше, для построения блок – схемы алгоритмов любой сложной задачи. Рассмотрим это на примере.

В отчете по работе должно быть:

1. Математическая постановка задачи

2. Блок-схема алгоритма

3. Программа на QBASIC

4. Результаты выполнения задачи

 

Пример. Вычислить значение sin x по формуле

 

SinX =

Общая формула члена ряда где n – номер члена ряда n

Вычисления продолжать до тех пор пока > E, это условие и есть условие выхода из цикла, где Е – точность вычислений.

При достаточно большом n возведение в степень занимает значительное машинное время. Поэтому каждый член ряда следует получать в соответствии с рекуррентным соотношением

R = Rx

Где n = 3, 5, 7……..; R начальное = х. Тогда рекуррентное соотношение для получения суммы ряда будет S = S+R (-1), где S начальное= Х. Блок – схема алгоритма вычисления суммы ряда представлены на рисунке 27.

Вычисления ведутся до тех пор, пока величина члена ряда R не станет меньше, либо равной некоторой малой величине Е. Значение R с каждым циклом уменьшается. После выполнения цикла первый раз имеем

R =

S =

После выполнения цикла второй раз

 

R =

S =

И т.д.


Блок-схема

 
 


 

 

 

Программа на Qbasic имеет вид:

input x, e

s=x

r=x

n=3

do while r> e

r=r*xÙ 2/((n-1)*n)*(-1)

s=s+r

n=n+2

loop

print s

end

 

Пример оформления лабораторной работы.

Постановка задачи.

Дано:

V= - формула члена ряда.

Y= - ln|2* sin (X/2)| - точное значение.

e=10-4 – точность вычисления.

π /5 < = X < = 9π /5, ∆ X= π /5

Блок-схема:

 

 


нет

 

да

 

 

Нет

 

да

 

 

Программа.

CLS

PRINT

PRINT " значение переменной/сумма/точное значение функции/ошибка

расчета/ число шагов "

PRINT " X /S /Y /T /K "

e=0.0001

For X=3.14/5 to 9*3.14/5 step 3.14/5

S=0

N=1

K=0

Do

V=cos (N*X)/N

S=S+V

N=N+1

K=K+1

Loop until ABS (V) < =e

Y = -log (ABS (2*sin (X/2)))

T=ABS (S-Y) (Y*100)

Print X, S, Y, T, K

NEXT X

END

Вывод результатов программы:

X S Y T K
0.6 1.6 2.6 3.6 4.6 5.6 0.4837 -0.3658 -0.6624 -0.6626 -0.3840 0.4492   0.48 -0.37 -0.66 -0.66 -0.39 0.44 0.4 2.3 0.4 0.1 0.8 1.9  

 

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

При выполнении варианта задания в лабораторной работе значение X меняется от X начального до X конечного с шагом dX.

Вариант для выполнения работы студент получает у преподавателя (см. задание № 1).

 

Задание №1

Нахождение суммы бесконечного ряда.

№ вар Сумма S Значения аргумента Условие окончания Функция Y(точное значение)
1. Xн=0.1 Xк=1 Шаг 0.1 E=10-4 ex
2. Zн=0 Zк=2 Шаг 0.2 E=10-4 ez
3. Xн=0.1 Xк=1 Шаг 0.1 E=10-4 cos (x)
4.   Zн=1 Zк=2   Шаг 0.1 E=10-4 cos (z)
5. Xн=0.1 Xк=1 Шаг 0.1 E=10-4 sin (x)
6. Zн=1 Zк=2 Шаг 0.1 E=10-4 sin (z)
7. Xн=0 Xк=2 Шаг 0.1 E=10-4 (1-2x2)ex^2
8. Xн=π /5 Xк= (9π )/5 Шаг π /5 E=10-3 -ln|2sin (x/2)|
9. XН=0.1 XК=1 Шаг 0.1 E=10-4 ch x= (ex + e-x)/2
10.     Xн=0.1 Xк=1 Шаг 0.1 E=10-4 sh x= (ex - e-x)/2
11. 3x+ 8x2+….+n(n+2)xn Xн=0.1 Xк=0.8 Шаг 0.1 E=10-4
12.     Xн = π /10 Xк = π /4   Шаг π /20 E=10-4 π 2/8 – (π *|x|)/4
13. Xн=0.2 Xк=0.6 Шаг 0.05 E=10-4 arctg (x)
14. Xн=0.1 Xк=0.8 Шаг 0.1 E=10-4 1/2 - (π /4)*|sin x|
15. Xн=0 Xк=1 Шаг 0.1 E=10-4 e 2x
16. Xн=0.1 Xк=1 Шаг 0.1 E=10-4 (x2/4+x/2+x) *e x/2
17. Xн=0.2 Xк=1 Шаг 0.1 E=10-4
18. Xн = π /5 Xк = π Шаг π /10 E=10-4 1/4*(x2-(π 2/3))
19. Zн=0.1 Zк=0.5 Шаг 0.05 E=10-3 1-z*ln (2)
20. Zн=0 Zк=1 Шаг 0.1 E=10-4
21. Xн=0.1 Xк=1 Шаг 0.1 E=10-4
22. Xн=0.5 Xк=2 Шаг 0.1 E=10-4 e-x
23. Xн=0.1 Xк=1 Шаг 0.1 Е=10-4 (1+x2)/2* arctg (x) - x/2
24. Xн=0.1 Xк=0.8 Шаг 0.1 Е=10-3
25. 1+3x2+…+ (2n+1) x2n/n! Xн=0.1 Xк=1 Шаг 0.1 E=10-4
26. Xн=0.2 Xк=1.2 Шаг 0.1 Е=10-4
27. -(x+(x2/2)+(x3/3)+…+(xn/n)…) Xн=0.1 Xк=1.1 Шаг 0.1 Е=10-4
28. -ln 2- cos 2x- cos (4x/2) – cos(2nx/n) Xн=0 Xк= π Шаг π /8 Е=10-3 ln |sin x|
29. Xн=0.2 Xк=2 Шаг 0.2 E=10-4 ax
30. Xн = -π Xк = π Шаг π /4 E=10-4 x

 

Задание.

Вычислить сумму ряда с точностью ε для всех значений аргумента x, меняющегося от x начального до x конечного с шагом ∆ x. Вычислить точное значение функции для каждого x, подсчитать ошибку вычислений по формуле

 

t= ((|сумма ряда – точное значение|)/точное значение)*100%

и количество шагов для достижения заданной точности.

Результат выполнения программ должен быть представлен в следующем виде:

 

Значение x Сумма ряда S Точное значение y Относительная ошибка в % t Количество шагов n
         
         

Работа с массивами

Основные положения

Массивом называется упорядоченная совокупность переменных. Каждая переменная в этой группе называется элементом массива и характеризуется значением к местоположением внутри массива.

Массивы могут быть одномерными, двумерными, трехмерными,...,
N-мерными.

В зависимости от типа хранимых данных массивы могут быть числовыми (дейст­вительного или целого типа) и текстовыми. Все элементы в массиве должны быть одного и того же типа.

В качестве индекса элемента массива могут использоваться числа, переменные целого типа, арифметические выражения. Индекс - всегда число целое.

Например: А(3) - 3-й элемент одномерного массива, состоящего из переменных действительного типа (в случае если элементы нумеруются с 1-го).

В% (2, 3) элемент двумерного массива (матрицы), состоящего из переменных цело­го типа, стоящий во 2-й строке, 3-м столбце.

С $(I+1, 2) - элемент матрицы, состоящий из символьных переменных, стоящих в (i+1)-й строке, 2-м столбце.

Пример одномерного массива

a1, а2, а3, а4,..., а100

Общий элемент такого массива можно обозначить как ai В бейсике - a (i). Индекс всегда записывается в круглых скобках.

Пример двумерного массива

bll, b12, bl3, bl4, bl5

b21, b22, b23, b24, b25

b31, b32, bЗЗ, b34, b35

Общий элемент двумерного массива - bij, где i - номер строки, j-номер столбца В бейсике - b (i j).

Пример трехмерного массива

Общий элемент трехмерного массива

c(i, j, k)

 

Значения элементам массива можно присваивать различными способами:

1способ. С помощью оператора присваивается

А(2)=15.1

А(3)=- 7, 45

Такой способ можно использовать в случае, если массив небольшой,

2 способ. С помощью цикла

2.1. FOR i = l TO 10

INPUT a(i)

NEXT i

В этом случае все элементы массива вводятся с клавиатуры.

2.2. DATA 2.5, -7.3, 4.8, 10.1, 76.8

FOR i = l TO 5

READ a(l)

NEXT i

Этот способ удобен тем, что данные не теряются при повторном выполнении программы, Значения хранятся в операторе data и вводятся в программу один раз - при ее написании. Оператор read обращается к оператору data и присваивает очередной переменной текущее значение из списка.

3 способ. С помощью стандартной функции rnd

FOR i = l TO 10

c(i) = RND (i)

NEXT i

В этом случае используется специальная функция, генерирующая случайные числа - функция rnd

Оператор DIM

DIM имя 1 (индекс 1) [, имя 2 (индекс 2), …

где

как [нижний TO] верхний [нижний ТО] верхний …

где - нижний - нижнее значение индекса массива (по умолчанию ноль)

верхний - верхнее значение индекса массива.

Оператор DIM резервирует место в памяти для размещения элементов массива.

Например:

DIM A$ (5), В% (1 to 5), С (5 to 10, 1 to 10 )

1. Определяется имя массива

2. Определяется тип элементов массива

3. Резервируются ячейки памяти для массива

4. Заполняются нулевыми значениями ячейки для массива числового типа или пустыми строками текстовый массив.

Оператор DIM может находится в любом месте программы до первого обращения к массиву, который он объявляет. Обычно оператор DIM помещают в начало программы, что облегчает процесс отладки.


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 646; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.049 с.)
Главная | Случайная страница | Обратная связь