Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Главная страничка занятий с 5-классниками   Предыдущее занятие   Следующее занятие

04 февраля 2008. Пятое занятие

До занятия

Мысли всколыхнулись присутствием того самого, многократно вспоминаемого сисадмина:

Нормальный компьютерный гений. В коих крайний, говорят, недостаток, и, мол, надо их на 9% больше.

Оно вроде и неплохо, но если присмотреться, тут получается логическая неувязочка:
С одной стороны, легенда в народе такая, что без гениев этих никак не обойтись и, значит, деньги давай.
А если заглянуть с другой -- всё запутали так, что без них не обойтись, как раз эти самые гении (как класс).

А еще умные люди вроде нашего консультанта Николая Вальтеровича говорят про "раковую опухоль избыточной сложности":

... Никлаус Вирт недавно побывал в новосибирском Академгородке по приглашению Института систем информатики им. А.П. Ершова СО РАН, в рамках поездки по Уралу и Сибири, организованной общественным проектом «Информатика21». В интервью «Эксперту-Сибирь» гуру информационных технологий рассказал о проблемах современного компьютерного сообщества. По его мнению, в ИТ-индустрии давно растет «раковая опухоль избыточной сложности». В сложившейся ситуации гораздо выгоднее продолжать добавлять к своим продуктам «свистульки с колокольчиками», на которые охотно «клюет» наивный пользователь, нежели стремиться к продуманному минималистичному дизайну, являющемуся фундаментальным залогом качества и надежности. Профессор Вирт давно является ярым противником подобной схемы, доказав в проекте Oberon (Н. Вирт и Ю. Гуткнехт, 1985–1992), насколько более эффективным может быть программирование, и насколько более надежными — программные системы по сравнению с тем, что принято в ИТ-индустрии. Основную вину за сложившуюся ситуацию он возлагает на систему образования, с безразличием принимающую то, что навязывает обществу ИТ-индустрия. ...

Цитата из этого интервью, 2005 г.: pdf, 360К. Прочесть надо бы всем учителям информатики.

Если кто все-таки не верит нашему консультанту, вот еще умная тетенька (Радя Перлман, изобретатель одного из важнейших алгоритмов для сетей, в том числе интернета) практически то же самое сказала в 2006 г., только по-немецки: "Alles ist viel zu kompliziert" = "Всё слишком (viel), слишком (zu) сложно." (страничка журнала с ее фото и словами в заголовке: jpg, 529К).

Короче, гениев этих компьютерных надо, если по-хорошему, числом помене (другие гении, что ли, не нужны?), но зато пороты они должны быть с детства по науке, а не абы как, как сейчас, а то так и будет расти "опухоль" и нас всех душить......

Ладно, будем героически продолжать преодолевать "инерцию системы образования", "с безразличием принимающую то, что навязывает обществу ИТ-индустрия".

Читать эти странички, сообщают, начали не только иногородние учителя в нарастающем количестве, но и некоторые родители участников. Это хорошо.

Занятие

Первым в пустой еще класс ворвался Тима (успев по пути сообщить, что какой-то информатикой без компьютеров он занимался и даже слышал про цикл) и тут же засел за свой комп:

Поэтому он и был первым, кого настиг злобный Трэп (по английски Trap -- "ловушка"; кстати, лучше перевести как Трап, ср. у Фенимора Купера "траппер" = охотник, ставящий ловушки на пушных зверей).
Вот обещанная с прошлого раза картинка, как это выглядит:

Сам Трэп -- переднее окошко, в нем вверху так и написано, ТРЭП 21 (нарушено предусловие). Рабочий документ -- правое окно, там внутри одна серость. О том, что делать в такой ситуации, уже рассказано в прошлый раз -- рецепт работает, немножко занудно, но не сложно. Поэтому пока не дергаемся, хотя занудство это надо, конечно, изничтожить -- просто легче будет заодно сделать еще несколько упрощений.

Про Трэп

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

Можно еще проследить, откуда была вызвана эта процедура, и т.п. -- но всё это пока слишком для нас сложно.

В данном случае сообщилось, что "нарушено предусловие". Это означает, что программист (из числа авторов Блэкбокса) проявил культуру и в начале процедуры поставил какую-то нужную проверку (оператор ASSERT; вещь краеугольная, должна быть изучена в надлежащее время). А когда процедура начала выполняться, проверка показала, что ожидаемые условия не соблюдены (это уже вина авторов Черепашки), и поэтому Блэкбокс прервал выполнение.
Блэкбокс очень строгий насчет всяких проверок. И не зря.

Из предыдущего трапа не видно, что виновница -- черепашка.
А вот тут зато это видно очень хорошо:

Красной стрелки на экране не было, ее пририсовал info21 уже на фотку. Стрелка указывает на имя модуля LabTasks -- Lab это как раз черепашка с роботами. В общем, черепашечья процедура вызвала некую процедуру в блэкбоксовском модуле TextViews (средний синий ромбик слева), а оттуда была вызвана еще другая процедура в блэкбоксовском модуле Ports (верхний синий ромбик слева), где и произошел облом -- в данном случае деление на нуль, о чем и сообщается в самом верху.

Но заморачиваться всем этим не нужно -- такие трэпы можно просто закрывать, как уже рассказано.

Единственная новость насчет Трэпа в том, что у Жени, у которой раньше не было Трэпов, вдруг они случились сразу огромным косяком -- штук двадцать окошек Трэп сразу! Но Женя просто хладнокровно их всех позакрывала (это удобней делать не мышкой, а нажимая Ctrl+W или Ctrl+F4 -- не надо каждый раз целиться мышкой в красный квадратик).


Опытный глаз подметил, что Трэпы имеют тенденцию выскакивать при манипуляциях с мышкой (только над черепашьими документами) -- дети любят ее непрерывно дергать. А это хороший повод научиться обходиться по возможности без нее -- все равно с клавиатуры удобней делать бОльшую часть действий редактирования.

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

Отмена последнего действия: Ctrl+Z (нажать кнопку Ctrl и, не отпуская, нажать Z).
Скопировать выделенный кусок текста в буфер обмена без удаления из текста -- Ctrl+C (С-латинская).
Скопировать выделенный кусок текста в буфер обмена с удалением из текста -- Ctrl+X (X-латинская, похожа на крест -- зачеркнуть).
Вставить кусок текста из буфера обмена туда, где курсор -- Ctrl+V (V похожа на галочку, которая указывает, мол, вставить).

Мизинец левой рукй должен сам сразу находить Ctrl.
NB Нужные тут латинские буквы Z,C,X,V стоят подряд с левого краю, близко от левого Ctrl -- это чтобы удобно было нажимать одной рукой. Потренироваться!

Открыть файл -- Ctrl+O (O-латинская, через меню Файл, Открыть).
Сохранить документ на диск -- Ctrl+S (то же, что через меню Файл, Сохранить -- кстати, в меню это указано).
Начать новый чистый документ -- Ctrl+N (через меню: Файл, Новый).
Закрыть окно -- Ctrl+W или Ctrl+F4.

Вот как ходить и выделять курсором:

Передвинуть курсор на одну букву влево-вправо или на одну строку вверх-вниз -- стрелочки.
Передвинуть курсор на одно слово влево-вправо -- Ctrl+стрелочка.
Встать в начало строчки: Home.
Встать в конец строчки: End.
Чтобы вслед за курсором выделялся текст -- нажать Shift и передвигать курсор -- это работает при любых передвижения курсора.

Левая рука должна быть наготове нажимать Shift -- правая нажимает стрелочки.

Что удобней делать мышкой?

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

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

Тыкать в разные кнопки.

Всё это пока осваивается стихийно, надо бы привести в систему.


Единого плана дальнейшего рисования не было -- украшали домик кто во что горазд.
Игорь сделал хитроумный переплет.
Марина -- как и ожидалось от девочки -- захотела цвет, причем желтый. Конечно,
info21 отказать не мог :-)

(Отмечаем, кстати, уверенное изготовление переплета -- все серединочки найдены.)

Вот команда, после которой черепашка начинает рисовать желтым:

	ВыбратьЦветПераКЗС( 255, 255, 0 );

