русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Арифметические исполнители


Дата добавления: 2013-12-23; просмотров: 2882; Нарушение авторских прав


Схема знакомства с исполнителем

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

§ Название (имя) исполнителя

§ Среда, в которой работает исполнитель. Для исполнителя Машинист — это компьютерный экран с изображенными на нем вагонами, железнодорожными путями и стрелкой. Если же речь идет о машинисте настоящего маневрового тепловоза, то здесь средой становится сортировочная горка на железнодорожной станции с целой системой стрелок, настоящий тепловоз с радиоаппаратурой для передачи команд и т. п. Описывая среду, важно не обрисовывать второстепенные, иллюстрационные детали, а подчеркнуть, что среда — это условия окружающей обстановки, необходимые и достаточные для выполнения команд из СКИ

§ Как задаются команды? В инсценировке задачи о машинисте автор алгоритма задает команды голосом (задание команды дублируется ее записью на доске); в компьютерном варианте задачи команды набираются на клавиатуре заглавными буквами.

§ Как выполняются команды? Ответ на такой вопрос во многом определяется средой. Возвращаясь вновь к игре с «живыми вагонами», констатируем, что выполнение команды ВПЕРЕД — это перемещение «состава» (группы детей) по «рельсам» (нарисованным на полу линиям). На экране выполнение команды означает перемещение нарисованного состава справа налево — движение до стрелки или от стрелки до вагонов в тупике (или до тупика).

§ Когда возникает сообщение «НЕ МОГУ»? Для каждой команды ситуация, в которой порождается это сообщение, определяется по-разному. Так, исполнитель не может выполнить команду ПРИЦЕПИ, если к локомотиву уже прицеплены все три вагона. В исходном состоянии нельзя дать исполнителю команду НАЗАД, поскольку он стоит в тупике, из которого можно двинуться только вперед. Одно из возможных изображений схемы знакомства с исполнителем:



Структура общей схемы знакомства введена с опорой на пример исполнителя Машинист. Сейчас уместно проследить по предложенной схеме свойства уже известных, ранее использованных на уроках исполнителей, начиная с исполнителей-учеников, выступавших в первых инсценировках, и кончая простым исполнителем Перевозчик: учитель предлагает вызванным ученикам рассказать о том или ином исполнителе, строго следуя схеме, которая находится (сейчас и на нескольких последующих уроках) в центре внимания класса. Не в каждом исполнителе одинаково отчетливо выражены все элементы схемы знакомства. Поэтому после рассмотрения Перевозчика надо провести подобное обсуждение и с другими знакомыми исполнителями. Вот пример — исполнитель Конюх. После достаточно простого описания среды учитель просит назвать все команды, которые понимает и умеет выполнять исполнитель по имени Конюх. Ответ — список команд, осуществляющих правильные перемещения коня на маленькой (3 х 3) клетчатой доске. Таких команд — 16 (число полей, с которых возможны ходы коней на такой доске, — 8; с каждого поля допускаются два возможных хода):

Подходящий тест на понимание:

— Какое сообщение выдаст Конюх в ответ на команду а1-b2? Конечно, ответ легко найти, попытавшись выполнить эту команду на компьютере. Возникает сообщение «Не понимаю» (хотя априорно часть школьников могла бы предположить сообщение «Не могу»: ведь выполняя такую команду, исполнитель должен нарушить принятые правила: конь не может ходить на соседнее поле по диагонали). Важен не столько правильный ответ, сколько его разумное объяснение: команды а1-b2 нет в СКИ Конюха.

Интересен в этом отношении исполнитель Мудрый Крот, который не выдает ни одно из аварийных сообщений. Действительно, Крот запрограммирован так, что он может перемещаться лишь в свободном пространстве или вдоль стенок, но не может проходить сквозь стену. Поэтому, когда, например, справа от Крота — стена, то его «молчаливый» отказ двигаться вправо и следует воспринимать как сообщение «Не могу». Так же обстоит дело с сообщением «Не понимаю»: программа не реагирует на нажатия клавиш, отличающихся от управляющих стрелок. И хотя при нажатии, например, на клавишу BS нет ожидаемой реакции «Не понимаю», тем не менее, именно так следует воспринимать отказ исполнителя выполнить команду: исполнителю задана команда, не входящая в СКИ, т. е. непонятная ему, он молча демонстрирует это непонимание, не выполняя команду. Таким образом, даже в «экзотических» ситуациях, подобных Мудрому Кроту, схема знакомства с исполнителем сохраняет свою методическую универсальную значимость.

Особенности Мудрого Крота (или какого-нибудь другого, наугад выбранного исполнителя), кажущиеся отклонениями от общей схемы знакомства, нельзя оставлять на уровне «экзотики». Далеко не у каждого исполнителя (особенно у исполнителей вне Роботландии) существуют аварийные сообщения «Не могу» и «Не понимаю» в буквально совпадающих «редакциях». Выражения «Не могу» и «Не понимаю» должны восприниматься как ярлыки, как названия двух определенных классов в классификации сообщений исполнителя. Важно не название класса, а существо ситуаций, отнесенных к этому классу. Таким образом, представление об исполнителе создается тогда, когда известно, как реагирует исполнитель, если он попадает в класс ситуаций, называемых «Не могу». В классе таких ситуаций Крот не двигается в ответ на нажатие управляющей стрелки. Его «непослушание» и есть реакция «Не могу». Значение среды в общей схеме знакомства очень важно. Однако во всех рассмотренных примерах — от инсценировок в классе до программных моделей учащиеся не ощущают непосредственно этой важной роли среды. Для того чтобы продемонстрировать среду исполнителя как определяющий компонент схемы общего знакомства с исполнителем, полезно показать школьникам две разные задачи (два разных исполнителя) с совпадающими системами команд. В качестве первой такой задачи можно использовать Машиниста, которому посвящено несколько уроков. После завершения этой серии уроков учитель вводит детей в иную операционную обстановку, иную среду, где все действия совершаются на рельсах, но в совершенно других условиях (не реализованных на компьютере).

В качестве второй задачи (с системой команд, совпадающей со СКИ роботландского Машиниста) можно взять задачу, описанную в давней (1988 года) книге «Роботландия» (Переславль-Залесский, АН СССР, Институт программных систем). Фрагмент задачи приводится ниже. «... По пятницам у Пети Кука хорошее настроение: в этот день по расписанию — его любимая информатика. После привычного начала — проверки домашних заданий, обзора газетных новостей о применениях компьютеров — начинается основная часть урока. Сегодня речь пойдет о новых алгоритмических задачах и новом исполнителе. Учитель начинает с необычного вопроса: — Кто из вас помнит фильм про неуловимых мстителей? — Я! Я! Конечно, помним! — Во фильм! У него еще и продолжение есть! Учитель улыбается, но все же мягко прерывает этот поток восклицаний своим рассказом, пока «воспоминания» не достигли уровня воинственных звукоподражаний «Бах! Бабах! Бум! Тра-та-та-та!» — У юных бойцов было много героических дел. Так много, что они не вместились в знаменитый фильм «Неуловимые мстители». И даже в его продолжение. Сегодня я расскажу вам об одном незнакомом вам боевом эпизоде из их жизни. Класс затаил дыхание. Что же дальше? — Haш бронепоезд двигался к линии фронта. И его очень ждали на боевых позициях: и пушки, и снаряды, а, главное, свежее подкрепление — два взвода молодых бойцов — были так нужны красному полку, уставшему от долгих боев. Путь бронепоезда был нелегок. По окрестным лесам шныряли белогвардейские банды. Их можно было ждать на любом полустанке. Командир, пристально вглядывавшийся вперед, решительно махнул рукой машинисту: «Тормози!». Из-за поворота показалась четверка неуловимых. Еще с рассвета они отправились в разведку, и вот сейчас на своих горячих конях мчались навстречу бронепоезду. — Засада! — доложил запыхавшийся Цыган, осадив коня рядом с командиром. — Большой отряд беляков. С пушками. Даже с танком. Могут взорвать путь. Вперед нельзя! Командир срочно собрал штаб в тесной артиллерийской башне. Солнечный луч через амбразуру ложился на карту фронта. — Боевое задание нельзя не выполнить. Но силы не равны. Надо идти в обход. — В обход-то можно, — угрюмо сказал машинист бронепоезда. — Да ведь на этом одноколейном пути до ближайшей станции — 20 километров. Задним ходом до нее долго двигаться. — Зачем задним? — воскликнула Оксана. В боевой красно-армейской форме ее нельзя было отличить от мальчишки. — Ведь рядом, всего в полукилометре, есть тупик, где можно развернуться. Командир хорошо знал эти места. Он здесь вырос, пахал землю, здесь и воевал. Подумав, он скорее спокойно, нежели сурово, отказался от восторженной идеи Оксаны: - Нет! Не получится! Это совсем маленький тупичок. В него можно загнать только один вагон или только локомотив. А ведь у нас кроме паровоза еще три вагона.». Не прерывая рассказ, учитель рисует план тупика (рис. 3.1):

Рис. 3.1 Исходное состояние задачи о бронепоезде

«Собравшиеся вокруг стола молчали, видимо, согласившись с мнением опытного командира. Вдруг Валерка, самый сообразительный из «неуловимых», вскочил со стула: — Еще как получится! Вот смотрите! И, схватив несколько спичечных коробков, которые должны были изображать вагоны, начал объяснять алгоритм разворота». В этом месте учитель возвращает класс из героической эпопеи гражданской войны к сиюминутным событиям: — Ваша задача, ребята, состоит в том, чтобы восстановить ход рассуждений Валерки. Вы должны описать одно за другим те действия, которые предстоит выполнить машинисту бронепоезда, чтобы развернуться в маленьком тупике одноколейного пути. Напоминаю условия задачи:

1) в состав бронепоезда входят три вагона и локомотив, исходное состояние которых показано на предыдущем рисунке.

2) в тунике можно разместить либо только один вагон, либо только паровоз без вагонов;

3) паровоз может тянуть вагоны за собой и толкать их впереди себя, но в конце разворота он должен находиться в голове состава, направленного в обратную сторону:

Рис. 3.2. Конечное состояние задачи о бронепоезде

4) при маневрировании можно отцеплять и прицеплять вагоны (соединение или разъединение одного вагона — это отдельное действие алгоритма). Итак, за работу. Напишите в тетрадях ваши алгоритмы. Класс работает сосредоточенно. Ведь сейчас в их руках судьба бронепоезда! Думают, пишут, снова думают... Важно отметить, что у этого нового исполнителя точно та же СКИ, что у исследованного уже Машиниста:

 

ВПЕРЕД

НАЗАД

ПРИЦЕПИ

ОТЦЕПИ

СТРЕЛКА

Однако трактовка команд (ответ на вопрос «КАК ВЫПОЛНЯЮТСЯ» в схеме знакомства) совсем иная:

— ВПЕРЕД: движение вперед

· либо до ближайшей закрытой стрелки,

· либо до тупика,

· либо до стоящих на пути вагонов,

· либо за стрелку на основном пути (если стрелки открыты);

— НАЗАД: (аналогично) движение назад либо до ближайшей закрытой стрелки, либо до тупика,

· либо до стоящих на пути вагонов,

· либо за стрелку на основном пути (если стрелки открыты);

— ОТЦЕПИ: отсоединение от состава одного (дальнего от локомотива) вагона;

— ПРИЦЕПИ: соединение с одним (ближайшим к составу) вагоном;

— СТРЕЛКА (команда выполняется только для одной из стрелок, ближайшей к составу).

Рассмотрение этой задачи завершается выводом (уже звучавшим, но еще раз наглядно продемонстрированным): решение зависит от среды и, соответственно, от правил выполнения команд. Урок, включающий подробное обсуждение общей схемы знакомства, продолжает исполнитель Квадратик. Его простота может показаться удивительной: ведь к этому времени дети уже поработали с целой серией существенно более сложных программ. Однако простота Квадратика имеет свое методическое обоснование: учитель ничего не рассказывает о Квадратике (кроме имени). Задача учащихся состоит в том, что они должны самостоятельно научиться работать с этим исполнителем. Такая задача часто встречается в повседневной жизни, когда надо освоить бытовой прибор, техническая документация которого отсутствует. Учитель сразу же дает только что предъявленному новому дидактическому инструменту — плакату-слайду «Общая схема знакомства с исполнителем» — педагогическую нагрузку: по этому плакату школьники должны рассказать о Квадратике. Учитель следит за тем, чтобы дети точно следовали пунктам этой схемы.

1. Новый исполнитель называется Квадратик. Назван он так потому, что с его помощью можно рисовать некоторые простые фигуры и среди них — квадрат.

2. Среда Квадратика — рисованная модель экрана.

3. СКИ составлена из пяти команд:

КВАДРАТ (KB)

ТРЕУГОЛЬНИК (ТР)

ОКРУЖНОСТЬ (ОК)

ЗАКРАСКА (ЗА)

ОЧИСТКА (ОЧ)

Команды этому исполнителю надо задавать, набирая их на клавиатуре заглавными русскими буквами (для упрощения в начальном состоянии программы установлен, по умолчанию, регистр заглавных русских букв). В связи с двойным способом задания команд Квадратика уместно отвлечься для обсуждения методического механизма постепенного сокращения синтаксических конструкций. Сущность этого метода состоит в том, что при первой встрече с тем или иным объектом, он (объект) по требованиям используемого языка записывается длинной синтаксической конструкцией. Конструкция эта, тем не менее, несет отчетливое семантическое наполнение. Работая с такой конструкцией, школьник легко усваивает изучаемое понятие, теряя, правда, темп за счет набора длинных слов на клавиатуре. С усвоением понятия можно использовать его сокращенные формы, которые, возможно, менее выразительны с точки зрения содержания понятия, но существенно ускоряют клавиатурные операции. Так, в Робике — одном из первых учебных языков программирования, ориентированных на младших школьников (Г. А. Звенигородский, «Первые шаги программирования», М.: Наука, 1986), команда присваивания сначала вводилась в своей полной форме:

ЗНАЧЕНИЕ [ИМЕНИ] <имя-1> ПРИСВОИТЬ ИМЕНИ <имя-2>

в которой раскрывалось содержание сложной, но фундаментальной команды присваивания; затем разрешалось опускать некоторые ключевые слова; получалась команда типа

ЗНАЧЕНИЕ АЛЬФА ПРИСВОИТЬ ИМЕНИ БЕТА

Потом оказывалось возможным не писать и слово ЗНАЧЕНИЕ:

АЛЬФА ПРИСВОИТЬ БЕТА

Наконец, вершиной фрагмента темы, посвященной присваиванию, становилось введение условного обозначения, которое заменяло собой ключевое слово ПРИСВОИТЬ:

АЛЬФА -> БЕТА

Школьники, прочувствовав в предшествовавших многочисленных трудоемких упражнениях смысл операции присваивания, встречали этот символ с пониманием и удовлетворением. Вернувшись теперь к исполнителю Квадратик, можно сказать: как ни трудно школьнику набирать длинные слова ТРЕУГОЛЬНИК и ОКРУЖНОСТЬ, следует настоять на том, чтобы в первом упражнении использовались полные варианты команд. С этой целью учитель (пока!) не говорит детям, что означают выделенные цветом первые две буквы в слове-команде. А вот при повторных упражнениях учащиеся узнают, что вместо длинной команды можно использовать ее двухбуквенную сокращенную форму и, как правило, принимают такую рекомендацию с удовольствием.

Если следовать схеме знакомства с исполнителем, то неисследованными остались пункты «Как выполняются команды» и «В каких ситуациях возникает сообщение Не могу». Важно, чтобы эта часть работы была проведена детьми полностью самостоятельно.

Арифметические исполнители представляют собой методически эффективный раздел обширной темы «Исполнители» в курсе раннего обучения информатике. Арифметические операции выполняются командами, которые, с одной стороны, строго формализованы и не требуют дополнительных комментирующих обсуждений, а с другой стороны, хорошо знакомы учащимся начальной школы по урокам математики. Чтобы опереться на априорные знания младших школьников, в качестве множества значений операндов в арифметических операциях программных исполнителей используются только целые положительные числа. С этим ограничением связаны аварийные сообщения «Не могу» у тех исполнителей, которые допускают операции вычитания и деления (хотя, разумеется, ориентируя такого рода исполнителей на старших школьников, программисту, реализующему такой исполнитель, не составило бы труда предусмотреть отрицательные и дробные результаты арифметических операций).

Простейшим из программных исполнителей, представляющим этот класс программ в Роботландии, можно назвать Автомат. Он использует всего только две арифметические операции, более того, два очень частных случая сложения и умножения: сложение (счетчика) только с единицей и умножение (счетчика) только на 2. Задачи этого исполнителя формулируются так: для любого заданного целого числа построить последовательность команд из СКИ Автомата, которая исходное нулевое состояние счетчика преобразует в заданное число. На таком множестве задач естественно выбрать задачу на оптимизацию: получить результат с помощью минимального количества команд. В последовательности команд только самая первая команда очевидна: она должны быть сложением, поскольку умножение не меняет нулевое состояние счетчика. Порядок следования остальных команд может быть, вообще говоря, любым. Однако получение заданного результата 13 путем тринадцати прибавлений единицы — это, несомненно, не лучшее решение. Желание поскорее добраться до результата подсказывает детям идею из последовательности умножений (удвоений). Но почти всегда (кроме случаев, когда заданое число представляет собою степень двойки) такой алгоритм не приводит к решению. Возникает задача об оптимальном чередовании команд, приводящих к заданному результату. Решая ее, учитель сначала записывает результат, например, 13 и спрашивает: «Какой из двух команд исполнителя Автомат можно получить это число?» Ответ:

ПРИБАВИТЬ

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

12 ПРИБАВИТЬ

учитель задает тот же вопрос. Теперь ответ на него звучит иначе: « I 2 получается командой УМНОЖИТЬ, так как в противном случае число было бы нечетным». Этот ответ отмечается записью, располагаемой выше предыдущей:

6 УМНОЖИТЬ

Проводя подобные рассуждения до тех пор, пока не будет достигнут нуль (исходное состояние счетчика), получают последовательность команд:

0 ПРИБАВИТЬ

1 УМНОЖИТЬ

2 ПРИБАВИТЬ

3 УМНОЖИТЬ

6 УМНОЖИТЬ

12 ПРИБАВИТЬ

которая и является описанием искомого алгоритма. Легко видеть, что этот алгоритм, по построению, оптимальный и единственный. В таком построении (повторенном несколькими упражнениями в классе и домашними заданиями) важна технологическая деталь: команды алгоритма создаются и записываются «задом наперед», в порядке, обратном их предстоящему выполнению. Первая из сформированных команд будет выполняться последней и, наоборот, последняя из записанных команд выполняется первой. Сформулированный порядок формирования и выполнения алгоритма прямо повторяет правило стека — «последний пришедший обслуживается первым». Таким образом, хотя у исполнителя Автомат нет своего стека, тем не менее, школьник, работающий с Автоматом, формирует стек на листочке бумаги: записанная первой на листочек команда выполняется последней, а последняя записанная — первой. Такая «стековая структура» команд демонстрирует, что в стек могут укладываться не только данные, но и команды. Именно так, в стеке, хранят свои команды многие из современных вычислительных машин — от простейших калькуляторов до гигантских суперкомпьютеров.

ПРИБАВИТЬ
УМНОЖИТЬ
ПРИБАВИТЬ
УМНОЖИТЬ
УМНОЖИТЬ
ПРИБАВИТЬ

Таким образом, исполнитель Автомат активно подготавливает школьника к понятию стека. Это, безусловно, задача пропедевтическая, поскольку при последующем изучении информатики школьники встретятся не раз и со стеком структур данных, и со стеком управляющих структур. На том уроке, где представляется Автомат, слово «стек» еще не произносится: хотя уже известны и Монах, и Машинист, и Автомат, все же стек как самостоятельный объект изучения появляется только у Плюсика. Исполнитель Плюсик — одна из замечательных точек курса раннего обучения информатике, в которой пересекаются информационная и компьютерная линии курса. В информационной линии Плюсик является активной иллюстрацией информационных процессов — хранения, передачи и обработки информации. В компьютерной линии исполнитель Плюсик представлен как модель процессора. В предшествующих разделах курса моделирующие качества программных исполнителей уже обсуждались (Переливашка, Машинист). Однако в школьном кабинете информатики учащемуся гораздо ближе компьютер, чем абстрактная Переливашка или динамичный, но весьма ограниченный в своих возможностях Машинист. Поэтому учителю так важно показать детям исполнитель Плюсик как модель компьютера: здесь они увидят и «процессор», обрабатывающий информацию, и запоминающее устройство, представленное стеком.

Центральным понятием уроков, посвященных Плюсику, остается, конечно, стек. В исполнителе Машинист он существовал как некоторый вспомогательный объект. Сейчас на нем фокусируется внимание. Как всегда, организуя «предмашинную» часть урока, учитель показывает, как стековый механизм памяти реализуется в стопке книг, на детской пирамидке, в мензурке, наполненной покрашенными шариками для настольного тенниса. Во всех этих примерах-демонстрациях дети знакомятся с новыми понятиями — верхушка стека, глубина стека. В компьютере стек очень удобен тем, что адрес операнда всякой операции определяется однозначно — это верхушка стека. Чтобы выполнить, например, команду СЛОЖИ, надо сначала взять из верхушки стека один из операндов. Конечно, в операции сложения безразлично, какой из операндов второй, а который — первый. Но формальный исполнитель Плюсик даже в этом случае поступает по реализованному в нем алгоритму: в верхушке стека располагается «второй» операнд операции. Когда слагаемое из верхушки стека взято, то, тем самым, место в верхушке освобождается, и его сразу же занимает следующий элемент стека, который является первым слагаемым операции. Взятое из верхушки стека число попадает на один из двух входов устройства, непосредственно выполняющего операцию. Это и есть арифметическое устройство процессора. Затем из стека (вновь из верхушки) извлекается следующее число, которое в нашей операции является первым операндом. Это число попадает на другой вход арифметического устройства. Устройство выполняет сложение введенных таким образом чисел, а получившийся на выходе результат отправляется обратно в стек и занимает место опять в верхушке стека. В результате выполнения арифметической операции глубина стека уменьшается на единицу: вместо двух взятых чисел-операндов в верхушке стало одно число-результат.

В начале работы исполнителя стек пуст. Чтобы его заполнить, нужна команда, имеющая формат ЗАПОМНИТЬ <число>. В результате ее выполнения число, задаваемое в команде, попадает в верхушку стека, а глубина стека увеличивается на единицу. Можно поэкспериментировать с этой командой, вводя в стек несколько чисел подряд. Цель эксперимента — определить, в какой ситуации команда ЗАПОМНИ порождает сообщение «Не могу». Далее, демонстрируется выполнение коммутативных операций сложения и умножения. Ставя вычислительные опыты с исполнителем Плюсик, дети могут поставить вопрос о сообщении «Не могу» для команд СЛОЖИ и УМНОЖЬ и, главное, самостоятельно ответить на них. Больше внимания требуют команды ВЫЧТИ и ДЕЛИ. В этих командах первый операнд — уменьшаемое и делимое — должен быть больше второго операнда — вычитаемого и делителя (коль скоро принято соглашение о множестве целых положительных чисел как области определения операндов Плюсика). Но поскольку Плюсик всегда направляет первый операнд на правый вход арифметического устройства, а второй — на левый, то порядок выполнения некоммутативных операций должен быть предусмотрен при заполнении стека. Следовательно, из двух операндов команды ВЫЧТИ первым в стек должно попасть большее — уменьшаемое, а вторым — меньшее вычитаемое, так как на левом входе арифметического устройства оказывается последнее попавшее в стек число. Упражнения с некоммутативными арифметическими операциями занимают столько времени на уроках Плюсика, сколько необходимо для усвоения этого непростого механизма, устанавливающего соответствие между последовательностью команд формирования стека и выполнением некоммутативных операций. Только после этого можно переходить к вычислению арифметических выражений, где участвуют три операнда. Если в число операций такого выражения входит, по крайней мере, одна некоммутативная операция, то порядок заполнения стека становится важным.

В вычислении выражения 2 + 7 — 3 возможны два варианта. Первый из них — с возможно опускаемыми скобками: (2 + 7) - 3, второй — со скобками обязательными 2 + (7 - 3).

В первом случае уменьшаемое — сумма, которая вычисляется в скобках, попадает в стек раньше, чем в верхушку стека попадает вычитаемое — 3, как этого требуют правила вычитания в стеке.

ЗАПОМНИ 2

ЗАПОМНИ 7

СЛОЖИ

ЗАПОМНИ 3

ВЫЧТИ

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

ЗАПОМНИ 2

ЗАПОМНИ 3

ЗАПОМНИ 7

ВЫЧТИ

СЛОЖИ

Отсюда видно, что если есть разные варианты группирования операндов в скобки, то предпочтение следует отдавать тем из них, при которых в скобки попадают некоммутативные операции. Ясно, однако, что это возможно не всегда. Вот пример: 7 + 2 - 3. В нем (7 + 2) - 3 — это разрешимая задача для Плюсика, а при вычислении 7 + (2 - 3) Плюсик, работающий только с положительными числами, выдаст сообщение «Не могу». Таким образом, расстановка скобок — это сложный момент темы. Тем более, что в программе для Плюсика они формально отсутствуют, их всегда надо держать в воображении (или переносить это воображение на лист бумаги в виде дополнительных скобок). Например, для вычисления

(15 - 3) : (1 + 2)

надо отчетливо осознавать, что сначала в стек должны попасть числа, участвующие в вычислении делимого (левой скобки), затем следует выполнить операцию над этими числами, чтобы скобка сменилась одним числом, затем сверху в стек добавить числа, необходимые для вычисления делителя (правой скобки), только после этого вычислить делитель и выполнить последнюю команду ДЕЛИ:

ЗАПОМНИ 15

ЗАПОМНИ 3

ВЫЧТИ

ЗАПОМНИ 2

ЗАПОМНИ 1

СЛОЖИ

ДЕЛИ

