Скачать 424.65 Kb.
|
СОГЛАСОВАНО Зав.каф. «Физики и информатики» __________________ Африна Е.И. ___ ______________________2006 НИР 2005 / 2006 Методические материалы к урокам по программированию – массивы Преподаватель информатики Давыдова Вера Васильевна Гимназия №1567 Май 2006 г. СОДЕРЖАНИЕ
- общие сведения; - ввод / вывод одномерных массивов; - ввод / вывод двумерных массивов; - решение задач на построение и преобразование массивов.
- вычисление суммы элементов массива; - нахождение минимального / максимального значений в массиве; - решение задач по обработке числовых массивов.
- сортировка выбором; - сортировка обменами. Введение Многие задачи, которые решаются с помощью компьютера, связаны с обработкой больших объемов информации, представляющей совокупность данных, объединенных единым математическим содержанием или связанных между собой по смыслу. Примером таких организованных совокупностей данных являются координаты, задающие положение точки в пространстве, матрица коэффициентов, определяющая систему линейных уравнений, значения некоторой функции в произвольных точках, коэффициенты многочлена и т.д. Такие данные удобно представлять в виде линейных или прямоугольных таблиц. В линейной таблице каждому ее элементу соответствует порядковый номер. Для элемента прямоугольной таблицы должны быть указаны два номера: номер по вертикали (номер строки) и номер по горизонтали (номер столбца). В высшей математике табличные величины называют соответственно векторами и матрицами. В программировании для представления таких данных используются массивы. Определение массива Если в программе используется группа однотипных переменных (например, оценки каждого школьника в классе, дневная температура в течение месяца и т.д.), то такую группу однородных объектов удобно представить в виде массива переменных. Массив – это упорядоченная совокупность однотипных данных. Отдельные переменные в массиве называются элементами. Каждый элемент массива имеет свой порядковый номер – индекс, поэтому совокупность элементов является упорядоченной. В Basic’e используются массивы одномерные и двумерные. В одномерных массивах каждый элемент имеет один индекс, определяющий порядковый номер элемента в массиве. В двумерных массивах каждый элемент имеет два индекса, один из которых определяет номер строки, а другой – номер столбца, на пересечении которых находится элемент массива. В математике аналогом одномерного массива является одномерная таблица или вектор, двумерного массива – прямоугольная таблица или матрица. Например:
ax+ ax+ ax = b ax+ ax+ ax = c ax+ ax+ ax = d коэффициенты системы уравнений образуют прямоугольную таблицу или матрицу, где положение каждого элемента определяется номером строки и номером столбца
. Массив характеризуется именем, размерностью, размером и типом данных. Имя массива, как и имя любой переменной, представляет собой последовательность латинских букв и цифр, где первый символ – буква. Число символов в имени – не более 40. Например: А, Z1, PRIMER, NUMBER, … Примечание: имя массива не должно совпадать с именами переменных, используемых в той же программе. Положение элемента в массиве определяется порядковым номером элемента, то есть его индексом. Число индексов определяет размерность массива – одномерный массив, двумерный массив. Элемент одномерного массива обозначается переменной с одним индексом: А(2), А(I), Z1(K+3). Элемент двумерного массива обозначается переменной с двумя индексами: PRIMER(2,1), NUMBER(I,J), …, где первый индекс – номер строки, второй индекс – номер столбца. В качестве индексов можно использовать: константы, переменные, арифметические выражения. Например: А(1); А(I); А(К+5); С(3,4); С(I,J); С(I+1,3*J). Если в качестве индексов используются переменные или выражения, то значения переменных должны быть определены до обращения к ним, а арифметические выражения должны быть вычислены и из результата выделена целая часть, так как индексы могут принимать только целые значения. Размер массива – это общее количество элементов в массиве. По умолчанию размер любого массива принимается равным 10 (по каждой размерности). Размер массива определяется граничными значениями индексов. Минимальное значение индексов равно 0. С учетом этого количество элементов в одномерном массиве равно значению верхней границы индекса плюс 1. Например: в массиве А(10) верхняя граница индекса равна 10, значит количество элементов в массиве 10+1=11. В двумерном массиве количество элементов равно произведению увеличенных на единицу значений верхних границ индексов. Например: в массиве С(5,7) верхние границы индексов равны 5 и 7, значит количество элементов в массиве (5+1)*(7+1)=48. С помощью оператора OPTION BASE можно установить начальные значения индексов, отличные от 0. Оператор используется один раз до описания массивов. Формат оператора: OPTION BASE<n>. Например: OPTION BASE 1 устанавливает начальные значения индексов, равные 1. Тип данных в массиве задается в имени массива так же, как и тип переменной задается в имени переменной - к имени массива (переменной) добавляется специальный символ: % - целые числа; А% (10); ! - вещественные числа одинарной точности; А! (10); действует по умолчанию: А (10); - вещественные числа двойной точности; А (10); $ - символьные данные; А$ (10). Примечание: для указания типов данных можно использовать операторы описания типов переменных DEFINT, DEFSNG, DEFDBL, DEFSTR в формате <имя оператора> <буква1> - <буква2>, где < буква1>, < буква2> - любая из букв латинского алфавита; обычно эти операторы размещаются в начале программы. Переменные, имена которых начинаются с букв из указанного интервала, имеют тип, определенный именем оператора: INT – целый, SNG – вещественный одинарной точности, DBL - вещественный двойной точности, STR – символьный. Например: DEFSTR К, N ‘Массивы, имена которых начинаются с буквы K, L, M или DIM LETTER (20) ‘или N, содержат данные символьного типа. В программе для каждого массива необходимо задать имя, тип данных, размерность, размер. Для этого используется оператор описания массивов DIM (Dimansion). Формат записи оператора: DIM <имя1>(i1[,j1]), <имя2>(i2[,j2]), … где <имя1>, <имя2>, … - имена массивов; i1, j1, i2, j2, … - верхние границы индексов. В одном операторе DIM можно описать один и более массивов, перечисляются массивы через запятую. Оператор DIM можно записать в любом месте программы, но до первого обращения к элементам этого массива. Рекомендуется операторы описания массивов размещать в начале текста программы. Например: DIM А% (9), В (4,5), С$ (10) А% - одномерный массив из 10 целых чисел; В – двумерный массив из 30 вещественных чисел одинарной точности; С$ - символьный массив из 11 элементов. Выполняя оператор DIM, интерпретатор BASIC’a выделяет для объявленных массивов соответствующее количество ячеек памяти. Количество выделяемых ячеек памяти определяется размером массива и типом данных, так как для хранения значений определенного типа отводится фиксированное число байтов: для целых значений – 2 байта, для вещественных одинарной точности – 4 байта, для вещественных двойной точности – 8 байтов, для символьных – 1 байт. Элементы массива располагаются в памяти один за другим в последовательных ячейках. Оператор DIM только резервирует ячейки памяти под массивы. Заполняются ячейки конкретными значениями программно - путем перебора ячеек в цикле (см. Ввод/вывод массивов). При задании размеров массива необходимо помнить следующее: максимальный размер массива – 65535 байт, максимальный номер индекса – 32768. Примечание В QB4.5 можно использовать следующий формат записи оператора DIM: DIM <переменная> [<границы>] [AS<тип>] [, <переменная> [<границы>] AS<тип>]], где <границы> - это верхняя и нижняя границы индексов; As<тип> - тип элементов массива. Формат записи границ: [<меньшая> TO] большая [, [<меньшая> TO] большая] … Например: DIM PRIM (8,3) AS INTEGER или DIM PRIM% (0 TO 8, 0 TO 3) или DIM PRIM (8, 0 TO 3) AS INTEGER; DIM NAME$ (-4 TO 10). Возможные значения границ находятся в пределах от - 32768 до + 32767. Ввод/вывод массивов Ввод значений элементов массива можно выполнять с помощью операторов: - INPUT (в режиме диалога); - READ (из блока данных DATA); - LET (при наличии формулы или с использованием стандартной функции RND(x)) Примечание: каждый элемент массива можно рассматривать как переменную, имеющую имя массива и индекс; поэтому над каждым элементом массива допустимы те же действия, что и над переменными. Вывод значений элементов массива можно выполнять с помощью оператора PRINT. В программе процесс ввода/вывода массива реализуется с помощью цикла: для одномерного массива – простой цикл; для двумерного массива – вложенный цикл. Примечание: для двумерного массива можно использовать простой цикл, если вводить полностью отдельные строки или столбцы. Для двумерного массива процесс ввода/вывода может выполняться по строкам или по столбцам. При вводе/выводе по строкам в качестве параметра внешнего цикла используется переменная, определяющая номер строки, а в качестве параметра внутреннего цикла – переменная, определяющая номер столбца. При вводе/выводы по столбцам – наоборот. Формат оператора RND(x) для заполнения массива:
A – B – диапазон для выбора случайных чисел. Ввод/вывод одномерных массивов Рассмотрим пример формирования одномерного массива с использованием оператора INPUT: REM Ввод / вывод одномерного массива CLS ‘Очистка экрана DIM A%(9) ‘Определение одномерного массива FOR I = 0 TO 9 ‘Заполнение массива числами, INPUT A%(I) ‘вводимыми с клавиатуры NEXT I FOR I = 0 TO 9 ‘Вывод значений элементов массива на экран (столбиком). PRINT A%(I) ‘Для вывода значений элементов массива на экран в строку NEXT I ‘в операторе PRINT используется символ «;». END Рассмотрим пример формирования одномерного массива с использованием операторов DATA, READ: REM Ввод / вывод одномерного массива DATA 15,8,21,13,32,7,4,46,7,9 CLS ‘Очистка экрана DIM A%(9) ‘Определение одномерного массива FOR I = 0 TO 9 ‘Заполнение массива числами из оператора READ A%(I) ‘DATA и вывод значений элементов массива на PRINT A%(I); ‘экран (в строчку) NEXT I END Рассмотрим пример формирования одномерного массива с использованием функции генератора случайных чисел RND: REM Ввод / вывод одномерного массива CLS ‘Очистка экрана DIM A%(9) ‘Определение одномерного массива FOR I = 0 TO 9 ‘Заполнение массива случайными числами из LET A%(I) = INT(RND(1)*(90 - 10) + 10) ‘диапазона от 10 до90 и вывод значений PRINT A%(I); ‘элементов массива на экран (в строчку) NEXT I END Ввод/вывод двумерных массивов Рассмотрим пример формирования двумерного массива: REM Ввод / вывод двумерного массива CLS ‘Очистка экрана OPTION BASE 1 ‘Установка начального значения индексов PRINT “Введите количество строк и столбцов:” INPUT M,N DIM PRIM%(M,N) ‘Определение двумерного массива из M строк и ‘N столбцов FOR I = 1 TO M ‘Заполнение массива случайными числами из FOR J = 1 TO N ‘диапазона от 10 до90 и вывод значений LET PRIM%(I,J) = INT(RND(1)*(90 - 10) + 10) ‘элементов массива на экран (по строкам): PRINT PRIM%(I,J); ‘- вывод элементов одной строки NEXT J PRINT ‘- перевод курсора на новую строку FOR Q = 1 TO 100000: NEXT Q ‘организация задержки вывода (пустой цикл) NEXT I FOR J= 1 TO N ‘Вывод значений элементов исходного массива FOR I= 1 TO M ‘на экран (по столбикам) с использованием LOCATE I + M + 2, J*4 ‘оператора LOCATE PRINT PRIM%(I,J) NEXT I FOR Q = 1 TO 100000: NEXT Q ‘организация задержки вывода (пустой цикл) NEXT J END Решение задач на построение и преобразование массивов Задание 1 / 10б. Даны целые числа A1, A2, A3. Получить целочисленную матрицу Bij, для которой Bij = Ai - 3A j ; i,j = 1, 2, 3. Задание 2 / 10б. Даны целые числа A1, …, A5, B1, …, B7. Получить новую матрицу Cij, для которой Cij = Aj / (1 + |Bi| ), i = 1, 2, …, 7, j = 1, 2, …, 5. Задание 3 / 10б. Получить целочисленную матрицу Aij, для которой Aij = i + 2j; i = 1, 2, 3, 4, 5; j = 1, 2, 3, 4, 5, 6, 7. Задание 4 / 15б. Дана целочисленная квадратная матрица Aij размера n x n. Получить две новые квадратные матрицы Bij,Cij размера n x n, для которых Bij = Задание 5 / 20б. Получить действительную квадратную матрицу Aij порядка n x n (n <= 7), первая строка которой задается формулой A1j = 2j + 3, вторая строка задается формулой , а каждая следующая строка есть сумма двух предыдущих. Задание 6 / 20б. Дана целочисленная матрица размера m x n. Получить новую матрицу перестановкой столбцов исходной матрицы - первого с последним, второго с предпоследним и т.д. Задание 7 / 15б. Дана целочисленная матрица размера m x n. Получить новую матрицу перестановкой строк исходной матрицы - первой с последней, второй с предпоследней и т.д. Задание 8 / 20б. Дана целочисленная матрица размера m x n. Даны целые числа k, q (1 <= k <= m, 1 <= q <= m). Поменять местами строки с номерами k и q, сохранив порядок следования остальных строк Задание 9 / 15б. Даны действительные числа A1, …, An. Получить новую матрицу порядка n: A1 A2 A3 … An-2 An-1 An A2 A3 A4 … An-1 An A1 A3 A4 A5 … An A1 A2 …………………………………………………. An A1 A2 … An-3 An-2 An-1 Задание 10 / 5б. Построить квадратную матрицу порядка n: 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 Задание 11 / 5б. Построить квадратную матрицу порядка n: 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Задание 12 / 15б. Построить квадратную матрицу порядка n: 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 Задание 13 / 5б. Построить квадратную матрицу порядка n: 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 ……………………………………….. 0 0 0 0 0 n Задание 14 / 5б. Построить квадратную матрицу порядка n: 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 ……………………………………….. n 0 0 0 0 0 Абрамов, №№ 367, 368, 369, 371, 372, 676А, 676Б, 682, 688, 692Б, 692В, 692Е, 694А, 694Б. __________________________________________________________________________________ |
«Новосибирскийнациональный исследовательский государственный университет», Высшим колледжем информатики Университета, Институтом... | Автор: Латифов Абдулатиф Саидович К. п наук старший преподаватель кафедры «Вычислительной техники» дгту. Преподаватель информатики... | ||
Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор | Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной... | ||
Цель урока: систематизация и развитие знаний по использованию массивов в программах на Паскале | Автор-составитель: Л. П. Диденко, преподаватель кгаоу спо «Канский педагогический колледж» | ||
Лабораторная работа №6 (статические массивы, знакомство с графическим режимом. Возможно будет изменена) 49 | Составители: Е. П. Спиридонова методист колледжа, к э н., Л. В. Трушина преподаватель колледжа, Т. И. Ополоник, преподаватель колледжа,... | ||
Рецензенты: преподаватель математики и информатики высшей квалификационной категории фгоу спо «Омкпт» | При этом необходимо иметь в виду, что вопросы носят ориентировочный характер и в ходе зачета или экзамена преподаватель может ставить... |
Поиск Главная страница   Заполнение бланков   Бланки   Договоры   Документы    |