Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
▲ \Глагол\Отделы\Обмен\
(* Чтение из потока. (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Открыть-(имяфайла-:ЦЕПЬ):Поток; (* Открывает новый поток. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Закрыть-(поток+:Поток); (* Закрывает поток. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Конец-(поток:Поток):КЛЮЧ; (* Возвращает ВКЛ, если в потоке уже окончились данные. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Позиция-(поток:Поток):ЦЕЛ; (* Возвращает позицию, отсчитываемую от начала файла. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СменаПозиции-(поток:Поток; поз:ЦЕЛ); (* Меняет позицию чтения на <поз>, отсчитываемую от начала файла. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Ячейки-(поток:Поток; память+:ОБХОД.Ячейки; размер:ЦЕЛ); (* Читает в <память> определенное число ячеек. * При невозможности чтения заполняет ячейки нулями. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА БудетЗнак-(поток:Поток):ЗНАК; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакЦепи-(поток:Поток):ЗНАК; (* Считывает знак из потока. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Строка-(поток:Поток; цепь+:ЦЕПЬ); (* Считывает строку знаков из потока в цепочку знаков. При этом * конец строки "#000D#000A" не записывается в конец этой цепочки. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПропуститьСтроку-(поток:Поток); (* Пропускает в потоке строку знаков. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДлинаЦепь-(поток:Поток):ДЦепь; (* Читает длину цепочки и саму цепочку во вновь распределённую память *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НачалоСтроки-(поток:Поток):КЛЮЧ; (* Возвращает ВКЛ, если задача Строка или задача ПропуститьСтроку в прошлый раз * прочитали конец строки "#000D#000A". *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Целое-(поток:Поток; цОтвет+:ШИРЦЕЛ; вОтвет+:ШИРВЕЩ):КЛЮЧ; (* Считывает из потока знаковое представление числа. * Если это представление целого числа, то возвращает ВКЛ и записывает * значение числа в <цОтвет>, иначе возвращает ОТКЛ, а значение записывает * в <вОтвет>. * Следующий за числом знак остаётся в потоке. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ШирВещ-(поток:Поток):ШИРВЕЩ; ЗАДАЧА Вещ-(поток:Поток):ВЕЩ; ЗАДАЧА ШирЦел-(поток:Поток):ШИРЦЕЛ; (* Запись в поток. (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Открыть-(имяфайла-:ЦЕПЬ):Поток; (* Открывает новый поток для записи данных. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Пополнить-(имяфайла-:ЦЕПЬ):Поток; (* Открывает поток для записи данных в его конец. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Сбросить-(поток:Поток); (* Сбрасывает в файл данные из ПП потока-записи. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Закрыть-(поток+:Поток); (* Сначала сбрасывает в файл данные из ПП, а потом закрывает поток. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Позиция-(поток:Поток):ЦЕЛ; (* Возвращает позицию, отсчитываемую от начала файла. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СменаПозиции-(поток:Поток; поз:ЦЕЛ); (* Меняет позицию записи на <поз>, отсчитываемую от начала файла. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Ячейки-(поток:Поток; память-:ОБХОД.Ячейки; размер:ЦЕЛ); (* Записывает определенное число ячеек. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакЦепи-(поток:Поток; знак:ЗНАК); (* Записывает в поток один знак без обработки '^'. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакиЦепи-(поток:Поток; цепь-:ЦЕПЬ); (* Записывает цепочку знаков без обработки '^'. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДлинаЦепь-(поток:Поток; цепь-:ЦЕПЬ); (* Записывает длину и саму цепочку. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Цепь-(поток:Поток; цепь-:ЦЕПЬ); (* Записывает цепочку знаков. '^' обозначает конец строки. *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧЦел-(поток:Поток; описание-:ЦЕПЬ; ц0,ц1,ц2,ц3:ШИРЦЕЛ); (* Записывает текст из 4-х целых чисел, используя заданное описание *) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧВещ-(поток:Поток; описание-:ЦЕПЬ; в0,в1,в2,в3:ШИРВЕЩ); (* Записывает текст из 4-х вещественных чисел, используя заданное описание *) (******************************************************************************* * НАЗНАЧЕНИЕ: работа с параметрами запуска Приложения * ******************************************************************************* * Этот отдел предлагает средства для доступа к командной строке, которая была * * передана программе при запуске. Имеется возможность обращаться к ней как * * целиком, так и к каждому отдельному параметру. * * Причем подразумевается, что параметры разделяются в командной строке * * пробелами, запятыми или и тем, и другим вместе. Параметры, которые должны * * содержать пробелы или запятые, должны заключаться в кавычки. * *******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Текст-(номер:ЦЕЛ; текст+:ЦЕПЬ); (* Параметр под номером <номер> переписывается в <текст>. * Если выбран несуществующий параметр, то возвращает пустую цепочку. *) (* НАЗНАЧЕНИЕ: вывод на экран *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакЦепи-(зн:ЗНАК); (* Выводит <зн> в файл экрана. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Цепь-(цепь-:ЦЕПЬ); (* Записывает цепочку знаков в файл экрана. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧЦел-(описание-:ЦЕПЬ; ц0,ц1,ц2,ц3:ШИРЦЕЛ); (* Записывает текст из 4-х целых чисел в файл экрана, * используя заданное описание. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧВещ-(описание-:ЦЕПЬ; в0,в1,в2,в3:ШИРВЕЩ); (* Записывает текст из 4-х вещественных чисел в файл экрана, * используя заданное описание. *) (* НАЗНАЧЕНИЕ: ввод от Клавиатуры и Мышки *) ВИД (* Абстрактный набор - предок других наборов *) Посылка- = НАБОР КОН; ОтКлавиш- = НАБОР(Посылка) код+:ЦЕЛ; (* рабочий код клавиши, код:=0 после отработки *) знак+:ЗНАК; упрКнопки+:МНОЖ; упрШифт+:КЛЮЧ; (* есть управление от шифт *) упрКонтр+:КЛЮЧ; (* есть управление от контр *) упрАльт+:КЛЮЧ; (* есть управление от альт *) мкод+:ЦЕЛ; (* машинный код клавиши *) КОН; ОтМышки- = НАБОР(Посылка) к+,с+:ЦЕЛ; кнопки+:МНОЖ; упрКнопки+:МНОЖ; события+:МНОЖ; прокрут+:ЦЕЛ; (* щелчков колёсика *) отработана+:КЛЮЧ; (* выставляет получатель *) КОН; (****************************************************************************** * НАЗНАЧЕНИЕ: работа в Оболочке с ".CHM"-справочником средствами ОС Win32 * ПРИМЕЧАНИЯ: вызов ОС происходит через Spravka.DLL ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Ключ-(ключ-:ЦЕПЬ); (* Цель: поиск разделов по ключевому слову *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Номер-(номер:ЦЕЛ); (* Цель: поиск раздела по его номеру *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Раздел-(раздел-:ЦЕПЬ); (* Цель: поиск раздела по его .htm имени *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Подготовить-(имяФ-:ЦЕПЬ); (* Цель: подготовить вызовы внешних задач * До: <имяФ> - полное имя файла .CHM справочника *) (****************************************************************************** * НАЗНАЧЕНИЕ: работа с файлами * * ОБОЗНАЧЕНИЯ: место - местоположение файла на определенном накопителе * * путь - местоположение файла или относительный путь к файлу * ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НайтиМесто-(отместа-,путь-,место+:ЦЕПЬ); (* Находит местоположение файла <место>, зная путь <путь> из точки <отместа>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазобратьИмя-(пимя-,путь+,имя+,тип+:ЦЕПЬ); (* Переписывает из цепочки с полным именем файла <пимя> в <путь> путь к файлу, * в <имя> имя файла без его типа, в <тип> тип файла. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СобратьИмя-(пимя+,путь-,имя-,тип-:ЦЕПЬ); (* Собирает полное имя файла <пимя> из пути к файлу <путь>, * имени файла без его типа <имя> и типа файла <тип>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПутьИзПолного-(пимя-,путь+:ЦЕПЬ); (* Переписывает из цепочки с полным именем файла <пимя> в цепочку <путь> * путь к файлу (включая УКАЗание диска и "\" перед именем файла). *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИмяИзПолного-(пимя-,имя+:ЦЕПЬ); (* Переписывает из цепочки с полным именем файла <пимя> в цепочку <имя> * имя файла. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИмяТипИзПолного-(пимя-,имятип+:ЦЕПЬ); (* Переписывает из цепочки с полным именем файла <пимя> в цепочку <имятип> * имя и тип (расширение) файла. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ТипИзПолного-(пимя-,тип+:ЦЕПЬ); (* Переписывает из цепочки с полным именем файла <пимя> в цепочку <тип> * тип (расширение) файла. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзменитьТип-(пимя+,тип-:ЦЕПЬ); (* Изменяет тип (расширение) в полном имени файла <пимя> на <тип>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Существует-(имя-:ЦЕПЬ):КЛЮЧ; (* Возвращает ВКЛ, если существует файл с именем <имя>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВремяИзменения-(имя-:ЦЕПЬ; время+:Время); (* Возвращает <время> изменения файла <имя> или -1. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Размер-(имя-:ЦЕПЬ):ЦЕЛ; (* Возвращает размер файла <имя> или -1. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Найти-(имя-,тип-,пути-,пимя+:ЦЕПЬ):КЛЮЧ; (* Ищет файл с именем <имя> и типом <тип> в списке путей нахождения файла * <пути>. Пути нахождения файла перечислены в цепочке <пути> через точку * с запятой. Если файл найден, то в цепочку <пимя> задача записывает полный * путь к этому файлу и возвращает ВКЛ, в противном случае возвращает ОТКЛ. *) (* НАЗНАЧЕНИЕ: определение цветного Знака *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЗнакаИЦвета-(знак,цвет:ЗНАК; цвЗнак+:Вид); (* Цель: запись знака и его цвета в ЦвЗнак *) (* НАЗНАЧЕНИЕ: Чтение и Запись настроек Приложения *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПропуститьПримечания-(поток:Читать.Поток); (* Пропускает в потоке строки, начинающиеся с ";". *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧитатьСтроку-(поток:Читать.Поток; строка+:ЦЕПЬ); ЗАДАЧА ЧитатьКлюч-(поток:Читать.Поток):КЛЮЧ; ЗАДАЧА ЧитатьЦел-(поток:Читать.Поток):ЦЕЛ; ЗАДАЧА ПисатьПримечания-(поток:Писать.Поток; примечания-:ЦЕПЬ); ЗАДАЧА ПисатьСтроку-(поток:Писать.Поток; примечания-,строка-:ЦЕПЬ); ЗАДАЧА ПисатьКлюч-(поток:Писать.Поток; примечания-:ЦЕПЬ; ключ:КЛЮЧ); ЗАДАЧА ПисатьЦел-(поток:Писать.Поток; примечания-:ЦЕПЬ; число:ЦЕЛ); (* НАЗНАЧЕНИЕ: ввод и вывод текста на Графическое или Консольное окно *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Графическое-(имяПриложения-,имяШрифта-:ЦЕПЬ; размерШрифта:ЦЕЛ; задачаЧасы:ГОС.ВидЗадачиЧасы); (* Цель: подготовка к работе графического окна *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Текстовое-(задачаЧасы:КОС.ВидЗадачиЧасы); (* Цель: подготовка к работе консольного окна *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Пробел-(вс,лк,нс,пк:ЦЕЛ); (* Заполняет прямоугольник пробелом. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Цвет-(вс,лк,нс,пк:ЦЕЛ; цвет:ЗНАК); (* Устанавливает цвет прямоугольника. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЦветнойПробел-(вс,лк,нс,пк:ЦЕЛ; цвет:ЗНАК); (* Заполняет прямоугольник пробелом заданного цвета. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Тень-(вс,лк,нс,пк:ЦЕЛ); (* Снаружи прямоугольника рисует тень. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Рамка1-(вс,лк,нс,пк:ЦЕЛ); (* Обрамляет прямоугольник одинарной линией. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Рамка2-(вс,лк,нс,пк:ЦЕЛ); (* Обрамляет прямоугольник двойной линией. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Черта-(вс,лк,нс,пк:ЦЕЛ); (* Рисует горизонтальную или вертикальную черту, учитывая пересечения. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Цепь-(вс,лк,нс,пк:ЦЕЛ; цепь-:ЦЕПЬ); (* Записывает цепочку знаков в прямоугольную область. *) |
(* НАЗНАЧЕНИЕ: взаимодействие с ОС - операционной системой Win32 *) (* используемые Win задачи *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetProcAddress(hModule,lpProcName:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetProcAddress" ИЗ "kernel32.dll"; ЗАДАЧА GetProcessHeap():ЦЕЛ; ВЫЗОВ "GetProcessHeap" ИЗ "kernel32.dll"; ЗАДАЧА HeapAlloc(hHeap,dwFlags,dwBytes:ЦЕЛ):ЦЕЛ; ВЫЗОВ "HeapAlloc" ИЗ "kernel32.dll"; ЗАДАЧА HeapFree(hHeap,dwFlags,lpMem:ЦЕЛ); ВЫЗОВ "HeapFree" ИЗ "kernel32.dll"; ЗАДАЧА CloseHandle(hObject:ЦЕЛ); ВЫЗОВ "CloseHandle" ИЗ "kernel32.dll"; ЗАДАЧА FindClose(hFindFile:ЦЕЛ); ВЫЗОВ "FindClose" ИЗ "kernel32.dll"; ЗАДАЧА GlobalAlloc(uFlags,dwBytes:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GlobalAlloc" ИЗ "kernel32.dll"; ЗАДАЧА GlobalLock(hMem:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GlobalLock" ИЗ "kernel32.dll"; ЗАДАЧА GlobalUnlock(hMem:ЦЕЛ); ВЫЗОВ "GlobalUnlock" ИЗ "kernel32.dll"; ЗАДАЧА GlobalFree(hMem:ЦЕЛ); ВЫЗОВ "GlobalFree" ИЗ "kernel32.dll"; ЗАДАЧА LocalAlloc(uFlags,uBytes:ЦЕЛ):ЦЕЛ; ВЫЗОВ "LocalAlloc" ИЗ "kernel32.dll"; ЗАДАЧА LocalFree(hMem:ЦЕЛ):ЦЕЛ; ВЫЗОВ "LocalFree" ИЗ "kernel32.dll"; ЗАДАЧА GetStdHandle(nStdHandle:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetStdHandle" ИЗ "kernel32.dll"; ЗАДАЧА WaitForSingleObject(hHandle,dwMilliseconds:ЦЕЛ); ВЫЗОВ "WaitForSingleObject" ИЗ "kernel32.dll"; ЗАДАЧА SetEnvironmentVariable(lpName-,lpValue-:ЦЕПЬ); ВЫЗОВ "SetEnvironmentVariableW" ИЗ "kernel32.dll"; ЗАДАЧА GetFileAttributes(lpFileName-:ЦЕПЬ):ЦЕЛ; ВЫЗОВ "GetFileAttributesW" ИЗ "kernel32.dll"; ЗАДАЧА GetCommandLine():ЦЕЛ; ВЫЗОВ "GetCommandLineW" ИЗ "kernel32.dll"; ЗАДАЧА CreateDirectory(lpPathName-:ЦЕПЬ; lpSecurityAttributes:ЦЕЛ):КЛЮЧ; ВЫЗОВ "CreateDirectoryW" ИЗ "kernel32.dll"; ЗАДАЧА ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead+,lpOverlapped:ЦЕЛ):ЦЕЛ; ВЫЗОВ "ReadFile" ИЗ "kernel32.dll"; ЗАДАЧА WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten+,lpOverlapped:ЦЕЛ); ВЫЗОВ "WriteFile" ИЗ "kernel32.dll"; ЗАДАЧА SetFilePointer(hFile,lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod:ЦЕЛ):ЦЕЛ; ВЫЗОВ "SetFilePointer" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА CreateProcess(lpApplicationName:ЦЕЛ; lpCommandLine-:ЦЕПЬ; lpProcessAttributes,ThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory:ЦЕЛ; lpStartupInfo+:STARTUPINFO; lpProcessInformation+:PROCESS_INFORMATION):ЦЕЛ; ВЫЗОВ "CreateProcessW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetEnvironmentVariable(lpName-,lpBuffer+:ЦЕПЬ; nSize:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetEnvironmentVariableW" ИЗ "kernel32.dll"; ЗАДАЧА SetFileAttributes(lpFileName-:ЦЕПЬ; dwFileAttributes:МНОЖ); ВЫЗОВ "SetFileAttributesW" ИЗ "kernel32.dll"; ЗАДАЧА FindFirstFile(lpFileName-:ЦЕПЬ; lpFindFileData+:ПоискФ):ЦЕЛ; ВЫЗОВ "FindFirstFileW" ИЗ "kernel32.dll"; ЗАДАЧА FindNextFile(hFindFile:ЦЕЛ; lpFindFileData+:ПоискФ):ЦЕЛ; ВЫЗОВ "FindNextFileW" ИЗ "kernel32.dll"; ЗАДАЧА GetCurrentDirectory(nBufferLength:ЦЕЛ; lpBuffer-:ЦЕПЬ):ЦЕЛ; ВЫЗОВ "GetCurrentDirectoryW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetFullPathName(lpFileName-:ЦЕПЬ; nBufferLength:ЦЕЛ; lpBuffer-:ЦЕПЬ; lpFilePart+:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetFullPathNameW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА CreateFile(lpFileName-:ЦЕПЬ; dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile:ЦЕЛ):ЦЕЛ; ВЫЗОВ "CreateFileW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА LoadKeyboardLayout(pwszKLID-:ЦЕПЬ; Flags:ЦЕЛ):ЦЕЛ; ВЫЗОВ "LoadKeyboardLayoutW" ИЗ "user32.dll"; ЗАДАЧА VkKeyScanEx(ch:ЗНАК; dwhkl:ЦЕЛ):ЦЕЛ; ВЫЗОВ "VkKeyScanExW" ИЗ "user32.dll"; ЗАДАЧА OpenClipboard(hWndNewOwner:ЦЕЛ):КЛЮЧ; ВЫЗОВ "OpenClipboard" ИЗ "user32.dll"; ЗАДАЧА CloseClipboard(); ВЫЗОВ "CloseClipboard" ИЗ "user32.dll"; ЗАДАЧА EmptyClipboard(); ВЫЗОВ "EmptyClipboard" ИЗ "user32.dll"; ЗАДАЧА SetClipboardData(uFormat,hMem:ЦЕЛ); ВЫЗОВ "SetClipboardData" ИЗ "user32.dll"; ЗАДАЧА GetClipboardData(uFormat:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetClipboardData" ИЗ "user32.dll"; ЗАДАЧА IsClipboardFormatAvailable(format:ЦЕЛ):КЛЮЧ; ВЫЗОВ "IsClipboardFormatAvailable" ИЗ "user32.dll"; |
(*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Связаться-(имя-:ЦЕПЬ):ЦЕЛ; ВЫЗОВ "LoadLibraryW" ИЗ "kernel32.dll"; (* Связывание с ДПБ, имя которой <имя>. Возвращает ссылку на ДПБ или 0. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Отвязаться-(ссылка:ЦЕЛ); ВЫЗОВ "FreeLibrary" ИЗ "kernel32.dll"; (* Отказ от использования ДПБ. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьФ-(имя-:ЦЕПЬ):КЛЮЧ; ВЫЗОВ "DeleteFileW" ИЗ "kernel32.dll"; (* Удаляет файл с именем <имя>, возвращая ВКЛ в случае успеха. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПереименоватьФ-(староеимя-,новоеимя-:ЦЕПЬ):КЛЮЧ; ВЫЗОВ "MoveFileW" ИЗ "kernel32.dll"; (* Переименовывает файл со <староеимя> на <новоеимя>. * При успешном выполнении возвращает ВКЛ. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Время-():ЦЕЛ; ВЫЗОВ "GetTickCount" ИЗ "kernel32.dll"; (* Возвращает время в мс, прошедшее от запуска Win. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Спать-(мс:ЦЕЛ); ВЫЗОВ "Sleep" ИЗ "kernel32.dll"; (* Приостановить работу приложения на <мс> миллисекунд. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА КоторыйЧас-(сейчас+:Сейчас); ВЫЗОВ "GetSystemTime" ИЗ "kernel32.dll"; ЗАДАЧА Гудок-(частота,длительность:ЦЕЛ); ВЫЗОВ "Beep" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьП-(имя-:ЦЕПЬ):КЛЮЧ; (* Создаёт папку с именем <имя>, возвращая ВКЛ в случае успеха. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗакрытьФ-(фссылка:ЦЕЛ); (* Закрывает файл по ссылке <фссылка>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ФДляЧтения-(имя-:ЦЕПЬ):ЦЕЛ; (* Открывает файл <имя> для чтения. При неудаче возвращает 0. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ФДляЗаписи-(имя-:ЦЕПЬ):ЦЕЛ; (* Создает файл <имя> для записи. При неудаче возвращает 0. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ФДляПополнения-(имя-:ЦЕПЬ):ЦЕЛ; (* Открывает (или создает, если не существует) файл с именем <имя> для записи * данных в его конец. При неудаче возвращает 0. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧитатьФ-(фссылка:ЦЕЛ; память+:ОБХОД.Ячейки; размер:ЦЕЛ):ЦЕЛ; (* Читает из файла по ссылке <фссылка> в <память> данные размером <размер> ячеек. * Возвращает число прочитанных ячеек. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьФ-(фссылка:ЦЕЛ; память-:ОБХОД.Ячейки; размер:ЦЕЛ); (* Записывает в <фссылка> из <память> данные размером <размер> ячеек. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СвойстваФ-(имя-:ЦЕПЬ):МНОЖ; (* Возвращает свойства файла <имя>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СменаСвойствФ-(имя-:ЦЕПЬ; свойства:МНОЖ); (* Меняет свойства файла <имя> на <свойства>. Свойства можно * получать, объединяя постоянные <сф_>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПозицияФ-(фссылка:ЦЕЛ):ЦЕЛ; (* Возвращает позицию, отсчитываемую от начала открытого файла с ссылкой <фссылка>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СменаПозицииФ-(фссылка,позиция:ЦЕЛ); (* Меняет позицию в открытом файле с сылкой <фссылка> на <позиция>, * отсчитываемую от начала файла. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПервыйПоискФ-(путь-:ЦЕПЬ; поиск+:ПоискФ):КЛЮЧ; (* Начинает поиск файлов в каталоге по образцу <путь>. * Например, "C:\Глагол\*.отд". При успешном завершении возвращает * ВКЛ, а результаты поиска заносятся в поисковый набор <поиск>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СледующийПоискФ-(поиск+:ПоискФ):КЛЮЧ; (* Продолжает поиск начатый действием <ПервыйПоискФ>. При успешном завершении * возвращает ВКЛ и результаты поиска заносятся в поисковый набор <поиск>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОкончитьПоискФ-(поиск+:ПоискФ); (* Оканчивает поиск начатый <ПервыйПоискФ>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ТекущийПутьФ-(дискпуть+:ЦЕПЬ); (* Записывает в <дискпуть> текущий путь. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА МестоФ-(имя-,место+:ЦЕПЬ); (* Переводит имя файла <имя> в местоположение файла <место>. Относительное * имя <имя> может содержать ".\" и "..". Если <имя> не содержит название * диска, то подставляется название текущего диска. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПолучитьКомСтроку-(куда+:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВзятьПамять-(размер:ЦЕЛ):ЦЕЛ; (* Берёт у ОС кусок памяти в <размер> ячеек и обнуляет его. * Возвращает <адрес> этого куска и ссылку Win на него. * <ссылка> равная 0 означает, что Win не выделила память. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтдатьПамять-(адрес:ЦЕЛ); (* Отдаёт в ОС кусок памяти, взятый до этого с помощью ВзятьПамять. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЦепочкуВОбменник-(цепь-:ЦЕПЬ); ЗАДАЧА РазмерЦепочкиОбменника-():ЦЕЛ; ЗАДАЧА ЦепочкуИзОбменника-(цепь+:ЦЕПЬ); ЗАДАЧА ЧитатьИзПерОкружения-(имя-,значение+:ЦЕПЬ); ЗАДАЧА ПисатьВПерОкружения-(имя-,значение-:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вызов-(комСтрока-:ЦЕПЬ); (* Цель: отработка команды ОС без завершения оболочки ОС * До: <комСтрока> - отрабатываемая командная строка *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВызовВФайл-(комСтрока-,имяФ-:ЦЕПЬ); (* Цель: отработка команды ОС с сохранением вывода в текстовый файл * и завершением оболочки ОС * До: <комСтрока> - отрабатываемая командная строка * <имяФ> - имя выходного текстового файла *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВинЗнакВКодКлавиши-(знак:ЗНАК):ЦЕЛ; (* Цель: перевод знака в код соответствующей клавиши *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА АдресЗадачи-(ссылка:ЦЕЛ; имя-:ЦЕПЬ):ЦЕЛ; (* Возвращает адрес задачи из связанной по ссылке <ссылка> ДПБ, * имя которой <имя>. *) |
(* НАЗНАЧЕНИЕ: взаимодействие с КОС - Консольной Оконной Системой *) (* используемые Win задачи *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetConsoleMode( hConsoleHandle, dwMode:ЦЕЛ); ВЫЗОВ "SetConsoleMode" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetNumberOfConsoleInputEvents( hConsoleInput, lpNumberOfEvents+:ЦЕЛ); ВЫЗОВ "GetNumberOfConsoleInputEvents" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ReadConsoleInput( hConsoleInput:ЦЕЛ; lpBuffer+:ОтМышки; nLength, lpNumberOfEventsRead+:ЦЕЛ); ВЫЗОВ "ReadConsoleInputW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА WaitForSingleObject( hHandle, dwMilliseconds:ЦЕЛ); ВЫЗОВ "WaitForSingleObject" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ReadConsoleOutputCharacter( hConsoleOutput:ЦЕЛ; lpCharacter+:ЗНАК; nLength, dwReadCoord, lpNumberOfCharsRead+:ЦЕЛ); ВЫЗОВ "ReadConsoleOutputCharacterW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА WriteConsoleOutputCharacter( hConsoleOutput:ЦЕЛ; lpCharacter+:ЗНАК; nLength, dwWriteCoord, lpNumberOfCharsWritten+:ЦЕЛ); ВЫЗОВ "WriteConsoleOutputCharacterW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ReadConsoleOutputAttribute( hConsoleOutput:ЦЕЛ; lpAttribute+:ЗНАК; nLength, dwReadCoord, lpNumberOfAttrsRead+:ЦЕЛ); ВЫЗОВ "ReadConsoleOutputAttribute" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА WriteConsoleOutputAttribute( hConsoleOutput:ЦЕЛ; lpAttribute+:ЗНАК; nLength, dwWriteCoord, lpNumberOfAttrsWritten+:ЦЕЛ); ВЫЗОВ "WriteConsoleOutputAttribute" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА WriteConsoleOutput( hConsoleOutput:ЦЕЛ; lpBuffer-:ЦвЗнак.Строка; dwBufferSize, dwBufferCoord:ЦЕЛ; lpWriteRegion-:Область); ВЫЗОВ "WriteConsoleOutputW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetConsoleCursorPosition( hConsoleOutput, dwCursorPosition:ЦЕЛ); ВЫЗОВ "SetConsoleCursorPosition" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetConsoleCursorInfo( hConsoleOutput:ЦЕЛ; lpConsoleCursorInfo+:СостояниеУказки); ВЫЗОВ "SetConsoleCursorInfo" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ScrollConsoleScreenBuffer( hConsoleOutput:ЦЕЛ; lpScrollRectangle+, lpClipRectangle+:Область; dwDestinationOrigin:ЦЕЛ; lpFill-:ЦвЗнак.Вид); ВЫЗОВ "ScrollConsoleScreenBufferW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetLargestConsoleWindowSize( hConsoleOutput:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetLargestConsoleWindowSize" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetConsoleScreenBufferSize( hConsoleOutput,dwSize:ЦЕЛ); ВЫЗОВ "SetConsoleScreenBufferSize" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetConsoleWindowInfo( hConsoleOutput, bAbsolute:ЦЕЛ; lpConsoleWindow-:Область); ВЫЗОВ "SetConsoleWindowInfo" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА timeSetEvent( uDelay, uResolution:ЦЕЛ; lpTimerProc:TIMERPROC; dwUser, fuEvent:ЦЕЛ):ЦЕЛ; ВЫЗОВ "timeSetEvent" ИЗ "winmm.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА timeKillEvent(uTimerID:ЦЕЛ); ВЫЗОВ "timeKillEvent" ИЗ "winmm.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА* Часы(uID,uMsg,dwUser,dw1,dw2:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Подготовить-(задачаЧасы:ВидЗадачиЧасы); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Отработать-; (* заглушка для совместимости с ГОС *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПоказатьОкно-; (* заглушка для совместимости с ГОС *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьЧасы-(номер,время:ЦЕЛ):ЦЕЛ; (* Цель: добавляет новые, или заменяет старые часы * До: <номер> - опознавательный номер часов * <время> - время повторения срабатывания данных часов в мс *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьЧасы-(часы:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазмерЭкрана-(строк+,колонок+:ЦЕЛ); (* Цель: возвращает размер экрана *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзменитьРазмерОкна-(строк,колонок:ЦЕЛ); (* Цель: изменить размер окна приложения *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Опрос-(отКлавиш+:Ввод.ОтКлавиш; отМышки+:Ввод.ОтМышки):ЦЕЛ; ЗАДАЧА ПереместитьУказку-(с,к:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазмерУказки-(размер:ЦЕЛ); (* <размер> указывается в процентах, * при <размер> = 0 указка убирается с экрана *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьЗнак-(с,к:ЦЕЛ; зн:ЗНАК); ЗАДАЧА ЧитатьЗнак-(с,к:ЦЕЛ):ЗНАК; ЗАДАЧА ПисатьЦвет-(с,к:ЦЕЛ; цв:ЗНАК); ЗАДАЧА ЧитатьЦвет-(с,к:ЦЕЛ):ЗНАК; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вверх-(вс,лк,нс,пк:ЦЕЛ; новЗнак-:ЦвЗнак.Вид); (* Цель: сдвиг содержимого заданной области вверх * До: <вс>,<лк>,<нс>,<пк> - границы области на окне * <новЗнак> - знак для заполнения освободившегося места *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вниз-(вс,лк,нс,пк:ЦЕЛ; новЗнак-:ЦвЗнак.Вид); (* Цель: сдвиг содержимого данной области вниз * До: <вс>,<лк>,<нс>,<пк> - границы области на окне * <новЗнак> - знак для заполнения освободившегося места *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьСтроку-(цвСтрока-:ЦвЗнак.Строка; с,к,длина:ЦЕЛ); (* Цель: отрисовка содержимого строки * До: <с>,<к> - начало строки на экране * <длина> - длина строки *) (* НАЗНАЧЕНИЕ: взаимодействие с ГОС - Графической Оконной Системой *) (****************************************************************************** * Взаимодействие с ОС Win32 ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetModuleHandle(lpModuleName:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetModuleHandleW" ИЗ "kernel32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА CreateWindowEx( dwExStyle:ЦЕЛ; lpClassName-, lpWindowName-:ЦЕПЬ; dwStyle, X,Y, nWidth,nHeight, hWndParent, hMenu, hInstance, lpParam:ЦЕЛ):ЦЕЛ; ВЫЗОВ "CreateWindowExW" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetMessage( lpMsg+:MSG; hWnd, wMsgFilterMin, wMsgFilterMax:ЦЕЛ); ВЫЗОВ "GetMessageW" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА PeekMessage( lpMsg+:MSG; hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg:ЦЕЛ):ЦЕЛ; ВЫЗОВ "PeekMessageW" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА DispatchMessage(lpMsg+:MSG); ВЫЗОВ "DispatchMessageW" ИЗ "user32.dll"; ЗАДАЧА BeginPaint(hWnd:ЦЕЛ; lpPaint+:PAINTSTRUCT):ЦЕЛ; ВЫЗОВ "BeginPaint" ИЗ "user32.dll"; ЗАДАЧА EndPaint(hWnd:ЦЕЛ; lpPaint+:PAINTSTRUCT); ВЫЗОВ "EndPaint" ИЗ "user32.dll"; ЗАДАЧА GetClientRect(hWnd:ЦЕЛ; lpRect+:RECT); ВЫЗОВ "GetClientRect" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА InvalidateRect(hWnd:ЦЕЛ; lpRect-:RECT; bErase:ЦЕЛ); ВЫЗОВ "InvalidateRect" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА DefWindowProc(hWnd,Msg,wParam,lParam:ЦЕЛ):ЦЕЛ; ВЫЗОВ "DefWindowProcW" ИЗ "user32.dll"; ЗАДАЧА LoadIcon(hInstance,lpIconName:ЦЕЛ):ЦЕЛ; ВЫЗОВ "LoadIconW" ИЗ "user32.dll"; ЗАДАЧА LoadCursor(hInstance:ЦЕЛ; lpCursorName:ЦЕЛ):ЦЕЛ; ВЫЗОВ "LoadCursorW" ИЗ "user32.dll"; ЗАДАЧА RegisterClass(lpWndClass+:WNDCLASS); ВЫЗОВ "RegisterClassW" ИЗ "user32.dll"; ЗАДАЧА ShowWindow(hWnd,nCmdShow:ЦЕЛ); ВЫЗОВ "ShowWindow" ИЗ "user32.dll"; ЗАДАЧА GetDC(hWnd:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetDC" ИЗ "user32.dll"; ЗАДАЧА ReleaseDC(hWnd,hdc:ЦЕЛ); ВЫЗОВ "ReleaseDC" ИЗ "user32.dll"; ЗАДАЧА CreateCaret(hWnd,hBitmap,nWidth,nHeight:ЦЕЛ); ВЫЗОВ "CreateCaret" ИЗ "user32.dll"; ЗАДАЧА SetCaretPos(X,Y:ЦЕЛ); ВЫЗОВ "SetCaretPos" ИЗ "user32.dll"; ЗАДАЧА ShowCaret(hWnd:ЦЕЛ); ВЫЗОВ "ShowCaret" ИЗ "user32.dll"; ЗАДАЧА DestroyCaret(); ВЫЗОВ "DestroyCaret" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА AdjustWindowRect(lpRect+:RECT; dwStyle, bMenu:ЦЕЛ); ВЫЗОВ "AdjustWindowRect" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetWindowPos(hWnd,hWndIA,X,Y,cx,cy,uFlags:ЦЕЛ); ВЫЗОВ "SetWindowPos" ИЗ "user32.dll"; ЗАДАЧА GetKeyboardState(состояние+:СостояниеКлавиш); ВЫЗОВ "GetKeyboardState" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ToUnicode( wVirtKey, wScanCode:ЦЕЛ; состояние+:СостояниеКлавиш; знак+:ЗНАК; cchBuff,wFlags:ЦЕЛ); ВЫЗОВ "ToUnicode" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SetTimer(окно,номер,время:ЦЕЛ; задача:TIMERPROC):ЦЕЛ; ВЫЗОВ "SetTimer" ИЗ "user32.dll"; ЗАДАЧА KillTimer(окно,номер:ЦЕЛ); ВЫЗОВ "KillTimer" ИЗ "user32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ExtTextOut( hdc, x,y, fuOptions:ЦЕЛ; lprc+:RECT; lpString+:ЗНАК; cbCount,lpDx:ЦЕЛ); ВЫЗОВ "ExtTextOutW" ИЗ "gdi32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetTextExtentPoint32( hdc:ЦЕЛ; lpString-:ЦЕПЬ; chars:ЦЕЛ; lpSize+:SIZE); ВЫЗОВ "GetTextExtentPoint32W" ИЗ "gdi32.dll"; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА SelectObject(hdc,hgdiobj:ЦЕЛ); ВЫЗОВ "SelectObject" ИЗ "gdi32.dll"; ЗАДАЧА CreateFontIndirect(lplf-:LOGFONT):ЦЕЛ; ВЫЗОВ "CreateFontIndirectW" ИЗ "gdi32.dll"; ЗАДАЧА DeleteObject(hObject:ЦЕЛ); ВЫЗОВ "DeleteObject" ИЗ "gdi32.dll"; ЗАДАЧА GetDeviceCaps(hdc,nIndex:ЦЕЛ):ЦЕЛ; ВЫЗОВ "GetDeviceCaps" ИЗ "gdi32.dll"; ЗАДАЧА SetTextColor(hdc,crColor:ЦЕЛ); ВЫЗОВ "SetTextColor" ИЗ "gdi32.dll"; ЗАДАЧА SetBkColor(hdc,crColor:ЦЕЛ); ВЫЗОВ "SetBkColor" ИЗ "gdi32.dll"; ЗАДАЧА SetTextAlign(_para1,para2:ЦЕЛ); ВЫЗОВ "SetTextAlign" ИЗ "gdi32.dll"; |
(****************************************************************************** * Знаки на экране ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьУказку; ЗАДАЧА УдалитьУказку; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Запятнать(вс,лк,нс,пк:ЦЕЛ); (* Цель: пометить данную область, как требующую перирисовки * До: <вс>,<лк>,<нс>,<пк> - границы области *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Отрисовка; ЗАДАЧА Клавиши(код,мкод:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА* ОконнаяЗадача(hWnd,message,wParam,lParam:ЦЕЛ):ЦЕЛ; (* Вызывается из ОС *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Подготовить-(имяПриложения-, имяШрифта-:ЦЕПЬ; размерШрифта:ЦЕЛ; задачаЧасы:ВидЗадачиЧасы); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Отработать-; (* Цель: внутренняя отработка ОС накопившихся посылок *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПоказатьОкно-; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьЧасы-(номер,время:ЦЕЛ):ЦЕЛ; (* Цель: добавляет новые, или заменяет старые часы * До: <номер> - опознавательный номер часов * <время> - время повторения срабатывания данных часов в мс * Ответ: номер для удаления часов *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьЧасы-(часы:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазмерЭкрана-(строк+,колонок+:ЦЕЛ); (* Цель: возвращает размер экрана *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзменитьРазмерОкна-(строк,колонок:ЦЕЛ); (* Цель: изменить размер окна *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Опрос-(отКлавиш+:Ввод.ОтКлавиш; отМышки+:Ввод.ОтМышки):ЦЕЛ; (* Цель: опрос ОС на наличие посылок от пользователя *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПереместитьУказку-(с,к:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазмерУказки-(размер:ЦЕЛ); (* <размер> указывается в процентах, * при <размер> = 0 указка убирается с экрана *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьЦвет-(с,к:ЦЕЛ; цвет:ЗНАК); ЗАДАЧА ПисатьЗнак-(с,к:ЦЕЛ; знак:ЗНАК); ЗАДАЧА ЧитатьЗнак-(с,к:ЦЕЛ):ЗНАК; ЗАДАЧА ЧитатьЦвет-(с,к:ЦЕЛ):ЗНАК; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьСтроку-(цвСтрока-:ЦвЗнак.Строка; с,к,длина:ЦЕЛ); (* Цель: отрисовка содержимого строки * До: <с>,<к> - начало строки на экране * <длина> - длина строки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вверх-(вс,лк,нс,пк:ЦЕЛ; новЗнак-:ЦвЗнак.Вид); (* Цель: сдвиг содержимого заданной области окна вверх * До: <вс>,<лк>,<нс>,<пк> - границы области * <новЗнак> - знак для заполнения освободившегося места *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вниз-(вс,лк,нс,пк:ЦЕЛ; новЗнак-:ЦвЗнак.Вид); (* Цель: сдвиг содержимого данной области окна вниз * До: <вс>,<лк>,<нс>,<пк> - границы области * <новЗнак> - знак для заполнения освободившегося места *) (****************************************************************************** * НАЗНАЧЕНИЕ: * взаимодействие с внешними ДПБ - Динамически Подключаемые Библиотеки * ( DLL - Dinamic Link Library ) ******************************************************************************) (* Вызов задач по их адресу *) ЗАДАЧА Вызов0- (адр:ЦЕЛ):ЦЕЛ; КОН Вызов0; ЗАДАЧА Вызов1- (адр,п1:ЦЕЛ):ЦЕЛ; КОН Вызов1; ЗАДАЧА Вызов2- (адр,п1,п2:ЦЕЛ):ЦЕЛ; КОН Вызов2; ЗАДАЧА Вызов3- (адр,п1,п2,п3:ЦЕЛ):ЦЕЛ; КОН Вызов3; ЗАДАЧА Вызов4- (адр,п1,п2,п3,п4:ЦЕЛ):ЦЕЛ; КОН Вызов4; ЗАДАЧА Вызов5- (адр,п1,п2,п3,п4,п5:ЦЕЛ):ЦЕЛ; КОН Вызов5; ЗАДАЧА Вызов6- (адр,п1,п2,п3,п4,п5,п6:ЦЕЛ):ЦЕЛ; КОН Вызов6; ЗАДАЧА Вызов7- (адр,п1,п2,п3,п4,п5,п6,п7:ЦЕЛ):ЦЕЛ; КОН Вызов7; ЗАДАЧА Вызов8- (адр,п1,п2,п3,п4,п5,п6,п7,п8:ЦЕЛ):ЦЕЛ; КОН Вызов8; ЗАДАЧА Вызов9- (адр,п1,п2,п3,п4,п5,п6,п7,п8,п9:ЦЕЛ):ЦЕЛ; КОН Вызов9; ЗАДАЧА Вызов10-(адр,п1,п2,п3,п4,п5,п6,п7,п8,п9,п10:ЦЕЛ):ЦЕЛ; КОН Вызов10; |
▲ \Глагол\Отделы\Числа\
(* НАЗНАЧЕНИЕ: Вектора (РЯДы) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА мин-(в-:Вид):Матем.Вещ; (* наименьший элемент вектора *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА макс-(в-:Вид):Матем.Вещ; (* наибольший элемент вектора *) (* НАЗНАЧЕНИЕ: Матрицы *) (****************************************************************************** * Переписывание Матриц и Векторов ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОбменСтрок-(A+:Вид; i,k:ЦЕЛ); ЗАДАЧА ОбменСтолбцов-(A+:Вид; j,k:ЦЕЛ); ЗАДАЧА СписатьВектор-(из-,в+:Вект.Вид); ЗАДАЧА Списать-(из-,в+:Вид); ЗАДАЧА СписатьСтолбецИзВектора-(из-:Вект.Вид; в+:Вид; стлб:ЦЕЛ); ЗАДАЧА СписатьВекторИзСтолбеца-(из-:Вид; в+:Вект.Вид; стлб:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА МетодГаусса-(A-:Вид; b-:Вект.Вид; Ao+:Вид; x+:Вект.Вид):ЦЕЛ; (* Цель: решение системы линейных алгебраических уравнений методом * исключения Гаусса ****************************************************************************** * До: < A > - матрица системы * < b > - вектор свободных членов * После: < Ao > - обратная матрица * < x > - вектор решения * Ответ: 0 или ВЫРОЖДЕНА *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Обратить-(A-:Вид; Ao+:Вид):ЦЕЛ; (* Цель: обращение квадратной матрицы методом Гаусса ****************************************************************************** * До: < A > - исходная матрица * После: < Ao > - обратная матрица * Ответ: 0 или ВЫРОЖДЕНА *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Определитель-(A+:Вид):Вещ; (* Цель: вычисление определителя квадратной матрицы ****************************************************************************** * До: < A > - исходная матрица * После: < A > - разрушенная матрица * Ответ: значение определителя *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазложитьНаLL-(A-,L+:Вид):ЦЕЛ; (* Цель: Разложение Холецкого (A=L*L') симметрической положительно * определенной матрицы A на две треугольные матрицы L и L', где L - это * нижняя треугольная матрица, а L' - матрица, транспонированная к L. ****************************************************************************** * Прим: Эту задачу можно использовать для испытания на положительно * определенность. * До: < A > - исходная матрица A * После: < L > - матрица L * Ответ: 0 или НЕ_П_О *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазложитьНаLU-(A+:Вид; строки+:Перестановки):ЦЕЛ; (* Цель: LU-разложение (A=L*U) квадратной матрицы A на два сомножителя L и U, * где L - это нижняя треугольная матрица с единичной главной диагональю, * а U - верхняя треугольная матрица. Эта задача используется * совместно с РешитьИзLU для решения систем уравнений. ****************************************************************************** * До: < A > - исходная матрица * После: < A > - содержит элементы и L и U * <строки> - вновь созданные записи о перестановках строк * Ответ: 0 или ВЫРОЖДЕНА *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РешитьИзLU-(A-:Вид; b-:Вект.Вид; строки:Перестановки; x+:Вект.Вид); (* Цель: решение системы уравнений после преобразования исходной матрицы * с помощью РазложитьНаLU ****************************************************************************** * До: < A > - матрица после РазложитьНаLU * < b > - вектор свободных членов * <строки> - записи о перестановках строк из РазложитьНаLU * После: < x > - вектор решения *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазложитьНаSV-(A+:Вид; s+:Вект.Вид; V+:Вид):ЦЕЛ; (* Цель: SV разложение прямоугольной матрицы A (N x M, с N >= M) на три * сомножителя (A=U*S*V'), где U (N x M) состоит из столбцов - собственных * векторов, S (M x M) - диагональная матрица с элементами >= 0 (собственные * значения) и V (M x M) ортогональная матрица. Эта задача используется * совместно с РешитьИзSV для решения систем уравнений; ****************************************************************************** * Прим: текст этой задачи переписан из подпрограммы SVD пакета EISPACK * До: < A > - исходная матрица * После: < A > - содержит элементы U * < s > - вектор собственных значений * < V > - ортогональная матрица * Ответ: 0 или НЕТ_СХОДИМОСТИ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОбнулитьS-(s+:Вект.Вид; откл:Вещ); (* Цель: обнуляет наименьшие собственные значения по заданной границе ****************************************************************************** * До: < s > - вектор собственных значений S * <откл> - относительное отклонение (граница будет равна откл*макс(S)) * После: < s > - измененный вектор собственных значений *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РешитьИзSV-(U-:Вид; s-:Вект.Вид; V-:Вид; b-,x+:Вект.Вид); (* Цель: решение системы уравнений после преобразования исходной матрицы * с помощью РазложитьНаSV и обнуления наименьших собственных значений * с помощью ОбнулитьS ****************************************************************************** * До: < U > - матрица U после РазложитьНаSV * < s > - вектор S после РазложитьНаSV * < V > - матрица V после РазложитьНаSV * < b > - вектор свободных членов * После: < x > - вектор решения (V*Diag(1/S(i))*U'*b, для S(i) # 0) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВосстановитьИзSV-(U-:Вид; s-:Вект.Вид; V-,A+:Вид); (* Цель: восстанавливает матрицу A перемножая U, S и V' после * обнуления наименьших собственных значений задачей ОбнулитьS ****************************************************************************** * До: < U > - матрица U после РазложитьНаSV * < s > - вектор S после РазложитьНаSV * < V > - матрица V после РазложитьНаSV * После: < A > - восстановленная матрица *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазложитьНаQR-(A+,R+:Вид):ЦЕЛ; (* Цель: QR разложение прямоугольной матрицы (N x M, с N >= M) на два * сомножителя (A=Q*R), где Q (N x M) ортогональная матрица, а * R (M x M) - верхняя треугольная матрица. Эта задача используется * совместно с РешитьИзQR для решения систем уравнений. ****************************************************************************** * До: < A > - исходная матрица * После: < A > - содержит элементы Q * < R > - верхняя треугольная матрица * Ответ: 0 или ВЫРОЖДЕНА *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РешитьИзQR-(q-,R-:Вид; b-,x+:Вект.Вид); (* Цель: решение системы уравнений после преобразования исходной матрицы * с помощью РазложитьНаQR ****************************************************************************** * До: < q > - матрица Q после РазложитьНаQR * < R > - матрица R после РазложитьНаQR * < b > - вектор свободных членов * После: < x > - вектор решения *)
Функции комплексной переменной. (****************************************************************************** * Основные математические функции ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА кор-(z-:Вид; m,n:ЦЕЛ; к+:Вид); (* Задача кор должна вычислить все 'n' корней 'a' изменяя 'm' от 0 до n-1 *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА квкор-(z-,к+:Вид); (****************************************************************************** * Логарифмические, показательные и степенные функции ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ln-(z-,к+:Вид); ЗАДАЧА lnГ-(z-,к+:Вид); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА lnГприбл(z-,к+:Вид); (* Это NBS приближение Г функции в области (9 < Re(z) < 10; 0 < Im(z) < 10). * Другие значения можно получить из: ln Г(z+1) = ln z + ln Г(z) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА exp-(z-,к+:Вид); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА степКЦ-(z-:Вид; n:ЦЕЛ; к+:Вид); ЗАДАЧА степКВ-(z-:Вид; x:Вещ; к+:Вид); ЗАДАЧА степКК-(a-,b-,к+:Вид); (****************************************************************************** * Тригонометрические функции ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА sin-(z-,к+:Вид); ЗАДАЧА arcsin-(z-,к+:Вид); ЗАДАЧА cos-(z-,к+:Вид); ЗАДАЧА arccos-(z-,к+:Вид); ЗАДАЧА tg-(z-,к+:Вид); ЗАДАЧА arctg-(z-,к+:Вид); (****************************************************************************** * Гиперболические функции (вещественного и комплексного аргумента) ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА sh-(z-,к+:Вид); ЗАДАЧА ch-(z-,к+:Вид); ЗАДАЧА th-(z-,к+:Вид); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Arsh-(z-,к+:Вид); (* arsh(z) = -i*arcsin(i*z) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Arch-(z-,к+:Вид); (* arch(z) = знак(y+i(1-x))*i*arccos(z) где z = x+iY *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Arth-(z-,к+:Вид); (* arth(z) = -i*arctg(i*z) *) (****************************************************************************** * шаблоны операций, знак числа и обмен 2-х чисел ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА алгВид-(x,y:Вещ; к+:Вид); ЗАДАЧА тригВид-(r,тета:Вещ; к+:Вид); ЗАДАЧА мод-(z-:Вид):Вещ; ЗАДАЧА arg-(z-:Вид):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА знак-(z-:Вид):ЦЕЛ; ЗАДАЧА обмен-(к1+,к2+:Вид); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА отр-(z-,к+:Вид); ЗАДАЧА сопр-(z-,к+:Вид); ЗАДАЧА доб-(a-,b-,к+:Вид); ЗАДАЧА выч-(a-,b-,к+:Вид); ЗАДАЧА умн-(a-,b-,к+:Вид); ЗАДАЧА умнВ-(a-:Вид; b:Вещ; к+:Вид); ЗАДАЧА дел-(a-,b-,к+:Вид); ЗАДАЧА делВ-(a-:Вид; b:Вещ; к+:Вид); (* Определение векторов комплексных чисел и разложение в комплексный ряд Фурье *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА степень2-(x:ЦЕЛ):ЦЕЛ; (* Цель: найти такую <степень>, что 2<степень> = < x > ****************************************************************************** * Ответ: <степень> или -1, если её не существует *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА БитыНаоборот-(биты,всегоБит:ЦЕЛ):ЦЕЛ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Преобразовать-(угол:Вещ; вход-,выход+:Вид); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА БПФ-(вход-,выход+:Вид); (* Цель: прямое Быстрое Преобразование Фурье (БПФ) ****************************************************************************** * До: <вход> - временная последовательность * После: <выход> - частотный спектр *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОБПФ-(вход-,выход+:Вид); (* Цель: обратное Быстрое Преобразование Фурье (оБПФ) ****************************************************************************** * До: <вход> - частотный спектр * После: <выход> - временная последовательность *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПФ-(гармоника:ЦЕЛ; вход-:Вид; выход+:Компл.Вид); (* Цель: Преобразование Фурье для одной заданной гармоники ****************************************************************************** * До: <гармоника> - номер гармоники * <вход> - временная последовательность * После: <выход> - коэффициенты разложения на заданной гармонике *) (* НАЗНАЧЕНИЕ: Матрицы с комплексными числами *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазложитьНаLU-(A+:Вид; строки+:Матр.Перестановки):ЦЕЛ; (* Цель: LU-разложение (A=L*U) квадратной матрицы A на два сомножителя L и U, * где L - это нижняя треугольная матрица с единичной главной диагональю, * а U - верхняя треугольная матрица. Эта задача используется * совместно с РешитьИзLU для решения систем уравнений. * До: < A > - исходная матрица * После: < A > - содержит элементы и L, и U * <строки> - вновь созданные записи о перестановках строк * Ответ: 0 или ВЫРОЖДЕНА *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РешитьИзLU-(A-:Вид; b-:КомплВект.Вид; строки:Матр.Перестановки; x+:КомплВект.Вид); (* Цель: решение системы уравнений после преобразования исходной матрицы * с помощью РазложитьНаLU * До: < A > - матрица после РазложитьНаLU * < b > - комплексный вектор свободных членов * <строки> - записи о перестановках строк из РазложитьНаLU * После: < x > - комплексный вектор решения *)
Основные математические функции. (****************************************************************************** * Основные математические функции ******************************************************************************) ЗАДАЧА кв-(x:Вещ):Вещ; (* x*x = x2 *) ЗАДАЧА квкор-(x:Вещ):Вещ; (* x0,5 *) (****************************************************************************** * Логарифмические и показательные функции ******************************************************************************) ЗАДАЧА ln-(x:Вещ):Вещ; ЗАДАЧА log2-(x:Вещ):Вещ; (* ln по основанию 2 *) ЗАДАЧА log10-(x:Вещ):Вещ; (* десятичный логарифм *) ЗАДАЧА loga-(x,a:Вещ):Вещ; (* ln по основанию a *) ЗАДАЧА exp-(x:Вещ):Вещ; ЗАДАЧА exp2-(x:Вещ):Вещ; (* 2x *) ЗАДАЧА exp10-(x:Вещ):Вещ; (* 10x *) (****************************************************************************** * Степенные функции ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА степВЦ-(x:Вещ; n:ЦЕЛ):Вещ; (* Вычисление xn с помощью умножений *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА степВВ-(x,y:Вещ):Вещ; (* Вычисление xy = exp(y*ln(x)), для x > 0. Если (* НАЗНАЧЕНИЕ: ввод/вывод Матриц и Векторов *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОткрытьПоток-(имяФайла-:ЦЕПЬ):Читать.Поток; (* Цель: если возможно, то открыть поток на чтение, иначе АВОСТ ****************************************************************************** * До: <имяФайла> - имя считываемого файла * Ответ: открытый на чтение поток *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧитатьМатр-(п:Читать.Поток):Матр.Доступ; (* Цель: прочитать из потока размер матрицы (строк>, столбцов) * создать матрицу и заполнить ее данными из этого потока ****************************************************************************** * До: <п> - открытый на чтение поток * Ответ: созданная матрица *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧитатьКомплМатр-(п:Читать.Поток):КомплМатр.Доступ; (* Цель: прочитать из потока размер матрицы (строк, столбцов) * создать матрицу и заполнить ее данными из этого потока ****************************************************************************** * До: <п> - открытый на чтение поток * Ответ: созданная матрица *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводМатр-(описание-:ЦЕПЬ; М-:Матр.Вид); (* Цель: вывести на экран содержимое матрицы <М> ****************************************************************************** * До: <описание> - описатель представления элемента матрицы (см. Текст.отд) * <М> - прямоугольная матрица *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводКомплМатр-(описание-:ЦЕПЬ; М-:КомплМатр.Вид); (* Цель: вывести на экран содержимое матрицы <М> ****************************************************************************** * До: <описание> - описатель представления элемента матрицы (см. Текст.отд) * <М> - прямоугольная матрица *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводВект-(описание-:ЦЕПЬ; в-:Вект.Вид); (* Цель: вывести на экран содержимое вектора <в> ****************************************************************************** * До: <описание> - описатель представления элемента матрицы (см. Текст.отд) * <в> - исходный вектор *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводКомплВект-(описание-:ЦЕПЬ; в-:КомплВект.Вид); (* Цель: вывести на экран содержимое вектора <в> ****************************************************************************** * До: <описание> - описатель представления элемента матрицы (см. Текст.отд) * <в> - исходный вектор *) (* НАЗНАЧЕНИЕ: собственные Значения и Вектора *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Якоби-(A+:Матр.Вид; проходов:ЦЕЛ; точность:Вещ; СВ+:Матр.Вид; сз+:Вект.Вид):ЦЕЛ; (* Цель: вычисление с. значений и с. векторов методом Якоби ****************************************************************************** * До: < A > - исходная матрица * <проходов> - максимальное число проходов * <точность> - требуемая точность * После: < СВ > - матрица нормированных с. векторов (по строкам), * у которых первый элемент > 0 * < сз > - с. значения * < A > - разрушенная исходная матрица * Ответ: 0 или НЕТ_СХОДИМОСТИ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Значения-(A+:Матр.Вид; сзВещ+,сзМнм+:Вект.Вид):ЦЕЛ; (* Цель: вычисление с. значений квадратной матрицы ****************************************************************************** * До: < A > - исходная матрица * После: <сзВещ> - вещественная часть с. значений * <сзМнм> - мнимая часть с. значений * < A > - разрушенная исходная матрица * Ответ: 0 или НЕТ_СХОДИМОСТИ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вектор-(A-:Матр.Вид; сз,точность:Вещ; св+:Вект.Вид):ЦЕЛ; (* Цель: вычисление одного с. вектора для соответствующего * вещественного (кратного) с. значения ****************************************************************************** * До: < A > - исходная матрица * < сз > - с. значение * <точность> - требуемая точность * После: < св > - нормированный с. вектор, * у которого первый элемент > 0 * Ответ: 0 или НЕТ_СХОДИМОСТИ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА КорниПолинома-(Coef-:Вект.Вид; Deg:ЦЕЛ; X_Re+,X_Im+:Вект.Вид):ЦЕЛ; (* Цель: вычисление действительных и комплексных корней действительного * полинома методом companion матрицы ****************************************************************************** * До: < Coef > - коэффициенты полинома * < Deg > - степень полинома * После: < X_Re > - действительные части корней (в порядке возрастания) * < X_Im > - мнимые части корней * Ответ: 0 или НЕТ_СХОДИМОСТИ *) Преобразования Чисел в(из) Текст(а). В задачах <ИзЧЦел> и <ИзЧВещ> входное <описание> - это цепочка знаков, содержащая и обычные знаки, которые просто переписываются в <текст> и описатели <представлений чисел>, которые имеют следующее строение: (****************************************************************************** * * %[<номарг>:, -, <ширина>, .<точность>]<вид> * * Описатель представления начинается со знака '%'. Затем без * пробелов следует ряд [необязательных] параметров: * * [<номарг>:] - определяет номер аргумента, к которому относится данный описатель * [-] - признак выравнивания влево * [<ширина>] - ширина поля вывода * [.<точность>] - параметр точности * <вид> - знак, определяющий вид текущего аргумента * * Знаки, определяющие вид аргумента: * * 'd'-Десятичное целое. Значение аргумента преобразуется в цепочку * десятичных цифр. Если описатель представления содержит параметр * точности, то текст должен содержать количество цифр, не * менее указанного значения. Если значение содержит меньше * цифр, то оно дополняется слева нулями. * * 'x'-Шестнадцатеричное целое. Значение аргумента преобразуется в цепочку * шестнадцатеричных цифр. Если описатель представления содержит * параметр точности, то текст должен содержать количество цифр, не * менее указанного значения. Если значение содержит меньше * цифр, то оно дополняется слева нулями. * * 'e'-Вещественное число в научном представлении. * Значение преобразуется в цепочку вида "-ц,цц...E+ццц", где ц * обозначает цифру. Отрицательные числа начинаются со знака минус. * Перед десятичной запятой всегда имеется одна цифра. Общее * число цифр (включая цифру до запятой) задается параметром точности. * По умолчанию точность равна 15. * После знака порядка "E" всегда присутствует знак плюс или * минус и 3 цифры порядка. * * 'f'-Вещественное число с неподвижной запятой. * Значение преобразуется в цепочку вида "-ццц,ццц...". * Отрицательные числа начинаются со знака минус. * Параметр точности показывает, сколько цифр будет после запятой. * По умолчанию точность равна 2. * * 'g'-Вещественное число в общем виде. * Значение преобразуется в кратчайшее десятичное представление * (научное или неподвижное). По умолчанию число цифр, которое задается * параметром точности, равно 15. Лишние нули удаляются, а запятая * появляется только при необходимости. Результирующая цепочка * представляется с неподвижной запятой, если число цифр левее запятой * меньше или равно указанной точности и если значение больше * или равно 0,00001. Иначе цепочка будет представлена в научном * представлении. * * 'c'-Знак. Значение аргумента преобразуется в знак с порядковым * номером, равным значению аргумента. * * Если <вид> не принадлежит {'d','x','c','e','f','g'}, то параметры * применяются не к аргументу, а к знаку <вид>. * Числовые параметры могут извлекаться из текущего аргумента, * если в качестве параметра выступает знак '*'. * Знак 't' обозначает отсуп заданной ширины. По умолчанию ширина = 8. ******************************************************************************) <*ЕСЛИ НЕ ЗАДАНО("МПГ") ТО*> (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Особенность(число:ШИРВЕЩ; текст+:Число; дл+:ЦЕЛ):КЛЮЧ; (* Определяет и обозначает особые состояние <число> ****************************************************************************** * Ответ: ВКЛ, если <число> - не является числом *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзВещЕ-(число:ШИРВЕЩ; точность:ЦЕЛ; текст+:Число; дл+:ЦЕЛ); (* Вещественное число в научном представлении. ****************************************************************************** * До: <число> - преобразуемое число * <точность> - цифр после запятой * После: <текст> - текстовое представление числа * <дл> - его длина *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзВещФ-(число:ШИРВЕЩ; точность:ЦЕЛ; текст+:Число; дл+:ЦЕЛ); (* Вещественное число с неподвижной запятой. ****************************************************************************** * До: <число> - преобразуемое число * <точность> - цифр после запятой * После: <текст> - текстовое представление числа * <дл> - его длина *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзВещГ-(число:ШИРВЕЩ; точность:ЦЕЛ; текст+:Число; дл+:ЦЕЛ); (* Вещественное число в общем виде. ****************************************************************************** * До: <число> - преобразуемое число * <точность> - цифр после запятой * После: <текст> - текстовое представление числа * <дл> - его длина *) <*КОН*> (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗадомНаПеред(цепь+:ЦЕПЬ; дл:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЦел(число:ШИРЦЕЛ; основание,нужноцифр:ЦЕЛ; текст+:Число; дл+:ЦЕЛ); (* Преобразовать целое число в текстовое представление. ****************************************************************************** * До: <число> - преобразуемое число * <основание> - основание системы счисления * <нужноцифр> - нужное количество цифр результата * После: <текст> - текстовое представление числа * <дл> - его длина *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЦел10-(число:ШИРЦЕЛ; нужноцифр:ЦЕЛ; текст+:Число); (* Преобразовать целое число в десятичное представление. ****************************************************************************** * До: <число> - преобразуемое число * <нужноцифр> - нужное количество цифр результата * После: <текст> - текстовое представление числа *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЦел16-(число:ШИРЦЕЛ; нужноцифр:ЦЕЛ; текст+:Число); (* Преобразовать целое число в шестнадцатеричное представление. ****************************************************************************** * До: <число> - преобразуемое число * <нужноцифр> - нужное количество цифр результата * После: <текст> - текстовое представление числа *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЧЦелВещ(описание-:ЦЕПЬ; царги-:РядЧЦел; варги-:РядЧВещ; текст+:ЦЕПЬ); (* Составить текст с 4-мя числами, используя описание текста. ****************************************************************************** * До: <описание> - цепочка знаков, которая содержит обычные знаки, * которые просто переписываются в <текст> и описатели * представлений чисел (см. их описание выше) * <царги> - аргументы преобразования целого вида * <варги> - аргументы преобразования вещественного вида * После: <текст> - выходной текст *) ЗАДАЧА СледАрг(); (* увеличить, если возможно, <номарг> *) ЗАДАЧА ЗнакО(описание-:ЦЕПЬ); (* читать следующий знак из <описание> *) ЗАДАЧА ЧислоО(описание-:ЦЕПЬ; царги-:РядЧЦел); (* читать <число> для параметра из <описание> или из текущего аргумена *) ЗАДАЧА ПараметрыО(описание-:ЦЕПЬ; царги-:РядЧЦел); (* читать параметры <ширина>, <точность>, <налево> и <номарг> из <описание> *) ЗАДАЧА ЗнакТ(зн:ЗНАК; текст+:ЦЕПЬ); (* писать <зн> в <текст> *) ЗАДАЧА ЗнакиТ(знаки-:ЦЕПЬ; дл:ЦЕЛ; текст+:ЦЕПЬ); (* писать <дл> знаков <знаки> в <текст> *) ЗАДАЧА ПробелыТ(кво:ЦЕЛ; текст+:ЦЕПЬ); (* писать <кво> пробелов в <текст> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЧЦел-(описание-:ЦЕПЬ; а0,а1,а2,а3:ШИРЦЕЛ; текст+:ЦЕПЬ); (* Составить текст с 4-мя целыми числами, используя описание текста. ****************************************************************************** * До: <описание> - см. ИзЧЦелВещ() * < а0 >, ... ,< а4 > - аргументы преобразования * После: <текст> - выходной текст *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЧВещ-(описание-:ЦЕПЬ; а0,а1,а2,а3:ШИРВЕЩ; текст+:ЦЕПЬ); (* Составить текст с 4-мя вещественными числами, используя описание текста. ****************************************************************************** * До: <описание> - см. ИзЧЦелВещ() * < а0 >, ... ,< а4 > - аргументы преобразования * После: <текст> - выходной текст *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВЦелое-(цепь-:ЦЕПЬ; поз+:ЦЕЛ; цОтвет+:ШИРЦЕЛ; вОтвет+:ШИРВЕЩ):КЛЮЧ; (* Считывает из <цепь> начиная с позиции <поз> знаковое представление числа. * Если это представление целого числа, то возвращает ВКЛ и записывает * значение числа в <цОтвет>, иначе возвращает ОТКЛ, а значение записывает * в <вОтвет>. * По окончании <поз> указывает на следующий за числом знак. *) ЗАДАЧА ЧитатьЗнак; (* Читает следующий <знак> из <цепь> *) ЗАДАЧА ДесятьВ(x:ЦЕЛ):ШИРВЕЩ; (* 10 в степени (* Специальные функции. (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакГ-(x:Вещ):ЦЕЛ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Stirf(x:Вещ):Вещ; (* Формула Стирлинга для Гамма функции: * Г(x) = Sqrt(2*Pi) x^(x-.5) exp(-x) (1+1/x p(1/x)) * где p(x) является многочленом *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GamSmall(x1,z:Вещ):Вещ; (* Гамма функция для малых аргументов *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА StirfL(x:Вещ):Вещ; (* Приближение ln(Г) формулой Стирлинга при x >= 13 *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Г-(x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА lnГ-(x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НепГ-(a,x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДопГ-(a,x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Факториал-(x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА БиномКоэф-(x,y:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Бета-(x,y:Вещ):Вещ; (* Бета(x,y) = Г(x)*Г(y)/Г(x+y) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА PSeries(a,b,x:Вещ):Вещ; (* Степенной ряд для неполного бета интеграла. * Используется когда b*x мало. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА CFrac1(a,b,x:Вещ):Вещ; (* Цепная дробь для расширения # 1 в неполном бета интеграле. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА CFrac2(a,b,x:Вещ):Вещ; (* Цепная дробь для расширения # 2 в неполном бета интеграле. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НепБета-(a,b,x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА erf-(x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА erfc-(x:Вещ):Вещ; (****************************************************************************** * Распределение вероятностей ******************************************************************************) (****************************************************************************** * Биномиальное распределение с вероятностью < p > и числом испытаний < n > ******************************************************************************) ЗАДАЧА БиномВ-(n:ЦЕЛ; p:Вещ; k:ЦЕЛ):Вещ; ЗАДАЧА БиномП-(n:ЦЕЛ; p:Вещ; k:ЦЕЛ):Вещ; (****************************************************************************** * Распределение Пуассона со средним значением Mu ******************************************************************************) ЗАДАЧА ПуассонВ-(Mu:Вещ; k:ЦЕЛ):Вещ; ЗАДАЧА ПуассонП-(Mu:Вещ; k:ЦЕЛ):Вещ; (****************************************************************************** * Стандартный нормальный закон распределения ******************************************************************************) ЗАДАЧА НормПл-(x:Вещ):Вещ; ЗАДАЧА НормП-(x:Вещ):Вещ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОбрНорм-(p:Вещ):Вещ; (* Обратная функция нормального распределения * Возвращает такое |
▲ \Глагол\Отделы\Иное\
(* НАЗНАЧЕНИЕ: упорядочивание и поиск в Рядах *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Упоряд-(ряд+:РЯД ИЗ Доступ; всего:ЦЕЛ; сравнить:ЗАДАЧА(с1-,с2-:Вид):ЦЕЛ); (* Быстрое упорядочивание с помощью разделения на участки (Ч.Хоар) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Поиск-(слаг-:Вид; ряд+:РЯД ИЗ Доступ; дл:ЦЕЛ; сравнить:ЗАДАЧА(с1-,с2-:Вид):ЦЕЛ):Доступ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вставка-(слаг:Доступ; ряд+:РЯД ИЗ Доступ; дл+:ЦЕЛ; сравнить:ЗАДАЧА(с1-,с2-:Вид):ЦЕЛ); (* НАЗНАЧЕНИЕ: распознавание и преобразование Знаков *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Цифра-(знак:ЗНАК):КЛЮЧ; (* ВКЛ, если <знак> является цифрой. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА БукваЦифра-(знак:ЗНАК):КЛЮЧ; (* ВКЛ, если <знак> является буквой или цифрой. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВСлове-(знак:ЗНАК):КЛЮЧ; (* ВКЛ, если <знак> является знаком слова. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВДос-(знак:ЗНАК):ЯЧЦЕЛ; (* Переводит <знак> в Дос-код знака. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВВин-(знак:ЗНАК):ЯЧЦЕЛ; (* Переводит <знак> в Вин-код знака. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзДос-(код:ЯЧЦЕЛ):ЗНАК; (* Переводит Дос-<код> знака в знак. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзВин-(код:ЯЧЦЕЛ):ЗНАК; (* Переводит Вин-<код> знака в знак. *) Обработка цепочек Знаков (РЯД ИЗ ЗНАК или ЦЕПЬ). Цепочки обычно заканчиваются знаком "0X". Их длина не может быть больше МАКС(ЦЕЛ). Если выходная цепочка не помещается в ряд, предназначенный для ответа, то она укорачивается до длины этого ряда. (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Сравнить-(ц1-,ц2-:ЦЕПЬ):ЦЕЛ; (* Возвращает результат алфавитного сравнения цепочек <ц1> и <ц2>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПозицияЗнака-(зн:ЗНАК; цепь-:ЦЕПЬ; поз:ЦЕЛ):ЦЕЛ; (* Возвращает позицию первого знака <зн> в цепочке <цепь>. Поиск начинается * с позиции <поз>. Если <зн> нет в <цепь>, то возвращает -1. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Позиция-(обр-,цепь-:ЦЕПЬ; поз:ЦЕЛ):ЦЕЛ; (* Возвращает позицию первого включения образца <обр> в цепочке <цепь>. Поиск * начинается с позиции <поз>. Если <обр> нет в <цепь>, то возвращает -1. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Начало-(обр-,цепь-:ЦЕПЬ):КЛЮЧ; (* Возвращает ВКЛ если образец <обр> является началом цепочки <цепь>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПохожееНачало-(обр-,цепь-:ЦЕПЬ):КЛЮЧ; (* Возвращает ВКЛ если образец <обр> похож на начало цепочки <цепь> * (сравнение идёт без учёта заглавных и строчных букв). *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Часть-(откуда-,куда+:ЦЕПЬ; откудап,дл:ЦЕЛ); (* Переписывает часть цепочки <откуда>, начиная с позиции <откудап>, и * длиной <дл> знаков в цепочку <куда>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Добавить-(куда+,откуда-:ЦЕПЬ); (* Добавляет в конец цепочки <куда> цепочку <откуда>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьЗнак-(куда+:ЦЕПЬ; зн:ЗНАК); (* Добавляет в конец цепочки <куда> знак <зн>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьЧасть-(откуда-,куда+:ЦЕПЬ; откудап,дл:ЦЕЛ); (* Переписывает часть цепочки <откуда>, начиная с позиции <откудап>, и * длиной <дл> знаков в конец цепочки <куда>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВЗаглавные-(цепь+:ЦЕПЬ); (* Переводит все буквы цепочки <цепь> в заглавные буквы. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВСтрочные-(цепь+:ЦЕПЬ); (* Переводит все буквы цепочки <цепь> в строчные буквы. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВДос-(цепь-:ЦЕПЬ; дос+:РЯД ИЗ ЯЧЦЕЛ); (* Переводит все знаки цепочки <цепь> в Дос знаки ряда <дос>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВВин-(цепь-:ЦЕПЬ; вин+:РЯД ИЗ ЯЧЦЕЛ); (* Переводит все знаки цепочки <цепь> в Вин знаки ряда <вин>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзВин-(вин-:РЯД ИЗ ЯЧЦЕЛ; цепь+:ЦЕПЬ); (* Переводит все Вин знаки ряда <вин> в цепочку знаков. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзДос-(дос-:РЯД ИЗ ЯЧЦЕЛ; цепь+:ЦЕПЬ); (* Переводит все Дос знаки ряда <дос> в цепочку знаков. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Удалить-(откуда+:ЦЕПЬ; удалп,удалдл:ЦЕЛ); (* Удаляет <удалдл> знаков цепочки <откуда>, начиная с позиции <удалп>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьКонПробелы-(цепь+:ЦЕПЬ); (* Удаляет пробелы в конце цепочки <цепь>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьНачПробелы-(цепь+:ЦЕПЬ); (* Удаляет пробелы в начале цепочки <цепь>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьПробелы-(цепь+:ЦЕПЬ); (* Удаляет пробелы в начале и конце цепочки <цепь>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВставитьЗнак-(зн:ЗНАК; куда+:ЦЕПЬ; кудап:ЦЕЛ); (* Вставляет знак <зн> в цепочку <куда> в позиции <кудап>, * если для этого есть место. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вставить-(откуда-,куда+:ЦЕПЬ; кудап:ЦЕЛ); (* Вставляет цепочку <откуда> в цепочку <куда> в позиции <кудап>. * Копирует знаков не больше, чем умещается в <куда>. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьКонПробелы-(цепь+:ЦЕПЬ; дл:ЦЕЛ); (* Увеличивает длину цепочки <цепь> до <дл> знаков, добавляя в конец пробелы. * Если <цепь> уже достаточной длины, то не производит никаких изменений. *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьНачПробелы-(цепь+:ЦЕПЬ; дл:ЦЕЛ); (* Увеличивает длину цепочки <цепь> до <дл> знаков, добавляя в начало пробелы. * Если <цепь> уже достаточной длины, то не производит никаких изменений. *) (* НАЗНАЧЕНИЕ: преобразование Знаков и Цепочек в латиницу и обратно *) (* Соответствие русских букв и латинских буквосочетаний: А - A К - K Х - H Б - B Л - L Ц - C В - V М - M Ч - CH Г - G Н - N Ш - SH Д - D О - O Щ - SC Е - JE П - P Ъ - O Ё - JO Р - R Ы - Y Ж - X С - S Ь - E З - Z Т - T Э - E И - I У - U Ю - JU Й - J Ф - F Я - JA *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВЛат-(рус-,лат+:ЦЕПЬ); (* НАЗНАЧЕНИЕ: построение списков Наборов (предок наборов) *) ВИД Вид- = НАБОР КОН; (* опорный вид (абстрактный предок) других НАБОРов *) Доступ- = ДОСТУП К Вид; Звено- = ДОСТУП К ВидЗвено; ВидЗвено- = НАБОР данные-:Доступ; след- :Звено КОН; Список- = НАБОР (* ДвуКонцевая Очередь из односвязных звеньев *) звеньев-:ЦЕЛ; первоеЗвено:Звено; последнееЗвено:Звено КОН; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОчиститьСписок-(список+:Список); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВКонецСписка-(список+:Список; данные:Доступ); (* Цель: создать и присоединить новое звено вместе с данными в конец списка *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПервоеЗвено-(список-:Список):Звено; (* Цель: выдать первое звено списка *) (* НАЗНАЧЕНИЕ: дополнительные задачи на Ассемблере *) (*======================= Математические функции =============================*) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Особенность-(x:ШИРВЕЩ):ЦЕЛ; (* Определяет состояние < x > * Ответ: {Число,МинусБеск,ПлюсБеск,НеЧисло} *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СлучНач-(x:ЦЕЛ); (* начальная установка последовательности псевдослучайных чисел *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СлучЦел-():ЦЕЛ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА sin-(x:ШИРВЕЩ):ШИРВЕЩ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА cos-(x:ШИРВЕЩ):ШИРВЕЩ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА sincos-(x:ШИРВЕЩ; sinX+,cosX+:ШИРВЕЩ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА arctg-(x:ШИРВЕЩ):ШИРВЕЩ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ln-(x:ШИРВЕЩ):ШИРВЕЩ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА exp-(x:ШИРВЕЩ):ШИРВЕЩ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА квкор-(x:ШИРВЕЩ):ШИРВЕЩ; (* квадратный корень *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Порядок-(x+:ШИРВЕЩ):ЦЕЛ; (* Выделить мантиссу и порядок у числа < x > ****************************************************************************** * До: < x > - исходное число * После: < x > - мантисса |
▲ \Глагол\Отделы\Поле\
(* НАЗНАЧЕНИЕ: закладки на Холсты в главном окне *) ЗАДАЧА ПодготовитьПостоянные; ЗАДАЧА ОтрисовкаЗаголовка(закладки:Доступ); ЗАДАЧА ОтрисовкаОткрытой(закладки:Доступ); ЗАДАЧА ВыровнятьПервую(закладки:Доступ); ЗАДАЧА НажатаМышка(закладки:Доступ; км:ЦЕЛ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Открыть-(закладки:Доступ; оИмяФ-:Файл.ВПолного); (* открывает закладку на холст с заданным именем файла *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Удалить-(закладки:Доступ); (* удаляет открытую закладку *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Следующая-(закладки:Доступ); (* выбор следующей закладки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СИзменениями-(закладки:Доступ):КЛЮЧ; (* Есть изменённые холсты? *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СохранитьИзменённые-(закладки:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ):Доступ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводОшибки-(закладки:Доступ; имяФ-:Файл.ВПолного; с,к:ЦЕЛ; текст-:ЦЕПЬ); (* НАЗНАЧЕНИЕ: изменяемый многострочный Текст *) ЗАДАЧА Отрисовка(записка:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Изменить-(записка:Доступ; текст-:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИзЧЦел-(записка:Доступ; описание-:ЦЕПЬ; ц1,ц2,ц3,ц4:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; текст-:ЦЕПЬ):Доступ; (* НАЗНАЧЕНИЕ: Кнопка, потомок надела *) ЗАДАЧА Работа(кнопка:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надпись-:ЦЕПЬ; действие:ЦЕЛ; выбираемая:КЛЮЧ):Доступ; (* НАЗНАЧЕНИЕ: Крестик, потомок надела *) ЗАДАЧА Отрисовка(крестик:Доступ); ЗАДАЧА Работа(крестик:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево:ЦЕЛ; цепь-:ЦЕПЬ):Доступ; (* НАЗНАЧЕНИЕ: метка к Наделу (потомок надела) *) ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надпись-:ЦЕПЬ; надел:Надел.Доступ):Доступ; (*=============================================================================* * НАЗНАЧЕНИЕ: надел это область на экранном поле для ввода/вывода текстовых * данных. Вид Надел является основой для видимых наделов. Также в данном отделе * содержатся вспомогательные задачи для вывода надписей с выделяемыми * особым цветом буквами - буквицами. При нажатии Альт-кода буквицы * происходит переключение клавиатурного ввода на надел, в надписи которого * содержится данная буквица. *=============================================================================*) ВИД Доступ- = ДОСТУП К Вид; Задача = ЗАДАЧА(надел:Доступ; посылка+:Ввод.Посылка); Вид- = НАБОР(Рамка.Вид) следующий- :Доступ; (* следующий надел на поле *) предыдущий- :Доступ; (* предыдущий надел на поле *) Приём- :Задача; (* приём и обработка посылок *) признаки- :МНОЖ; (* признаки (множество из признаков) *) состояние+ :ЦЕЛ; (* текущее состояние (одно из с...) *) поле+ :Рамка.Доступ; (* поле, содержащее надел *) цветНадписи+:ЦЕПЬ[Состояний]; (* цвет надписи в определённом состоянии *) цветБуквицы+:ЦЕПЬ[Состояний]; (* цвет буквицы в определённом состоянии *) КОН; Надпись-=ЦЕПЬ[64]; (* перед буквицей ставится знак "~" *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Очистить-(надел:Доступ); (* Заполняет надел пробелом с цветом надписи текущего состояния *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыводНадписи-(надел:Доступ; надпись-:Надпись; с:ЦЕЛ); (* Цель: отобразить надпись на заданной строке надела * До: <надел> - данный надел * <надпись> - цепочка отображаемых знаков * <с> - строка надела, на которую необходимо вывести надпись *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СчитатьНадпись-(цепь-:ЦЕПЬ; надпись+:Надпись; длина+,буквица+:ЦЕЛ); (* Цель: переписать <цепь> в <надпись> и найти её длину и последнюю буквицу * До: <цепь> - исходная цепочка * <надпись> - переписанная <цепь> * После: <длина> - длина отображаемых знаков * <буквица> - код для последней подсвеченной буквы *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Добавить-(наделы+,надел:Доступ); (* Добавить <надел> в конец двусвязанного списка <наделы> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Подготовить-(надел:Доступ; верх,лево,строк,колонок:ЦЕЛ; признаки:МНОЖ; Приём:Задача); (* НАЗНАЧЕНИЕ: хранилище для ПолеПамятки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьСтроку-(памятка:Доступ; цепь-:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПохожаяСтрока-(памятка:Доступ; цепь-:ЦЕПЬ):ЦЕЛ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Найти-(имя-:ЦЕПЬ):Доступ; (* Поиск памятки *) (******************************************************************************) (* ******* чтение и запись в поток ******* *) (******************************************************************************) ЗАДАЧА ПисатьПамятку(поток:Писать.Поток; памятка:Доступ); ЗАДАЧА ЧитатьПамятку(поток:Читать.Поток):Доступ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЧитатьНастройки-(поток:Читать.Поток); ЗАДАЧА ПисатьНастройки-(поток:Писать.Поток); (* НАЗНАЧЕНИЕ: подложка под Поле *) ЗАДАЧА Отрисовка(подложка:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (* приём посылок извне *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; заголовок-:ЦЕПЬ):Доступ; (*=============================================================================* * НАЗНАЧЕНИЕ: на Поле располагаются Наделы ввода/вывода текстовых данных * Поле следит за передачей посылок от Клавиатуры и Мышки к выбранному Наделу. *=============================================================================*) ВИД Доступ- = ДОСТУП К Вид; Задача = ЗАДАЧА(поле:Доступ; посылка+:Ввод.Посылка); Вид- = НАБОР(Рамка.Вид) наделы :Надел.Доступ; (* связка наделов поля *) выбранныйНадел:Надел.Доступ; (* надел, выбранный человеком *) Приём :Задача; (* оставшийся ввод и управление *) состояние+ :ЦЕЛ; (* м.б. как выше, так и др. *) КОН; (* посылки к наделам *) Отрисовка- = НАБОР(Ввод.Посылка) КОН; Буквица- = НАБОР(Ввод.Посылка) буквица+:ЦЕЛ КОН; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Рисовать-(поле:Доступ); (* Перерисовывает все наделы поля *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОкноНаВсёПоле-(поле:Доступ); (* Выравнивает окно по границе поля *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СостояниеНаделу-(надел:Надел.Доступ; состояние:ЦЕЛ); (* изменить состояние надела *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПереместитьВвод(поле:Доступ; дальше:КЛЮЧ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Проверить-(поле:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьНадел-(поле:Доступ; надел:Надел.Доступ); (* Добавляет <надел> в <поле> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; окружение:Доступ; середина:КЛЮЧ; Приём:Задача):Доступ; (* НАЗНАЧЕНИЕ: ввод строки Текста *) ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); (* получить и обработать управляющие послания *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выполнить-( (* Цель: осуществить ввод строки текста *) (* До: *) заголовок-:ЦЕПЬ; (* заголовок подложки *) колонок:ЦЕЛ; (* желаемая ширина строки ввода *) окружение:Поле.Доступ; (* окружающее поле *) номерСправки:ЦЕЛ; (* номер справки или 0 *) примечание-:ЦЕПЬ; (* дополнительное примечание *) (* Примечение: если <цепь> = "", то начальное значение берётся из Памятки *) (* После: *) цепь+:ЦЕПЬ (* полученный текст *) (* Ответ: *) ):ЦЕЛ; (* состояние поля после отработки *) (* НАЗНАЧЕНИЕ: вывод Вопроса о замене *) ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); (* получить и обработать управляющие послания *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выполнить-():ЦЕЛ; (* состояние поля после отработки *) (* Цель: осуществить вывод вопроса *) (* До: *) окружение:Поле.Доступ; (* окружающее поле *) образец-:ЦЕПЬ; (* искомая цепочка *) замена-:ЦЕПЬ (* новая цепочка *) (* Ответ: *) (* НАЗНАЧЕНИЕ: поле для Памятки *) ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); (* получить и обработать управляющие послания *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выполнить-(холст:Надел.Доступ; памятка:Памятка.Доступ; окружение:Поле.Доступ):ЦЕЛ; (* Выбрать строку памятки *) (* НАЗНАЧЕНИЕ: вывод Вопроса *) ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); (* получить и обработать управляющие послания *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выполнить-( (* Цель: осуществить вывод вопроса *) (* До: *) заголовок-:ЦЕПЬ; (* заголовок подложки *) строк:ЦЕЛ; (* желаемая высота текста *) колонок:ЦЕЛ; (* желаемая ширина текста *) окружение:Поле.Доступ; (* окружающее поле *) номерСправки:ЦЕЛ; (* номер справки или 0 *) текст-:ЦЕПЬ (* текст вопроса *) (* Ответ: *) ):ЦЕЛ; (* состояние поля после отработки *) (* НАЗНАЧЕНИЕ: вывод Записки *) ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); (* получить и обработать управляющие послания *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выполнить-( (* Цель: осуществить вывод текста *) (* До: *) заголовок-:ЦЕПЬ; (* заголовок подложки *) строк:ЦЕЛ; (* желаемая высота текста *) колонок:ЦЕЛ; (* желаемая ширина текста *) окружение:Поле.Доступ; (* окружающее поле *) текст-:ЦЕПЬ (* выводимый текст *) ); (* НАЗНАЧЕНИЕ: размеры и местоположение для Поле и Надел *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Выставить-(рамка,поле:Доступ); (* выставляет границы <рамка> на экране, учитывая положение окружающего <поле> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Подготовить-(рамка:Доступ; верх,лево,строк,колонок:ЦЕЛ); (* НАЗНАЧЕНИЕ: строки для Памятки *) ЗАДАЧА Отрисовка(строки:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ; (* НАЗНАЧЕНИЕ: строки для Памятки *) ЗАДАЧА Отрисовка(строки:Доступ); ЗАДАЧА СтрокуВыше(строки:Доступ); ЗАДАЧА СтрокуНиже(строки:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ; (* НАЗНАЧЕНИЕ: Точка *) ЗАДАЧА Отрисовка(точка:Доступ); ЗАДАЧА Работа(точка:Доступ); ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надписи-:РЯД ИЗ Надел.Надпись):Доступ; (*=============================================================================* * НАЗНАЧЕНИЕ: надел для работы с текстом (подобие консольного ФАР-редактора). * Часть холста, которая ограничена рамкой, выводится на экран. * Текст хранится построчно в виде связки строк. Строка состоит из ряда * знаков <цепь>. Местоположение на холсте * определяется точкой с порядковым номером строки <с> и колонки <к>. * При изменении текста все связанные с холстом точки соответственно сдвигаются. * Такими точками являются вешки, границы выделенного куска текста и указка * ввода. * * Разделители строк в запоминаемых кусках текста: * 0DX - для простого куска * 0AX - для вертикального куска *=============================================================================*) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОграничитьЦел(ц+,от,до:ЦЕЛ); (****************************************************************************** * работа со строками ******************************************************************************) ЗАДАЧА ПредыдущаяСтрока(строка:Строка; смещение:ЦЕЛ):Строка; ЗАДАЧА СледующаяСтрока(строка:Строка; смещение:ЦЕЛ):Строка; ЗАДАЧА СоседняяСтрока(строка:Строка; смещение:ЦЕЛ):Строка; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УбратьПробелы(строка:Строка); (* Цель: удалить конечные пробелы на строке *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДобавитьПробелы(строка:Строка; к:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РаскраситьСтроку(строка:Строка; цвета+:ЗнакиСтроки):ЦЕЛ; (* Цель: раскрашивает строку в соответствии с правилами Глагола * До: <строка> - данная строка * После: <цвета> - цвет каждого знака из <строка.цепь> * Ответ: уровень пояснений в конце строки *) ЗАДАЧА ЧитатьЗнак; (* Цель: читать из строки следующий знак *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УровеньКонцаСтроки(строка:Строка):ЦЕЛ; (* Цель: вычислить уровень пояснений в конце данной строки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыставитьУровеньСтрок(строка:Строка; уровень:ЦЕЛ); (* Цель: исправить уровень пояснений данной и всех последующих строк * До: <уровень> - новый уровень *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НовыйУровеньСтрок(строка:Строка); (* Цель: исправить уровень пояснений всех последующих строк *) (****************************************************************************** * работа с памятью удаляемых знаков ******************************************************************************) ЗАДАЧА ОчиститьЗнаки(знаки+:Знаки); ЗАДАЧА ЗнакВЗнаки(знаки+:Знаки; знак:ЗНАК); ЗАДАЧА ЗнакИзЗнаков(знаки+:Знаки):ЗНАК; (****************************************************************************** * разное ******************************************************************************) ЗАДАЧА РамкаПоУказке(холст:Доступ); ЗАДАЧА ПоставитьУказку(холст:Доступ; с,к:ЦЕЛ); ЗАДАЧА ПереместитьУказку(холст:Доступ); ЗАДАЧА РазмерУказки(холст:Доступ); (****************************************************************************** * изменение указанного текста ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьЗнак(холст:Доступ); ЗАДАЧА ПравуюТочкуВлево(точка+,опора-:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВставитьЗнак(холст:Доступ; знак:ЗНАК); ЗАДАЧА ПравуюТочкуВправо(точка+,опора-:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьСтроку(холст:Доступ); ЗАДАЧА НижнююТочкуВверх(точка+,опора-:Точка); ЗАДАЧА НижнююТочкуВверхВерт(точка+,опора-:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВставитьСтроку(холст:Доступ; строка:Строка); (* Вставляет строку перед тек. строкой *) ЗАДАЧА НижнююТочкуВниз(точка+,опора-:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СклеитьСтроку(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА РазделитьСтроку(холст:Доступ); ЗАДАЧА НижнююТочкуВниз(точка+,опора-:Точка); ЗАДАЧА НижнююТочкуВнизВерт(точка+,опора-:Точка); (****************************************************************************** * отметка куска ******************************************************************************) ЗАДАЧА ВнутриОтметки(отметка-:Отметка; точка-:Точка):КЛЮЧ; ЗАДАЧА ИзменитьОтметку(отметка+:Отметка; с,к:ЦЕЛ); ЗАДАЧА ОчиститьОтметку(отметка+:Отметка); ЗАДАЧА НачалоОтметки(отметка+:Отметка; вертикальная:КЛЮЧ; с,к:ЦЕЛ); (****************************************************************************** * работа с отмеченным куском ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтметкуВЗнаки(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакиВОтметку(холст:Доступ); (* записывает знаки в текущее положение указки *) (* приходится явно исправлять уровень пояснений, т.к. при отмене указка * может находится и в невидимой области холста *) ЗАДАЧА ПравуюТочкуВправо(точка+:Точка; с,к,длина:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СтеретьОтметку(холст:Доступ); (* приходится явно исправлять уровень пояснений, т.к. отметка * может находится и в невидимой области холста *) ЗАДАЧА СтеретьКолонки(строка:Строка; первк,послк:ЦЕЛ); ЗАДАЧА ПравуюТочкуВлево(точка+:Точка); ЗАДАЧА НижнююТочкуВверх(точка+:Точка); (****************************************************************************** * отрисовка на экране ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтрисовкаСтроки(холст:Доступ; строка:Строка; с,лк,вс:ЦЕЛ); (* Цель: отрисовка части строки * До: * <с> - номер строки на холсте * <лк>,<вс> - начало отображения строки на экране *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтрисовкаТекущейСтроки(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтрисовкаНизаРамки(холст:Доступ; строка:Строка; с,ср:ЦЕЛ); (* Цель: отрисовка содержимого низа рамки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтрисовкаРамки(холст:Доступ); (* Цель: отрисовка содержимого рамки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Отрисовка(холст:Доступ); (* Цель: отрисовка холста и указки *) (****************************************************************************** * отработка действий человека ******************************************************************************) ЗАДАЧА ДСтрокуВверх(холст:Доступ); ЗАДАЧА ДПрокруткаВверх(холст:Доступ); ЗАДАЧА ДСтраницуВверх(холст:Доступ); ЗАДАЧА ДСтраницуВниз(холст:Доступ); ЗАДАЧА ДСтрокуВниз(холст:Доступ); ЗАДАЧА ДПрокруткаВниз(холст:Доступ); ЗАДАЧА ДЗнакВлевоСУпором(холст:Доступ); ЗАДАЧА ДЗнакВлево(холст:Доступ); ЗАДАЧА ДЗнакВправо(холст:Доступ); ЗАДАЧА ДСловоВлево(холст:Доступ); ЗАДАЧА ДСловоВправо(холст:Доступ); ЗАДАЧА ДВНачалоСтроки(холст:Доступ); ЗАДАЧА ДВКонецСтроки(холст:Доступ); ЗАДАЧА ДВНачалоХолста(холст:Доступ); ЗАДАЧА ДВКонецХолста(холст:Доступ); ЗАДАЧА ДВНачалоРамки(холст:Доступ); ЗАДАЧА ДВКонецРамки(холст:Доступ); ЗАДАЧА ДСменаЗамены(холст:Доступ); ЗАДАЧА ДЗаменитьЗнак(холст:Доступ; знак:ЗНАК); ЗАДАЧА ОДЗаменитьЗнак(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДВставитьЗнак(холст:Доступ; знак:ЗНАК); ЗАДАЧА ОДВставитьЗнак(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДУдалитьЗнак(холст:Доступ); ЗАДАЧА ОДУдалитьЗнак(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДУдалитьЗнакСлева(холст:Доступ); ЗАДАЧА ОДУдалитьЗнакСлева(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДУдалитьДоКонцаСтроки(холст:Доступ); ЗАДАЧА ОДУдалитьДоКонцаСтроки(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДУдалитьСтроку(холст:Доступ); ЗАДАЧА ОДУдалитьСтроку(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДУдалитьСловоСлева(холст:Доступ); ЗАДАЧА ДУдалитьСловоСправа(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДНоваяСтрока(холст:Доступ); (* Создать новую строку (разделить старую) и сделать отступ в начале *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОДНоваяСтрока(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДПереместитьУказку(холст:Доступ; кр,ср:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДВешка(холст:Доступ; вешка:ЦЕЛ; поставить:КЛЮЧ); ЗАДАЧА Ограничить(с+,к+,пс:ЦЕЛ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ДСнятьОтметку(холст:Доступ); ЗАДАЧА ДОтметитьВсё(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьОтметку(холст:Доступ); (* неявное действие *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОУдалитьОтметку(холст:Доступ; отмена-:Отмена); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПереписатьЗнакиВОтметку(холст:Доступ); (* невидимое действие *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОПереписатьЗнакиВОтметку(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДПеренестиОтметку(холст:Доступ); ЗАДАЧА ДПереписатьОтметку(холст:Доступ); ЗАДАЧА ДУдалитьОтметку(холст:Доступ); (****************************************************************************** * работа с памяткой (для однострочного холста) ******************************************************************************) ЗАДАЧА ДНайтиСтрокуВПамятке(холст:Доступ); ЗАДАЧА ДВыбратьСтрокуВПамятке(холст:Доступ); (******************************************************************************) (* ******* работа с обменником ******* *) (******************************************************************************) ЗАДАЧА ЗнакиВОбменник(холст:Доступ); ЗАДАЧА ОбменникВЗнаки(холст:Доступ); ЗАДАЧА ДПереписатьВОбменник(холст:Доступ); ЗАДАЧА ДПеренестиВОбменник(холст:Доступ); ЗАДАЧА ДПереписатьИзОбменника(холст:Доступ); (****************************************************************************** * сдвиг отметки или строки ******************************************************************************) ЗАДАЧА ВставляемПервыйПробел(строка:Строка):КЛЮЧ; ЗАДАЧА УбираемПервыйПробел(строка:Строка):КЛЮЧ; ЗАДАЧА ТочкуВправо(точка+:Точка; с:ЦЕЛ); ЗАДАЧА ТочкуВлево(точка+:Точка; с:ЦЕЛ); ЗАДАЧА ДСдвинутьВправо(холст:Доступ); ЗАДАЧА ОДСдвинутьВправо(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДСдвинутьВлево(холст:Доступ); ЗАДАЧА ОДСдвинутьВлево(холст:Доступ; отмена-:Отмена); (****************************************************************************** * работа с отменами ******************************************************************************) ЗАДАЧА ОчиститьОтмены(отмены+:Отмены); ЗАДАЧА ПрочитатьОтмену(холст:Доступ; отмена+:Отмена); ЗАДАЧА ЗаписатьОтмену(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДобавитьОтмену(холст:Доступ; отмена-:Отмена); ЗАДАЧА ДОтменить(холст:Доступ); ЗАДАЧА ДОтметкаПеремещение(холст:Доступ; код:ЦЕЛ; упрШифт,упрКонтр,упрАльт:КЛЮЧ); (****************************************************************************** * ввод действий ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (* обработка посланий от человека *) (****************************************************************************** * взаимодействие с холстом ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПосылкаИзменения(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Очистить(холст:Доступ); (* Цель: привести в начальное состояние холст *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПерваяСтрока(холст:Доступ); (* Цель: создать на холсте 1-ю строку *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать(верх,лево,строк,колонок:ЦЕЛ):Доступ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьИзФайла-(верх,лево,строк,колонок:ЦЕЛ; имяФ-:ЦЕПЬ):Доступ; (* Цель: создаёт холст и заполняет его содержимым файла *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПисатьВФайл-(холст:Доступ; имяФ-:ЦЕПЬ):КЛЮЧ; (* Цель: запись содержимого холста в файл с именем <имя> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СохранитьВФайл-(холст:Доступ):КЛЮЧ; (* Цель: сохранение содержимого холста в свой файл с удалением отмен *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьСтроку-(верх,лево,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СтрокуИзЦепи-(холст:Доступ; цепь-:ЦЕПЬ); (* Цель: загрузка из цепочки текущей строки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СтрокуВЦепь-(холст:Доступ; цепь+:ЦЕПЬ); (* Цель: запись в цепочку текущей строки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СтрокуВПамятку-(холст:Доступ); (* Цель: сохранение в памятке текущей строки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПонятиеВЦепь-(холст:Доступ; цепь+:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) (* Цель: запись в цепочку текущего понятия *) ЗАДАЧА ЗнакПонятия(знак:ЗНАК):КЛЮЧ; (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВыставитьУказку-(холст:Доступ; с,к:ЦЕЛ); (****************************************************************************** * поиск образца ******************************************************************************) ЗАДАЧА ИскатьВСтрокеВперёд(строка:Строка); (* Цель: поиск образца из <поиск> в строке <строка> * начиная с колонки <поиск.точка.к> по алгоритму Боуера-Мура *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИскатьВСтрокеНазад(строка:Строка); (* Цель: поиск образца из <поиск> в строке <строка> * начиная с колонки <поиск.точка.к> по алгоритму Боуера-Мура *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Искать(холст:Доступ); (* Цель: поиск образца из <поиск> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтрисовкаДляЗамены(холст:Доступ); (* Цель: выставить рамку в соответствии с точкой поиска * и перерисовать рамку с выделением найденной подстроки *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЗнакиВставить(холст:Доступ; строка:Строка; начало-:Точка); (* Цель: вставить цепочку из <холст.знаки> в <начало> строки <строка> *) ЗАДАЧА ПравуюТочкуВправо(точка+:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьЧасть(холст:Доступ; строка:Строка; начало-:Точка; длина:ЦЕЛ); ЗАДАЧА ПравуюТочкуВлево(точка+:Точка); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Заменить(холст:Доступ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОЗаменить(холст:Доступ; отмена-:Отмена); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИскатьЗаменить-(холст:Доступ; далее:КЛЮЧ); ЗАДАЧА ЗаменитьВсё(); (* НАЗНАЧЕНИЕ: горизонтальная или вертикальная Черта *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); (* приём посылок извне *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ):Доступ; |
▲ \Глагол\Отделы\Среда\
(*============================================================================* * НАЗНАЧЕНИЕ: среда для выполнения Глагол-приложений. Распределяет память под* * создаваемые переменные и выполняет уборку памяти (УП) от неиспользуемых. * * В исключительных состояниях сохраняет в файл срез значений переменных * * запущенных задач. * * * * ПРИМЕЧАНИЯ: * * Свободная память запрашивается у ОС кусками. Для создаваемой * * переменной из куска памяти выбирается свободный (или нарезается новый) * * участок памяти необходимого размера. Свойства участка хранятся в * * описателе участка (ОУ), расположенном до значения переменной. * * Для уборки памяти используются данные о видах времени выполнения (ДВ), * * которые создаются преобразователем Глагола. * * Куски памяти организованны в кольцевой список. * * * * Размещение ДВ набора в области постоянных: * * ДВ-> вид:4; | * * имя:...; } размерДВ ячеек * * ... | * * размерДВ :4; * * адр(ДВ.имя) :4; * * размер набора:4; * * ОВ-> ОВ1:4; | * * ОВ2:4; | * * ... } ВсегоРасширений шт. * * 0 :4; | * * ... | * * 0 :4; | * *============================================================================*) (*************************************************************************** * Задачи-помощники для работы с видами и переменными Приложения ***************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИмяИзОВ-(ов:ЦЕЛ; имя+:ЦЕПЬ); (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОВИзПер-(пер:ЦЕЛ; ов+:ЦЕЛ); (* (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ИмяВИзПер-(пер:ЦЕЛ; имя+:ЦЕПЬ); *) (*************************************************************************** * Задачи для чтения ДВ ***************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЦелИзДВ-(тч+,цел+:ЦЕЛ); (* Цель: прочитать целое число <цел> из ДВ * До: <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ЦепьИзДВ-(тч+:ЦЕЛ; цепь+:ЦЕПЬ); (* Цель: прочитать в <цепь> цепочку знаков * До: <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ВидИмяИзДВ-(тч+,вид+:ЦЕЛ; имя+:ЦЕПЬ); (* Цель: прочитать в <вид> метку ДВ, а в <имя> название ДВ * До: <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НаборИзДВ-(нп,тч+:ЦЕЛ; Обработка:ЗАДАЧА(нп,тч+:ЦЕЛ)); (* Цель: обработать ДВ набора * До: <нп> - адрес начала области переменных * <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПропуститьДВ-(нп,тч+:ЦЕЛ); (* Цель: увеличить <тч> на столько, чтобы пропустить один ДВ * До: <нп> - адрес начала области переменных * <тч> - текущий адрес чтения ДВ *) (****************************************************************************** * Шаги по Уборке Памяти (УП): * а) все ранее распределённые участки памяти переводим в разряд * неиспользуемых (выставляем их размеры отрицательными); * б) отмечаем участки памяти всех размещённых переменных доступных на * данный момент как на уровне отдела так и через стек (в том числе и * через переменные доступа), как используемые (выставляем их размеры * положительными); * в) считаем, что оставшиеся участки с отрицательными размерами больше не * используются приложением, и их можно использовать для новых переменных; * г) смежные свободные участки памяти объединяем; * д) целиком свободные куски памяти возвращаем ОС. ******************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтметитьВРяду-(нпс,тч+,чслаг,рслаг:ЦЕЛ); (* Цель: отметить слагаемые ряда * До: <нпс> - адрес начала переменной слагаемого * <тч> - текущий адрес чтения ДВ * <чслаг> - число слагаемых ряда * <рслаг> - размер одного слагаемого *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтмечаемУчПер(пер:ЦЕЛ):КЛЮЧ; (* Цель: искать в куче и отметить участок памяти переменной с адресом <пер> * Ответ: ВКЛ, если участок ещё не был отмечен *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтметитьВПер(нп,тч+:ЦЕЛ); (* Цель: разбирая ДВ, найти размещённые переменные и отметить их участки памяти * До: <нп> - адрес начала области переменных * <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НаборИзД-(нп,ов:ЦЕЛ; Обработка:ЗАДАЧА(нп,тч+:ЦЕЛ)); (* Цель: найти размещённые переменные набора и обработать их * До: <нп> - адрес начала области переменных *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтметитьВЗадаче(нп,тч:ЦЕЛ); (* Цель: разбирает ДВ задачи, находит размещённые переменные и отмечает их * участки памяти как занятые * До: <нп> - адрес начала переменных задачи (регистр EBP при работе задачи) * <тч> - текущий адрес чтения ДВ *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ОтметитьВОтделе(адрОО:ЦЕЛ); (* Цель: разбирает ДВ отдела, находит размещённые переменные и отмечает их * участки памяти как занятые *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА УдалитьСвКуски(); (* Цель: найти полностью свободные куски памяти и возвратить их в ОС * Прим: из кольцевого списка удобно удалять последующий кусок * После: <теккус> - адрес начального куска в кольцевом списке кусков * <тексвуч> - адрес первого свободного участка <теккус> *) (* (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА ПроверитьКучу-(); (* Цель: проверить строение всей кучи *) *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА GetEBP-():ЦЕЛ; (* Цель: возвратить значение регистра EBP вызвавшей задаче *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НайтиДВЗадачи-(адр,но+,нч+:ЦЕЛ); (* Цель: найти задачу и её ДВ по внутреннему адресу задачи <адр> * После: <тч> - начальный адрес чтения ДВ * <но> - номер отдела, в котором находится задача или 0 *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Уборка-(); (* Цель: найти и объединить неиспользуемые участки памяти * После: <теккус> - адрес начального куска в кольцевом списке кусков * <тексвуч> - адрес первого свободного участка <теккус> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА НаходимСвобУч(размер:ЦЕЛ):КЛЮЧ; (* Цель: искать по всем кускам участок памяти не меньше <размер> ячеек * Прим: если находит такой участок, то возвращает ВКЛ и * После: <теккус> - адрес куска из кольцевого списка * <тексвуч> - адрес свободного участка <теккус> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьКусок(размер:ЦЕЛ); (* Цель: запрос у ОС нового куска памяти с полезным размером <размер> * После: <теккус> - адрес нового текущего куска в кольцевом списке кусков * <тексвуч> - адрес первого (и единственного) участка <теккус> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА СоздатьУч(размер:ЦЕЛ):ЦЕЛ; (* Цель: создать участок с размером <размер> (в конце <тексвуч> * или весь <тексвуч>) и возвратить его адрес * До: <теккус> - адрес текущего куска в кольцевом списке кусков * <тексвуч> - адрес достаточно большого свободного участка в <теккус> * После: <тексвуч> - бывший или следующий адрес свободного участка *) (*************************************************************************** * Задачи, вызываемые из Приложения неявным образом ***************************************************************************) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Создать-(ов,размер,адрес+:ЦЕЛ); (* Цель: поддержка встроенных в Глагол задач: * СОЗДАТЬ(<пер>+:вид) - для наборов и рядов * СОЗДАТЬ(<пер>+:вид; <ДЛ1>,...,<ДЛn>:ЦЕЛ) - для открытых рядов * До: <ов> - описатель вида переменной <пер> * для рядов и открытых рядов <ов> = 0 * <размер> - размер данных у <пер> * для открытых рядов <размер> = 4+n*4+<ДЛ1>*...*<ДЛn> * После: <адрес> - адрес выделенной памяти заполненной 0-ми, * четыре ячейки перед <адрес> всегда содержат <ов> *) (*─────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Присоединить-(адрОО:ЦЕЛ); (* Цель: присоединить к среде отдел, где <адрОО> адрес описателя отдела, * расположенного в постоянной области кода * Прим: вызывается однократно для каждого отдела при запуске приложения *) (*************************************************************************** * Запись среза значений переменных работающих задач в исключительном состоянии ***************************************************************************) ЗАДАЧА Цепь(цепь-:ЦЕПЬ); ЗАДАЧА Цел(описание-:ЦЕПЬ; ц:ШИРЦЕЛ); ЗАДАЧА Вещ(описание-:ЦЕПЬ; в:ШИРВЕЩ); ЗАДАЧА Ряд(нпс,тч+,чслаг,рслаг:ЦЕЛ); (* Цель: выписать значения всех слагаемых ряда * До: <нпс> - адрес начала переменной слагаемого * <тч> - текущий адрес чтения ДВ * <чслаг> - число слагаемых в ряду * <рслаг> - размер одного слагаемого *) ЗАДАЧА ИмяЗадачи(аз,тч+:ЦЕЛ); (* Цель: выписать полное название задачи * До: <аз> - произвольный адрес внутри кода задачи * <тч> - текущий адрес чтения ДВ *) ЗАДАЧА Пер(нп,тч+:ЦЕЛ); (* Цель: выписать значение переменной * До: <нп> - адрес начала области переменных * <тч> - текущий адрес чтения ДВ *) ЗАДАЧА ПерСтека(EBP:ЦЕЛ); ЗАДАЧА Ловушка-(адрОО,кодстрока:ЦЕЛ); (* Цель: ловушка исключений *) |
|
▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com
|