Н. Вирт - Программирование на языке Модула-2 (1160777), страница 35
Текст из файла (страница 35)
Написать заголовок name,если он не пустой.Repaint - процедура перерисовки окна *)185PROCEDURE RedefGraphicWindow(u: Window; x,y,w,h: CARDINAL);(*Переопределить прямоугольник окна u*)PROCEDURE Clear(u: Window);(*Очистить окно u*)PROCEDURE CloseGraphicWindow(u: Window);(*Закрыть окно*)PROCEDURE SetMode(u: Window: я: Mode);(*Установить режим окна*)PROCEDURE Dot(u Window; x,y: CARDINAL);(*Поставить точку с координатами (х,у)*)PROCEDURE SetPen(u: Window; x,y: CARDINAL);(*Установить перо в точку (х,у) окна и*)PROCEDURE TurnTo(u: Window; angle: INTEGER);(*Установить текущее направление в окне и на угол angle *)PROCEDURE Turn(u: Window; angle: INTEGER);(*Повернуть текущее налравлоние окна на угол angle*)PROCEDURE Move(u: Window; d: CARDINAL);(*Передвинуть перо в текущем направлении на расстояние d*)PROCEDURE MoveTo(u: Window: x,y: CARDINAL);(*Передвинуть перо из текущего положения в точку (х,у)*)PROCEDURE Circle(u: Window; x,y,r: CARDINAL);(*Построить окружность с радиусом r и координатами (х,у)*)186PROCEDURE Area(u: Window; с: CARDINAL; x,y,w,h: CARDINAL);(*Закрасить прямоугольник с координатами х,у и размерами w,h цветом с *)PROCEDURE CopyArea(u: Window; sx,sy,dx,dy,dw,dh: CARDINAL);(*Скопировать прямоугольную область с координатами (sx,sy) в область с координатами(dx,dy), шириной dw и высотой dh*)PROCEDURE Write(u: Window; ch: CHAR);PROCEDURE WriteStrlng(u: Window; s: ARRAY OF CHAR);PROCEDURE IdentifyPos(VAR u: Window; VAR x,y: CARDINAL);END GraphicWindows.DEFINITION MODULE CursorMouse; (*J.Gutknecht, 17.11.83*)CONST ML = 15; MM = 14; MR = 13;TYPEPattern = RECORDheight: CARDINAL;raster: ARRAY [0..15] OF BITSETEND;ReadProc = PROCEDURE(VAR BITSET,VAR CARDINAL,VAR CARDINAL);PROCEDURE SetMouse(x,y: CARDINAL);(*Установить мышь в точку (х,у)*)PROCEDURE GetMouse(VAR s: BITSET: VAR x,y: CARDINAL);(*Получить текущее состояние мышиML IN s = "нажата левая кнопка мыши";MM IN s = "нажата средняя кнопка мыши";MR IN s = "нажата правая кнопка мыши"; *)187PROCEDURE ReadMouse(VAR s: BITSET; VAR x,y: CARDINAL);(*Переназначаемая процедура для имитации мыши*)PROCEDURE Assign(p: ReadProc);(*Переназначить процедуру ReadMouse*)PROCEDURE MoveCursor(x,y: CARDINAL);(*Передвинуть курсор в заданную позицию*)PROCEDURE EraseCursor;(*Убрать курсор с экрана*)PROCEDURE SetPattern(VAR p: Pattern);(*Установить собственный шаблон курсора*)PROCEDURE ResetPattern;(*Установить стандартный шаблон курсора*)END CursorMouse.DEFINITION MODULE Menu; (*J.Gutknecht,6.9.83*)PROCEDURE ShowMenu(X,Y: CARDINAL;VAR menu: ARRAY OF CHAR; VAR cmd: CARDINAL);(*menu = заголов{"|"элемент}.элемент = имя["("меню")"].имя = {литера}.заголов = имя.Непечатаемые литеры и превышающие максимальную длину имени игнорируются.Входное значение переменной cmd указывает на те команды, которые будутпервоначально выбраны.
Последовательность выбранных элементов возвращается в видевосьмеричных цифр значения переменной cmd справа налево.*)END Menu.DEFINITION MODULE Storage: (*SEK 5.10.80*)188FROM SYSTEM IMPORT ADDRESS;PROCEDURE ALLOCATE(VAR a: ADDRESS; size: CARDINAL);(*Выделяет участок памяти указанного размера size и возвращает его адрес в а. Еслипамять не может быть выделена, то программа завершается*)PROCEDURE DEALLOCATE(VAR a: ADDRESS; size: CARDINAL);(*Освобождает область памяти с адресом а и заданным размером size*)PROCEDURE Avallable(size: CARDINAL); BOOLEAN;(*Возвращает TRUE, если можно выделить "размер" слов процедурой ALLOCATE.*)END Storage.DEFINITION MODULE MathLib0;(*Стандартные Функции: J.Waldvogel/N.Wirth,10.12.80*)PROCEDURE sqrt(x: REAL): REAL;PROCEDURE exp(x: REAL): REAL;PROCEDURE ln(x: REAL): REAL;PROCEDURE sin(x: REAL): REAL;PROCEDURE cos(x: REAL): REAL;PROCEDURE arctan(x: REAL): REAL;PROCEDURE real(x: INTEGER): REAL;PROCEDURE entier(x: REAL): INTEGER;END MathLib0.ПРИЛОЖЕНИЕ 3ТАБЛИЦА ЛИТЕР КОДА ASCII020 40 60 100 120 140 1600nul dle0@Pp1soh dc1 !1AQаq2stx dc2 "2ВRЬr1893etx dc3 #3СSсs4eot dc4 $4DTdt5enq nak '/.5EUe6ack syn &fv7bel etb '67FGVUg10bscan (8H11htem9I12lfsub *:JZj13vtesc +;К[к14fffs15crgs-=M]16sors.>N^n17sius/?О_о),<LX\whYuxi1уz{|m}delЛитеры управления курсоромbsпробел назадhtгоризонтальная табуляцияlfперевод строкиvtвертикальная табуляцияffперевод Форматаcrвозврат кареткиЛитеры-разделителиfsразделитель Файловgsразделитель группrsразделитель записейusразделитель единицПРИЛОЖЕНИЕ 4СИНТАКСИЧЕСКИЕ ДИАГРАММЫ МОДУЛЫ-2190191192193194195196197198199200201202.