Программирование нестандартных задач для школьников. О.Ф. Михеева
статья по информатике и икт (10 класс) на тему

Михеева Ольга Федоровна

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

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

 

Скачать:


Предварительный просмотр:

Программирование нестандартных задач для школьников.  О.Ф. Михеева

 

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

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

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

Задачей разработанного мной элективного курса  «Учимся программировать» для  учащихся 10 класса является углубление и расширение знаний по предмету «Информатика и ИКТ», входящему  в базовый учебный план школы.  Курс рассчитан на 34 учебных часа и имеет электронную поддержку в виде дистанционного курса в системе Moodle на школьном портале ДО.  Доступ к дистанционному курсу позволяет учащимся получать материалы как текущих уроков, так и пропущенных,  а также иметь возможность повторения пройденного материала. Обмен файлами через систему ДО позволяет учащимся продолжить дома работу над задачами, начатыми в классе, а учителю  - дистанционно контролировать правильность написания программ, давать рекомендации и оценивать работы.

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

В Приложении приведены примеры предлагаемых учащимся задач, а в Таблице 1  указаны используемые элементы, отрабатываемые навыки и возможное практическое применение каждой задачи.  Задачи условно разделены на 10 тем. Кратко остановимся на некоторых из них.

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

Использование генератора случайных чисел расширяет круг реализуемых алгоритмов, вносит элемент игры, а совместно с функциями модуля CRT позволяет создавать разноцветные символьные надписи и заставки. При решении подобных задач отрабатываются навыки работы с координатной плоскостью и реализация циклического алгоритма. Предлагаемые вычислительные задачи, связанные со школьным курсом геометрии (решение прямоугольных треугольников) и физики (задачи на движение), имеют своей целью повторение пройденного материала по другим предметам. Применение операций деления нацело (div, mod) открывает возможность решения алгебраических задач о делимости числа, разложении на множители, нахождении простых чисел,  а также способствует попутному повторению тем математики 6 класса. Работа со строками позволяет решать игровые задачи со словами,  а управление по коду клавиш дает подобие интерактивности, что является дополнительным моментом мотивации к овладению языка программирования.

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

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


Приложение

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

1. Знакомство с модулем CRT.

1.1 «Смена фона».  В цикле с параметром в пределах от 0 до 15 организовать последовательную окраску экрана всеми цветами палитры. Вывести на экран значение соответствующей константы цвета. Использовать задержку времени.

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

1.3 «Мир». На полном экране голубого цвета создать надпись «МИР», используя символьную графику, см. Рис 1. Надпись разместить приблизительно в центре экрана, используя оператор перехода в определенную точку экрана.

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

Рис 1.

 1.4  «Школа». На полном экране написать слово «ШКОЛА», используя символьную графику (*).
Цвет фона экрана и цвет шрифта вводится с клавиатуры.

1.5 «Окна». На белом фоне нарисовать 2 окна (в правом верхнем и левом нижнем углу экрана) размером (20 х 5) красного и синего цвета соответственно.

2. Ветвление

2.1 «Контрольный тест». Разработать программу для реализации контрольного теста (по информатике), состоящего из пяти вопросов с тремя вариантами ответа (в виде числа) с подсчетом количества правильных ответов и выставлением отметки по 5-ти балльной шкале. Диалог оформить в окнах. Результаты тестирования представить в виде: ФИО (строковая переменная), количество набранных баллов, оценка за тест, см. Блок-схему Рис.5 Приложения.

2.2 «Обучающий тест». Изменить текст программы для получения обучающего теста (по каждому вопросу возврат должен происходить до ввода правильного ответа) с подсчетом количества использованных попыток.

3. Случайные числа

3.1 «Звездочки». Создать экранную заставку из появляющихся на черном фоне в случайном месте разноцветных символов, например «*». Использовать задержку времени. Выход из цикла по нажатию любой клавиши.

4. Вычислительные задачи

