Образовательная галактика Intel®

Блог Участника

Запись блога

Да здравствуют массивы

Одними из важных тем школьного курса информатики являются темы, связанные с изучением массива - пронумерованной последовательности величин одинакового типа, обозначенной одним именем. Важность темы связана с ее прикладным характером. С массивами учащиеся встречаются, например, на уроках физики (температура воздуха в сентябре), химии (таблица Менделеева), математики (таблица умножения) и т.д. В практической деятельности в виде таблицы, например, может быть представлено расписание движения автобусов, расписание уроков, список подарков родственникам к Новому году и др.

Проблемы изучения массивов поднимались на Галактике. Выделялись разные аспекты. Обратим здесь внимание на содержательную формулировку таких задач и некоторые моменты при выборе метода решения.

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

При этом важно делать акцент на оптимальное решение задачи, которое, в частности, может быть основано на идее: получи решение за один просмотр массива. Суть идеи заключается в отказе от работы с несколькими командами повторения, как это практикуют некоторые педагоги и, соответственно, учащиеся, организуя цикл для ввода элементов массива и отдельный цикл для просмотра элементов. Совмещение таких действий в одном цикле оптимизирует алгоритм и более приближает его к реальной ситуации: в жизни мы стараемся действовать именно так в условиях цейтнота времени.
Кроме того, такие задачи носят игровой характер и могут решаться под девизами: "Получи быстрое решение", "Экономь время" и т.д.

Пример 1. Кто отсутствует?

В школу прибыла делегация иностранных гостей. После общих мероприятий должна состояться встреча гостей со школьниками. Гости пригласили на встречу по одному учащемуся из 1-го, 2-го, 3-го, ... 11-го классов. Дирекции это было сделать сложно, так как все учащиеся школы были достойны присутствия на подобной встрече. Всё же выбор был сделан. Участники встречи определены.
До начала встречи остаётся одна минута. Хозяева нервничают: вместо 11 школьников они видят только 10. Нужно оперативно выяснить, из какого класса не пришел ученик на встречу.
Напишите программу, которая запрашивает номер класса у каждого присутствующего ученика и затем выдаёт номер класса отсутствующего ученика.

Решение.
Дано: n[1:10] - номера классов прибывших на встречу учеников
Найти: k - номер класса отсутствующего ученика
При: все n[i] - различные натуральные числа от 1 до 11.

Метод: Если бы на встречу прибыли все учащиеся, то можно было бы весь коллектив из 11 школьников задать в виде одного числа - суммы номеров классов:
1 + 2 + 3 + ...+ 11 = 66.
Комментарий. Здесь интересно обсудить методы быстрого вычисления суммы; в данном случае лучше использовать попарное симметрическое суммирование первого и последнего числа, 2-го и предпоследнего и т.д.: (1+11)+(2+10)+(3+9)+(4+8)+(5+7)+6=12х5+6=66.

Если не придет один ученик (то есть в массиве 1, 2, 3, ..., 11 не окажется одного элемента), то номер класса можно найти путем вычитания суммы номеров классов пришедших учащихся из числа 66: k=66 - S, где S = n[1]+n[2]+...+n[10].



Здесь есть поле деятельности и для сильных учащихся: например, реализация условия "При" (проверка, что действительно не пришло более одного ученика из одного и того же класса), обобщение задачи, то есть переформулировка и решение не для 11-ти, а для m элементов массива.

Пример 2. Кто получит подарок?

Накануне Нового года в школу пришла посылка и письмо следующего содержания: "Это новогодний подарок ученику 5-го класса - первому по списку в классном журнале мальчику".
Напишите программу, которая вводит пол учеников и выводит номер ученика, который получит подарок.

Решение
Дано: n - количество учащихся, Pol[1:n] - пол ученика (m - мужской, f - женский).
Найти: k - номер ученика, который получит подарок.

Метод: Будем считать, что в классе есть хотя бы один мальчик (в этом случае количество учеников в классе можно не вводить).
Тогда будем просматривать каждую строчку в списке учеников в журнале до тех пор, пока не встретим первого мальчика.



Обсудите возможные риски, или поручите решение этой проблемы сильным учащимся. Далее рассмотрите вариант решения задачи, если посылка попала в женскую гимназию, где нет мальчиков. В последнем варианте уже следует вводить количество учеников в классе и, если пришлось просмотреть весь список, вывести сообщение, что "невозможно передать подарок по назначению".



Дальнейшая работа над программой:
- в посылке оказалось два подарка для первого по списку мальчика и первой по списку девочки;
- подарок (или подарки) предназначается для последнего по списку мальчика;
- для второго по списку мальчика;
- работа с фамилиями учащихся и т.д.

Задача 3. Числовая спираль

Роботу дано задание переместиться по спирали: вначале слева направо, а в каждой следующей строке изменять направление движения на противоположное, при этом помечать каждую позицию очередным натуральным числом.
Напишите программу с результатами выполненного роботом задания.



От учащихся требуется внимательное рассмотрение чисел в каждой строке таблицы и обнаружение двух различных формул для вывода чисел в четной и нечетной строках:



