Распознавание шаблонов делает вас более опытным программистом

Третий шаг в последовательном учебном подходе к изучению компьютерного программирования - это научиться читать шаблоны программ. Шаблон - это набор инструкций по программированию, которые представляют собой общий шаблон использования кода. Шаблоны позволяют перейти от обучения написанию кода к использованию программ для решения проблем. Чтобы стать опытным программистом, нужно научиться распознавать, когда следует использовать конкретный шаблон для решения проблемы.

Примеры шаблонов программирования

Первый пример шаблона - «Обмен переменной». Шаблон выглядит так:

  1. Вам даны две переменные со значениями.
  2. Введите временную переменную и присвойте ей значение первой переменной.
  3. Присвойте первой переменной значение второй переменной.
  4. Присвойте второй переменной значение временной переменной.

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

Другой пример шаблона - «Прочтите один, обработайте один». Шаблон определяется как:

  1. Получите значение от пользователя или из структуры данных.
  2. Выполните некоторые вычисления со значением.
  3. Возвращайтесь к шагу 1 до тех пор, пока не закончатся данные или пользователь не остановится.

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

Третий пример шаблона - «Макс / мин». Этот шаблон используется для поиска максимальных и / или минимальных значений набора данных. Шаблон выглядит так:

  1. Используйте операторы if для сравнения первого значения с другими значениями в наборе данных.
  2. Если есть оставшиеся значения для проверки, пропустите первое отмеченное значение и повторите шаг 1 для других значений.
  3. Условие else достигается, если нет других значений для сравнения.

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

Как практиковаться в чтении шаблонов кода

Студенты практикуются в чтении шаблонов кода, просматривая шаблоны и определяя, правильно ли они реализованы. Если шаблон не был реализован правильно, ученик должен уметь определить, был ли код написан неправильно, и исправить его, чтобы шаблон работал должным образом.

Вот пример неправильной программы подкачки переменных в Python:

number1 = 1
number2 = 2
temp = number1
number2 = number1
number1 = temp

Затем ученик выполняет трассировку переменных в программе и обнаруживает, что числа number1 и number2 имеют одинаковое значение - 1.

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

number1 = 1
number2 = 2
temp = number1
number1 = number2
number2 = temp

Вот пример из другого шаблона - обработка всех элементов массива, на этот раз написанного на C ++, и этот код тоже написан некорректно:

int grades[] = {81, 77, 75, 89, 78};
int total = 0;
for (int i = 0; i <= 5; i++) {
 total += grades[i];
}

Когда в этой программе выполняется трассировка переменной, включая извлечение массива, учащиеся видят, что цикл выходит за верхнюю границу массива и обращается к неинициализированным данным. Вот как выглядит след этого кода:

В C ++ это не ошибка, и значение total будет изменено любыми числовыми данными (я называю это ненужными данными), хранящимися в памяти в том месте, к которому программа пыталась получить доступ. Студенты должны иметь опыт чтения кода, чтобы понять, почему произошла эта ошибка.

Описание шаблонов программ на английском языке

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

Следующий код Python реализует шаблон обработки цифр, который разбивает число на составляющие его цифры:

Примерное описание этой программы:

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

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

Шаблоны программ - это фрагменты опыта

Исследователи в этой области уже давно обнаружили, что эксперты становятся экспертами, «разбивая» на части важные закономерности в своей области. Классический пример - чанки на доске, за которыми гроссмейстеры тратят часы. Изучая эти позиции снова и снова, шахматист сможет очень быстро вспомнить их при необходимости во время шахматного матча.

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

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

Первоначально опубликовано на https://thelearningprogrammer.com 21 февраля 2020 г.