4.1 «Сюжеты». Написать программу, которая по введенному с клавиатуры № реализует решение соответствующей геометрической задачи, см. Рис. 2. Оформить решение в цветном окне, условие задач вывести на экран.

1) Дан прямоугольный треугольник. Известны (вводятся с клавиатуры) длины катетов. Вычислить и вывести на печать: длину гипотенузы, площадь и периметр треугольника, тангенсы и синусы острых углов.

2) Дан прямоугольный равнобедренный треугольник с заданной гипотенузой (вводится с клавиатуры). Вычислить и вывести на печать:  длину катетов, площадь и периметр треугольника, тангенс  и синус углов при основании.

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

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

Рис. 2

5. Циклический алгоритм

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

5.2 «Светофор». Написать программу для моделирования работы светофора. В цикле до нажатия любой клавиши воспроизвести режимы: красный, красный + желтый, зеленый, желтый; использовать различную длительность, см. Рис 3.

Рис 3.

6. Операции с целыми числами div, mod

6.1 Количество бит (байт) вводится с клавиатуры. Получить  и вывести на печать целое количество байт (килобайт) и бит (байт).

6.2 Трехзначное число вводится с клавиатуры. Получить и вывести на печать число с обратным порядком цифр.

6.3 «Делимость». Написать программу, которая определяет по введенному 3-х значному целому числу, делится ли число на 2, на 3, на 4, на 5, на 9, на 10, на 11, на 25, на 100. Предусмотреть 2 варианта решения задачи: либо, используя непосредственную проверку, либо - признаки делимости, см. Блок-схему Рис.6. Приложения.

7. Работа со строками

7.1 «Демо». Написать программу, демонстрирующую использование операций со строками:

Операции со строками

сложение (конкатенация)

+

Concat

s1:=’школа’; s2:=’№’; s3:=’376’; s4:=’360’;

ss1:=s1+ ‘ ‘+s2+ s3;

ss2:= Concat(s1, ‘ ‘,s2, s4);
writeln(ss1, ‘ ‘,ss2);

копирование части строки

Copy

s1:= Copy(‘победа’, 3,4); writeln(s1);

(будет напечатано слово «беда»)

получение длины строки

Length

n:= Length(‘длинношеее’); writeln(n);

(будет напечатано число 10)

удаление части строки

Delete

st:=‘победа’; Delete(st,1,3); writeln(st);

(будет напечатано слово «еда»)

вставка подстроки

Insert

st:=‘Иванов’; Insert(‘- победитель’, st, 7); writeln(st); (будет напечатано «Иванов- победитель»)

поиск

Pos

s1:=’оловянный’; s2:=’серебряный’;

n1:= Pos(‘нн’, s1); n2:= Pos(‘нн’, s2);

writeln(n1, n2); (будет напечатано 6  0)

7.2 «Цепочки».

  1.  Ввести с клавиатуры строку с произвольным количеством символов, найти ее длину n; вывести на печать.
  2. Определить четное или нечетное количество букв в строке.
  3. Сосчитать сумму целых чисел  от 1 до n. Вывести полученную сумму на печать.
  4. Если полученная сумма больше 50, то уменьшить ее на 10, иначе прибавить 10. Вывести результат на печать.
  5. Поменять местами цифры предыдущего результата. Вывести на печать.

7.3 «ФИО». Дана строка, представляющая собой фамилию, имя и  отчество (вводятся через пробел). Получить строку с фамилией и инициалами.

8. Вложенные ветвления

8.1 «Анкета». См.  Блок-схема Рис. 7. Приложения.

8.2 «Мишень». Написать программу по следующему алгоритму. На соревнованиях по стрельбе спортсмен делает 5 выстрелов по мишени. Количество очков при попадании в области 1, 2, 3 и размеры областей приведены на рисунке. Координаты (х, у) точки попадания задаются с помощью генератора случайных чисел в промежутке от -1 до 11.

