Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материалы к экзамену ПБ.doc
Скачиваний:
17
Добавлен:
18.09.2019
Размер:
795.65 Кб
Скачать

3.4. Некоторые часто встречающиеся алгоритмы

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

s = 0

FOR i = 1 TO n

s = s + f(i)

NEXT i

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

p = 0

FOR i = 1 TO n

p = p * f(i)

NEXT i

Алгоритм обмена значениями 2-х переменных:

Вариант с использованием 3-й переменной:

c = a

a = b

b = c

Вариант без использования дополнительной переменной:

b = b – a

a = a + b

b = a – b

В QBASIC для выполнения обмена переменных значениями есть специальный оператор SWAP a , b

Вопросы для самоконтроля

  1. Какие основные группы символов входят в алфавит языка BASIC?

  2. Каким образом описывается тип переменных, используемых в программе?

  3. Как записывается и выполняется оператор ввода?

  4. Как записывается и выполняется оператор вывода?

  5. Что такое арифметическое выражение и как оно записывается?

  6. Каким образом на языке BASIC записывается оператор условного перехода?

  7. Какими средствами языка BASIC реализуется разветвляющаяся программа?

  8. Какими операторами в языке BASIC реализуется цикл с параметром?

СПИСОК ЛИТЕРАТУРЫ

Основная

  1. Безручко, В.Т. Практикум по курсу «Информатика». Учебное пособие. – 3е изд./ В.Т. Безручко.– М.: Финансы и статистика, 2005. – 544 с.

  2. Симонович, С.В. Информатика: Базовый курс / С.В.Симонович и др./ - СПб: Питер, 2007. - 640 с.

Дополнительная литература

  1. Попов, В.Б. Основы компьютерных технологий, /В.Б. Попов М.: Финансы и статистика, 2002. – 703 с.

Лекция 4 Работа с массивами

4.1. Понятие массива. Индексы. Операции с массивами

Массивом называется упорядоченная совокупность однородных данных. Отдельные элементы массива в программе обозначаются общим символьным именем, после которого в скобках записываются индексы, определяющие место элемента в данном массиве. Количество индексов определяет структуру массива: одномерный (один индекс), двумерный (два индекса) и т.д. Аналогом одномерного массива является список или вектор (в математике), аналог двумерного массива – таблица или матрица (в математике). Например, a( 1 )- 1-й элемент массива a, b( 2, 5)- элемент массива b, расположенный во 2-й строке и 5-ом столбце. Элементы массивов называют также индексированными переменными. В QBASIC максимальное число индексов для массива равно 8.

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

Оператор описания массива DIM

Вид оператора:

DIM <имя массива 1> (макс. значение 1-го индекса [, макс. значение 2-го индекса, …]) [AS <указатель типа>] [,<имя массива 2>…]

Указатели типа могут быть следующими: INTEGER целый

LONG длинный целый

SINGLE вещественный обычной точности

DOUBLE вещественный двойной точности

STRING символьный

Как и в случае переменной, тип массива может быть указан присоединением к его имени соответствующего суффикса; в этом случае указывать тип в операторе DIM не надо. Если тип не указать одним из этих способов, он по умолчанию будет выбран SINGLE.

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

Наименьшим значением всех индексов по умолчанию считается 0.

Н апример, оператор DIM a(3), b%(2, 2), c(2) AS STRING описывает одномерный массив a из 4-х элементов вещественного типа обычной точности: a(0), a(1), a(2), a(3);

двумерный массив b из 9 элементов целого типа: и одномерный массив c из 3-х элементов символьного типа: c(0), c(1), c(2).

Оператором OPTION BASE 1 записанным перед оператором DIM, можно задать наименьшие значения всех индексов равные 1.

Любые действия с данными, хранящимися в массиве, выполняются для отдельных элементов, поэтому в программе приходится указывать порядок, в котором над элементами массива будут производиться операции. Это удобно делать с помощью операторов FOR…NEXT, в которых счетчики принимают значения равные индексам элементов массива.

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

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

INPUT n

DIM a(n)

FOR i = 1 TO n

PRINT “a(“ ; i ; “)=” ;

INPUT “”, a( i )

NEXT i

Чтение значений элементов массива оператором READ из списка оператора DATA.

Вид операторов: DATA <список значений>

READ <список переменных>

<список значений> состоит из чисел и (или) последовательностей символов в кавычках разделенных

запятой.

<список переменных> состоит из имен переменных, разделенных запятой.

Списки должны соответствовать друг другу по количеству и типу элементов. Результатом выполнения оператора READ является чтение в переменные значений из списка DATA. Группа операторов

DATA <список значений1>

DATA <список значений2>

DATA <список значений3> эквивалентна оператору

DATA <список значений1, список значений2, список значений3>, то же имеет место для оператора READ. INPUT n

DIM a(n)

DATA список из n чисел через запятую

FOR i = 1 TO n

READ a( i )

NEXT i

Формирование массива с помощью генератора случайных чисел (функция RND).

Значением функции RND является случайное число из промежутка (0, 1). При многократном обращении к функции генерируется последовательность случайных чисел. Для генерации различных последовательностей случайных чисел при последующих запусках программы надо проинициализировать генератор случайных чисел оператором RANDOMIZE TIMER.

При необходимости получения случайного вещественного числа из промежутка (a, b) можно воспользоваться формулой .

При необходимости получения случайного целого числа из промежутка [a, b] можно воспользоваться формулой .

При необходимости получения случайного числа, модуль которого принадлежит (a, b), а знак выбирается случайным образом, можно воспользоваться формулой .

Пример формирования двумерного массива с использованием функции RND.

INPUT m,n

DIM a(m,n)

FOR i = 1 TO m

FOR j = 1 TO n

a(i, j) = CINT(RND*20)

NEXT j

NEXT i

Рассмотрим различные способы вывода значений элементов массива:

Вывод одномерного массива в строку. …

DIM a(n)

FOR i = 1 TO n

PRINT a( i );

NEXT i

Вывод одномерного массива в столбец. …

DIM a(n)

FOR i = 1 TO n

PRINT a( i )

NEXT i

Вывод двумерного массива в виде таблицы .…

DIM a(m, n)

FOR i = 1 TO m

FOR j = 1 TO n

PRINT a(i, j);

NEXT j

PRINT

NEXT i

Далее рассмотрим часто используемые алгоритмы обработки массивов.

Алгоритм упорядочивания массива (расстановки в порядке возрастания, либо убывания его элементов).

DIM a(n)

FOR i = 1 TO n

FOR j = i + 1 TO n

IF a( i ) > a( j ) THEN SWAP a( i ), a( j ) (для упорядочивания по

NEXT j убыванию надо сменить > на <)

NEXT i

Алгоритм поиска наибольшего (наименьшего) элемента и его номера в массиве.

DIM a(n)

...

m = a( 1 ): k = 0

FOR i = 2 TO n

IF m < a( i ) THEN m = a( i ): k = i (для поиска наименьшего элемента

NEXT i сменить < на >)

После завершения цикла в переменной m хранится значение наибольшего элемента, а в переменной k- его номер.

Алгоритм подсчета числа элементов, удовлетворяющих заданному условию.

DIM a(n)

...

k = 0

FOR i = 1 TO n

IF < условие> THEN k = k + 1

NEXT i

После завершения цикла в переменной k хранится количество элементов, удовлетворяющих условию.

Замечание. Во всех приведенных фрагментах программ многоточием заменены операторы, определяющие значения переменной n и значения элементов массива.