А всё же есть прикол в том, чтобы обсуждать логику в прогулках по Риму, а не по Урюпинску. Впрочем, тебы с ребёнком в Урюпинск на экскурсию не заманишь.
А я с ребенком на экскурсии в Элисте был: примерно те же тактико-технические данные, что и у Урюпинска. Но для обсуждения логики тогда чуть рановато было.
А зачем для раскраски доски использовать знания о четности и не четности?
Кончено я согласен что так решать легче, но можно и без этого обойтись. Для третьеклассника ИМХО более очевидно увидеть что каждая нижняя линия это верхняя смещенная на одну клетку, ну или от диагоналей от толкнутся...
Т.е. в лоб можно например так написать:
declare
i number default 1;
j number default 1;
k boolean default false;
n number default 4;
m number default 3;
begin
loop
exit when i > n;
i := i +1;
loop
exit when j > m;
j := j +1;
if k then
dbms_output.put('0');
else
dbms_output.put('#');
end if;
k := not k;
end loop;
k := false;
for t in 1..i-1
loop
k := not k;
end loop;
j := 1;
dbms_output.put_line('');
end loop;
end;
Во-первых, там робот ходит, а не в вывод пишется. Во-вторых, нет в курсе логических переменных. В-третьих, третьеклассник именно в терминах двух строчек всё и писал, и даже без индексов! А мне нужно, чтобы он учился программировать культурно....
Пройтись роботом или написать в вывод разницы особой нет. Отсутствие логических переменных легко обходится.
Собственно я комментарий написал к тому что для решения алгоритмической задачи математический бэкграунд не нужен, хотя и безусловно полезен. Насколько верно вводить дополнительные мат. знания (без которых можно обойтись) при изучение программирования особенно учитывая разницу между 3-й и 7-мым классом это вопрос спорный...
Кстати, а что в вашем понимании значит программировать культурно?
У меня тут случай особый: я иду по курсу для 7-го класса физматшколы, а у меня третьеклассник. Эта ситуация, увы, никем и никогда не была предусмотрена -- я тут первый, и спецкурса у меня для этого случая нет. Приходится подгонять другие курсы (прежде всего математики) под курс алгоритмики.
Программировать культурно -- это когда пишется самая короткая и понятная программа. Вот сравните: эти программы закрашивают шахматный прямоугольник, но одна использует только цикл "раз" (этот вариант предложил дитенка, но так и не смог отладить), а другая использует цикл "для" (предложил я), а третий вариант -- промежуточный (предложил дитенка, чтобы не повторять мой вариант):
---
использовать Робот
алг Главный алгоритм
нач
Нарисовать шахматную доску (5,11)
кон
------
алг Нарисовать шахматную доску (арг цел высота, арг цел длина)
дано высота > 0 и длина > 0
надо | Робот рисует прямоугольник размером "высота"x"длина"
| закрашенный в шахматном порядке
нач
нц int(высота/2) раз
нц int(длина/2) раз
закрасить
вправо
вправо
кц
если int(длина/2)*2<>длина то закрасить все
нц int(длина/2)*2 раз
влево
кц
вниз
нц int(длина/2) раз
вправо
закрасить
вправо
кц
нц int(длина/2)*2 раз
влево
кц
вниз
кц
если int(высота/2)*2<>высота то
нц int(длина/2) раз
закрасить
вправо
вправо
кц
если int(длина/2)*2<>длина то закрасить все
нц длина раз
влево
кц
все
кон
----
алг Нарисовать шахматную доску (арг цел высота, арг цел длина)
дано высота > 0 и длина > 0
надо | Робот рисует прямоугольник размером "высота"x"длина"
| закрашенный в шахматном порядке
нач
цел столбец, ряд
нц для ряд от 1 до высота
нц для столбец от 1 до длина
если (int(ряд/2)*2<>ряд и int(столбец/2)*2<>столбец) или (int(ряд/2)*2=ряд и int(столбец/2)*2=столбец)
то закрасить все
вправо
кц
нц длина раз
влево
кц
вниз
кц
кон
---------
алг Нарисовать шахматную доску (арг цел высота, арг цел длина)
дано высота > 0 и длина > 0
надо | Робот рисует прямоугольник размером "высота"x"длина"
| закрашенный в шахматном порядке
нач
цел столбец, ряд
нц для ряд от 1 до высота
если int(ряд/2)*2<>ряд
то
нц для столбец от 1 до длина
если int(столбец/2)*2<>столбец то закрасить все
вправо
кц
иначе
нц для столбец от 1 до длина
если int(столбец/2)*2=столбец то закрасить все
вправо
кц
все
нц длина раз
влево
кц
вниз
кц
кон
-------
И насчет булевых переменных: вот как раз сегодня вечером их и рассказал -- попалась первая задача с их использованием.