Programming Taskbook 0
Рис. 5. Индикация успешно пройденных тестов Рис. 6
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
- Bu sahifa navigatsiya:
- Proc4 ); // Вариант 1
- Proc4 ); // Вариант 2
Рис. 5. Индикация успешно пройденных тестов
Рис. 6. Правильное решение задачи Proc20 В данном случае раздел с примером правильного решения отсутству- ет, так как его содержимое совпадает с содержимым раздела с полученны- ми результатами. Щелкнув на метке «Результаты (F2)» в правом верхнему углу окна или нажав клавишу F2, можно просмотреть протокол выполнения задания, за- писанный в файле результатов. Для просмотра содержимого файла резуль- татов используется специальная утилита PT4Results, которую можно вы- звать и непосредственно из среды PascalABC.NET с помощью команды меню «Модули | Просмотреть результаты», кнопки или клавиатурной Глава 2. Электронный задачник Programming Taskbook 23 комбинации Ctrl+Shift+R. В окне этой программы (в разделе «Полная ин- формация») мы увидим примерно такой текст: = Иванов Петр (C:\PABCWork.NET) Proc20 A03/05 15:34 Ознакомительный запуск.--2 Proc20 A03/05 15:40 Введены не все требуемые исходные данные. Proc20 A03/05 15:47 Задание выполнено! Каждая строка содержит название задания, дату и время запуска про- граммы и описание результата ее выполнения. Число «2» в конце первой строки с результатами означает, что было произведено два ознакомитель- ных запуска (время соответствует последнему из них). Буква «А» перед да- той означает, что задание выполнялось в среде PascalABC.NET. В заключение данного пункта приведем пример решения еще одной задачи из группы Proc, которая похожа на только что решенную, но имеет особенности, позволяющие использовать при ее решении не только лямб- да-выражения, но и кортежи (см. п. 1.4). Это задача Proc4; в ней требуется описать процедуру TrianglePS, которая по стороне a равностороннего тре- угольника вычисляет его периметр и площадь. Для проверки правильности процедуры надо обработать с ее помощью три данных треугольника. При использовании традиционных средств Паскаля в разделе описа- ний необходимо описать процедуру, содержащую два выходных параметра (снабженных атрибутом var): procedure TrianglePS(a: real; var P, S: real); begin P := 3 * a; S := Sqrt(3) * a * a / 4; end; Применение процедуры для решения задачи будет выглядеть следую- щим образом (напомним, что мы для краткости не указываем операторные скобки begin-end, обрамляющие раздел операторов): Task('Proc4'); // Вариант 1 var P, S: real; for var i := 1 to 3 do begin TrianglePS(ReadReal, P, S); Write(P, S); end; Однако аналогичной функциональности можно добиться, оформив требуемый алгоритм в виде функции (лямбда-выражения), принимающей один параметр (сторону треугольника) и возвращающей кортеж из двух найденных значений — площади и периметра: Task('Proc4'); // Вариант 2 24 var TrianglePS: real -> (real, real); TrianglePS := a -> (3 * a, Sqrt(3) * a * a / 4); var P, S: real; for var i := 1 to 3 do begin (P, S) := TrianglePS(ReadReal); Write(P, S); end; Для сохранения результатов, возвращенных функцией, мы использо- вали кортежное присваивание. Поместить вызов функции TrianglePS непо- средственно в процедуру вывода Write нельзя, так как варианты процедур вывода Write и Print для электронного задачника не поддерживают вывод кортежей (и других структур данных). Мы видим, что завершающий фрагмент второго варианта решения (в котором выполняется тестирование функции) отличается от аналогичного фрагмента первого варианта (в котором тестируется процедура) един- ственным оператором, содержащим вызов соответствующей функции (процедуры). При этом оператор с вызовом функции оказывается более наглядным, так как по его виду, в отличие от оператора вызова процедуры, можно сразу определить, что переменные P и S будут содержать резуль- тат выполнения соответствующей подпрограммы. 2.4. Отладочные средства задачника При решении задач часто бывает желательно вывести на экран допол- нительную информацию, связанную с ходом решения. Поскольку задачник рассматривает все данные, выводимые процедурами Write и Print, как ре- зультаты, полученные программой, попытка вывести с их помощью какие- либо дополнительные данные приведет к сообщению об ошибочном реше- нии. Кроме того, эти дополнительные данные могут вообще не появиться на экране, так как задачник отображает в разделе результатов только те данные, которые соответствуют типу ожидаемых результатов. Для возможности вывода отладочной информации в задачнике преду- смотрены специальные процедуры Show и ShowLine. Каждая из них выво- дит в особый раздел отладки требуемый элемент данных (снабженный, при необходимости, строкой-комментарием), а процедура ShowLine допол- нительно осуществляет переход на новую строку в разделе отладки. Раздел отладки отображается в окне задачника только в случае, если он содержит какие-либо данные. На примере ранее решенной задачи Proc20 проиллюстрируем исполь- зование отладочных процедур, добавив их вызов и в разработанную функ- цию TriangleP, и в цикл, в котором эта функция вызывается. Заодно мы продемонстрируем еще раз, как описывать лямбда-выражение, тело кото- |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling