Вы - -й посетитель этой странички
Логические выражения
Рџ Р Рђ Рљ Рў Р Рљ РЈ Рњ Рџ Рћ Р Рќ Р¤ Рћ Р Рњ Рђ Рў Р Рљ Р•
Р•.Р’. Андреева, Р.РЎ. Гущин
РњРѕСЃРєРІР°
Введение
В программе курса “Основы информатики и вычислительной техники” в физико-математической школе-интернате им. А.Н. Колмогорова (СУНЦ МГУим. М.В. Ломоносова) предусмотрено обучение детей одному из языков программирования высокого уровня, например, языку Паскаль. Обязательной составной частью обучения языку программирования является выполнение школьниками практических заданий. Практические задания преподаватели информатики стараются составлять так, чтобы, во-первых, при изучении тех или иных алгоритмических или языковых конструкций продемонстрировать и по возможности привить стильпрограммирования, присущий изучаемому языку (каждый язык программирования требует своего стиля ее написания эффективной и легко отлаживаемой программы), во-вторых, помочь ученику закрепить какой-либо материал, изученный на уроках математики, физики, химии и т.д., в-третьих, дать школьнику возможность потренировать свою сообразительность при решении нового для него класса задач.
Практические задания по информатике в СУНЦ МГУ называются практикумами, если данный тип заданийобязателен для выполнения всеми учащимися, каждыйученик получает свой собственный вариант задания, и результат работы каждого учащегося будет проверен и оценен соответствующим образом. Желательным при этом является самостоятельность выполнения задания каждым из школьников. На выполнение практикума учитель отводит фиксированное время (обычно одну или две недели), и оценку “отлично” можно получитьтолько в случае выполнения задания полностью и в срок.
Методические указания
Предлагаемое в данной разработке задание условноназывается “Логические выражения. Метод координат наплоскости”. Для выполнения данного задания от школьника требуется: во-первых, знать тему “Декартовы координаты на плоскости” (например, по учебнику геометрии А.В. Погорелова для 7—11-х классов), в частности,нужно знать и понимать определение уравнения фигурына плоскости в декартовых координатах, знать вид уравнения прямой, окружности, параболы, ромба и/или других фигур в этих координатах; во-вторых, надо уметь описывать в виде неравенств геометрические места точек наплоскости, ограниченные указанными выше линиями; в-третьих, надо знать (или придумать) приемы восстановления уравнений указанных выше линий по их изображению на координатной плоскости.
РР· РєСѓСЂСЃР° информатики для выполнения задания потребуется:
· знание логических операций NOT,
AND, OR;
· определение логического выражения;
· интерпретация логических операций NOT,
AND,OR с точки зрения простейших
понятий теории множеств;
· знакомство с синтаксисом логических
выражений испособами их записи в изучаемом языке
программирования (например, в Паскале);
· знание стандартных арифметических
функцийизучаемого языка программирования,
таких, как:вычисление квадратного корня, модуля
числа и т.п.
Чтобы избежать бездумного копирования программучащимися друг у друга, учитель подготавливает числовариантов задания, равное числу учащихся. Преподаватель может оформить рисунок задания вручную, илииспользуя графические возможности какого-либо языка программирования, или какие-либо графические компьютерные технологии. В СУНЦ МГУ для генерациизаданий используется специально написанная программа. Сложность заданий при этом может варьироваться.
Некоторые ведущие специалисты по программированию (например, известный специалист и педагог из Великобритании К.А.Р. Хоар) приветствуют употребление подпрограмм уже в начальной стадии обучения программированию (в связи с этим заметим, что, например, язык Си с самого начала требует знакомства с понятием функции как подпрограммы, и весь текст программы на Си построен с использованием функций). Поэтому, в зависимости от возможности применения при выполнении задания подпрограмм, учащимся предлагается одиниз двух вариантов формулировки задания: первый (более простой и быстрый для дальнейшей проверки), когда вся работа оформляется учеником в виде одной подпрограммы (в Паскале в виде функции), и второй, когда работа оформляется в виде основной программы (без подпрограмм). В последнем случае от выполняющего задание требуется дополнительное внимание для соблюдения формальных соглашений при написании текстапрограммы, которые необходимы для автоматической проверки, а для проверяющего требуются дополнительные тестирующие программы. Заметим, что данный практикум школьники выполняют на начальном этапе обучения программированию, то есть скорее всего использование функций в данном случае для большинства учащихся возможно лишь в рамках модели, предложенной учителем на уроке.Как уже было упомянуто выше, проверка задания осуществляется автоматически с помощью программы,специально созданной для этого практикума. При этомпроще четко формализовать критерии оценки, практически исчезает возможность пропустить ошибку в программе ребенка (можно быстро рассмотреть практически все случаи) и можно одновременно работать с большим числом учащихся. Подробнее о вариантах проверки предлагаемого практикума, основанных на визуализации работы школьника, будет рассказано ниже.
Для выполнения задания дается одна или две недели,в зависимости от способностей учащихся и наличия у них доступа к компьютеру. Для обучения хорошему стилю программирования можно (и нужно) требовать, чтобы для описания каждой линии, фигуры или подобласти была введена своя,осмысленно поименованная логическая переменная, и только из этих переменных должно потом конструироваться основное логическое выражение.Задание может быть сформулировано и для выполнения его в электронной таблице Excel, только учителю придется приложить несколько больше усилий по организации визуальной проверки логических выражений,полученных школьниками на языке формул Excel.
Условие задания
Приведем пример условия задания данного практикума, сформулированное для изучающих язык программирования Паскаль. Работу учащимся предлагается оформить в виде функции.
Практикум “Логические выражения. Метод координат на плоскости”.
1. На выданном вам рисунке на координатной плоскости изображены окружности, прямые, параболы, ромбы, прямоугольники (некоторые из упомянутых линиймогут отсутствовать). Несколько областей, ограниченных этими линиями, заштрихованы. Данные линии можно описать уравнениями в декартовой прямоугольной системе координат (x, y) на плоскости:
у = f(x), или x = f(y), или f(x, y) = 0
На рисунке изображены также оси координат и координатная сетка, линии которой проведены через единицу масштаба. Восстановите по рисунку уравнения всех линий, изображенных на нем.
2. Напишите программу, которая позволит определять,принадлежит ли точка с координатами (x0 , y0 ) фигуре,состоящей из всех заштрихованных на рисунке областей,или нет. Точки на границах областей не рассматривать,то есть ваша программа может считать их как принадлежащими фигуре, так и не принадлежащими ей.
3. Программа запрашивает значения x 0 , y 0 , и они вводятся с клавиатуры во время ее выполнения. В качестве ответа программа выдает на экран TRUE, если точка с введенными координатами x0 , y 0 принадлежит заштрихованной фигуре, и FALSE, если точка x 0, y 0 не принадлежит ей.
4. В целях автоматической проверки вашей работына компьютере нужно:
a) всю вычислительную часть программы, в которой по координатам точки на плоскости получается результат вычисления логического выражения, обозначающих принадлежность этой точке заданной фигуре на плоскости, оформить в виде функции со следующим заголовком:
function Result(x, y: real): boolean;
Функция получает в качестве входных параметров два числа x, y действительного типа и должна выдавать результат логического типа: TRUE, если точка с координатами x, y оказалась внутри одной из заштрихованных областей, и FALSE, если точкаx, y лежит в незаштрихованной части плоскости.На границах областей функция может выдавать любой результат.Описание этой функции (заголовок и тело функции) надо поместить в файл с именем RESULT.PAS.
б) Для проверки правильности работы вашей функции, а следовательно, и выполнения задания в целом воспользуйтесь следующей программой:
PROGRAM Region;
var x, y: real;
{$I
result.pas}
BEGIN
write ('Введите координаты точки
(x,y):');
readln(x,y);
writeln(Result(x,y));
readln
END.
Варианты заданий
Р РёСЃ . 1. Р РёСЃ. 2
Р РёСЃ. 3 Р РёСЃ. 4
Р РёСЃ. 5 Р РёСЃ. 6
Р РёСЃ. 7 Р РёСЃ. 8
РќР° СЂРёСЃ. 1—8 приведены восемь вариантов, которые соответствуют 32 различным заданиям. РР· каждого СЂРёСЃСѓРЅРєР° можно сделать 4 различных задания, поразному обозначая направления осей OX Рё OY (каждый следующий вариант задания получается РёР· предыдущего путем поворота его РЅР° 90В°, например, РїРѕ часовой стрелке).
Пример выполнения задания. Приведем образец для выполнения задания на примере рис. 1. На занятиях также полезно предварительно разобрать один из вариантов с той или иной степенью детализации, в зависимости от степени математической и программистской подготовки учащихся. Содержание такого занятия может выглядеть так. На данном рисунке изображено пять линий: две окружности, ромб и две параболы. Они ограничивают четыре заштрихованные части плоскости. Восстановим уравнения этих линий. В прямоугольной декартовой системе координат координаты точек (x, y), лежащих на окружности радиуса R с центром в точке (a, b), удовлетворяют уравнению: (x — a) 2 + (y — b)2 = R 2 .Левая окружность имеет радиус 2,5. Центр ее в точке (—1, 2).
Поэтому ее описывает уравнение (x + 1) 2+ (y — 2) 2 = 2,5 2 .Правая окружность имеет радиус 3. Центр ее — в точке (3, —1). Поэтому ее уравнение (x — 3) 2 + (y + 1) 2 = 3 2 . Точки внутри левого круга удовлетворяют неравенству: (x+ 1) 2 + (y — 2) 2 < 2,5 2 .Аналогично, точки внутри правого круга удовлетворяют неравенству: (x — 3) 2 +(y+1)2 < 3 2 . Координаты точек, лежащих на ромбе, показанном на рис. 9 (единичный ромб), удовлетворяют уравнению |x| + |y | = 1.
В этом нетрудно убедиться,раскрыв знак модуля и получив уравнения прямых для каждой из четвертей. Так, для точек первой четверти при x > 0, y > 0 имеем: x + y =1 — это уравнение прямой, проходящей через точки (1, 0) и (0, 1), что соответствует рисунку .
СЂРёСЃ.9
Точки внутри рассматриваемого ромба удовлетворяют неравенству |x| + |y| < 1. В этом можно убедиться точно так же, как и выше, раскрыв модуль.При этом надо учесть, что точки, лежащие ниже прямой y = k x + b, удовлетворяют неравенству y < k x + b,которое означает, что при каждом фиксированном значении x координата y любой точки (x, y), лежащей ниже прямой, меньше координаты y точки, лежащей на прямой, которая равна k x + b. Соответственно точки, лежащие выше прямой y = k x + b, удовлетворяют неравенству y > k x + b. Ромб в нашей задаче отличается от рассмотренного выше тем, что он растянут в 4 раза по оси x и в 3 раза по оси y и его центр смещен в точку (—2, —2). При растяжении линии в k раз по оси x ее уравнение отличается от исходного тем, что х делится на k. Аналогично, если линия растягивается по y в k раз, то в ее уравнении y надо разделить на k. При сдвиге линии по оси x на величину c в ее уравнении вместо x надо взять x — c, аналогично при сдвиге по y на с надо в уравнении y заменить на y — c .
Поэтому для нашего ромба получаем уравнение |x + 2| / 4 + |y + 2| / 3 = 1. Для проверки можно подставить координаты вершин ромба в уравнение и убедиться, что они удовлетворяют ему. Координаты точек внутри ромба удовлетворяют неравенству |x + 2| / 4 + |y + 2| / 3 < 1.Уравнение прямой восстанавливается по координатам любых двух ее точек (для восстановления уравнения прямой по рисунку выберите две различные точки с целочисленными координатами). Например, верхняя правая граница нашего ромба является отрезком прямой, проходящей через точки (—2, 1) и (2, —2).
Общее уравнение прямой, не параллельной оси OY, имеет вид: y = kx + b.Чтобы найти коэффициенты k и b для нашей прямой, подставим в общее уравнение координаты указанных точек,получим два линейных уравнения с двумя неизвестными:1 = k(—2) + b, —2 = k•2 + b.Решив систему, получим k = —3/4, b = —1/2. Получаем уравнение прямой y = —3/4x — 1/2. Тот же метод можно применить и для нахождения уравнения параболы, но уже по трем точкам, так как общее уравнение параболы y = ax 2 + bx + c имеет три неизвестных коэффициента. Рассмотренный прием называется методом неопределенных коэффициентов. Но мы найдем уравнения парабол уже испытанным методом преобразования фигур.
Координаты точек (x, y) , лежащих на параболе, проходящей через начало координат и точки (1, 1) и удовлетворяют уравнению y = x 2 . Вертикальная парабола на рисунке получается из рассмотренной выше сжатием по оси y в 2 раза и сдвигом по оси y на —5, поэтому ее уравнение получится из уравнения выше делением y на 1/2 и заменой y на y — (—5). В результате получаем уравнение (y + 5) / 0,5 = x 2 или y = 0,5x 2 — 5.Аналогично горизонтальная парабола получается из параболы x = y 2 сдвигом на —1 по x и на —2 по y. Ее уравнение имеет вид: x — (—1) = (y — (—2)) 2 или x = (y + 2) 2 — 1. Координаты точек внутри (над) первой параболы удовлетворяют неравенствуy > 0,5x 2 — 5. Координаты точек внутри (правее) второй параболы удовлетворяют неравенству x > (y + 2) 2 — 1.Рассмотрим теперь заштрихованные области. Область 1 представляет собой точки, находящиеся в круге 1 РНЕ вкруге 2, РНЕ внутри ромба. Область 2 представляет собой точки, находящиеся в ромбе Рвнутри параболы 1, РНЕ в круге 1, РНЕ внутри параболы 2. Область 3 представляет собой точки, находящиеся в параболе 1 Рв параболе 2, РНЕ внутри ромба, Рв круге 2. С 4-й, внешней, областью надо быть поосторожнее. На первый взгляд кажется, что область 4 представляет собой множество точек, находящихся НЕ внутри параболы 1 РНЕ внутр и параболы 2 РНЕ в круге 2. Но этому же условию удовлетворяют, например, и точки слева от параболы 1,не входящие в рассматриваемую область. Поэтому для описания точек, принадлежащих 4-й области, надо добавить условие: Рлежащие в первой четверти — то есть удовлетворяют системе неравенств: Рлежащие в первой четверти — то есть удовлетворяют системе неравенств: x > 0 Рy > 0.О подобном условии при объяснении выполнения задания школьникам можно не упоминать, предоставив им возможность догадаться о его необходимости самостоятельно.
Часто школьники формулируют подобные условия лишь после визуальной проверки РёС… работы, РІ результате которой обнаруживаются “лишние” точки, то есть такие, для которых логическая функция ученика сообщает, что РѕРЅРё принадлежат заштрихованной фигуре. “Лишние” точки РјРѕРіСѓС‚ оказаться Рё РІРЅРµ той части плоскости, которая изображена РЅР° СЂРёСЃСѓРЅРєРµ СЃ заданием. Р’ этом случае РїСЂРё проверке РёС… также нужно суметь продемонстрировать школьнику.Р’СЃСЏ заштрихованная фигура F представляет СЃРѕР±РѕР№ объединение четырех рассмотренных областей: F есть объединение точек, лежащих РІ области 1, РЛРв области 2, РЛРв области 3, РЛРв области 4. РџСЂРё записи сформулированного логического выражения РЅР° языке программирования выделенные заглавными буквами слова Р, РР›Р, РќР• нужно заменить РЅР° соответствующие логические операции (например, AND, OR, NOT РІ Паскале).Заметим, что использование логического отрицания РќР• РІ данном случае правомерно лишь потому, что точки РЅР° границе областей РїРѕ условию задания РјС‹ РЅРµ рассматриваем. Таким образом, РЅРµ вполне корректное СЃ точки зрения математики выражение позволяет более наглядно продемонстрировать смысл логических СЃРІСЏР·РѕРє. Например, если точки внутри РєСЂСѓРіР° уже были описаны, то для описания точек, расположенных РІРЅРµ РєСЂСѓРіР°, проще использовать РЅРµ отдельное неравенство, Р° выражение — РќР• внутри РєСЂСѓРіР°. Однако следует обратить внимание учащихся, что РЅР° самом деле выражение NOT (x 2 + y2 < R2 ) соответствует(x2 + y2 R2 ), Р° РЅРµ (x2 + y2 > R2 ).
Разобравшись с логическим выражением, можно приступить к составлению программы. Хорошим стилем программирования, не позволяющим запутаться и наделать ошибок, является следующий: для каждой необходимой для рассмотрения части плоскости надо ввести свою логическую переменную,принимающую истинное значение только для точек, принадлежащих именно этой части плоскости; этой переменной надо присвоить соответствующее арифметически-логическое выражение;· имя переменной должно быть мнемонично, то есть смысл его должен быть понятен любому человеку без перевода; окончательное логическое выражение конструируется с помощью логических операций только из таких переменных.Проиллюстрируем сказанное примером. Требуемая по условию задания функция для рассматриваемого примера может иметь следующий вид:
Function Result(x, y: real): Boolean;
var Circle1, Circle2,
Rhomb, Parab1, Parab2,
XoY1, Reg1, Reg2, Reg3, Reg4 : Boolean;
BEGIN
Circle1 := sqr(x+1.0)+sqr(y-2.0) <
sqr(2.5);< BR> {РІ
РєСЂСѓРіРµ 1}
Circle2
:= sqr(x-3.0)+sqr(y+1.0) < sqr(3.0);< BR> {РІ РєСЂСѓРіРµ 2}
Rhomb := abs(x+2.0)/4.0+abs(y+2.0)/3.0 <
1.0;< BR> {РІ
СЂРѕРјР±Рµ}
Parab1 :=
y > 0.5*sqr(x)-5.0;< BR> {внутри параболы 1}
Parab2 := x >
sqr(y+2.0)-1.0;< BR> {внутри параболы 2}
XoY1 := (x > 0.0) AND (y >
0.0);< BR> {РІ
четверти}
Reg1 := Circle1 AND NOT Rhomb AND NOT
Circle2;< BR> Reg2 := Rhomb AND Parab1 AND NOT Circle1 AND NOT
Parab2;< BR> Reg3 := Parab1 AND Parab2 AND NOT Rhomb ANDCircle2;
Reg4 := NOT Parab1 AND NOT Parab2 AND NOT Circle2 AND
XoY1;
Result:= Reg1 OR Reg2 OR Reg3 OR Reg4
END;
Ее текст помещается в файл RESULT.PAS.Особого внимания в данной программе заслуживают присваивания логическим переменным логических выражений вида: b:= x=1. Как показывает практика, такие операции непривычны даже для программировавших ранее школьников. Таким образом, еще одна задача данного практикума — научить составлению и использованию в программировании произвольных логических выражений.
Тестирующая программа
Учитель проверяет выполненное задание СЃ помощью специальной программы, которая высвечивает РЅР° экране точки, РІ которых функция учащегося дает результат TRUE. Р’ графическом режиме компьютера просматриваются РІСЃРµ пиксели РёР· прямоугольника, ограничивающего СЂРёСЃСѓРЅРѕРє. Р’ результате РЅР° экране получается СЂРёСЃСѓРЅРѕРє, который РІ случае правильного выполнения задания должен совпасть СЃ СЂРёСЃСѓРЅРєРѕРј, выданным РІ качестве задания. Несмотря РЅР° СЃРІРѕСЋ простоту, подобная проверка РїСЂРѕРёР·РІРѕРґРёС‚ большой эффект РЅР° школьников, начинающих изучать программирование. Подобные визуальные средства проверки работ учащихся позволяют укрепить авторитет преподавателя, развить Рё закрепить интерес учащихся Рє предмету. Очевидно, что СЃ помощью такой визуальной проверки невозможно определить, как именно поступает функция Result(x,y) СЃ граничными точками областей. Рто еще РѕРґРЅР° РёР· причин, РїРѕ которой РІ задании граничные точки РЅРµ рассматриваются. РљСЂРѕРјРµ того, РІ силу приближенности вычислений, выполняемых СЃ действительными числами РЅР° компьютере, точно учесть РІСЃРµ граничные точки заштрихованной фигуры зачастую практически невозможно. Рђ, РЅР° наш взгляд, ставить задачу более строго, чем РЅР° практике будет проверяться ее решение, РѕСЃРѕР±РѕРіРѕ смысла нет. Приведем текст программы, позволяющей продемонстрировать, чему РЅР° самом деле соответствует логическое выражение, построенное Рё запрограммированное школьником Рё помещенное РІ файл
PROGRAM
CheckTask_2;
Uses Graph;
const
xGrMin = 120;
xGrSize = 400;
xGrMax = xGrMin+xGrSize;
yGrMin = 70;
yGrSize = 300;
yGrMax = 370;
xMin = -8.0;
xMax = 8.0;
dX = (xMax-xMin)/xGrSize;
sX = 1.0/dX;
yMin = -6.0;
yMax = 6.0;
dY = (yMax-yMin)/yGrSize;
sY = 1.0/dY;
PROCEDURE GrInit;
var
grDriver :
Integer;
grMode : Integer;
ErrCode :
Integer;
BEGIN
grDriver := Detect;
InitGraph(grDriver,grMode, '');
{Предполагается, что графический
драйвер egavga.bgi находится
в текущей директории,
иначе укажите путь}
ErrCode :=
GraphResult;
if ErrCode <> grOk
then
BEGIN
writeln('Ошибка установки граф.
режима:',GraphErrorMsg(ErrCode));
Halt(1)
END
END;
Function gX(x:real):word;
BEGIN
gX:=xGrMin+round((x-xMin)*Sx)
END;
Function gY(y:real):word;
BEGIN
gY:=yGrMax-round((y-yMin)*sY)
END;
PROCEDURE Grid;
{сетка}
var
i:integer;
BEGIN
SetColor(red);
SetLineStyle(DottedLn,0,1);
for i:=round(yMin) to round(yMax)
do
line(xGrMin,gY(i*1.0),
xGrMax,gY(i*1.0));
for i:=round(xMin) to round(xMax)
do
line(gX(i*1.0),yGrMin,gX(i*1.0),yGrMax)
END;
PROCEDURE Axis;
{РѕСЃРё}
BEGIN
SetLineStyle(SolidLn,0,1);
Line(xGrMin,gY(0),xGrMax,gY(0));
Line(gX(0),yGrMin,gX(0),yGrMax)
END;
{$I result.pas}
PROCEDURE ShowResult;
var x,y: real;
i,j: word;
BEGIN
y:=yMax;
for j:=
yGrMin to yGrMax do
BEGIN
x:=xMin;
for i:= xGrMin to xGrMax
do
BEGIN
if Result(x,y) then
PutPixel(gX(x),gY(y),White);
x:=x+dX
END;
y:=y-dY
END
END;
BEGIN
GrInit;
Grid;
Axis;
Show
Result;
readln;
CloseGraph
END.
Дополнительные замечания если тема “Подпрограммы и их параметры” еще не изучалась, а выполнение задания по образцу без детального объяснения учитель считает нецелесообразным, то нужно изменить пункт 4 условия задания на следующий:
4* . Для автоматической проверки работы на компьютере нужно:
· чтобы начало программы (первая строка ее текста) имело вид: var x,y: real;
· чтобы результат присваивался переменной с именем R логического типа.Например, программа может выглядеть так:
var x, y: real;
Circle1, Circle2, Rhomb, Parab1,
Parab2, XoY1, Reg1, Reg2, Reg3, Reg4, R: Boolean;
BEGIN
write('Введите координаты точки
(x,y): ');
readln(x,y);
Circle1 :=
sqr(x+1.0)+sqr(y-2.0) < sqr(2.5);
{РІ РєСЂСѓРіРµ 1}
Circle2 := sqr(x-3.0)+sqr(y+1.0) < sqr(3.0);
{РІ РєСЂСѓРіРµ
2}
Rhomb := abs(x+2.0)/4.0+abs(y+2.0)/3.0 <
1.0;
{РІ СЂРѕРјР±Рµ}
Parab1 := y >
0.5*sqr(x)-5.0;
{внутри параболы
1}
Parab2 := x >
sqr(y+2.0)-1.0;
{внутри параболы
2}
XoY1 := (x > 0.0) AND (y >
0.0);
{в 1-й четверти}
Reg1:=
Circle1 AND NOT Rhomb AND NOT Circle2;
Reg2:=
Rhomb AND Parab1 AND NOT Circle1 AND NOT Parab2;
Reg3:= Parab1 AND Parab2 AND NOT RhombAND Circle2;
Reg4:=
NOT Parab1 AND NOT Parab2 ANDNOT Circle2 AND XoY1;
R:=
Reg1 OR Reg2 OR Reg3 OR Reg4;
writeln(R);
readln
END.
Для автоматической визуальной проверки такого задания учителю придется написать дополнительную программу-конвертор, преобразующую текст программы школьника РІ функцию Result(x,y). РџСЂРё указанных РІ 4* ограничениях РЅР° текст программы это сделать РЅРµ очень сложно. Р’СЃРµ операторы — write, writeln, read, readln —из программы школьника РїСЂРё этом просто удаляются. Затем как программа-конвертор, так Рё приведенная выше программа-визуализатор записываются РІ командный файл, параметром которого служит РёРјСЏ файла СЃ программой школьника, Р° результатом работы — картинка РЅР° экране компьютера. Рффект РІ таком случае достигается даже больший, чем РїСЂРё проверке задания, выполненного РІ РІРёРґРµ функции. Причем лучших учащихся обычно заинтересовывает задача написания программы-конвертора, решение которой без знания теории конечных автоматов (РІ данномслучае для упрощенного синтаксического разбора текст Р° программы школьника) РІ полном объеме невозможно (например, окончанием оператора write РЅРµ обязательно является первый встреченный СЃРёРјРІРѕР» “;”, ведь этот СЃРёРјРІРѕР» может быть просто вставлен школьником РІ строковую константу Рё С‚.Рґ.). РўРѕ есть проверка практикума “для всех”может дать тему для дополнительной работы СЃРѕ способными учениками, которая РІ РєСѓСЂСЃ школьной информатики РЅРµ войдет, РЅРѕ пригодится РїСЂРё решении олимпиадных задач.