На примере Плюсика полезно закрепить механизм постепенного сокращения синтаксических конструкций: на первом занятии с этим исполнителем команды предлагаются в развернутой форме, а далее используются их сокращенные формы С (СЛОЖИ), У (УМНОЖЬ) и т. д. В частности, операции со скобками целесообразно выполнять после того, как хорошо освоены сокращенные формы команд Плюсика. Для преобразования обычного арифметического выражения в программу для Плюсика можно просматривать выражение последовательно слева направо, записывая команды ЗАПОМНИ число. Если после очередной записи команды ЗАПОМНИ выяснится, что над последними двумя числами в стеке можно выполнить арифметическую операцию, записывается соответствующая команда. Если строго следовать этому алгоритму, ошибки не будет!

Пример.

Выражение: 28*(36-700/5)+15

(*) Составление программы для Плюсика: Просматриваем запись (*) слева направо и записываем команды запоминания:

ЗАПОМНИ 28 (нельзя выполнить операцию)

ЗАПОМНИ 36 (нельзя выполнить операцию)

ЗАПОМНИ 700 нельзя выполнить операцию)

ЗАПОМНИ 5 (можно выполнить деление)

ДЕЛИ (700/5, можно выполнить вычитание)

ВЫЧТИ 36-700/5, можно выполнить умножение)

УМНОЖЬ (28*(36-700/5), нельзя выполнить операцию)

ЗАПОМНИ 15 (можно выполнить сложение)

СЛОЖИ (28*(36-700/5)+15)

Возможности Плюсика полностью покрывают вычислительные потребности начальной школы. Поэтому в качестве завершения темы «Арифметические исполнители» можно порекомендовать проведение урока математики в школьном кабинете информатики. Последнее обстоятельство настолько важно, что при возможности следует (даже ценою разового перепланирования расписания кабинета информатики) пригласить детей в кабинет на урок, который в расписании назван «математика». Столь же важно, чтобы такой урок провел основной учитель класса, ведущий, в частности, математику, даже если курс раннего обучения информатике ведет в классе другой учитель (что должно быть, как об этом говорилось в предшествующих лекциях, скорее исключением, нежели правилом). На таком уроке сосредоточены вычислительные упражнения — задачи и примеры, решения которых записываются не в тетрадях, а на компьютерных экранах, в среде Плюсика. А сами задачи и примеры учитель не придумывает, а предлагает из школьного учебника (задачника) математики, с которым дети постоянно работают в школе. У такого урока, наряду с его учебными целями, большой важности воспитательная задача: здесь конструктивно и эффективно демонстрируются межпредметные связи информатики; дети воочию убеждаются, что компьютер — не только объект изучения на уроке информатики, но и дидактический инструмент других уроков. Позднее такие уроки можно сделать регулярными (компьютерные диктанты и грамматические упражнения на уроке русского языка, оформление дневника наблюдений на уроке естествознания и т. п.). Плюсик позволяет показать детям нетрадиционную запись арифметического выражения, называемую обратной польской записью. Эта запись оказывается очень удобным средством в компьютерных программах, переводящих обычные арифметические выражения на язык компьютеров, память которых организована в виде стека.

Вот как может выглядеть обычная запись выражения:

а + b * (с + d/e)/f

Обратная польская запись того же выражения имеет вид:

abcde/+*f/+

Сравните: Обычная запись выражения:

2 + 5 * (10 + 134/12)/7

Программа для Плюсика:

ЗАПОМНИ 2

ЗАПОМНИ 5

ЗАПОМНИ

10 ЗАПОМНИ

134 ЗАПОМНИ

12 ДЕЛИ

СЛОЖИ

УМНОЖЬ

ЗАПОМНИ 7

ДЕЛИ

СЛОЖИ

Конечно, при работе с Плюсиком не надо вводить термин «обратная польская запись», но нужно добиться, чтобы перевод выражения из обычной формы в обратную польскую (программу для Плюсика) не представлял для детей особого труда.



<== предыдущая лекция | следующая лекция ==>
Исполнители в курсе раннего обучения информатике | Арифметические игры и математические применения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.012 сек.