Категории
Самые читаемые

Описание языка PascalABC.NET - W Cat

Читать онлайн Описание языка PascalABC.NET - W Cat

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 54 55 56 57 58 59 60 61 62 ... 101
Перейти на страницу:

Шаг 5. Исправим ошибку:

uses PT4;

var a, b, S, P: real;

begin

Task('Begin3');

read(a, b);

S := a * b;

P := 2 * (a + b);

write(S, P)

После запуска программы увидим следующее окно:

Если решение является правильным, то дополнительный раздел с примером правильного решения в окне не выводится.

Шаг 6. Чтобы задание считалось выполненным, запустим программу еще два раза. В результате в окне задачника появится сообщение «Задание выполнено!»:

Поздравляем! Задание Begin3 под руководством электронного задачника выполнено! Результаты выполнения заданий можно просмотреть, щелкнув мышью на метке Результаты (F2)", расположенной в правом верхнем углу окна задачника, или нажав клавишу F2. После закрытия окна задачника и возврата в среду PascalABC.NET результаты можно отобразить на экране, нажав кнопку или нажав клавиатурную комбинацию Shift+Ctrl+R.

Задание a1 для исполнителя Робот

Задание a1 относится к вводным заданиям, посвященным знакомству с основными командами исполнителя Робот. Приведем формулировку этого задания.

a1. Закрасить помеченные клетки.

Опишем сценарий решения задания.

Шаг 1. Подключим к программе модуль Robot и вызовем в начале программы процедуру Task, передав ей в качестве параметра имя задания:

uses Robot;

begin

Task('a1');

Чтобы не набирать указанный текст, нажмем кнопку и в появившемся окне наберем имя задания RBa1 (префикс RB означает, что решается задача для Робота). Запустим программу (нажав клавишу F9), чтобы увидеть окно Робота с графическим изображением задания:

Шаг 2. Наберем несколько команд Робота:

uses Robot;

begin

Task('a1');

Right;Right;Right;Right;

Запустим программу, после чего нажмем Enter или кнопку «Пуск» чтобы Робот начал выполнять заложенную в него программу:

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

Шаг 3. Выполним неверную команду, в результате которой Робот врежется в стенку:

uses Robot;

begin

Task('a1');

Right;Right;Right;Right;

Up;Up;Left;

После запуска программы и нажатия Enter получим следующее окно:

Заметим, что квадратный индикатор состояния Робота окрасился в красный цвет, а последняя команда Left не выполнилась, так как после фатальной ошибки Робот прекратил выполнение задания.

Шаг 4. Исправим ошибку и выполним задание до конца:

uses Robot;

begin

Task('a1');

Right;Right;Right;Right;

Up;

Left;Paint;

Left;Paint;

Left;Paint;

Left;Paint;

Left;

Последний рисунок не нуждается в комментариях.

Заметим, что сведения о выполненных заданиях можно просмотреть, нажав кнопку .

Задание на обработку строк

Создание программы-заготовки и знакомство с заданием

В качестве примера задания на обработку строк рассмотрим задание String9.

Программу-заготовку для решения этого задания можно создать с помощью команды меню Модули | Создать шаблон программы", кнопки или клавиатурной комбинации Shift+Ctrl+L. Эта заготовка будет иметь следующий вид:

uses PT4;

begin

Task('String9');

end.

После запуска данной программы на экране появится окно задачника:

Данные типа char и string в окне задачника заключаются в апострофы; это позволяет, в частности, отличить числовые данные (например, 9) от символьных и строковых данных, содержащих цифры (например, '9'). Кроме того, апострофы дают возможность увидеть пробелы, находящиеся в начале или конце строк. Ввод исходных данных

Добавим в программу фрагмент, обеспечивающий ввод исходных данных (мы намеренно ввели данные не в том порядке, в котором они указаны в окне задачника):

uses PT4;

var

n: integer;

c1, c2: char;

begin

Task('String9');

read(c1, c2, n);

end.

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

Общее правило, определяющее порядок ввода и вывода данных для задачника Programming Taskbook гласит: ввод и вывод данных производится по строкам (слева направо), а строки просматриваются сверху вниз. Иными словами, данные, отображаемые в окне задачника, вводятся и выводятся в том порядке, в котором читается обычный текст.

На панели индикаторов, расположенной под информационной панелью, отмечено, что введен всего один элемент исходных данных (из трех), хотя в процедуре read нашей программы были указаны три переменные. Это объясняется тем, что при вводе первой из этих переменных (с1) была обнаружена ошибка несоответствия типа, поэтому задачник не стал анализировать остальные данные, которые программа пыталась ввести. Здесь проявляется еще одно правило задачника Programming Taskbook: при обнаружении первой ошибки ввода-вывода анализ оставшихся исходных данных и результатов не проводится.

Исправим нашу программу, изменив порядкок параметров в процедуре ввода:

read(n, c1, c2);

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

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

Формирование и вывод требуемой строки

Для формирования нужной строки воспользуемся операцией + (сцепления строк):

uses PT4;

var

n, i: integer;

c1, c2: char;

s: string;

begin

Task('String9');

read(n, c1, c2);

s := '';

for i := 1 to n do

s := s + c1 + c2;

write(s);

end.

Заметим, что в операторе s := '' нет необходимости, так как все глобальные переменные в Паскале автоматически инициализируются нулевыми" значениями (для числовых данных это обычные нули, для символов -- это символ #0, для строк -- пустая строка '').

Результат выполнения этой программы будет следующим:

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

Замечание. Красная звездочка может появиться и при выводе ошибочных числовых данных. Например, если ожидается целое число в диапазоне от 1 до 99, а получено число 10000, то на экране изобразится первая цифра этого большого числа, за которой будет указана красная звездочка: 1*.

Верное решение

Ошибка в предыдущей программе возникла из-за неверного указания количества итераций цикла. Действительно, на каждой итерации к строке добавляется по два символа, поэтому после n итераций строка будет содержать 2*n символов (а не n, как требуется в задании).

Для исправления ошибки достаточно вдвое уменьшить число итераций:

uses PT4;

var

n, i: integer;

c1, c2: char;

s: string;

begin

Task('String9');

read(n, c1, c2);

s := '';

for i := 1 to n div 2 do

s := s + c1 + c2;

write(s);

end.

После запуска этого варианта мы получим сообщение Верное решение. Тест номер 1 (из 5)", а после пяти подобных запусков -- сообщение "Задание выполнено!":

1 ... 54 55 56 57 58 59 60 61 62 ... 101
Перейти на страницу:
На этой странице вы можете бесплатно скачать Описание языка PascalABC.NET - W Cat торрент бесплатно.
Комментарии