- 3 и 2.
На лице Максима появилась снисходительная улыбка, Даша и Марк начали активно тянуть руки вверх, поднял руку и третий мальчик - Игорь.
- Головой подумай, как это может быть, - раздался голос со скамейки запасных, это не выдержал Катин папа.
- Извините, но при следующем вмешательстве родителей в учебный процесс их придётся удалить с поля, - сказал преподаватель, дал слово Даше, и получил ответ: 3 и 5.
- Правильно, а сейчас я изменю программу:
1 начало
2 X=3
3 Y=X-2
4 печать X,Y
5 конец
- Какие теперь два числа напечатает эта программа?
На этот раз руки подняли все, но ответить Витя снова попросил Катю.
- 3 и 1, - ответила девочка.
- Совершенно верно, снова изменяю программу:
1 начало
2 X=3
3 Y=X*2
4 печать X,Y
5 конец
- Тот же вопрос.
Трое из детей подняли руки сразу, немного замявшись, подняли их и Игорь с Катей.
- Ответь, Максим, - попросил Витя.
- Я думаю 6, знак * я не знаю, но это точно не деление, остаётся умножение или возведение в степень, умножение мне кажется более вероятным потому, что возведение в степень сложнее, чем умножение.
Преподаватель подтвердил правильность ответа и ещё раз изменил программу:
1 начало
2 X=0
3 X=X+1
4 печать X,X
5 конец
И задал тот же вопрос: Какие два числа напечатает эта программа?
Руки сразу подняли все, кроме Максима, немного подумав, руку поднял и он.
Витя предложил ответить Марку.
- 0 и 1, - ответил мальчик.
- Как считает Даша? - спросил преподаватель.
- 0 и 1, - последовал ответ.
- Кто ещё присоединяется к компании?
Присоединились все, кроме Максима, и Витя запросил его мнение.
- Сначала я решил, что здесь ошибка, потому что X не может быть равен X+1, но потом подумал, что вы не стали бы писать для нас программу с ошибкой, и сейчас считаю, напечатается 1 и 1, так как X не может быть одновременно равен нулю и единице.
- Правильно, это действительно не равенство. В программировании такую команду называют командой или оператором присваивания, выражение справа от знака "равно" вычисляется, и полученное значение присваивается переменной слева от знака "равно".
Витя снова изменил программу:
1 начало
2 X=0
3 X=X+1
4 печать X
5 X=X+1
6 печать X
7 конец
И снова задал тот же самый вопрос: Какие два числа напечатает эта программа?
И опять руки подняли все дети. Учитель дал слово Игорю и получил ответ две единицы. На Витино предложение присоединиться к компании, предчувствуя подвох, все школьники, кроме Максима, опустили руки.
- Ты хочешь ответить? - обратился к нему Витя.
- Да, напечатается 1 и 2, потому что печать происходит каждый раз после того, как X увеличился.
- Снова правильно, - поддержал школьника преподаватель. - Сколько придётся добавить команд, чтобы напечатать ещё и число 3?
- Ещё 2 команды, X=X+1 и печать X, ответил Максим, считая, что вопрос обращён к нему.
- Если писать программу таким способом, то сколько в ней будет всего команд для печати сотни чисел от 1 до 100? - задал очередной вопрос преподаватель.
Максим поднял руку сразу, через некоторое время Марк, потом Даша, потом остальные дети. Витя предложил ответить Кате.
- 100 команд, - ответила девочка. Катин папа не выдержал и покинул класс. Марк дал ответ 200, его поддержали все остальные, кроме Максима, который уточнил количество команд до 203, что и было точным ответом.
- Как вы считаете, хороша или плоха такая программа, в которой для печати 100 целых чисел по порядку требуется 203 команды? - прозвучал очередной вопрос преподавателя.
Единственным, кто немедленно поднял руку, оказался Максим: Я думаю, она плохая, нужно написать 203 строки программы, чтобы напечатать 100 целых чисел, а если нужно миллион чисел напечатать?
- Давайте, попробуем её улучшить, - предложил учитель.
1 начало
2 X=0
3 X=X+1
4 печать X
5 X=X+1
6 печать X
7 конец
- Что можно сказать о двух парах строк: 3 и 4, 5 и 6?
- Они одинаковые, кроме номеров самих строк, - общее мнение всех учеников, и уточнение Максима, - но результат печатают разный.
- Получается, что после 4-й команды вместо 5-й можно выполнять 3-ю? - вопрос преподавателя, ответ на который очевиден, что и подтвердило дружное "да".
- Как бы вы сформулировали такую команду? - на это последовало несколько предложений школьников со сходным смыслом. - Вернуться к 3-й команде, повторить 3-ю команду и т.п.
- Учитель поправил текст программы:
1 начало
2 X=0
3 X=X+1
4 печать X
5 идти к 3
6 конец
И задал очередной вопрос: Какие числа напечатает эта программа? - и попросил ответить Игоря.
- 1 и 2, - последовал ответ мальчика.
- Кто с ним согласен?
Согласились все, кроме Максима, который изложил своё мнение: Я думаю, что эта программа будет печатать числа до бесконечности потому, что команда номер 6 конец никогда не исполнится, после 5-й будет выполняться 3-я, и так без конца.
- Всё правильно, как бы ты сформулировал эту команду: идти к 3, чтобы программа, всё-таки напечатала ровно 100 чисел от 1 до 100? - задал учитель вопрос Максиму.
- Вернуться к 3-й строке 99 раз, или идти к 3 пока X<100, - недолго думая ответил школьник.
- Хорошо, программа будет выглядеть так:
1 начало
2 X=0
3 X=X+1
4 печать X
5 идти к 3 пока X<100
6 конец
- Что нужно изменить в этой программе, чтобы она печатала только чётные числа от 2 до 100?
Преподаватель дождался, пока руки подняли все пятеро, и попросил ответить Катю.
- Я думаю, во 2-й команде нужно вместо X=0 написать X=1.
- Кто с этим не согласен?
Не согласны оказались все остальные, и учитель предложил высказаться Марку.
- Нужно в 3-ей команде написать X=X+2, тогда к нулю прибавить 2 будет 2 и напечатается, потом к двум прибавить 2 будет 4 и напечатается и так далее.
- Верно, вношу изменение:
1 начало
2 X=0
3 X=X+2
4 печать X
5 идти к 3 пока X<100
6 конец
- Что нужно изменить в этой программе, чтобы она печатала только нечётные числа от 1 до 99?
Руку немедленно поднял Максим и, немного подумав, Даша, её Витя и попросил ответить.
- Нужно в 3-й команде написать X=X+3, ой, нет, неправильно, тогда напечатается 3, а потом 6, - поправила себя девочка. - Можно, я ещё подумаю?
- Конечно. Максим, ответь ты.
- Нужно во 2-й команде написать X=-1, а в 5-й заменить 100 на 99.
- Верно, а теперь более трудный вопрос: Как нужно изменить эту программу, чтобы она подсчитала и напечатала сумму нечётных чисел от 1 до 99?
1 начало
2 X=-1
3 X=X+2
4 печать X
5 идти к 3 пока X<99
6 конец
Здесь все дети погрузились в раздумья. Руку неожиданно поднял Игорь, и на кивок учителя спросил: Разрешается кроме икса ещё игрек использовать?
- Да, разрешается, - и Витя вопросительно посмотрел на школьника. Но продолжения не последовало, мальчик просто продолжил размышления, а через некоторое время ответить захотел Максим. С позволения преподавателя высказал необходимые по его мнению изменения в программе: Нужно добавить в начале ещё одну команду Y=0, вместо печать X написать Y=Y+X, и перед последней командой вставить печать Y.
1 начало
2 Y=0
3 X=-1
4 X=X+2
5 Y=Y+X
6 идти к 4 пока X<99
7 печать Y
8 конец
- Молодец, всё верно, - похвалил Витя школьника, ему уже некоторое время назад стал ясен расклад по результатам этого теста-обучения. - Сейчас я задам последний трудный вопрос, целый маленький рассказ. Представьте, что каждый из вас попал в тюрьму, чтобы освободиться, нужно за день решить кубическое уравнение x^3-7x^2+2x+3=0, в вашем распоряжении только тетрадь и ручка, больше ничего нет.
Первой руку подняла Даша: Нужно посмотреть в инфосети, как решаются такие уравнения, в школе мы это не проходили.
- Доступа в инфосеть у вас в тюрьме нет, как я уже сказал, нет ничего, кроме ручки и тетради.
- Даже телефона нет?
- Даже телефона.
Довольно длительное молчание прервала Катя: Как мы решим это уравнение, если не знаем, как они решаются?
- То есть ты готова отсидеть 10 лет в тюрьме, даже не пытаясь решить задачу?
Слово попросил Игорь: Я бы попытался решить, просто буду подставлять весь день разные числа вместо икса, вдруг получится.
- Достойные уважения действия, - одобрил Витя его слова.
Руку поднял Максим: Нужно в это выражение x^3-7x^2+2x+3 значения икса подставлять не как попало, а со смыслом. Допустим задали x=1, получилось -1, задали x=0, получилось +3, значит решение находится между 0 и 1, зададим 1,5, посмотрим, что получится плюс или минус число, по нему задаём следующее значение x, пока не получим 0.
- Ну, что ж, оба молодцы, примерно так и надо действовать.
Теперь Витя решил, что в группу будущих программистов нужно брать обоих этих мальчиков, и подумать, как быть с остальными, желающими обучаться детьми. В итоге, опросив ещё два десятка школьников, он набрал группу из 11 детей, с которыми, после совместного обсуждения с родителями расписания занятий, будет заниматься два раза в неделю по 2 часа.