Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические занятия ИНФОРМАТИКА.doc
Скачиваний:
31
Добавлен:
10.02.2016
Размер:
1.51 Mб
Скачать

Итерационные циклы

Вычислить значение суммы , пренебречь членами ряда меньшими ε, т.е. , при х = 0,2

REM итерационные циклы

DIM X, i, EPS, F, Fi

INPUT ''X, EPS”; X, EPS

F = 0: i=1

DO

Fi = X^ i / (i+1)^3*( -i ) ^(i+1)

F = F + Fi: i = i+1

LOOP WHILE ABS(Fi) >EPS

PRINT ”F=”; F

END

1 –й вариант решения (при ε =10 -5)

i Fi

i1 =1 F1 = + 0.025

i2 =2 F2 = - 0.00148

i3 =3 F3 = +0.000025

i4 =4 F4 = - 0.00000256

2 –й вариант решения (при ε =10 -3)

i Fi

i1 =1 F1 = + 0.025

i2 =2 F2 = - 0.00148

i3 =3 F3 = +0.000025

Итерационные циклы с применением рекурентной формулы

Вычислить значение суммы

, с точностью очередного члена ряда

Запишем исходный ряд S = Z0 + Z1 + Z2 ...+ Zn + Z n+1 + ...

или Sn+1 = S n + Z n+1 , n = 0, 1, 2, ...

S0 = x

Используя рекурентную формулу Z n +1 = Z n αn ,

где αn = Z n+1 / Z n , получим

αn = Z0 = x

REM Рекурентная формула

DIM X, N, EPS, S, Z, AL

INPUT ''X, EPS”; X, EPS

S = X: Z = X: N = 0

DO

AL=-X^2/(2*N+2)/ (2*N+3)

Z = Z*AL

S=S+Z

N=N+1

LOOP UNTIL ABS(Z) <=EPS

PRINT ”sin ”; x; ”=”; S

END

Массивы в qbasic

Массивы – объединение данных одного типа в единую структуру с прямым доступом к каждому его элементу.

Положение элемента в массиве обозначается его индексом.

При обращении к массиву записывают имя массива и его индексы в круглых скобках.

Например, А!(5), B867#(2,5), C$(2,4,6)

Каждый элемент имеет то же имя, что и весь массив.

По количеству индексов определяют мерность массива: одно-, двух- , n- мерные.

Мерность массива не превышает 255.

Индекс массива изменяется как переменная цикла.

Объявление массива

DIM [SHARED] переменная [размерность]

Все массивы (начальные, промежуточные, конечные) должны быть объявлены в разделе описания переменных.

DIM AR(1 TO 20) ’ одномерный массив

DIM F%(1 TO 6, 1 TO 15) ’ двумерный массив

DIM D$(1 TO 3, 1 TO 5, 1 TO 4) ’ трехмерный массив

Действия с массивами

Пример. Задан одномерный массив Х (х1, х2,...,хn), состоящий из n элементов.

  1. Найти произведение всех отличных от 0 элементов.

Решение:

Для нахождения произведения элементов массива, необходимо до начала циклических действий задать начальное значение произведения, равное 1.

REM произведение элементов массива

DIM X(1 TO N), N, P, I

P = 1

FOR I = 1 TO N

INPUT ''x”; X(I)

IF X(I) <> 0 THEN

P = P * X(I)

END IF

NEXT I

PRINT” произведение P=”;P

END

  1. Найти максимальный элемент Xmax массива и его порядковый номер Imax.

Вкачестве начального значенияXmax берется первый элемент массива и его значение сравнивается со значениями остальных элементов. Поскольку сравнивать первый элемент массива с собой не имеет смысла, цикл выполняется, начиная со второго значения.

REM максимальный элемент массива

DIM X(1 TO N), N, I, XMAX, IMAX

FOR I = 1 TO N

INPUT ''x”; X(I)

NEXT I

XMAX = X(1): IMAX = 1

FOR I = 1 TO N

IF XMAX < X(I) THEN

XMAX = X(I)

IMAX = I

END IF

NEXT I

PRINT ”Xmax=”; XMAX;” Imax=”; IMAX

END

  1. Вычислить сумму положительных элементов каждого столбца матрицы А(M x N).

Для вычисления суммы положительных элементов j - столбца матрицы необходимо организовать цикл с целью перебора всех элементов столбца, поэтому параметром этого цикла следует выбрать номер столбца i. Перед циклом нужно задать начальное значение суммы S(j) = 0 для j - столбца. После окончания цикла результат необходимо вывести на печать.

Эти действия должны быть повторены во внешнем цикле, изменяя номер столбцов j.

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

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

REM сумма элементов строк массива

DIM N, M, I, J

DIM А(1 TO M, 1 TO N), S(1 TO N)

FOR I = 1 TO M

FOR J = 1 TO N

INPUT ''A”; A(I, J)

NEXT J

NEXT I

FOR J = 1 TO N

S(J) = 0

FOR I = 1 TO M

IF A(I, J) >= 0 THEN

S(J) = S(J) + A(I, J)

END IF

NEXT J

PRINT ”S(”; J;” )=”; S(J)

NEXT I

END