Дальнейшее развитие задачи: использование цвета при выводе чисел (случайный цвет для каждого числа; конкретный цвет для четных и нечетных строк); иной вид змейки (например, по столбцам или диагоналям); работа со случайными числами и т.д.

Многие идеи о задачах с массивами можно почерпнуть отсюда. Здесь материал структурирован, содержит примеры.
Вообще говоря, тема "Массивы" неисчерпаема, недаром известный математик Кнут, который написал несколько прекрасных книг об искусстве программирования, один из томов посвятил именно алгоритмам поиска и сортировки массивов.

Статьи о массивах на Галактике:
О. Мурина. Ассоциации: доступно о непонятном
А. Шугай. От серьёзности к игре.

Комментарии

Активный пользователь

  • Группа: Пользователи
  • Сообщений: 3472
  • Регистрация: 28.5.2012
  • Из: ул. Жукова, д. 44
  • Номер участника: 116309
Предупреждение

Нина Петровна, спасибо за материал. У меня в этом году как раз 9-й клаcc. Уже крутятся мысли как давать материал.
Читая ваши задачи, вспомнила над проблемой которая мне портит жизнь smile.gif После описания массива надо давать ввод и вывод элементов массива. На каких задачах это можно показать?


--------------------
Анна Шугай

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 674
  • Регистрация: 11.10.2012
  • Из: Беларусь, г. Гродно
  • Номер участника: 121159
Предупреждение

Цитата(Анна Шугай @ 17.9.2016, 17:09)
Нина Петровна, спасибо за материал. У меня в этом году как раз 9-й клаcc. Уже крутятся мысли как давать материал.
Читая ваши задачи, вспомнила над проблемой которая мне портит жизнь smile.gif После описания массива надо давать ввод и вывод элементов массива. На каких задачах это можно показать?

Анна Алексеевна, благодарю за внимание и вопрос. Действительно, он не простой. Лучше ввод показать на примерах из школьной жизни. Например, требуется в журнал выставить отметки по контрольной работе. Если ввести переменную, например, Р для этих целей, то можно поступить так:
а) если отметки известны: P[1]:=8; P[2]:=9; P[3]:=10; P[4]:=9;
б) если отметки неизвестны и их нужно вводить с клавиатуры: Readln(P[1]); Readln(P[2]);
Пишите-пишите и озабоченно спросите, мол у нас в классе 25 учеников; неужели мне нужно писать 25 операторов для этого? Выдержите паузу, дайте ученикам подумать, порассуждать, подведите к виду исполняемых действий (цикл), обсудите, что это будет цикл с параметром, напишите заголовок цикла, команду ввода и последнее, что останется - поговорить об индексной переменной.
Вывод аналогично. В журнале выставлены отметки по контрольной работе, к родительскому собранию нужно подготовить список отметок.

Сообщение отредактировал Нина Макарова - 18.9.2016, 3:16


--------------------
С наилучшими пожеланиями, Н. Макарова

Активный пользователь

  • Группа: Пользователи
  • Сообщений: 3472
  • Регистрация: 28.5.2012
  • Из: ул. Жукова, д. 44
  • Номер участника: 116309
Предупреждение

Цитата(Нина Макарова @ 17.9.2016, 19:48)
Цитата(Анна Шугай @ 17.9.2016, 17:09)
Нина Петровна, спасибо за материал. У меня в этом году как раз 9-й клаcc. Уже крутятся мысли как давать материал.
Читая ваши задачи, вспомнила над проблемой которая мне портит жизнь smile.gif После описания массива надо давать ввод и вывод элементов массива. На каких задачах это можно показать?

Анна Алексеевна, благодарю за внимание и вопрос. Действительно, он не простой. Лучше ввод показать на примерах из школьной жизни. Например, требуется в журнал выставить отметки по контрольной работе. Если ввести переменную, например, Р для этих целей, то можно поступить так:
а) если отметки известны: P[1]:=8; P[2]:=9; P[3]:=10; P[4]:=9;
б) если отметки неизвестны и их нужно вводить с клавиатуры: Readln(P[1]); Readln)P[2];
Пишите-пишите и озабоченно спросите, мол у нас в классе 25 учеников; неужели мне нужно писать 25 операторов для этого? Выдержите паузу, дайте ученикам подумать, порассуждать, подведите к виду исполняемых действий (цикл), обсудите, что это будет цикл с параметром, напишите заголовок цикла, команду ввода и последнее, что останется - поговорить об индексной переменной.
Вывод аналогично. В журнале выставлены отметки по контрольной работе, к родительскому собранию нужно подготовить список отметок.

Нина Петровна, спасибо. Я до этого не додумалась.


--------------------
Анна Шугай

Статьи по этой теме

« Июнь 2017 »
ВПВСЧПС
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Последние записи

Мои ссылки в блоге

Последние комментарии

Мое изображение

1 пользователей просматривает
1 гостей
0 участников
0 анонимных участников

Категории

Поиск в блоге


Наверх