- •Введение
- •1. Общие сведения о микроэвм. Выбор языка программирования
- •1.1. Общие сведения о микроЭвм.
- •1.2. К выбору языка программирования
- •2. Системы счисления микроэвм. Двоичная арифметика. Разрядные сетки. Прямой и дополнительный коды
- •2.1. Системы счисления
- •2.2. Двоичная арифметика
- •2.3. Разрядные сетки микроЭвм
- •2.4. Прямой и обратный коды
- •3. Загрузка языка basic – интерпретатора. Основные понятия языка. Получение листинга простейшей программы
- •3.1. Загрузка языка basic – интерпретатора
- •3.2. Основные понятия языка basic
- •3.2.1. Алфавит языка
- •3.2.2. Условные обозначения
- •3.2.3. Константы
- •3.2.4. Переменные
- •3.2.5. Стандартные функции
- •3.2.6. Арифметические выражения
- •3.2.7. Строки и операторы
- •3.3. Оператор remark
- •3.4. Оператор присваивания
- •3.5. Операторы окончания программы
- •3.6. Команда выполнения программы
- •3.7. Отладка и редактирование программы
- •3.8. Основные команды языка gw-basic
- •4. Программирование линейных вычислительных процессов
- •4.1. Линейный вычислительный процесс
- •4.2. Оператор печати для вывода информации на экран
- •4.3. Вывод информации на печатающее устройство
- •4.4. Операторы задания начальных значений и ввода данных
- •4.5. Оператор восстановления блока данных
- •3Адание 2.
- •5. Программирование разветвляющихся вычислительных процессов
- •5.1. Разветвляющийся процесс
- •5.2. Выражения отношений
- •5.3. Логические функции
- •5.4. Приоритет выполнения всех операций
- •5.5. Операторы безусловного перехода
- •5.6. Оператор условного перехода
- •5.7. Оператор on
- •5.8. Решение нелинейных уравнений
- •5.8.1. Метод простой итерации
- •5.8.2.Метод Ньютона
- •5.8.3.Метод деления пополам
- •6. Диалоговый режим работы. Программирование циклических процессов
- •6.1. Диалоговый режим
- •6.2. Оператор input
- •6.3.Циклические вычислительные процессы
- •6.4.Итерационные циклы
- •6.5. Циклы с параметром
- •6.6. Операторы for и next
- •6.7. Вложенные циклы
- •6.8. Операторы while – wend
- •6.9. Операторы do – loop
- •7. Обработка массивов
- •7.1.Массивы
- •7.2. Оператор dim
- •7.3. Обработка массивов
- •7.4. Ввод массивов
- •7.5. Вывод массивов
- •7.6. Использование массивов в вычислениях
- •7.7. Функция tab
- •8. Использование массивов в вычислениях
- •9. Функции и подпрограммы пользователя
- •9.1. Функции пользователя
- •9.2. Подпрограммы пользователя
- •10. Графические средства языка basic
- •10.1. Передний план, фон и окантовка
- •10.2. Режимы работы экрана
- •10.3. Координаты точек на экране
- •10.4. Оператор color в текстовом режиме
- •10.5. Оператор color в графическом режиме
- •10.6. Оператор pset
- •10.7. Оператор line
- •10.7.1 Построение ломаных линий
- •10.10. Оператор circle
- •10.10.1. Построение дуг окружностей
- •10.10.2. Построение радиусов
- •10.10.3. Построение эллипсов
- •10.11. Оператор paint
- •10.12. Оператор draw
- •10.12.1. Команды оператора draw
- •10.13. Построение графиков
- •11. Построение динамических изображений
- •Приложение 1
- •2.3. Циклический процесс.
- •Приложение 2
7. Обработка массивов
7.1.Массивы
Массив – это упорядоченная последовательность величин, идентифициро-ванных одним именем, в которой положение каждого элемента определено индексом.
Индекс представляет целую величину или набор величин, разделённых запятыми и заключёнными в круглые скобки.
Имя массива выбирается, исходя из тех же правил, что и имя переменных (из одной буквы или символов). Количество индексов определяет размерность массива.
Примеры. А(I) – одномерный массив;
В(I,J) – двумерный массив.
Максимальное количество индексов в GB – 255, в QB – 60, в TB – 8. Минимальное значение индекса – 0. Максимальное значение индекса в GB – 16387, в QB и TB – 32767.
7.2. Оператор dim
При обработке массивов память микроЭВМ резервируется под элементы массива. Предусмотрены два способа резервирования: по умолчанию и с помощью специального оператора DIM. По умолчанию резервируется 10 элементов массива от 0 до 9. При обработке большего количества элементов массива на экране монитора появится сообщение об ошибке.
Оператор DIM используется для описания максимального размера массива.
Структура оператора:
нс DIM <имя> (мн1, мн2),
где DIM – ключевое слово (сокр. от DIMENSION) – “размер”; вместо угловых скобок указывается имя массива, а в круглых скобках максимальный (для одномерного) или максимальные (для двумерного или другой размерности) массивов индексы мн1 и мн2.
Пример. 30 DIM А1(2,3), В(10)
В 30-й строке резервируется место в памяти для 12-ти элементов двумерного и 11-ти элементов одномерного массивов (учитываются нулевые индексы).
Оператор DIM должен записываться вначале программы до первого выполнения оператора.
7.3. Обработка массивов
Обработка массивов включает: ввод или формирование массивов, вывод на печать массивов и использование массивов в вычислениях.
7.4. Ввод массивов
Для ввода или формирования массивов можно использовать операторы DATA - READ или оператор INPUT с использованием операторов циклов.
Пример. Ввести 5 первых элементов массива А(I): 1;2;3;4;5.
Фрагмент программы:
…
20 DIM А(5)
30 FOR I = 1 TO 5
40 INPUT A(I)
50 NEXT I
…
Для большинства версий системы INТEL знаки вопроса (?) после команды RUN печатаются в столбик:
…
? 1
? 2
…
Аналогично с помощью INPUT производится ввод двумерного массива через организацию вложенных циклов, при этом в памяти микроЭВМ элементы двумерного массива располагаются по строкам: В(0,0); В(0,1); В(0,2);…В(1,0); В(1,1);…
7.5. Вывод массивов
Организация вывода одномерного массива ничем не отличается от организации ввода – только вместо INPUT используется PRINT (для вывода на экран) или LPRINT (для вывода на печатающее устройство).
При выводе двумерных массивов на микроЭВМ между оператором NEXT J (окончание внутреннего цикла) и NEXT I (окончание внешнего цикла) следует употреблять PRINT без списка – для закрытия строки, чтобы матрица распечаталась в привычном виде, а в конце PRINT A(I,J); надо использовать знаки препинания ‘,’или ‘;’.
7.6. Использование массивов в вычислениях
Все вычисления организуются с помощью операторов циклов FOR – NEXT или вложенных циклов для двумерных массивов. С помощью операторов обработки массивов FOR-NEXT можно решать большое многообразие задач, например, производить обработку результатов измерений, вычислять площади под кривыми, решать задачи с рядами, обрабатывать полиномы по алгоритму(схеме).
Алгоритм накопления сумм:
S = 0 – до цикла
S = S + <∑> – в цикле
Алгоритм накопления произведений:
P = 1 – до цикла
P = P * <П> – в цикле
Пример. Вычислить
Фрагмент программы:
…
50 S=0
60 FOR I = 1 TO N
70 S = S + X(I)
80 NEXT I
90 Y=S
…
В 50-й строке осуществляется подготовка цикла (установка сумматора или накопителя в “нуль”); 60 – 80 строки – тело цикла; в 90-й строке полученное значение присваивается переменной Y.
Алгоритм (схема) Горнера.
Известно, что полином в общем виде записывается следующим образом:
Y=An*X^n+ A(n-1)*X^(n-1)+…A1*X+A0 .
Горнер предложил переиндексировать коэффициенты многочлена:
Y=A1*X^n+ A(n-1)*X^(n-1)+…An*X+A(n+1) .
Далее он предложил разложить многочлен и представить в виде:
Y=(…(A1*X+A2)*X +A3)*X+…A1)*X+A(n+1) .
Исходя из такого представления, он предложил алгоритм, который еще называют схемой Горнера:
-все коэффициенты A1, A2,…,A(n+1) представить в виде элементов массива;
-должны учитываться все коэффициенты. Если они отсутствуют в полиноме, то их надо все равно использовать, считая их равными нулю;
-до цикла FOR-NEXT взять значения y=A(1);
-цикл по управляющей переменной организовывать с I=2 до X+1;
-в цикле использовать формулу:
Y=Y*X+A(I) .
Если все значения Y надо сохранить, то Y следует организовать тоже как массив.