Programming Taskbook 0
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
Замечание. Может возникнуть вопрос, почему вместо приведенного
фрагмента не был использован единственный оператор, в котором ввод выполняется при вызове функции: Write(TriangleP(ReadReal, ReadReal)). При- чина заключается в том, что в PascalABC.NET не определен порядок вы- числения параметров подпрограмм, и значит, нельзя быть уверенным в том, что в данном случае вначале будет вызвана первая функция ReadReal, а затем вторая. В случае обработки параметров в направлении справа налево в приведенном операторе основание а окажется вторым параметром функции TriangleP, а высота h — первым, что, разумеется, приведет к не- верному вычислению периметра. Проверка показывает, что в версии 3.1 системы PascalABC.NET параметры вычисляются слева направо (и поэто- му в данной версии значения параметров будут располагаться в правиль- ном порядке), однако это может измениться в последующих версиях. Полученный вариант решения является не вполне правильным, так как он обрабатывает не три треугольника, а лишь один. Поэтому при запуске программы в информационной панели окна задачника будет выведено со- общение об ошибке «Введены не все требуемые исходные данные. Количе- ство прочитанных данных: 2 (из 6)», причем фон информационной панели станет оранжевым (см. рис. 4). Оранжевый цвет используется для индика- ции ошибки ввода, связанной с тем, что были введены не все требуемые данные. Этот же цвет используется в случае вывода не всех требуемых ре- зультатов. При попытке ввести или вывести лишние данные сообщение об ошибке выводится на малиновом фоне, а ошибки, связанные с использова- Глава 2. Электронный задачник Programming Taskbook 21 нием неверных типов при вводе или выводе, выделяются фиолетовым цве- том. Все прочие ошибки отображаются на красном фоне. На панели индикаторов отображаются данные о количестве фактиче- ски введенных и выведенных данных. Заголовок раздела с исходными данными также выделяется оранжевым цветом, чтобы подчеркнуть, что ошибка связана именно с вводом данных. Следует также обратить внима- ние на то, что в случае ошибочного решения в окне задачника отображает- ся как раздел с результатами, полученными программой, так и раздел с примером правильного решения. Сравнивая содержимое этих разделов, мы можем убедиться, что пе- риметр первого из данных треугольников найден правильно. Рис. 4. Ошибочное решение задачи Proc20 Для завершения программы нам осталось повторить три раза действия по вводу данных, их передаче функции TriangleP и выводу результата. Оформим это повторение в виде цикла for, воспользовавшись еще одной возможностью PascalABC.NET, отсутствующей в традиционном Паскале: описанием параметра цикла непосредственно в его заголовке (см. п. 1.1). В результате решение задачи примет следующий вид: Task('Proc20'); var TriangleP: (real, real) -> real; TriangleP := (a, h) -> 2 * Sqrt(Sqr(a/2) + Sqr(h)) + a; for var i := 1 to 3 do 22 begin var a := ReadReal; var h := ReadReal; Write(TriangleP(a, h)); end; При запуске этого (правильного) варианта решения на экране появит- ся вспомогательное окно с индикацией пройденных тестов (см. рис. 5), а после успешного прохождения требуемого числа тестов (в зависимости от сложности задачи и разнообразия возможных исходных данных это число может изменяться от 3 до 9) — окно задачника с сообщением о правиль- ном решении (см. рис. 6). Download 1.62 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling