|
Массивы и как с ними "бороться"Успешное решение задач по программированию при сдаче вступительных экзаменов в вузы, при сдаче ЕГЭ по информатике практически невозможно без уверенной работы с массивами. Для этого необходимо понимать условие задачи, уметь “читать” текст программы, содержащей работу с массивами, технически грамотно выполнять действия над элементами массива и, конечно, в идеале — знать основные, базовые алгоритмы над массивами. Наш опыт преподавания программирования в школе показывает, что как только школьники знакомятся с массивами, их интерес к программированию возрастает. Но задачи на обработку массивов не просты и алгоритмически, и технически. У школьников должна быть достаточно большая практика работы с массивами для того, чтобы они могли решать задачи, предлагаемые в ЕГЭ и на вступительных экзаменах по информатике в вузы. А для этого они в первую очередь должны уверенно оперировать с такими понятиями, как “индекс массива”, “элемент массива”, “значение элемента массива”. К сожалению, на уроках информатики мы всегда ограничены временными рамками, зачастую мы не можем предоставить школьникам достаточно времени для выполнения “технических” задач. Цейтнот времени мы пытаемся преодолеть, совмещая интересные задачи с точки зрения построения алгоритма решения с одновременным приобретением технических навыков. Такой прием хорош для сильных школьников, а в классах у нас есть ребята разного уровня подготовленности и мотивированности. Для ускоренного приобретения школьниками технических навыков работы с массивами мы проводим на уроках непродолжительные по времени самостоятельные работы. Мы предлагаем вам две самостоятельные работы на языке Pascal, которые позволяют закрепить технические навыки работы с массивами. Самостоятельная работа “Индекс и значение элемента массива”Цель работы — проверить, насколько учащиеся различают понятия “индекс элемента” и “значение элемента”, умеют выполнять простейшие действия с элементами массивов. Работа представлена в четырех вариантах одинакового уровня сложности и рассчитана на 30 минут. Вариант 11. Дано описание массива mas: array [-2..8] of integer. Сколько элементов содержит данный массив? 2. Дано описание массива: const m = const1; n = const2; Напишите оператор присваивания, который в элемент массива, находящийся ровно в центре массива (при нечетном количестве элементов), заносит значение суммы двух соседних элементов. 3. Для массива из задания 2 напишите фрагмент программы, который выводит на экран значения всех элементов с четными индексами. Вариант 21. Дано описание массива mas: array [-10..10] of integer. Сколько элементов содержит данный массив? 2. Дано описание массива: const m = const1; n = const2; Напишите оператор присваивания, который в элемент, находящийся ровно в центре массива (при нечетном количестве элементов), заносит значение суммы крайних элементов массива. 3. Для массива из задания 2 напишите фрагмент программы, который вычисляет сумму элементов с нечетными значениями. Вариант 31. Дано описание массива mas: array [-6..2] of integer. Сколько элементов содержит данный массив? 2. Дано описание массива: const m = const1; n = const2; Напишите оператор присваивания, который в элемент массива, находящийся ровно в центре массива (при нечетном количестве элементов), заносит значение произведения двух соседних элементов. 3. Для массива из задания 2 напишите фрагмент программы, который выводит на экран значения всех элементов с нечетными индексами. Вариант 41. Дано описание массива mas: array [-22..0] of integer. Сколько элементов содержит данный массив? 2. Дано описание массива: const m = const1; n = const2; Напишите оператор присваивания, который в элемент массива, находящийся ровно в центре массива (при нечетном количестве элементов), заносит значение модуля разности крайних элементов массива. 3. Для массива из задания 2 напишите фрагмент программы, который обнуляет значения отрицательных элементов с четными индексами. Решение самостоятельной работы “Индекс и значение элемента массива”Вариант 11. 11 элементов. 2. Определяем номер центрального элемента массива: r := (n + m) div 2, тогда mas[r] := mas[r — 1] + mas[r + 1] 3. for i := m to n do Вариант 21. 21 элемент. 2. Определяем номер центрального элемента массива: r := (n + m) div 2, тогда mas[r] := mas[m] + mas[n] 3. s := 0; Можно предложить другой способ решения этой задачи: с использованием процедуры odd: if odd(mas[i]) then s := s + mas[i]; Вариант 31. 9 элементов. 2. Определяем номер центрального элемента массива: r := (n + m) div 2, тогдаmas[r] := mas[r — 1] * mas[r + 1] 3. for i := m to n do Вариант 41. 23 элемента. 2. Определяем номер центрального элемента массива: r := (n + m) div 2, тогдаmas[r] := abs (mas[m] — mas[n]) 3. for i := m to n do В процессе обучения школьников программированию важно обращать их внимание на осознанный выбор типа данных, который будет использоваться при решении конкретной задачи. Часто возникает такая ситуация: как только школьники освоили работу с массивом, они пытаются использовать этот тип данных при решении всех задач, даже тогда, когда это не является необходимостью. Самостоятельная работа “Выбор типа данных”Предлагаемая самостоятельная работа своей целью ставит проверить:
Под эффективной программой мы понимаем такую программу, которая при решении использует минимальную память и решает поставленную задачу за приемлемое (минимальное) время. Самостоятельная работа представлена в 14 вариантах одинакового уровня сложности и рассчитана на 20–30 минут. Рекомендуется раздавать задание ученикам в напечатанном виде на отдельных листах. В этой работе описание и задание начальных значений массива выполнено через описание массива с помощью типизированных констант. Если ваши учащиеся не знакомы с таким заданием массива, то следует исправить условия задач (описать массив в блоке описания переменных и указать, с какими начальными значениями массива программа начинает работать). Вариант 11. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, вычисляющую факториал числа n. Вариант 21. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, вычисляющую x в степени n, где n — любое целое число. Вариант 31. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, вычисляющую
сумму ряда Вариант 41. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, выводящую на экран первые n членов геометрической прогрессии с начальным членом b и знаменателем q (q > 0). Вариант 51. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, выводящую на экран первые n членов арифметической прогрессии с начальным членом a и шагом d. Вариант 61. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, вычисляющую среднее арифметическое введенных n чисел. Вариант 71. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая находит максимальное число из введенных n чисел. Вариант 81. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая находит минимальное число из введенных n чисел. Вариант 91. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая выведет номер последнего введенного нуля в последовательности из n чисел. Вариант 101. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая в последовательности из n чисел выведет номер первой введенной единицы. Вариант 111. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая выведет на экран произведение n введенных чисел. Вариант 121. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая выведет на экран сумму первых n членов гармонического ряда (1/1 + + 1/2 + 1/3 + … + 1/n). Вариант 131. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая выведет разность максимального и минимального из n введенных чисел. Вариант 141. Определите, что делает следующая программа и какой результат она выдаст на заданном массиве: const n = 5; 2. Напишите программу, которая выведет на экран количество четных чисел в последовательности из n чисел. Решение самостоятельной работы “Выбор типа данных”Обратите внимание, что во вторых заданиях всех вариантов для решения задачи нецелесообразно использовать массивы. В группах углубленного изучения информатики (программирования) за использование массивов при решении этих задач рекомендуется снижать оценку. Вариант 11. Реализован алгоритм нахождения значения минимального элемента массива. На заданном массиве на экран будет выведено значение –1. 2. var i, n: integer; f: longint; Вариант 21. Реализован алгоритм нахождения значения максимального элемента массива. На заданном массиве на экран будет выведено значение 10. 2. var x, n, i: integer; pow: real; Вариант 31. Реализован алгоритм нахождения
индекса максимального элемента в массиве. При
наличии несколь- 2. var n, i, sum: integer; Вариант 41. Реализован алгоритм нахождения
индекса мини- 2. var n, i, b, q, geom: integer; Вариант 51. Реализован алгоритм замены минимального из обработанных чисел на предыдущее минимальное значение. На массиве {5, –8, –10, 7, 14} будут произведены две замены: –8 на 5 и –10 на –8. Результат работы программы: _ _ 5 _ _ 5 _ –8 _ _ 7 _ 14 (пробелы для наглядности обозначены символом “_”). 2. var n, i, a, d, arifm: integer; Вариант 61. Реализован алгоритм замены максимального из обработанных чисел на предыдущее максимальное число. В массиве {1, 5, 2, –8, 14} будут произведены две замены: 5 на 1 и 14 на 5. Результат работы программы: _ _ 1 _ _ 1 _ _ 2 _ –8 _14 (пробелы для наглядности обозначены символом “_”). 2. var n, i, a, sum: integer; mean: real; Вариант 71. Реализован алгоритм суммирования всех элементов массива. На экран будет выведено число 15. 2. var n, i, a: integer; max: integer; Вариант 81. Реализован алгоритм, в котором каждому i-му элементу массива присваивается сумма первых i элементов массива. На экран будет выведено: _–1_ _1_ _ 6 _ 10 _ 11 (пробелы для наглядности обозначены символом “_”). 2. Текст программы отличается от предыдущего варианта только условием в условном операторе (if min > a then min := a). Вариант 91. Реализован алгоритм, в котором
каждому i-му элементу массива присваивается
произведение первых i элементов массива. На экран
будет выведено: 2. var n, i, a, last: integer; Вариант 101. Реализован алгоритм подсчета количества элементов, значение которых равно их индексу. На экран будет выведено число 1. 2. var n, i, a: integer; Вариант 111. Реализован алгоритм подсчета неположительных элементов в массиве: на экран будет выведено число 3. 2. var n, i, a, mult: integer; Вариант 121. Реализован алгоритм подсчета положительных элементов в массиве: на экран будет выведено число 2. 2. var n, i, a: integer; garm: real; Вариант 131. Реализован алгоритм, в котором каждый элемент массива, совпадающий со своим индексом, удваивается. Ответ: _ _2 _ –9 _ _ 6 _ 98 _ _ 6 (пробелы для наглядности обозначены символом “_”). 2. var n, i, a, max, min: integer; Вариант 141. Реализован алгоритм умножения на –1 каждого элемента массива, стоящего на четном месте. На экран будет выведено: _ _ 4 –15 _ _ 9 _ –8 –78 (пробелы для наглядности обозначены символом “_”). 2. var n, a, count: integer;
Т.. С.. Богомолова ;
|