Школа программиста: компьютерные игры изнутри

Разделы: Информатика, Внеклассная работа


Введение

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

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

Первая цель представляется самой главной.

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

Основной контингент моих учащиеся – это учащиеся 6–8-х классов, не имеющие специальной математической подготовки и в большинстве плохо владеющие или не владеющие навыками работы на компьютере. В этом случае стандартный для профильной школы путь изучения программирования: полное, систематическое и подробное ознакомление с языком программирования и типовыми (в основном вычислительными) алгоритмами невозможен – ввиду недостаточного знания математики и неразвитого логического мышления данной категории учащихся. Учащимся данного возраста нельзя также предлагать решение формализованных, математизированных задач, как это рекомендовано в [1] и [2]. Однако научить школьников среднего звена программировать, причем вполне самостоятельно, вполне возможно. Для этого выбран метод преподавания, заключающийся в программировании сперва простых, а потом и более сложных компьютерных игр. Собственно, эта идея не является новой, и впервые была опубликована в раритетной ныне (и очень популярной среди студентов в свое время) книге [7]. Школьникам среднего звена это наиболее интересно и понятно.

Методика преподавания курса

В качестве базового языка программирования выбран Turbo Pascal [4], как учебный язык, поддерживающий четкую логику и хороший стиль программирования. При этом обучение построено таким образом, чтобы учащиеся могли составлять свои программы с самого первого урока. Следует отметить, что вопреки распространенному мнению, что учащимся начального уровня не следует давать машинно-зависимую информацию (работа с цветом, звуком, случайными числами и иные библиотечные процедуры), данная информация очень их интересует и способствует развитию их творческой активности. Напротив, задания типа: перепишите программу с доски, заменяя одну формулу на другую, их не интересуют (заданий такого типа особенно много в пособии [3], ориентированном, на первый взгляд, именно на начальный уровень изучения программирования).

При составлении курса были использованы идеи книг [5] и [6], предназначенных для изучения языка программирования Бэйсик. Система задач основана на подборке игровых заданий, каждое из которых может быть изменено и дополнено самим учащимся. Более того, это предлагается делать уже на самом начальном этапе изучения программирования. Поэтому уже с первого занятия им рекомендуется сохранять результаты работы, которыми можно пользоваться в дальнейшем. Каждое задание является как бы «кирпичиком», прочно связанным с остальными. Итак, система задач составлена таким образом, чтобы (и эта цель явно декларируется) подвести учащихся к созданию собственной компьютерной игры.

Работа с группой начинается с фронтального объяснения теоретического материала, необходимого для решения последующих задач. Новые теоретические сведения, которые не будут актуализированы в ходе практической работы, приводить не нужно. Однако весь новый материал надо сразу связывать с предыдущим. Особое внимание при объяснении новых языковых конструкций следует уделять прагматике их использования, сразу показывая возможные отличия. «Вспомните задачу предыдущего занятия. Можно ли ее решить с помощью новой языковой конструкции? Будет ли это правильнее? Лучше? Эффективнее? Как в таком случае следовало бы изменить задачу?» Поскольку задачи каждый раз ставятся достаточно понятные, то ответы на вопросы обычно серьезных затруднений не вызывают.

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

Практическая работа выполняется за компьютером. При этом учащимся не всегда предлагается выполнить работу сразу наиболее эффективным способом. Им предлагается самим выявлять недостатки программы, и только когда они начинают задавать вопросы: «А можно ли сделать так, чтобы…» предлагается дополнительный материал. Ведение тетрадей обязательно и при изучении теоретической части, и во время практической работы.

Программа курса

  • Знакомство со средой программирования. Создание, редактирование, сохранение программы. Компиляция и выполнение.
  • Понятие программы. Стандартные процедуры вывода на экран. Стандартные процедуры модуля CRT (очистка экрана, задание цветов, позиционирование курсора).
  • Описание переменной. Стандартная процедура ввода. Ввод-вывод строк.
  • Целые числа и операции над ними. Оператор присваивания.
  • Вещественные числа и операции над ними. Форматирование вывода.
  • Условный оператор. Операции сравнения. Логические операции.
  • Оператор выбора.
  • Задание констант.
  • Оператор цикла со счетчиком.
  • Датчик случайных чисел и его инициализация.
  • Оператор неопределенного цикла с предусловием и постусловием.
  • Обработка нажатия клавиш.
  • Звук в программе. Задержка выполнения операторов.
  • Одномерные массивы и основные операции с ними. Сортировка. Строка как одномерный массив. Работа со строками. Двумерный массив.
  • Записи. Оператор присоединения.
  • Текстовые файлы.
  • Процедуры и функции. Правила видимости. Стандартные процедуры и функции. Понятие рекурсии.
  • Программирование графики. Имитация движения изображений.

Примеры задач.

1. Первая программа. Выведите, пожалуйста, на экран несколько сообщений (например «Hello!» «Привет!» и т. п.). Замените оператор WRITE на WRITELN. Что изменилось? Чем Вам не нравится то, что Вы видите на экране? Очистите экран. Задайте цвет надписи и фона. Разместите надписи по центру экрана.

2. Отработка вывода на экран. С помощью символа ‘*’ нарисуйте на экране треугольник (как показано на доске). Дорисуйте елочку. Повесьте на нее игрушки. Обратите внимание на цвет символов. Сделайте поздравительную надпись. Придумайте, нарисуйте на клетчатом листе бумаги и сделайте на компьютере свою открытку.

3. Ввод-вывод строк. Составьте программу, реализующую примерно такой диалог:

Привет! Как тебя зовут?

Маша

Очень приятно познакомиться, Маша.

А сколько тебе лет?

12

Мне тоже скоро будет 12 лет.

А что ты любишь есть на завтрак?

Пельмени

А я пельмени не люблю. Я люблю дискеты.

До встречи.

Обратите внимание на цвет сообщений. Как Вы думаете, что будет, если слово «пельмени» набрать с большой буквы?

4. Условный оператор. Посмотрите, пожалуйста, раздел «ПРИВЕТ» в программе «Роботландия». Как, по-Вашему, это было сделано. Напишите программу, которая задает несколько вопросов, а потом рассказывает собеседнику сказку. Почему понадобилось спрашивать собеседника о мальчиках-девочках? Обратите особое внимание на согласование вопросов и ответов, чтобы получился грамотный текст.

5. Логические операторы. Пишем новую сказку. Герой идет по лесу (полю, городу и т. п.) и видит придорожный камень, указатель, афишу), где указано, что случится с ним, если он продолжит путь в каждом направлении. Попросите героя выбрать. Что с ним случилось? Есть ли разница в том, идет герой «направо», «НАПРАВО» или «Направо»? Сделайте свои выводы.

6. Оператор выбора. Пишем калькулятор. Даны два числа и знак операции. Напечатайте результат. Как сделать запись привычнее для человека? Он не привык к символу операции деления, принятому в программировании. Что произойдет, если мы напишем 2 : 0? Зачем программисты пишут так называемую «защиту от дурака»? Как еще можно улучшить нашу программу? Можно ли было использовать в данной программе в качестве основного условный оператор? Почему мы это не сделали?

7. Датчик случайных чисел. Оператор определенного цикла. С помощью символа ‘*’ изобразите на экране «звездное небо». Количество звезд задается с клавиатуры. Вы сделали «защиту от дурака»? Цвет звезд задаем тоже случайным образом. Проверьте, совпало ли количество звезд с заданным? Почему их меньше? Исправьте фон неба на черный и измените соответствующим образом оператор задания цвета звезд.

Литература

1. Е. В. Андреева, И. Н. Фалина. Турбо-Паскаль в школе. – М.: изд-во МГУ, 1998.

2. В. Н. Пильщиков. Сборник упражнений по языку Паскаль. – М.: Наука, 1989.

3. Житкова, Кудрявцева. Бэйсик и Паскаль: от простого к сложному. – М: Просвещение, 1999.

4. В. В. Фаронов Программирование на персональных ЭВМ в среде ТУРБО-ПАСКАЛЬ»- М.: изд-во МГТУ, 1991.

5. Ж. Арсак Программирование игр и головоломок. М.: Мир, 1993.

6. Ч. Косневски. Занимательная математика и персональный компьютер. – М.: Мир, 1994.

7. Ч. Уэзэрелл. Этюды для программиста- М. Мир, 1987.