Автор: Пользователь скрыл имя, 18 Марта 2012 в 20:11, дипломная работа
В современных условиях общество ставит перед образованием новые задачи и выдвигает новые требования к подготовке выпускников школы. Способность ориентироваться в огромном потоке информации, осуществлять поиск и оперативно получать необходимые данные, с максимальным эффектом использовать сведения, полученные
1. Традиционные операции
над множествами: объединение,
пересечение, вычитание и
2. Специальные реляционные операции: выборка, проекция, соединение и деление.
Для этого учащимся предлагаются определенные, специальным образом подобранные задачи, которые им предстоит решить, используя какой-либо язык программирования (например, Turbo Pascal). Причем возможно решение задач на трех уровнях:
I уровень: задачи на 8 основных
операций реляционной алгебры
на двумерных числовых массивах
(при этом операции сильно
II уровень: задачи на
массивах из записей (
III уровень: объектно-
На каждом уровне обучения учащимся даются определения операций (в соответствии с принятыми упрощениями) и предлагается реализовать механизм их работы через систему задач. Решая подобные задачи в среде программирования, ученики на самом деле реализуют механизм работы операций реляционной алгебры. Такой подход позволяет не только получить качественный материал для отработки и закрепления навыков работы с основными алгоритмическими конструкциями, использования различных алгоритмов поиска и сортировки данных, но и сформировать у учащихся представление об основных понятиях и принципах работы в базах данных. А это значит, что в дальнейшем при работе с конкретными программами СУБД (например, Microsoft Access) ученики будут понимать, как работает та или иная операция и каким образом можно, например, оптимизировать запрос к определенной базе данных. В качестве примера приведем определения операций и возможные задачи по двумерным массивам. Введем следующие операции по обработке двумерных массивов.
1) Объединение двух двумерных массивов, имеющих одинаковое число столбцов, – это массив, содержащий совокупность всех строк исходных массивов. Результирующий массив имеет то же количество столбцов, но другое число строк (в общем случае). При этом следует учесть, что если в массивах есть одинаковая строка (строки), то в объединение массивов эта строка войдет один раз.
Например, пусть даны массив А, состоящий из трех столбцов и двух строк, и массив В, состоящий из трех столбцов и трех строк (рис. 1). Их объединением будет массив С.
2) Пересечение двух двумерных массивов, имеющих одинаковое число столбцов, – это массив, содержащий одинаковые строки исходных массивов. Частный случай пересечения – пустой массив (в случае отсутствия общих строк). В предыдущем примере пересечением массивов будет массив D.
3) Разность двух двумерных массивов, имеющих одинаковое число столбцов, – это массив, содержащий строки первого массива, отличные от строк второго массива. В частном случае разность массивов А и В может совпадать с массивом А (если массивы не имеют общих строк) или быть пустым массивом (если заданы два одинаковых массива). Например, разность рассмотренных выше массивов А и В будет представлена массивом Е.
Для реализации механизма объединения, пересечения и разности массивов учащимся можно предложить следующую задачу. Даны два двумерных массива размером п*т и l*т, заполненные целыми случайными числами. Сформировать новый массив, являющийся объединением (пересечением, разностью) исходных массивов.
Центральным моментом каждой из трех программ (для нахождения объединения, пересечения и разности) является проверка наличия одинаковых строк в исходных массивах. При решении этой задачи «в лоб» каждая строка одного массива сравнивается с каждой строкой другого массива, В результате программа получается достаточно простой. Однако временная сложность такого алгоритма порядка n4. Поэтому перед учащимися целесообразно поставить вопрос об оптимизации алгоритма с целью уменьшения временной сложности. Это будет своего рода экспериментальная работа над программой, суть которой – в модификации программы. Кроме того при нахождении пересечения нужно учесть возможность получения пустого массива, а при нахождении разности ученики должны обратить внимание на несимметричность этой операции (разность массивов А и В и разность массивов В и А в общем случае различны).
4) Декартово произведение двух двумерных массивов – это массив, содержащий все столбцы исходных массивов. В результирующем массиве выводится итог соединения по типу «каждый с каждым». Например, если даны массив А, состоящий из трех столбцов и двух строк, и массив В, состоящий из двух столбцов и трех строк, то их декартовым произведением будет массив С, состоящий из пяти столбцов и шести строк.
В общем случае, если заданы массивы размерностью [l..nl, l..ml] и [1..n2, 1..m2], то результирующий массив будет иметь размерность [l..nl*n2, l..ml + m2]. Прямое решение задачи очевидно: полный перебор по строкам массивов. Более интересны случаи сокращения перебора (здесь можно использовать известные методы: бинарный поиск, хеширование и т.д.), представляющие экспериментальную часть работы.
5) Выборка (селекция) – выбор подмножества строк массива по некоторому условию. Результирующий массив имеет то же количество столбцов, но другое количество строк. Эту операцию еще называют «горизонтальная выборка».
Иллюстрацией операции выборки
может служить решение
Основной момент при решении этих задач – грамотное оформление функции, проверяющей выполнение условия для строк исходного массива. Поиск наиболее оптимального алгоритма для этой функции может составлять экспериментальный раздел работы с программой.
6) Проекция («вертикальная выборка») – указание подмножества столбцов данного массива, участвующих в формировании нового массива. Результирующий массив имеет другое количество столбцов и, может быть, другое количество строк (исключаются одинаковые строки, которые могут появиться в результате проекции).
Для усвоения учащимися смысла операции проекции можно предложить такую задачу: дан двумерный массив размером n*m, заполненный целыми случайными числами. Сформировать новый массив, содержащий столбцы исходного массива с номерами kl, k2, k3. Алгоритм решения не вызывает сложностей, но особое внимание следует уделить исключению повторяющихся строк, которые могут появиться в результате проекции.
7) Соединение двух двумерных массивов, имеющих общий столбец, – это массив, который строится объединением всех столбцов исходных массивов для одинаковых значений общих столбцов.
Пример. Соединение массивов А и В в массив С осуществляется по общему столбцу, который является первым в массивах А и В.
Программная реализация соединения двух массивов может быть получена из решения задачи о декартовом произведении. Разница будет в том, что соединение идет не по типу «каждый с каждым», а по одинаковым значениям общих столбцов. Кроме того, если какое-то значение общего столбца в одном массиве отсутствует в общем столбце другого массива, то соответствующую строку результирующего массива нужно добавлять нулями. Эти условия нужно учесть при модификации программы.
8) Деление двух двумерных массивов – это массив, который строится вычитанием из множества столбцов первого массива множества столбцов второго массива, результирующие строки формируются для одинаковых значений общих столбцов. По сути дела, это процедура, обратная соединению массивов. То есть результатом деления массива С в предыдущем примере на массив В будет массив А. Поэтому и решение задачи на деление массивов будет основано на алгоритме соединения массивов. Сложность будет состоять в том, чтобы учесть как случай деления исходного массива на массив А, так и случай деления его на массив В.
Для усвоения рассмотренных операций учащимся может быть предложена следующая система задач.
1. Задачи на двумерные числовые массивы:
1) Даны два двумерных массива размером n*m и k*m, заполненные целыми случайными числами. Сформировать новый массив, содержащий совокупность всех строк исходных массивов (одинаковые строки не дублируются).
2) Даны три двумерных
массива размером n*m и k*m, заполненные
целыми случайными числами.
3) Даны три двумерных
массива, содержащие
4) Даны два массива,
содержащие информацию об
5) Даны два двумерных
массива размером n*m и k*m, заполненные
целыми случайными числами.
6) Даны три двумерных
массива размером n*m и k*m, заполненные
целыми случайными числами.
7) Даны два двумерных
массива размером n*m и k*m, заполненные
целыми случайными числами.
8) По условию предыдущей задачи сформировать еще один массив, содержащий строки второго массива, отличные от строк первого массива.
9) Даны два двумерных
массива размером n*m и к*1, заполненные
целыми случайными числами.
10) Даны два массива,
содержащие информацию об
11) Даны два массива, первый из которых содержит информацию об учениках 9а класса некоторой школы, а второй – об учениках 96 класса этой же школы. Каждый массив состоит из следующих столбцов: порядковый номер ученика, пол (1-мальчик, 0 – девочка), возраст. Сформировать новый массив, содержащий всевозможные пары «мальчик-девочка», которые образуют ученики данных классов, причем пару обязательно должны составлять ученики разных классов.
12) Даны два двумерных
массива, имеющие общий
13) Даны два двумерных
массива, имеющие общий
14) Дан двумерный массив
В и двумерный массив АВ, полученный
в результате соединения
Сформировать массив А путем вычитания из множества столбцов массива АВ множество столбцов массива В, причем результирующие строки формируются для одинаковых значений общих столбцов.
15) Дан двумерный массив
А и двумерный массив АВ, полученный
в результате соединения
2. Задачи на комбинированный тип данных (записи)
1) Дан массив, содержащий
информацию об учениках
· учатся в десятых классах;
· не имеют домашнего телефона;
· родились в один день;
· имеют одинаковые фамилии;
· живут на улице Ленина;
· учатся в одном классе;
· родились в 1985 году;
2) Багаж пассажира
· имеют более двух вещей;