Цвета смешиваются из Красного, Зеленого и Синего. Доля цвета задается целым числом -- от 0 до 255. Желтый цвет получается смешиванием красного и зеленого -- здесь мы их взяли по максимуму, по 255. Если поставить все нули, получится черный. Если все 100 -- серый.

Цветам и их смешиванию полезно посвятить теоретическое занятие.

Впрочем, Марина осталась недовольна эстетическим эффектом и отказалась от раскрашивания оконного переплета. А как же... подумал info21 :-)

Лиза взялась за строительство основательно -- и принялась медленно городить забор, усиленно помогая себе маханием рук и впадая в глубокую задумчивость -- семь раз отмерь:

На самом деле Лиза справлялась гораздо лучше, чем можно было подумать из ее лукавых жалоб, мол, ничего не получается. Три поворота на 60 градусов она исполнила вполне правильно в итоге, хотя и весьма не спеша.

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

Два узких окошка справа как раз устроены так, как рассказано выше. (Левое окошко -- справка про черепашку.)

Чаемое упрощение Черепашки должно, видимо, как-то способствовать такой схеме работы.


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

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

Тима явно созрел до вспомогательной процедуры Окно -- у него их шесть одинаковых штук. У Жени, кстати, их тоже два, плюс забор из одинаковых досок -- такой есть и у Лизы.

С Женей еще раньше попытались устроить процедуру квадрат с параметром (размер), но параметр вводить явно рано, можно и нужно для начала без параметров.

Забавно, что когда info21 посоветовал Жене процедуру назвать не квадрат полностью, а сокращенно -- кв, Женя аккуратно наставила точек (кв.) во всех трех местах -- два раза в начале-конце соответствующей процедуры, и еще раз в вызове. info21 настолько был не готов к этому, что, все это время наблюдая экран, не осознал, что делала Женя, пока Блэкбокс не стал ругаться черными квадратами. Точки, впрочем, они мелкие, не очень-то углядишь, а строгий Блэкбокс все равно не пропустит.

Женя и Лиза придумали делать забор -- ряд одинаковых досок. Но неожиданно было наблюдать, как Женя затруднилась сообразить, что можно повторно использовать уже готовый кусок программы, рисующий одну доску: она хотела продолжать рисование прямо с того места, где остановилась черепашка после первой доски -- а надо было сначала поставить черепашку в новую исходную позицию так, чтобы можно было просто скопировать последовательность команд для первой доски. С этой проблемой она пока не справилась (впрочем, возможно, сказывалась явная простуда).

Зато научилась уверенно итерировать доски Лиза -- у нее их на экране уже целых три видны справа от домика:

Вообще эта Лиза -- прямо-таки ходячая иллюстрация поговорок:

    Тише едешь -- дальше будешь.
   
Семь раз отмерь -- один отрежь.
   
Береженого бог бережет.

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


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

После занятия

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

Кстати, аналогичную жалобу насчет бумаг (только в гораздо более энергичных выражениях) info21 совсем недавно выслушивал от коллег-экспериментаторов: оборзевшие чиновники шлют 300-(трехсот!-)страничную электронную таблицу для заполнения отчета по гранту со словами, мол, у вас всех компьютеры же есть, вот и заполняйте.

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

Выводы

Занятия вошли в колею.
Без дозы теории насчет геометрии (хотя бы про углы) никак.
Раз черепашка не любит мышку, то это повод отучать детей всё-всё делать мышкой -- с клавиатуры работать все равно эффективней (см. выше).
Следующий шаг в плане программирования прямо-таки напрашивается такой: первые сведения насчет процедур, пока без параметров (Корпус, Крыша, Окно, Дверь, ДоскаЗабора): тут надо выяснить про позицию/состояние черепашки перед началом процедуры ("предусловие"), после окончания ("постусловие"), действия внутри (тело процедуры) -- и переходные действия между процедурами (постановка черепашки в нужную позицию).
А потом простейший цикл: шпарить, например, забор из 20 досок -- и переходить к другим красивым узорам можно.

Интересно посмотреть на школьный бюрократический документооборот -- как школьные бумаги ложатся на редактор Блэкбокса (там же мощный редактор).

Главная страничка занятий с 5-классниками   Предыдущее занятие   Следующее занятие

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе