Структура электронного задачника

Содержание статьи:
  • Популярные ресурсы по этой теме
  • Общее описание
  • Глава 2 структура электронного учебника
  • Анализ существующей динамической структуры: Dynamic2
  • Поэтому в любом задании на обработку динамических структур в набор исходных данных входят данные типа Node, которые содержат ссылки на элементы исходных структур, созданных задачником. Из текста, описывающего динамическую структуру, видно, что на ее первый элемент ссылается объект с именем A 1 , который также содержится в наборе исходных данных.

    Описание этого объекта имеет вид. Если же элемент данных типа Node не связан ни с каким узлом т. Создав или преобразовав динамическую структуру, программа учащегося должна передать задачнику некоторый объект-узел, связанный с этой структурой используя функцию put. Получив этот объект, задачник сможет проверить правильность созданной структуры.

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

    Приведем вначале неполное решение задачи, выводящее все необходимые данные, кроме ссылки на последний узел цепочки:. Согласно правилам, принятым в языке Java, для доступа к свойству на чтение и на запись используются специальные методы-аксессоры get и set их имена получаются присоединением соответствующего префикса к имени свойства, например, getData и setData.

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

    После завершения цикла в этой переменной будет содержаться ссылка на последний элемент динамической структуры:. Дано число D и вершина A 1 непустого стека. Добавить элемент со значением D в стек и вывести ссылку A 2 на новую вершину стека.

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

    Что произойдет, если динамическая структура будет создана с ошибками?

    Популярные ресурсы по этой теме

    Для того чтобы это выяснить, вернем в программе, решающей задание Dynamic3, ссылку на прежнюю вершину стека, не добавляя к ней новый элемент:. В результате, если исходный стек содержал, к примеру, четыре элемента со значениями 12, 24, 74 и 49, полученный стек будет отображен на экране следующим образом:.

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

    Действительно, тот элемент, который в решении является первым, должен после добавления нового элемента оказаться вторым, и т. Итак, наличие скобок в тексте результирующей динамической структуры означает, что ее элементы располагаются не в том порядке, который требуется. Для получения правильного решения задания Dynamic3 необходимо создать новый элемент, вызвав для него конструктор класса Node.

    Параметры конструктора надо указать таким образом, чтобы свойство Data созданного элемента получило нужное числовое значение, а свойство Next обеспечило связь созданного элемента с текущей вершиной стека. В результате созданный объект будет добавлен в стек и станет его новой вершиной, ссылку на которую и следует вывести:.

    Если не сохранять исходные данные во вспомогательных переменных, а сразу передавать в конструктор класса Node, то решение задачи можно представить в виде единственного оператора:. Дана вершина A 1 непустого стека.

    Извлечь из стека первый верхний элемент и вывести его значение D , а также ссылку A 2 на новую вершину стека. После извлечения элемента из стека освободить ресурсы, используемые этим элементом, вызвав его метод dispose. Все объекты стандартных библиотек Java, требующие для своей работы неуправляемые ресурсы, снабжаются особым методом очистки dispose, вызов которого освобождает ресурсы, выделенные для данного объекта для некоторых групп объектов, например, для файлов, метод очистки имеет имя close.

    Хотя для большинства классов, снабженных методом очистки, предусмотрен автоматический вызов этого метода при разрушении объекта, желательно вызывать метод очистки явно, как только программа завершит работу с данным объектом. В частности, следует явным образом закрывать все открытые файлы, что мы и делали в примерах выполнения учебных заданий на обработку файлов.

    Аналогичная ситуация имеет место и для класса Node. Этот класс также использует ресурсы, поэтому в нем предусмотрен метод очистки с именем dispose, предназначенный для их освобождения. Текст, связанный с подобными объектами-узлами, выделяется на экране бирюзовым цветом меньшей яркости , чем цвет обычных элементов динамической структуры; это служит дополнительным напоминанием о необходимости вызова для данных объектов метода dispose на рисунке таким способом выделен элемент Вначале приведем неправильный вариант решения, в котором для удаленного из стека элемента не вызывается метод dispose:.

    Хотя все результирующие данные будут совпадать с контрольными т.


    1. решебник по русскому языку 4 класс учебник 1 часть канакина.
    2. Добавление элемента к динамической структуре: Dynamic3.
    3. Programming Taskbook?
    4. английский 5 класс алла несвит решебник 2018 перевод!
    5. решебник по истории 8 класс ответы на вопросы учебник.
    6. гдз по математике 2 класс часть 3 онлайн.

    Для получения правильного решения достаточно добавить в конец функции solve вызов метода dispose для объекта a1, удаленного из стека:. Поэтому при выполнении заданий на языке Java задачник выполняет дополнительное перекодирование исходных файлов из формата little-endian принятого в задачнике по умолчанию в силу большей распространенности в формат big-endian, а перед проверкой полученных файлов выполняется их обратная перекодировка.

    Аналогичные проблемы возникают при работе с двоичными строковыми файлами. NET для описания подобных файлов достаточно использовать тип file of ShortString, определяющий двоичный файл, состоящий из элементов-строк протяженностью байт реальный размер строк может изменяться в диапазоне от 0 до символов; этот размер указывается в первом байте.

    Для прочих используемых языков аналоги типа ShortString отсутствуют, поэтому в этих языках элементами двоичных строковых файлов считаются строки протяженностью 80 байт. Аналогичные форматы используются и для других языков, поддерживаемых задачником VB. При формировании исходных файлов и анализе файлов, полученных программой студента, задачник автоматически учитывает все перечисленные выше особенности строковых файлов для различных языков.

    Еще одной важной характеристикой, относящейся к любым файлам с символьной информацией двоичным символьным и строковым, а также текстовым является кодировка символов. NET и C , а также Java при работе с файлами, имеющими кодировку, отличную от UTF-8, необходимо явным образом указывать требуемую кодировку при создании файловых объектов, в противном случае при файловом вводе-выводе русские буквы будут обрабатываться неверно.

    Приступая к изучению продвинутого курса, студент уже владеет базовыми концепциями файловой обработки и примером.

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

    Как было отмечено в [1], одной из особенностей задачника, существенно ускоряющих процесс выполнения учебных заданий, является автоматизация действий по отображению данных на экране: При этом отображаются не только данные, непосредственно полученные от задачника или переданные задачнику с помощью специализированных операций ввода-вывода определенных в задачнике для каждого языка программирова-.

    Элементы двоичных файлов перед выводом преобразуются к их текстовому представлению; в начале каждой экранной строки, содержащей файловые элементы, указывается порядковый номер первого элемента, выведенного на этой строке. В качестве примера на рис. В этой задаче программа студента должна получить от задачника имя файла, который уже создан задачником и размещен в рабочем каталоге при генерации всех исходных данных, в том числе и файловых элементов, используется датчик случайных чисел.

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

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

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

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

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

    Для переключения между сокращенным и полным вариантом отображения содержимого текстовых файлов достаточно нажать клавишу.

    Общее описание

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

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

    Задачник перехватывает исключения, вызванные подобными ошибками, и выводит информацию о них в своем окне; это позволяет студенту не только ознакомиться с описанием ошибки, но и проанализировать исходные данные, обработка которых привела к возникновению ошибки.

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

    Подобные ошибки не могут быть обнаружены на этапе компиляции и не всегда приводят к ошибкам времени выполнения. Благодаря средствам визуализации, реализованным в задачнике, подобные ошибки также удается легко выявить и исправить.

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

    Если по каким-либо причинам один из файлов оказывается недоступным для удаления, он удаляется при одном из последующих запусков програм-.

    Глава 2 структура электронного учебника

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

    Автоматическое распознавание подобных ошибок позволяет учащемуся быстро исправлять их без какого-либо участия преподавателя. Однако возможны ситуации, при которых применение специализированных средств ввода-вывода является нежелательным. Например, при сдаче экзамена или выполнении контрольной работы естественно требовать, чтобы учащийся представил программу, решающую задачу с применением стандартных возможностей используемого языка программирования, в том числе стандартных средств ввода-вывода.

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

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

    2.1. Основные формы электронного учебника

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

    На этапе подготовки желательно иметь более информативную обратную связь с тестирующей системой, и средства электронного задачника позволяют обеспечить такую связь. В качестве примера можно привести две специальные группы заданий, включенные в задачник Programming Taskbook и предназначенные для подготовки к сдаче ЕГЭ по информатике.

    Все эти задания соответствуют задачам ЕГЭ, связанным с разработкой алгоритма и его реализацией на каком-либо языке программирования. Группа ExamBegin содержит заданий на освоение типовых алгоритмов, включенных в кодификатор ЕГЭ по информатике, группа ExamTaskC содержит заданий повышенного уровня сложности, подобных задачам группы С.

    Подробное описание заданий, связанных с ЕГЭ, приведено в работе [8]. При разработке этих заданий был использован механизм, позволяющий оформлять ввод-вывод данных с применением стандартных средств используемого языка программирования: Этот механизм состоит в перенаправлении стандартных потоков ввода-вывода, которые связываются со специальными файлами: Таким образом, при выполнении задания учащийся использует только стандартные средства языка программирования, однако при этом для него остаются доступными все описанные выше возможности, связанные с визуализацией исходных, полученных и контрольных данных.

    Следует обратить внимание на то, что в разделах исходных данных и результатов отображается содержимое текстовых файлов, однако имена этих файлов вводить не требуется, поскольку сам задачник обеспечивает связывание файлов со стандартными потоками ввода-вывода.

    Для правильного решения задачи необходимо не только вывести требуемые данные, но и отформатировать их надлежащим образом заметим, что в группах заданий, не связанных с ЕГЭ, это не требу-. Предусмотренные в задачнике возможности для работы с файлами оказываются полезными при разработке групп заданий, посвященных технологиям обработки сложных наборов данных.

    В качестве примера можно привести электронный задачник по технологии LINQ платформы. LinqBegin 60 задач на освоение базовых.

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

    Это делает доступными при выполнении заданий все средства задачника, связанные с визуализацией файловых данных.

    Версия конструктора, соответствующая версии задачника 4. В конструкторе имеются специальные средства для включения в разрабатываемые задания как двоичных, так и текстовых файлов, содержащих исходные и контрольные данные.

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

    Анализ существующей динамической структуры: Dynamic2

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

    Приведем текст функции solve из данного файла именно в эту функцию требуется ввести решение задачи:. После запуска программы на экране появится окно задачника. На рисунке приводится вид окна в режиме с динамической компоновкой , появившемся в версии 4.

    Это окно содержит в качестве исходных и результирующих данных новые элементы: Начнем с описания того, как отображается на экране динамическая структура. Вся информация о динамической структуре отображается бирюзовым цветом подобно информации об элементах файлов.

    Рассмотрим в качестве примера динамическую структуру, указанную на рисунке:. Этот текст означает, что структура состоит из 5 элементов, причем ее первый элемент имеет свойство Data, равное 75, и связан с помощью своего свойства Next со вторым элементом, свойство Data которого равно 65, и так далее до последнего, пятого элемента, свойство Data которого равно 10, а свойство Next равно нулевой ссылке null, что является признаком завершения структуры.

    Таким образом, текст, описывающий данную динамическую структуру, является упрощенным вариантом следующей схемы:. Так как описанная выше динамическая структура указана в разделе исходных данных, следовательно, после инициализации задания она уже существует и размещается в некоторой области динамической памяти подобно тому, как исходные файлы после инициализации задания размещаются в каталоге учащегося.

    Как получить доступ к этой существующей динамической структуре? Здесь также уместна аналогия с файлами.

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

    Из текста, описывающего динамическую структуру, видно, что на ее первый элемент ссылается объект с именем A 1 , который также содержится в наборе исходных данных.

    Описание этого объекта имеет вид. Если же элемент данных типа Node не связан ни с каким узлом т. Создав или преобразовав динамическую структуру, программа учащегося должна передать задачнику некоторый объект-узел, связанный с этой структурой используя функцию put.

    Получив этот объект, задачник сможет проверить правильность созданной структуры. Вернемся к заданию Dynamic2. В нем не требуется ни создавать, ни преобразовывать исходную структуру данных; ее необходимо лишь проанализировать, а именно, определить значения всех ее элементов, подсчитать количество элементов и, кроме того, вывести ссылку на последний элемент этой структуры.

    Приведем вначале неполное решение задачи, выводящее все необходимые данные, кроме ссылки на последний узел цепочки:. Согласно правилам, принятым в языке Java, для доступа к свойству на чтение и на запись используются специальные методы-аксессоры get и set их имена получаются присоединением соответствующего префикса к имени свойства, например, getData и setData.

    Это связано с тем, что после завершения цикла переменная a1 содержит нулевую ссылку null, а не ссылку на последний элемент динамической структуры. Для того чтобы получить правильное решение, опишем вспомогательную переменную a2, в которой будем сохранять ссылку на элемент, предшествующий элементу a1. После завершения цикла в этой переменной будет содержаться ссылка на последний элемент динамической структуры:.

    Дано число D и вершина A 1 непустого стека. Добавить элемент со значением D в стек и вывести ссылку A 2 на новую вершину стека.

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

    Что произойдет, если динамическая структура будет создана с ошибками? Для того чтобы это выяснить, вернем в программе, решающей задание Dynamic3, ссылку на прежнюю вершину стека, не добавляя к ней новый элемент:.

    В результате, если исходный стек содержал, к примеру, четыре элемента со значениями 12, 24, 74 и 49, полученный стек будет отображен на экране следующим образом:.

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

    Итак, наличие скобок в тексте результирующей динамической структуры означает, что ее элементы располагаются не в том порядке, который требуется. Для получения правильного решения задания Dynamic3 необходимо создать новый элемент, вызвав для него конструктор класса Node.

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

    В результате созданный объект будет добавлен в стек и станет его новой вершиной, ссылку на которую и следует вывести:. Интерфейс задачника можно настраивать независимо для различных рабочих каталогов учащихся.

    При выполнении заданий их формулировки приводятся на языке, соответствующем выбранному языковому интерфейсу. Кроме того, при выполнении любого задания имеется возможность явного выбора языка интерфейса. Основная часть адаптации задачника к средам разработки Code:: Blocks, PyCharm и Eclipse выполнена О.

    Для работы с ними можно использовать версию 4. Дополнительная текстовая информация оформляется в виде обычного текстового файла файла дополнений. В частности, с помощью файла дополнений можно для каждого задания группы задать собственную программу-заготовку на любом доступном языке программирования.

    Файлы дополнений не связаны с откомпилированными библиотеками групп заданий dll-файлами и могут разрабатываться независимо от них.

    Правила разработки файлов дополнений приводятся в описании конструктора учебных заданий PT4TaskMaker, входящего в систему для преподавателя программирования Teacher Pack.

    Появившиеся в версии 4. В систему для преподавателя программирования Teacher Pack включена версия 3. Кроме того, добавлена поддержка языка Python версии 3.