1. Вычислить и вывести на печать количество набранных очков при каждом выстреле и суммарное количество очков. Использовать вложенные полные ветвления if ….. then ….else ….

9. «Движение» объекта

9.1 «Падение снежинки». На синем фоне получить изображение снежинки в точке со случайными координатами. Снежинка должна «падать» по вертикали (с шагом 1) до достижения нижнего края экрана. Для исчезновения изображения в предыдущей точке вывести пробел.

9.2 «Управление». Небольшое окно или символьное изображение в окне  должно двигаться (с шагом 1) в пределах экрана по нажатию стрелок. Учесть ограничения на движение объекта, связанное с его габаритами  и размером основного окна, использовать коды стрелок, очистку изображения на предыдущем шаге.

10. Оператор выбора Case

10.1 «Времена года». Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года, а в случае ошибки ввода – следующее сообщение: «Номер месяца должен быть от 1 до 12».        

10.2 «Падеж». По введенному числу, обозначающему возраст человека (до 100 лет), получить текстовую запись в соответствии с правилами русского языка. Например, «Вам 45 лет» или «Вам 21 год». Решить общую задачу  о падежном окончании в зависимости от получившегося числительного, обозначающего количество чего-либо. Использовать процедуру.

11. Примеры задач для  зачетных проектов.        

11.1 Тренажер «Площади фигур». Создать тренажер для  повторения формул вычисления площадей плоских фигур (треугольник, параллелограмм, ромб, прямоугольник, трапеция, круг). Организовать следующий режим вычислений: 1) В диалоге выбирается фигура; 2) По заданным длинам элементов пользователем считается и вводится значение площади; 2) В случае ошибочного значения площади дается формула и предлагается вычислить заново (до получения правильного результата). 3) Работа тренажера продолжается выбором другой фигуры или завершается по нажатию определенной клавиши. Оформить задачу в окнах, вставить чертежи из файлов (модуль GraphABC).

11.2 «Сборник стихов». Организовать выборочное (по названию стихотворения) построчное воспроизведение стихов, записанных в текстовом файле, или краткой биографии поэта; вставить портрет из файла (модуль GraphABC). Оформить задачу в окнах

11.3 «Лабиринты». 1) Разработать программу для визуального построения лабиринтов (используются коды клавиш), сохранения информации о построенном лабиринте в виде числовых массивов, содержащих значения 0 (свободная клетка) или 1 (стенка лабиринта) в текстовом файле –  режим I (построение).

2) Организовать прохождение лабиринтов, созданных при работе в режиме I, загруженных в виде массивов из файлов, преобразованных в числовые данные и прорисованных на основании информации, хранящейся в массиве. Использовать коды клавиш и ограничение на изменение координат, связанное «наличием» стенки (1 в массиве) – режим II (прохождение).


Таблица 1.

Тема

Задача

Используемые элементы, отрабатываемые навыки

Применение

1. Знакомство с модулем CRT.

1.1 «Смена фона»

Очистка экрана цветом фона, задержка времени, цикл с параметром.

Демонстрация цветов палитры. Установление соответствия цвета палитры константе цвета.

1.2 «Радуга»

Задание цвета шрифта.

Визуализация цветов спектра.

1.3, «МИР»,
1.4 «ШКОЛА»

Ввод №№ цветов фона и шрифта с клавиатуры, расчет рисунка по клеточкам.

Получение надписей и рисунков с использованием символьной графики.

1.5 «Окна»

Получение цветного окна в заданном месте экрана, пересчет координат точек на плоскости.

Оформление диалогов в окнах.

2. Ветвление

2.1 «Контрольный тест»

Условный оператор, операторные скобки, счетчик правильных ответов, использование строковой переменной для ввода/вывода ФИО участника тестирования.

Реализация компьютерных тестов.

2.2 «Обучающий тест»

 Цикл с постусловием, условный оператор, счетчик попыток.

3. Случайные числа

3.1 «Звездочки».

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

Программирование символьных заставок.

4. Вычислительные задачи

4.1 «Сюжеты»

Ветвление,  использование встроенных функций, форматный вывод.

Решение задач по геометрии.

5. Циклический алгоритм

5.1 «Отгадай число».

Случайные числа, ветвление, цикл с предусловием, счетчик попыток.

Апробация выигрышной стратегии. 

5.2 «Светофор».

Циклический алгоритм, работа с окнами. 

Создание моделей.

6. Операции с целыми числами div, mod

6.1 «Пересчет»

Деление нацело и остаток от деления.

Перевод из одних единиц измерения в другие.

6.2 «Цифры»

Получение цифр числа.

6.3 «Делимость».

Ветвление, деление нацело, признаки делимости. 

Повторение алгебры чисел.

7. Работа со строками

7.1 «Демо».

Процедуры и функции работы со строками.

Демонстрация возможностей операций со строками.

7.2 «Цепочки».

Длина строки, цикл, сумма членов арифметической прогрессии, ветвление

Повторение изученных приемов программирования.

7.3 «ФИО». 

Поиск символа, копирование подстроки, удаление, конкатенация строк.

Работа с текстом, поиск и замена текстовых фрагментов.

8. Вложенные ветвления

8.1 «Анкета».

Ветвление, работа по блок-схеме, использование функций дата/время.

Составление опросных листов.

8.2 «Мишень».

Генератор случайных чисел, ветвление (полная форма), работа с числовыми диапазонами на плоскости, счетчики, цикл с параметром.

Задачи о попадании в область.

9. «Движение» объекта

9.1 «Падение снежинки».

Случайные числа, цикл с переменными границами, задержка времени.

Имитация движения объекта.

9.2 «Управление».

Циклический алгоритм, коды нажатой клавиши, пересчет координат на плоскости, перерисовка рисунка, задержка времени.

10. Оператор выбора Case

10.1 «Времена года».

Использование оператора ветвления на несколько направлений

10.2 «Падеж».

Остаток от деления нацело, сложные условия, процедура.

Получение окончаний существительных в операторах вывода.

11. Примеры задач для  зачетных проектов.

11.1 Тренажер «Площади фигур»

Работа с окнами, цикл, вложенные  ветвления, вставка рисунка из файла (модуль   GraphABC).

Создание тренажеров для повторения формул.

11.2 «Сборник стихов»

Цикл, ветвление, оформление в окнах,  массивы строк, чтение фрагментов текста из файла в выбранном пользователем порядке.

Выборочное представление текстовой информации, хранящейся в файле.

11.3 «Лабиринты»

Массивы, ветвление,   управление по коду клавиши, запись и чтение из текстового файла, преобразование текстовых данных в числовые, работа в окнах.

Создание игр (лабиринтов, «ходилок»).



        



По теме: методические разработки, презентации и конспекты

Нестандартные задачи как средство обучения, воспитания и развития школьников

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

ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТОВ ТЕОРИИ МНОЖЕСТВ ПРИ РЕШЕНИИ НЕСТАНДАРТНЫХ ЗАДАЧ КАК ОДНО ИЗ СРЕДСТВ РАЗВИТИЯ ЛОГИЧЕСКОГО МЫШЛЕНИЯ ШКОЛЬНИКОВ

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

Подготовка школьников к олимпиадам по программированию: решение задач на полный перебор

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

"Нестандартные задачи как способ формирования приемов умственной деятельности у школьников 1-2 классов с трудностями в обучении"

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

Нестандартные задачи программирования

Дополнительная общеобразовательная программа «Нестандартные задачи программирования» по своему функциональному предназначению направлена на тренировку и отработку навыка программного (путё...

ВЫСТУПЛЕНИЕ СЕМИНАР Формирования критического мышления школьников на уроках математики посредством решения нестандартных задач

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