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

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

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

Первые темы: Общее знакомство со средой, Основные правила оформления программ, Математические операции, ввод-вывод проходят как обычно.

И сразу переходим к графике.

и сочетаем графику и переменные

x:=300;

y:=200;

r:=20;

circle (x,y,r);

следующий этап:

Writeln (‘Введите координаты центра и радиус через пробел)’);

ReadLn (x,y,r);

Circle (x,y,r);

При такой последовательности можно исследовать особенности координатной сетки (0,0) в левом верхнем углу.

Затем переходим к следующим графическим примитивам.

Линия и прямоугольник.

Аналогично окружности сначала задаем координаты внутри программы, а затем переходим к вводу данных c клавиатуры.

Следующие задание построить домик по координатной сетке.

В начале процесса все операторы с конкретными цифрами.

Во время работы с рисунком обнаруживаем, что рисовать забор однообразное занятие.

На этом вопросе и переходим к изучению циклических конструкций.

Забываем о рисунке домика и занимаемся только забором.

сначала рисуем забор, состоящий из трех досок

line(100,50,110,100);

line(110,50,120,100);

line(120,50,130,100);

Затем переписываем это в общем виде:

x:=100;

y:=50;

line(x,y,x+10,y+50); // где изменения это ширина и высота одной доски

line(x+10,y,x+10+10,y+50);

line(x+10+10,y,x+10+10+10,y+50);

Обнаруживаем, что при построении координаты по x изменяются на 10 точек на каждой доске, а координаты по y не меняются.

Вот удобный случай подойти к записи выражения

x:=x+10;

чего не бывает в математике, но очень удобно в программировании.

То есть, мы изменяем значение координаты на 10 и это число становится текущим значением координаты в программе.

Оставляем на доске

x:=100;

y:=50;

line(x,y,x+10,y+50);

и добавляем

x:=x+10;

line(x,y,x+10,y+50);

x:=x+10;

line(x,y,x+10,y+50);

x:=x+10;

line(x,y,x+10,y+50);

получаем 4 доски и нет неуклюжей записи для изменяющихся координат.

но общая длина записи не устраивает

Переходим к изучению темы «Циклы с параметрами», Правила использования циклических конструкции

Вот пример простой программы.

x:=100;           // До цикла начальные значения переменных

y:=50;             //

For i:=1 to 10 do        // Сам цикл имеет счетчик повторений

begin                                      //

line(x,y,x+10,y+50);            //тело

x:=x+10;                               //цикла

end;                                         //

при этом на доске уже есть начальные значений координат,

описана линия и как изменятся координата.

И в это пространство вписываются операторы цикла.

Такую технологию записи циклических конструкций рекомендую использовать в дальнейшем.

Когда в программе можно применять циклы с параметрами?

  1. Однообразные действия повторяются несколько раз подряд.

Что нужно знать для использования циклических конструкций?

  1. какие переменные изменяются и по какому закону;
  2. начальные значения этих переменных;
  3. количество повторений этих действий.

Поработав с длиной забора и размером досок переходим к усложнению рисунка.

Делаем у каждой доски треугольный верх.

line(x,y,x+10,y+50);

line(x,y,x+5,y-5);

line(x+5,y-5,x+10,y);

вписываем дополнительные строки в циклическую конструкцию.

Аналогично можно экспериментировать с цветом забора.

При этом четко отслеживаются изменения одной переменной.

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

x:=10;  // До цикла начальные значения переменных

y:=10;             //

For i:=1 to 10 do        // Сам цикл имеет счетчик повторений

begin                                      //

line(x,y,x+10,y+10);            //тело

x:=x+10;                               //цикла

y:=y+10;

end;                                        //

Для желающих можете усложнить задание: получить изображение ступенек.

Для закрепления умений по построению изображения в координатной сетке поставьте задачу построить изображение точно по диагонали.

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

Вот этим можно воспользоваться.

И естественным путем перейти к анимации. Объясняем как возникает ощущение непрерывности движения.

То есть,

  1. показали картинку в течение короткого времени;
  2. стерли изображение
  3. нарисовали картинку в новом месте с небольшим смещением;
  4. вернулись в пункт 1

 

Для этого в знакомую программу добавляем

x:=10;

y:=10;

dx:=10;

dy:=10

For i:=1 to 10 do

begin

clrscr;

line(x,y,x+10,y+10);

x:=x+dx;

y:=y+dy;

delay (50);

end;

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

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

Этот же прием можно использовать при изучении вложенных циклов.

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

При этом останется один шаг до задачи олимпиадного уровня «Заполнение массива по спирали».

При этом закрепляем навыки работы с координатной сеткой.

Получив «движение» начинаем думать над усложнением. Первая задача в этом направлении: «Чтобы объект «отскакивал» от границ экрана».

К этой проблеме переходим после изучения алгоритма «выбора по условию».

В конце изучения темы «ветвления» вспоминаем «полет» объекта и пробуем решить проблемы выхода за границы экрана.

x:=x+dx;

y:=y+dy;

Проанализировав эти выражения решаем, что необходимо сделать так, что бы dx и dy изменялись при достижении края некоторой области

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

dx:=-dx;

и для получения некой линии (шаг к заставке «Геометрический вальс»)

Program z1;

Uses graphabc, crt;

Var c, x,y,z,a,b,dy,dx,da,db: integer;

Begin

x:=20; dx:=5;

y:=20; dy:=3;

a:=580; da:=-4;

b:=400; db:=-2;

for c:=1 to 10000 do

begin

clrscr;

line (x,y,a,b);

x:=x+dx; y:=y+dy; a:=a+da; b:=b+db;

if (x>580) or (x<20) then dx:=-dx;

if (a>580) or (a<20) then da:=-da;

if (y>400) or (y<20) then dy:=-dy;

if (b>400) or (b<20) then db:=-db;

delay (10);

end;

end.

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

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

line (600-x,400-y,600-a,400-b);

и мы получим две симметричные линии.

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


 

P.S. В процессе работы с графикой очень хорошо видна особенность восприятия детьми картинки на экране. Они рассматривают объекты на картинке как физические тела: «Отскакивают от края», «ударяются». С точки зрения профориентационной работы можно обращать внимание детей на то, что это пользователь видит некую картинку, а программист видит на экране строки цифр, слов, знаков, что требует для работы с ними большой усидчивости.

 

Занимательные задачи по информатике. Босова Л.Л., Босова А.Ю., Коломенская Ю.Г.
Занимательные задачи по информатике. Бо
Compressed Archive in ZIP Format 1.4 MB
Методика преподавания информатики. Лапчик М.П., Семакин И.Г., Хеннер Е.К.
Методика преподавания информатики. Лапч
Compressed Archive in ZIP Format 5.6 MB