Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet10/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   ...   6   7   8   9   10   11   12   13   ...   71
Bog'liq
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:
1   ...   6   7   8   9   10   11   12   13   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling