Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

English

ЮФУ

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет), 1998–2018

 

Решения | Visual Basic | Процедуры задачника

PrevNext


Вспомогательные процедуры задачника

Описанные в данном разделе процедуры доступны при выполнении учебных заданий в среде Visual Basic 5–6. Кроме того, вплоть до версии задачника 4.13 включительно, они доступны при выполнении заданий и в средах Visual Studio 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 5–6 необходимо подключить модуль PT4Main, содержащийся в файле pt4.bas. Для использования процедур в программе на Visual Basic .NET необходимо подключить к ней класс PT4.VisualBasic, описанный в сборке pt4net.dll. При создании проектов-заготовок модуль PT4Main и класс PT4.VisualBasic подключаются к созданным проектам автоматически.

Инициализация заданий, ввод-вывод данных


Public Sub Task(ByVal Name As String)

Процедура инициализирует задание с именем Name. Она должна вызываться в начале процедуры Solve, содержащей решение учебного задания (до вызова процедур ввода-вывода Get–Put). Если в процедуре Solve не указана процедура Task, то при запуске программы будет выведено окно с сообщением «Не вызвана процедура Task с именем задания».

Имя задания Name должно включать имя группы заданий и порядковый номер в пределах группы (например, "Begin3"). Регистр букв в имени группы может быть произвольным. Если указана неверная группа, то программа выведет сообщение об ошибке «Указана неверная тема задания» (список всех доступных групп можно получить с помощью программных модулей PT4Demo и PT4Load). Если указан недопустимый номер задания, то программа выведет сообщение, в котором будет указан диапазон допустимых номеров для данной группы. Если после имени задания в параметре Name указан суффикс «?» (например, "Begin3?"), то программа будет работать в демонстрационном режиме.

Начиная с версии 4.8, процедура Task может также использоваться для генерации и вывода на экран html-страницы с текстом задания или группы заданий. Для этого необходимо указать в качестве параметра Name имя конкретного задания или группы заданий и суффикс «#», например, "Begin3#" или "Begin#". Дополнительные сведения о генерации html-страниц с описаниями заданий приводятся в разделе, посвященном демонстрационному режиму задачника.

Начиная с версии 4.13, задачник обеспечивает автоматическое тестирование программы на нескольких наборах исходных данных при ее однократном запуске. Для отключения этой возможности достаточно указать в параметре Name после имени задания суффикс «!» (например, "Begin3!"); в этом случае при запуске программы она будет протестирована на единственном наборе исходных данных, и для проверки правильности решения программу потребуется запустить несколько раз (как в предыдущих версиях задачника).

Если процедура Task вызывается в программе несколько раз, то все последующие ее вызовы игнорируются. Исключением является ситуация, когда процедура используется для генерации html-страницы с описанием нескольких заданий или групп заданий; в этом случае учитываются все вызовы данной процедуры.

Начиная с версии 4.12, параметр Name может содержать суффикс «_ru» или «_en», позволяющий явным образом задать язык интерфейса (русский или английский соответственно) для окна задачника и выполняемого задания. В версиях 4.12–4.14 специальные суффиксы «?», «#» и «!» должны указываться перед данным суффиксом, например, "Begin3#_en"; начиная с версии 4.15, суффиксы могут указываться в любом порядке. В случае нескольких вызовов процедуры Task (для генерации html-страницы) учитывается только суффикс, указанный при первом вызове процедуры. При отсутствии суффикса используется язык интерфейса, определенный в качестве основного для данного рабочего каталога (в универсальном варианте задачника основной язык интерфейса можно настроить с помощью программного модуля PT4Load, используя его контекстное меню).


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 игнорируется. Игнорируются также все повторные вызовы данной процедуры.

Скрыть/восстановить основные разделы окна задачника после его отображения на экране можно также с помощью клавиши пробела или соответствующей команды контекстного меню раздела отладки.


PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
01.01.2018