hodza/BlackBox.Shkola.2014 huggingface dataset:
i21edu/Mod/ВводПример3.odc

(* Ещё о вводе (и выводе) литер. См. замечания внизу после текста модуля *)

МОДУЛЬ i21eduВводПример3;
	ПОДКЛЮЧИТЬ  Вывод := i21eduВывод,  Ввод := i21eduВвод;
	
	ПЕРЕМЕННЫЕ  ц: ЦЕЛОЕ;  л: ЛИТЕРА;
		
НАЧАЛО
	Вывод.НовСтрока;
	Вывод.Цепочка("******************************");  Вывод.НовСтрока;
	Вывод.Цепочка("Сначала читаем три числа подряд: ");       Вывод.НовСтрока;

	Ввод.Открыть;   УБЕДИТЬСЯ( Ввод.сделано );

	Ввод.Цел( ц );  УБЕДИТЬСЯ( Ввод.сделано );  Вывод.Цел( ц );  Вывод.НовСтрока;
	Ввод.Цел( ц );  УБЕДИТЬСЯ( Ввод.сделано );  Вывод.Цел( ц );  Вывод.НовСтрока;
	Ввод.Цел( ц );  УБЕДИТЬСЯ( Ввод.сделано );  Вывод.Цел( ц );  Вывод.НовСтрока;

	Вывод.НовСтрока;

	Вывод.Цепочка("Теперь будем читать литеру после каждого числа: ");  
	Вывод.НовСтрока;

	Ввод.Сначала;  УБЕДИТЬСЯ( Ввод.сделано );

	Ввод.Цел( ц );	УБЕДИТЬСЯ( Ввод.сделано );	Вывод.Цел( ц );	Вывод.НовСтрока;
	Ввод.Литера( л );	УБЕДИТЬСЯ( Ввод.сделано );	Вывод.Литера( л );	Вывод.НовСтрока;
	Ввод.Цел( ц );	УБЕДИТЬСЯ( Ввод.сделано );	Вывод.Цел( ц );	Вывод.НовСтрока;
	Ввод.Литера( л );	УБЕДИТЬСЯ( Ввод.сделано );	Вывод.Литера( л );	Вывод.НовСтрока;
	Ввод.Цел( ц );	УБЕДИТЬСЯ( Ввод.сделано );	Вывод.Цел( ц );	Вывод.НовСтрока;

КОНЕЦ i21eduВводПример3.

Выделить целиком две строки с красными числами и нажать Ctrl+F9:

        1	2
    3

При первом проходе Ввод.Цел пропускает все белые символы, пока не найдёт чисел (а когда не находит, то происходит ТРАП).

При втором проходе Ввод.Литера читает литеру, стоящую сразу же за только что прочитанным числом. После первого числа это символ табуляции, после второго  конец строки. Видно, что специальные символы печатаются в Рабочий журнал в виде цифровых шестнадцатеричных кодов. Чтобы вставлять в Рабочий журнал конец строки или табуляцию, нужно использовать процедуры Вывод.НовСтрока или Вывод.Таб.
i21edu/Mod/ВводПримерОценки.odc

МОДУЛЬ i21eduВводПримерОценки;
	ПОДКЛЮЧИТЬ  Вывод := i21eduВывод,  Ввод := i21eduВвод;
	
	ПЕРЕМЕННЫЕ  всего, сумма, оценка: Л;
		имя: МАССИВ 100 ИЗ ЛИТЕР;
		средняя: ВЕЩ;
		
НАЧАЛО
	(* пройдемся по данным, чтобы посчитать и сложить Петины оценки: *)
	всего := 0;  сумма := 0;
	Ввод.Сначала;  УБЕДИТЬСЯ( Ввод.сделано );
	Ввод.Цепочка( имя );
	ПОКА Ввод.сделано ДЕЛАТЬ
		Ввод.Цел( оценка );
		УБЕДИТЬСЯ( Ввод.сделано ); (* ведь данные могут быть с ошибками *)
		УБЕДИТЬСЯ( ( оценка > 0 ) И ( оценка <= 5) );
		ЕСЛИ имя = "Петя" ТО
			всего := всего + 1;
			сумма := сумма + оценка;
		КОНЕЦ;
		Ввод.Цепочка( имя )
	КОНЕЦ;

	(* теперь можно заняться результатами: *)
	ЕСЛИ всего > 0 ТО
		средняя := сумма / всего;
		Вывод.НовСтрока;
		Вывод.Цепочка("всего оценок у Пети: ");
		Вывод.Цел( всего ); 
		Вывод.НовСтрока;
		Вывод.Цепочка("средняя оценка: ");
		Вывод.Вещ( средняя ); 
		Вывод.НовСтрока;
	ИНАЧЕ
		Вывод.Цепочка("у Пети не было оценок.")
	КОНЕЦ;
	
КОНЕЦ i21eduВводПримерОценки.

Поток ввода  это фрагмент текста, выделенный для ясности синим. Он мог бы находиться в любом документе.
Где бы он ни находился, его нужно выделить мышкой и нажать Shift+F1 (или через меню: 1-Школьное, Определить поток ввода). Это сделает выделенный фрагмент (точнее, его копию, защищенную от случайных изменений) потоком ввода.
Если теперь вызвать программу (нажатием Ctrl+F9), то программа будет читать именно его.
Полезно поопределять разные фрагменты нижеприведенной таблички как потоки ввода (в том числе пустой или неправильный, например, начинающийся с числа), чтобы посмотреть, как будет срабатывать программа.

Петя 5
Маша 5
Маша 5
Петя 4
Петя 3
i21edu/Mod/Вывод.odc

MODULE i21eduВывод; (* Русскоязычный модуль вывода в Рабочий журнал для учебных целей. Фасад для StdLog *)
(** для проекта Информатика-21: info21 2009-03-09 *)
	IMPORT  StdLog;

	PROCEDURE Литера* ( ch: CHAR );
	BEGIN
		StdLog.Char( ch )
	END Литера;

	PROCEDURE Цел* ( i: LONGINT );
	BEGIN
		StdLog.Int( i )
	END Цел;

	PROCEDURE Вещ* ( x: REAL );
	BEGIN
		StdLog.Real( x )
	END Вещ;

	PROCEDURE Цепочка* ( IN str: ARRAY OF CHAR );
	BEGIN
		StdLog.String( str )
	END Цепочка;

	PROCEDURE Логич* ( x: BOOLEAN );
	BEGIN
		IF  x  THEN  StdLog.String('Д'+'А')  ELSE  StdLog.String('Н'+'ЕТ')  END; (* чтобы не перевелись на англ *)
	END Логич;

	PROCEDURE Таб*;
	BEGIN
		StdLog.Tab
	END Таб;

	PROCEDURE НовСтрока*;
	BEGIN
		StdLog.Ln
	END НовСтрока;

END i21eduВывод.
i21edu/Mod/ОбслугаЧерепашки.odc

MODULE  i21eduОбслугаЧерепашки;
	IMPORT  Log := StdLog,  In := i21sysIn,  Windows,  W := i21sysWindows, 
		i21eduОбслуга,  StdCmds,  Ч := i21eduЧерепашка;
	
	PROCEDURE ОткрытьКоманды*;
		CONST команды = 'Команды черепашки';
		VAR  w: Windows.Window;
	BEGIN
		(* закроем уже открытые окна с Командами черепашки: *)
		w := W.ThisWindow( команды );
		WHILE  w # NIL  DO
			w.Close;
			w := W.ThisWindow( команды );
		END;
		StdCmds.OpenBrowser( 'i21edu/Docu/ru/КомандыЧерепашки.odc', команды );
		W.SetSize( 300, 380 ); (* ширина, высота в пикселях *)
		W.SetPos( 0, 280 ); (* ставим впритык к левому краю на 280 пикселей сверху, чтобы был виден Рабочий журнал *)
	END ОткрытьКоманды;
	
	PROCEDURE НачатьРаботу* ( заготовка, подсказки: ARRAY OF CHAR );
		VAR  win: Windows.Window;
	BEGIN
		(* выставляем Рабочий журнал в некое стандартное положение: *)
		Log.Open;  (* открыть, а то вдруг закрыт *)
		W.SetSize( 300, 250 );  (* ширина, высота в пикселях *)
		W.AlignTopLeft;  (* ставим в верхний левый угол*)

		ОткрытьКоманды;

		Ч.ЗакрытьВсехЧерепах;
		Ч.Новый;  (* открываем новый чистый рисунок *)

		i21eduОбслуга.ОткрытьКопию( заготовка$, подсказки$ );
		IF i21eduОбслуга.сделано THEN
			W.SetSize( 500, 600 );
			W.SetPos( 300, 0 );
			(* сделаем, чтобы ширина документа была по окну, т.е. чтобы длинные строки переносились и были видны в окне: *)
			StdCmds.InitLayoutDialog;
			StdCmds.layout.wType := 2;
			StdCmds.SetLayout;

