- •Среда программирования qbasic
- •Язык программирования qbasic
- •Типы данных
- •Виды данных
- •Имя константы (в неявном виде) или переменной
- •Оператор const
- •Оператор dim
- •Оператор присвоения значений переменным
- •Стандартные функции
- •Выражения
- •Арифметические выражения
- •Логические выражения
- •Операции сравнения
- •Логическое отрицание
- •Логическое умножение
- •Логическое сложение
- •Логическое равенство
- •Строковые выражения
- •Структура программ
- •Оператор ввода из памяти (read – data)
- •Вывод на экран (print) и принтер (lprint) Вывод данных на экран
- •Форматированный вывод на экран (print using) и принтер (lprint using)
- •Символы для вывода чисел
- •Алгоритмы
- •Действие 2
- •Операторы передачи управления по вычислению
- •Оператор условного перехода if then
- •Пример решения задач iia и iiб
- •Оператор выбора select case
- •Алгоритмы циклической структуры
- •Операторы цикла while – wend (цикл ‘’пока’’)
- •Операторы цикла do – loop
- •Операторы цикла for – next (цикл со счетчиком)
- •Итерационные циклы
- •Итерационные циклы с применением рекурентной формулы
- •Массивы в qbasic
- •Объявление массива
- •Действия с массивами
- •Функции и процедуры, определяемые пользователем (собственные)
- •Функция пользователя function
- •Объявление функции пользователя
- •Собственная процедура (подпрограмма) sub
- •Объявление подпрограммы пользователя
- •Формальные параметры делятся на 2 группы:
- •Операторы для работы с файлами
- •По принципу организации файлы подразделяются на:
- •Обработка файла состоит из следующих операций:
- •Создание дискового файла
- •Вывод данных в файл
- •Закрытие дискового файла
- •Ввод данных из файла в программу
- •Input # н.Ф., список
- •Функции, используемые при работе с файлами
- •Графические возможности qbasic
- •Выбор графического режима
- •Выбор цвета
- •Выбор окна выведения
- •Вывод точки на экран и ее удаление
- •Построение линии и прямоугольника
- •Построение эллипса (окружности)
- •Закрашивание замкнутых областей
- •Задание II Алгоритм разветвляющейся структуры задача iiа
- •Задача II б
- •Задание III алгоритм циклической структуры задача III а Табулирование функции
- •Задача III б Вычисление суммы (произведения)
- •Задание IV Алгоритм комбинированной структуры
- •Вариант решения (использование функции пользователя)
- •Вариант решения (использование подпрограммы пользователя)
Итерационные циклы
Вычислить значение суммы , пренебречь членами ряда меньшими ε, т.е. , при х = 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 элементов.
Найти произведение всех отличных от 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
Найти максимальный элемент 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
Вычислить сумму положительных элементов каждого столбца матрицы А(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