Быть или не быть. — страница 22 из 52

- 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 часа.