(* это мешает сразу сохранять рисунок в файл
			(* окно сразу получается "грязным" -- очистим" его: *)
			win := Windows.dir.First();
			IF  win # NIL  THEN  win.seq.SetDirty( FALSE )  END
*)
		END;
	END НачатьРаботу;
	
END  i21eduОбслугаЧерепашки.

"i21eduОбслугаЧерепашки.НачатьРаботу('ч-0-ru','')"
"i21eduОбслугаЧерепашки.НачатьРаботу('ч-0-r','')"


i21eduОбслугаЧерепашки.ОткрытьКоманды
i21edu/Mod/ТочкиЛинии.odc

MODULE  i21eduТочкиЛинии; (* info21 для проекта Информатика-21 2009  *)
(* переделано из Info21libTPGraphics *)
	
	IMPORT  Views,  Ports,  Properties,  Dialog,  i21sysWindows;
	
	CONST  заголовок = "рисунок";
	
	TYPE
		Точка* = RECORD
			x*, y*: INTEGER (*    *)
		END;
	
	TYPE
		View = POINTER TO RECORD ( Views.View ) END;

		UpdateMsg = RECORD ( Views.Message ) END;
		
		Element = POINTER TO ABSTRACT RECORD
			next: Element
		END;
		
		ElLine = POINTER TO RECORD ( Element )
			p0, p1: Точка
		END;
		
	VAR
		first, last: Element;
		v: View;
		msg: UpdateMsg;
	
	
	PROCEDURE^ Обновить*;
	
	PROCEDURE РазмерПикселя ( f: Ports.Frame ): INTEGER;
		VAR  res: INTEGER;
	BEGIN
		res := MAX( f.unit, 9525 ); (* на экране в пикселях, при печати в неких условных единицах, чтобы не было слишком мелко *)
		RETURN  res
	END РазмерПикселя;
	
	
	PROCEDURE Открыть*;
	BEGIN
		Views.OpenAux( v, заголовок );  Views.Update( v, Views.keepFrames );
		i21sysWindows.AlignTopRight;
	END Открыть;
	
	PROCEDURE Очистить*;
	BEGIN  first := NIL;  last := NIL;  Views.Omnicast( msg )
	END Очистить;
	
	PROCEDURE Обновить*;
	BEGIN  Views.Omnicast( msg )
	END Обновить;
	
	
	PROCEDURE ( el: Element ) Draw ( f: Ports.Frame ), NEW, ABSTRACT;
	
	PROCEDURE ( el: ElLine ) Draw ( f: Ports.Frame );
		VAR  px: INTEGER;
	BEGIN
		px := РазмерПикселя( f );
		f.DrawLine( px * el.p0.x, px * el.p0.y, px * el.p1.x, px * el.p1.y, px, Ports.black )
	END Draw;
	
	
	PROCEDURE ( v: View ) Restore ( f: Views.Frame;  l, t, r, b: INTEGER );
		VAR  el: Element;  c: Ports.Color;
	BEGIN
		f.DrawRect( 0, 0, 1000*Ports.mm, 1000*Ports.mm, -1, Ports.white );
		el := first;
		WHILE  el # NIL  DO
			el.Draw( f );
			el := el.next
		END
	END Restore;
	
	PROCEDURE ( v: View ) HandlePropMsg- ( VAR p: Properties.Message );
	BEGIN
		WITH  p: Properties.ResizePref  DO
			p.horFitToWin := TRUE;
			p.verFitToWin := TRUE
		ELSE
		END;
	END HandlePropMsg;

	PROCEDURE ( v: View ) HandleViewMsg- ( f: Views.Frame;  VAR p: Views.Message );
	BEGIN
		WITH  p: UpdateMsg  DO
			v.Restore( f, 0, 0, MAX(INTEGER), MAX(INTEGER) )
		ELSE
		END;
	END HandleViewMsg;

	
	PROCEDURE Include ( el: Element );
	BEGIN
		ASSERT( el.next = NIL, 20 );
		IF  first = NIL  THEN
			first := el
		ELSE
			last.next := el
		END;
		last := el;
		Views.Update( v, Views.keepFrames );
	END Include;
	
	PROCEDURE Линия* ( p0, p1: Точка ); (*  отрезок прямой   p0, p1 , задаваемым глобальной переменной цвет *)
		VAR  l: ElLine;
	BEGIN
		NEW( l );  l.p0 := p0;  l.p1 := p1;  Include( l );  Обновить;
	END Линия;
	
BEGIN  first := NIL;  last := NIL;  NEW( v );
END  i21eduТочкиЛинии.

i21eduТочкиЛинии.Обновить;
i21eduТочкиЛинии.Открыть;
i21eduТочкиЛинии.Очистить;

см. документацию
см. ТочкиЛинии: пример
i21edu/Mod/ТочкиЛинииПример.odc

МОДУЛЬ  i21eduТочкиЛинииПример; (* info21 для проекта Информатика-21 2009 *)
	ПОДКЛЮЧИТЬ  Т := i21eduТочкиЛинии;
	
	ПЕРЕМЕННЫЕ  т0, т1, т2: Т.Точка;
	
НАЧАЛО
	Т.Очистить;
	т0.x := 100;  т0.y := 100;
	т1.x := 300;  т1.y := 270;
	т2.x := т1.y;  т2.y := т1.x;
	
	Т.Линия( т0, т1 );
	Т.Линия( т1, т2 );
	Т.Линия( т2, т0 );
КОНЕЦ  i21eduТочкиЛинииПример.


Компиляция и выполнение: Ctrl+F9.

i21eduТочкиЛинии.Открыть
i21eduТочкиЛинии.Обновить
i21eduТочкиЛинии.Очистить
i21edu/Rsrc/Menus.odc

MENU "&1-Школьное"
	"Новая программа (по-русски)"	""	"i21eduОбслуга.ОткрытьКопию('0-ru','подсказки')"	""
	"Новая программа (English)"	""	"i21eduОбслуга.ОткрытьКопию('0-en','подсказки')"	""
	"Некоторые заповеди грамотного прог-я"	""	"StdCmds.OpenBrowser('i21edu/Docu.Знакомство/Некоторые заповеди','Некоторые заповеди'"	""
	SEPARATOR
	"Новый пустой документ"	"N"	"StdCmds.New"	""
	"Открыть..."	"O"	"HostCmds.Open"	""
	"Сохранить"	"S"	"HostCmds.Save"	"HostCmds.SaveGuard"
	"Сохранить как..."	"*S"	"HostCmds.SaveAs"	"StdCmds.WindowGuard"
	"Сохранить копию как..."	""	"HostCmds.SaveCopyAs"	"StdCmds.WindowGuard"
	"Сохранить как картинку (bmp)..." 	""	"i21sysBitmaps.SaveSingleton"	"StdCmds.SingletonGuard"
	"Закрыть окно"	"W"	"HostCmds.Close"	"StdCmds.WindowGuard"
	SEPARATOR
	"Компилировать (ру+en)"	"K"	"i21sysCompiler.Compile"	"TextCmds.FocusGuard"
	"Компили-ть и выполнить"	"^F9"	"i21sysCompiler.ConvertCompileAndReload"	"TextCmds.FocusGuard"
	"Перевести в English"	""	"i21sysLanguage.ConvertSource"	"TextCmds.FocusGuard"
	SEPARATOR
	"Открыть Рабочий журнал (окно вывода)"	""	"StdLog.Open;i21sysWindows.AlignTopLeft"	""
	"Справка по выводу"	""	"StdCmds.OpenBrowser('i21edu/Docu/ru/Вывод','Вывод')"	""
	SEPARATOR
	"Определить поток ввода"	"*F1"	"i21sysIn.OpenSelection"	"TextCmds.SelectionGuard"
	"Справка по вводу"	""	"StdCmds.OpenBrowser('i21edu/Docu/ru/Ввод','Ввод')"	""
	SEPARATOR
	"Справка для учителя"	""	"StdCmds.OpenBrowser('i21edu/Справка для учителя','Справка для школы')"	""
	"Настройки..."	""	"HostDialog.InitPrefDialog; StdCmds.OpenToolDialog('Host/Rsrc/Prefs', 'Настройки')"	""
	"Обновить меню и ресурсы"	""	"StdMenuTool.UpdateAllMenus;DevCmds.FlushResources"	""
	SEPARATOR
	"Закончить работу"	"*W"	"i21sysDesktop.Exit"	""
END

MENU "&2-Черепашка"
	"Начать работу (по-русски)"	""	"i21eduОбслугаЧерепашки.НачатьРаботу('ч-0-ru','подсказки')"	""
	"Начать работу (English)"	""	"i21eduОбслугаЧерепашки.НачатьРаботу('ч-0-en','подсказки')"	""
	"Новая программа (по-русски)"	""	"i21eduОбслуга.ОткрытьКопию('ч-0-ru','подсказки')"	""
	"Новая программа (English)"	""	"i21eduОбслуга.ОткрытьКопию('ч-0-en','подсказки')"	""
	"Открыть новый рисунок"	""	"i21eduЧерепашка.Новый"	""
	"Очистить рисунок"	""	"i21eduЧерепашка.Очистить"	"i21eduЧерепашка.Guard"
	"Рисовать в этом окне"	""	"i21eduЧерепашка.РисоватьСюда"	"i21eduЧерепашка.Guard"
	"Открыть команды Черепашки"	""	"i21eduОбслугаЧерепашки.ОткрытьКоманды"	""
	"Полная справка по Черепашке"	""	"StdCmds.OpenBrowser('i21edu/Docu/ru/Полная справка по Черепашке','Полная справка по Черепашке')"	""
	SEPARATOR
	"Задачи 5й кл (пример для учителя)"	""	"StdCmds.OpenBrowser('i21edu/Заготовки/! Пример списка задач','Задачи для ***')"	""
END

MENU "*" ("i21eduЧерепашка.Рисунок")
	"Очистить рисунок"	""	"i21eduЧерепашка.Очистить"	""
	"Открыть новый рисунок"	""	"i21eduЧерепашка.Новый"	""
	"Сохранить как..."	""	"HostCmds.SaveAs"	"StdCmds.WindowGuard"
	"Сохранить как картинку (bmp)..." 	""	"i21eduЧерепашка.SaveBmp"	""
END



MENU "*" ("i21eduTPGraphics.View")
	"Очистить рисунок"	""	"i21eduTPGraphics.Clear"	""
	"Сохранить как картинку (bmp)..." 	""	"i21eduЧерепашка.SaveBmp"	""
END
i21edu/Заготовки/! Пример списка задач.odc

Задачи

Задача 01
Задача 02

Клики по подчёркнутым гиперссылкам открывают условия задач вместе с заготовкой модуля-решения.
Чтобы оформить гиперссылку, нужно в нужном месте набрать такой текст:

<i21eduОбслугаЧерепашки.НачатьРаботу('Задача01','подсказки')>Задача 01<>

потом мышкой выделить весь фрагмент (от самой первой угловой скобки до последней) и нажать Ctrl+L  он схлопнется в гиперссылку. 
При этом обе пары угловых скобок превратятся в объекты-невидимки; их можно увидеть в виде особых стрелок вместе с другими подобными объектами, если нажать Ctrl+H (нажать ещё раз, чтобы спрятать). Об этом нужно помнить, чтобы случайно не стереть такой объект-невидимку (это может произойти при редактировании текста).

Чтобы гиперссылку превратить обратно в текст с угловыми скобками, 
нужно кликнуть по ней при нажатой клавише Ctrl.
В первой паре угловых скобок можно ставить совершенно любую команду, в т.ч. свою.
Можно поставить даже последовательность команд, разделяя их точкой с запятой.

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

	StdCmds.OpenBrowser('i21edu/Заготовки/Пример списка задач.odc','Задачи для ***')

Чтобы посмотреть, как такая команда используется в меню, можно открыть документ, описывающий школьные меню, кликом сюда: i21edu/Rsrc/Menus

Чтобы посмотреть исходник этой команды, дважды кликнуть по имени модуля: i21eduОбслугаЧерепашки, и нажать Ctrl+0 (цифра нуль).

Осторожно! Могут быть проблемы с кириллицей в именах файлов: ОС различает имена в разных кодировках (CP1251 и Unicode), хотя выглядеть они могут одинаково.
Проверенный способ: сохранять документы с кириллическими именами из Блэкбокса.
i21edu/Заготовки/! Что хранится в этой папке.odc

Что хранится в папке i21edu/Заготовки/

Здесь собраны заготовки программ (модулей), примеры заготовок задач, пример списка задач и т.п. 
Это всё текстовые документы Блэкбокса, которые можно менять. 
Посмотреть их можно, открывая в Блэкбоксе обычным образом (Ctrl+O или Файлы, Открыть... или бросая мышкой файл из окна проводника на активное окно Блэкбокса).

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

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

Задачи  это заготовки, у которых в начале даются условия задач вместе с картинками. О подготовке задач и списков задач см. отдельный документ Подготовказадач.

Как используются заготовки модулей
Как правило, из заготовки модуля делается копия и открывается в новом окне в качестве затравки очередной программы, так что учащийся, сохраняя работу на диск, не может случайно испортить образец.
К новому документу в конце добавляются подсказки из отдельного документа.  
В школьных меню есть несколько команд такого рода.
Например, в меню 2-Черепашка команда Новая программа (по-русски) открывает копию документа ч-0-ru.odc.

Базовая процедура для этого находится в модуле i21eduОбслуга и называется ОткрытьКопию. Пример её вызова (внешние двойные кавычки нужны, если вызов ставится в меню или после коммандера; при вызове из программы двойные кавычки нужно удалить):
	"i21eduОбслуга.ОткрытьКопию( '0-ru', 'подсказки' )"
где первым параметром указано имя документа-заготовки (не нужно указывать стандартное для документов Блэкбокса расширение .odc), а вторым  имя документа c подсказками; если указать пустую цепочку литер '', то подсказки добавляться не будут.

Меню настроить просто: 
меню в Блэкбоксе задаются текстовыми документами, нужно просто открыть и подредактировать такой документ, а затем активировать новые меню (Инфо, Обновить меню: полоска меню обновится на лету).
Отсылая за деталями к документации, ограничимся необходимыми замечаниями.
Школьные меню задаются документом i21edu/Rsrc/Menus.odc. Его можно открыть, кликнув здесь, и, например, добавить новые команды по образцу уже имеющихся там (для упражнения можно просто продублировать какую-нибудь). 
Важно помнить, что добавлять/удалять команды меню нужно целыми строками; в каждой такой строке должно быть четыре цепочки литер, разделённых символами табуляции (удобно увеличить ширину окна так, чтобы эти четыре цепочки для каждого пункта меню умещались в строке без переносов; возможно, придётся вызвать Инструменты, Размеры документа... и отметить в диалоге пункт В ширину окна).
Чтобы изменения сохранились и для будущих запусков ББ, документы меню нужно не забыть сохранить на диск (Ctrl+S).
Ещё раз: активируются новые меню командой меню Инфо, Обновить меню без перезапуска Блэкбокса.

__________________
info21@inr.ac.ru 2010-10-02
i21edu/Заготовки/Turbo Pascal (графика).odc

MODULE Program;
	IMPORT Log := StdLog, In := i21eduIn, G := i21eduTPGraphics, Math;
	
	VAR
	
BEGIN
	G.Clear;
	G.String( 100, 200, '-----***** Всем привет!' );  Log.Ln;
	G.Circle( 100, 200, 50 );
END Program.

Скомпилировать и выполнить программу: Ctrl+F9 
Только скомпилировать: Ctrl+K

очистить картинку: i21eduTPGraphics.Clear
открыть картинку:  "i21eduTPGraphics.Open;i21sysWindows.AlignTopRight"
i21edu/Заготовки/Задача01.odc

(* Задача 01 
Черепашка должна нарисовать квадрат (размер выбрать самостоятельно).
При этом в конце она должна стоять в том же положении, что и в начале:
*)

МОДУЛЬ  Задача01;
	ПОДКЛЮЧИТЬ  Ч := i21eduЧерепашка;
	ПЕРЕМЕННЫЕ  
НАЧАЛО
	
КОНЕЦ Задача01.
i21edu/Заготовки/Задача02.odc

(* Задача 02 

Нарисовать прямоугольник размером 20 пикселей в ширину, 60 в высоту. Нижняя сторона должна быть красной, остальные  синие. 
Начальная позиция черепашки должна соответствовать левому нижнему углу,
конечная  правому нижнему. 
Смотреть в конце черепашка должна туда же, куда смотрела в начале.*)
МОДУЛЬ  Задача02;
	ПОДКЛЮЧИТЬ  Ч := i21eduЧерепашка;
	ПЕРЕМЕННЫЕ 
НАЧАЛО
	
КОНЕЦ Задача02.
i21edu/Заготовки/подсказки.odc


-----------------------------------------
Только компилировать: Ctrl+K (K латинское).
Компилировать и выполнить: Ctrl+F9.

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

Как копировать строки целиком: 
Выделить строки, протягивая мышкой с нажатой кнопкой вдоль самого края слева. 
Нажать Ctrl+C.
Поставить курсор в самом начале той строки, перед которой хотим вставить. Нажать Ctrl+V.


Открыть рисунок: меню 2-Черепашка, Открыть рисунок. 
Очистить рисунок: двойной клик по рисунку или меню 2-Черепашка, Очистить рисунок. 
Можно вставить в начале программы Ч.Очистить;

Поменять имя модуля: в двух синих местах.
Как назвали модуль (например, Тема4), под таким именем лучше и сохранять на диск в папку Mod в своей рабочей папке. 
 Еще подсказки (чтобы раскрыть, кликнуть по стрелке)
i21edu/Заготовки/ч-0-ru.odc

МОДУЛЬ  Задание1;
	ПОДКЛЮЧИТЬ  Ч := i21eduЧерепашка, Ввод := i21eduВвод2, Вывод := i21eduВывод;
	
НАЧАЛО
	Ч.Идти(100);
	Ч.Повернуть(144);
КОНЕЦ Задание1.
i21edu/Заготовки/старые/БайтикЭлит.odc

MODULE  Задание;
	IMPORT  Log := StdLog,  In := i21sysIn,  Ч := i21eduЧерепашка;
	
	PROCEDURE Пример*; (*звездочка, чтобы командир мог вызвать*)
		VAR  
	BEGIN
		Ч.Идти(100);
		Ч.Повернуть(144);
		
	END Пример;
	
END Задание. 
------------------------
Здесь программа уже закончилась, пишем, что хотим.
Если нужно поменять имя модуля, то делать это нужно в трех местах (показаны синим).

Черные кружки -- командиры, по ним кликать, чтобы выполнить:

Задание.Пример

Если не вызывается, проверить, есть ли звездочка у имени в заголовке процедуры.

--выполнить Пример (еще раз): кликнуть по командиру. 
--компиляция после исправления: Ctrl+K.
--выполнить первый раз после успешной компиляции: при клике по командиру нажимать клавишу Ctrl. Дальше можно Ctrl отпустить.

--очистить рисунок : Ctrl + двойной клик прямо по рисунку (или через меню).

двойной клик по слову или числу -- выделяет его
Ctrl+C -- скопировать выделенный кусочек текста
Ctrl+V -- вставить скопированный кусочек текста
Ctrl+X -- удалить выделенный кусочек текста
Чтобы выделять строки целиком: кликнуть в начало строки, тянуть мышкой вдоль левого края окна при нажатой кнопке мышки
i21edu/Заготовки/старые/Лицей5класс.odc

МОДУЛЬ  Задание;
	ПОДКЛЮЧИТЬ  Вывод := i21eduВывод,  Ввод := i21eduВвод,  
		Ч := i21eduЧерепашка;
	
	ПРОЦЕДУРА Пример*; (*звездочка, чтобы коммандер мог вызвать*)
		ПЕРЕМЕННЫЕ  
	НАЧАЛО
		Ч.Идти(100);
		Ч.Повернуть(144);
		
	КОНЕЦ Пример;
	
КОНЕЦ Задание. 
------------------------
Здесь программа уже закончилась, пишем, что хотим.
Если нужно поменять имя модуля, то делать это нужно в трех местах (показаны синим).

Черные кружки -- коммандеры, по ним кликать, чтобы выполнить:

Задание.Пример

Если не вызывается, проверить, есть ли звездочка у имени в заголовке процедуры.

--выполнить Пример (еще раз): кликнуть по коммандеру.
--компиляция после исправления: Ctrl+K.
--выполнить первый раз после успешной компиляции: при клике по коммандеру нажимать клавишу Ctrl. Дальше можно Ctrl отпустить.

--очистить рисунок : Ctrl + двойной клик прямо по рисунку (или через меню).

двойной клик по слову или числу -- выделяет его
Ctrl+C -- скопировать выделенный кусочек текста
Ctrl+V -- вставить скопированный кусочек текста
Ctrl+X -- удалить выделенный кусочек текста
Чтобы выделять строки целиком: кликнуть в начало строки, тянуть мышкой вдоль левого края окна при нажатой кнопке мышки
i21sys/Docu/Characters.odc

DEFINITION i21sysCharacters;

	VAR
		Cap-: PROCEDURE (ch: CHAR): CHAR;
		ExtendedAsciiOf-: PROCEDURE (ch: CHAR): CHAR;
		HostFontsCHARSET-: INTEGER;
		IsCap-: PROCEDURE (ch: CHAR): BOOLEAN;
		IsDigit-: PROCEDURE (ch: CHAR): BOOLEAN;
		IsFirstIdentChar-: PROCEDURE (ch: CHAR): BOOLEAN;
		IsIdentChar-: PROCEDURE (ch: CHAR): BOOLEAN;
		IsLetter-: PROCEDURE (ch: CHAR): BOOLEAN;
		Lower-: PROCEDURE (ch: CHAR): CHAR;
		ToExtendedAscii-: PROCEDURE (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
		ToUnicode-: PROCEDURE (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
		ToUpper-: PROCEDURE (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
		UnicodeOf-: PROCEDURE (ch: CHAR): CHAR;
		Upper-: PROCEDURE (ch: CHAR): CHAR;
		charSetName-: ARRAY 64 OF CHAR;

END i21sysCharacters.

Currently available is only the Russsian version of documentation.

2012-05-04 info21
i21sys/Docu/Compiler.odc

i21sysCompiler

DEFINITION i21sysCompiler;

	IMPORT TextModels;

	VAR
		error-: BOOLEAN;
		off-: BOOLEAN;

	PROCEDURE Compile;
	PROCEDURE CompileAndReload;
	PROCEDURE ConvertCompileAndReload;
	PROCEDURE IndentGuard (VAR par: Dialog.Par);
	PROCEDURE ToggleIndentChecks;

END i21sysCompiler.

Tools to work with non-English keywords.
The documentation is currently available only in Russian.
i21sys/Docu/Cyrillic.odc

DEFINITION i21sysCyrillic;

	CONST
		HostFontsCHARSET = 0;

	VAR
		charSetName-: ARRAY 64 OF CHAR;

	PROCEDURE Cap (ch: CHAR): CHAR;
	PROCEDURE ExtendedAsciiOf (ch: CHAR): CHAR;
	PROCEDURE IsCap (ch: CHAR): BOOLEAN;
	PROCEDURE IsDigit (ch: CHAR): BOOLEAN;
	PROCEDURE IsFirstIdentChar (ch: CHAR): BOOLEAN;
	PROCEDURE IsIdentChar (ch: CHAR): BOOLEAN;
	PROCEDURE IsLetter (ch: CHAR): BOOLEAN;
	PROCEDURE Lower (ch: CHAR): CHAR;
	PROCEDURE ToExtendedAscii (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
	PROCEDURE ToUnicode (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
	PROCEDURE ToUpper (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
	PROCEDURE UnicodeOf (ch: CHAR): CHAR;
	PROCEDURE Upper (ch: CHAR): CHAR;

END i21sysCyrillic.

The full documentation is currently available only in the Russian version.

------------
info21
2012-05-04