Вспомогательные процедуры задачника
Описанные в данном разделе процедуры доступны при выполнении учебных заданий в среде Visual Basic 56.
Кроме того, они доступны при выполнении заданий и в средах Visual
Basic .NET 2003, 2005, 2008, 2010, если для этих сред выбран «традиционный» вариант задачника,
не использующий средства, предоставляемые
стандартной библиотекой классов .NET Framework. «Традиционные»
варианты для сред Visual Studio 2003, 2005, 2008 и 2010 называются
соответственно «Microsoft Visual Basic 2003»,
«Microsoft Visual Basic 2005»,
«Microsoft Visual Basic 2008», «Microsoft Visual Basic 2010», в то время как
варианты, ориентированные на применение библиотеки классов .NET Framework, имеют в своем названии
слово «.NET»:
«Microsoft Visual Basic .NET 2003»,
«Microsoft Visual Basic .NET 2005»,
«Microsoft Visual Basic .NET 2008»,
«Microsoft Visual Basic .NET 2010»
(по поводу использования .NET-вариантов задачника см. раздел, посвященный языкам программирования
C# и Visual Basic .NET).
Для возможности использования данных процедур в программе на Visual Basic 56
необходимо подключить модуль PT4Main, содержащийся в файле pt4.bas. Для использования
процедур в программе на Visual Basic .NET необходимо подключить к ней класс PT4.VisualBasic, описанный
в сборке pt4net.dll. При создании проектов-заготовок
модуль PT4Main и класс PT4.VisualBasic подключаются к созданным проектам автоматически.
Инициализация заданий, ввод-вывод данных
Public Sub Task(ByVal Name As String)
Процедура инициализирует задание с именем Name. Она должна вызываться в
начале процедуры Solve, содержащей решение учебного задания (до вызова процедур
ввода-вывода GetPut). Если в процедуре Solve не указана процедура Task, то
при запуске программы будет выведено окно с сообщением «Не вызвана
процедура Task с именем задания».
Имя задания Name должно включать имя группы заданий и порядковый номер в
пределах группы (например, "Begin3"). Регистр букв в имени группы может быть
произвольным. Если указана неверная группа, то программа выведет сообщение об
ошибке, в котором будут перечислены названия всех имеющихся групп. Если указан
недопустимый номер задания, то программа выведет сообщение, в котором будет
указан диапазон допустимых номеров для данной группы. Если после имени задания
в параметре Name указан символ «?» (например, "Begin3?"), то
программа будет работать в демонстрационном режиме.
Начиная с версии 4.8, процедура Task может также использоваться для
генерации и вывода на экран html-страницы с текстом задания или группы заданий.
Для этого необходимо указать в качестве параметра Name имя конкретного задания или группы
заданий и символ «#», например, "Begin3#" или
"Begin#". Дополнительные сведения о генерации html-страниц с описаниями заданий приводятся
в разделе, посвященном демонстрационному режиму задачника.
Если процедура Task вызывается в программе несколько раз, то все
последующие ее вызовы игнорируются. Исключением является ситуация, когда
процедура используется для генерации html-страницы с описанием нескольких заданий или групп
заданий; в этом случае учитываются все вызовы данной процедуры.
Public Sub GetB(ByRef A As Boolean)
Public Sub GetN(ByRef A As Integer)
Public Sub GetD(ByRef A As Double)
Public Sub GetS(ByRef A As String)
Процедуры обеспечивают ввод исходных данных в программу, выполняющую
учебное задание. Они должны вызываться после вызова процедуры Task; в случае их
вызова до вызова процедуры Task при запуске программы будет выведено сообщение
об ошибке «В начале программы не вызвана процедура Task с именем
задания».
Используемая процедура ввода должна соответствовать типу очередного
элемента исходных данных; в противном случае выводится сообщение об ошибке
«Неверно указан тип при вводе исходных данных» (такое сообщение
будет выведено, например, если очередной элемент данных является символьной
строкой, а для его ввода используется процедура GetN).
Процедура GetS должна применяться как для ввода строк, так и для ввода
символов, которые при использовании традиционных средств Visual Basic представляются в виде односимвольных
строк.
При попытке ввести больше исходных данных, чем это предусмотрено в
задании, выводится сообщение об ошибке «Попытка ввести лишние исходные
данные». Если исходные данные, необходимые для решения задания, введены
не полностью, то выводится сообщение «Введены не все требуемые исходные
данные».
Public Sub PutB(ByVal A As Boolean)
Public Sub PutN(ByVal A As Integer)
Public Sub PutD(ByVal A As Double)
Public Sub PutS(ByVal A As String)
Процедуры обеспечивают вывод на экран результирующих данных, найденных
программой, и их сравнение с контрольными данными (т. е. с правильным
решением). Как и процедуры группы Get, эти процедуры должны вызываться после
вызова процедуры Task; в противном случае при запуске программы будет выведено
сообщение об ошибке «В начале программы не вызвана процедура Task с
именем задания».
В отличие от процедур группы Get, в качестве параметра процедур группы Put
можно указывать не только переменные, но и выражения (в частности, константы
соответствующего типа). Используемая процедура должна соответствовать типу
очередного элемента результирующих данных, в противном случае выводится
сообщение об ошибке «Неверно указан тип при выводе результатов».
Процедура PutS должна использоваться как для вывода строк, так и для вывода
отдельных символов.
Как и в случае процедур группы Get, при вызовах процедур группы Put
программа осуществляет контроль за соответствием количества требуемых и
выведенных результирующих данных. Если программа выведет недостаточное или
избыточное количество результирующих данных, то после проверки этих данных
появится сообщение «Выведены не все результирующие данные» или,
соответственно, «Попытка вывести лишние результирующие данные».
Вывод отладочной информации
Описываемые далее отладочные средства появились в версии 4.9 задачника Programming Taskbook.
С их помощью можно выводить отладочную информацию
непосредственно в окно задачника (в специальный раздел отладки).
Public Sub Show(ByVal S As String)
Отображает текстовую строку S в разделе отладки окна задачника.
Если текущая экранная строка в разделе отладки уже содержит некоторый текст, то
строка S снабжается начальным пробелом и приписывается к этому тексту,
за исключением случая, когда при таком приписывании размер
полученного текста превысит ширину области данных (равную 80 символам).
В последнем случае вывод строки S осуществляется с начала
следующей экранной строки; если же и в этой ситуации строка S превысит
ширину области данных, то строка S будет выведена на нескольких
экранных строках, причем разрывы текста будут выполняться по
пробельным символам строки S, а при отсутствии пробелов при
достижении очередного фрагмента строки длины, равной 80.
Строка S может содержать явные команды перехода на новую
экранную строку. В качестве таких команд можно использовать или
символ с кодом 13 (Chr(13) «возврат каретки»), или символ с кодом 10 (Chr(10) «переход на новую
строку»), или их комбинацию в
указанном порядке (Chr(13) & Chr(10)).
Для вывода числовых данных достаточно указать их в качестве параметра процедуры Show; при этом они автоматически
будут преобразованы к своему строковому представлению. С помощью операции & можно выводить
в раздел отладки числовые данные вместе с предшествующим комментарием, например:
[VB5-6]
Show "A = " & A
[VB.NET]
Show("A = " & A)
Здесь A переменная числового типа (Integer или Double).
Public Sub ShowLine(ByVal S As String)
Модификация ранее описанной процедуры Show; после вывода данных в раздел отладки
дополнительно осуществляет автоматический переход на следующую экранную строку.
Public Sub HideTask()
Вызов данной процедуры обеспечивает автоматическое скрытие всех разделов окна
задачника, кроме раздела отладки. Если раздел отладки в окне задачника
не отображается (в частности, если программа запущена в
демонстрационном режиме), то вызов процедуры HideTask игнорируется.
Игнорируются также все повторные вызовы данной процедуры.
Скрыть/восстановить основные разделы окна
задачника после его отображения на экране можно также с помощью клавиши
пробела или соответствующей команды контекстного меню раздела
отладки.
|