Выполнение задания на обработку строк: String9
Особенности выполнения заданий на обработку символов и строк рассмотрим на примере задания String9.
String9°. Дано четное число N (> 0) и символы C1 и C2.
Вывести строку длины N, которая состоит из чередующихся символов C1 и C2, начиная с C1.
Создание программы-заготовки и знакомство с заданием
Проект-заготовка, созданный для системы 1С:Предприятие 8, состоит из нескольких файлов, однако для решения
задания нам потребуется только файл String9.1с. Для загрузки содержимого этого файла в конфигуратор системы 1С необходимо
после появления на экране окна конфигуратора выполнить щелчок правой кнопкой мыши на пункте «Конфигурация»
окна «Конфигурация» и выполнить в появившемся контекстном меню команду «Открыть модуль приложения».
Приведем начальную часть содержимого данного файла:
Процедура Решение(pt)
pt.Задание("String9");
КонецПроцедуры
Эта часть содержит описание процедуры Решение, в которой необходимо запрограммировать решение задания.
Процедура Решение уже содержит вызов процедуры Задание, инициализирующей задание String9.
Файл String9.1с содержит также описание стартовой процедуры ПриНачалеРаботыСистемы, в которой производится вызов процедуры Решение.
Процедура ПриНачалеРаботыСистемы не требует редактирования при выполнении задания, поэтому приводить ее текст мы не будем.
Запустим программу, нажав клавишу [F5] или комбинацию клавиш [Ctrl]+[F5], запускающую программу в более быстром режиме
с отключенным отладчиком. Перед компиляцией программы среда 1С выдаст диалоговое окно следующего вида:
В этом случае надо выбрать вариант «Да» (достаточно нажать клавишу [Enter]). После компиляции и запуска программы мы сможем увидеть на экране окно задачника с формулировкой задания и примером исходных данных.
После запуска программы на экране появится окно задачника следующего вида.
Символьные и строковые данные в окне задачника заключаются в двойные кавычки; это позволяет отличить
числовые данные (например, 2) от символьных и строковых данных, содержащих цифры
(например, символа "2"). Кроме того, кавычки дают возможность увидеть пробелы, находящиеся в начале или в конце строк.
Ввод исходных данных
Добавим в процедуру Решение фрагмент, обеспечивающий ввод исходных данных.
Для ввода данных типа символ и число надо использовать функции ПолучитьСтроку (GetString) и ПолучитьЧисло (GetNumber):
Процедура Решение(pt)
pt.Задание("String9");
A = pt.ПолучитьСтроку();
Б = pt.ПолучитьСтроку();
N = pt.ПолучитьЧисло();
КонецПроцедуры
Мы намеренно ввели данные не в том порядке, в котором они указаны в окне задачника.
Запуск нового варианта программы уже не будет считаться ознакомительным, поскольку в программе
выполняется ввод исходных данных. Так как порядок ввода исходных данных является ошибочным, этот вариант решения будет
признан неверным и приведет к сообщению «Неверно указан тип при вводе исходных данных. Для ввода 1-го элемента (целого типа)
использована переменная символьного типа».
Напомним правило, определяющее порядок ввода и вывода данных для задачника Programming
Taskbook: ввод и вывод данных производится по строкам (слева направо), а строки просматриваются сверху вниз.
Исправим процедуру Решение, изменив в ней порядок ввода исходных данных:
N = pt.ПолучитьЧисло();
А = pt.ПолучитьСтроку();
Б = pt.ПолучитьСтроку();
Теперь исходные данные вводятся правильно. Однако из-за того что в программе отсутствует вывод результирующих данных,
решение снова будет признано ошибочным; при этом на информационной панели появится сообщение «Выведены не все результирующие данные.
Количество выведенных данных: 0 (из 1)»
Формирование требуемой строки и ее вывод
Для формирования нужной строки воспользуемся операцией «+» сцепления строк; для вывода полученной
строки используем процедуру Вывести (Put):
Процедура Решение(pt)
pt.Задание("String9");
N = pt.ПолучитьЧисло();
А = pt.ПолучитьСтроку();
Б = pt.ПолучитьСтроку();
стр = "";
Для инд = 0 по N - 1 Цикл
стр = стр + А + Б;
КонецЦикла;
pt.Вывести(стр);
КонецПроцедуры
При выполнении этой программы в области результатов будет выведена строка, оканчивающаяся особым символом красной звездочкой, например:
"a1a1a1a1a1*
Красная звездочка, расположенная в конце строки, отображаемой на экране, означает, что длина полученной
строки превышает длину контрольной (т. е. «правильной») строки. Для того чтобы увидеть на экране
всю полученную строку, достаточно подвести курсор мыши к строке со звездочкой; при этом полный текст строки появится во всплывающей подсказке.
Правильное решение, его тестирование и просмотр результатов
Ошибка в предыдущей программе возникла из-за неверного указания количества итераций цикла. Действительно,
на каждой итерации к строке добавляется по два символа, поэтому после N итераций строка будет содержать
2N символов (а не N, как требуется в задании).
Для исправления ошибки достаточно вдвое уменьшить число итераций, изменив заголовок цикла следующим образом:
Для инд = 0 по N/2-1 Цикл
После запуска исправленной программы мы получим сообщение
«Верное решение. Тест номер 1 (из 5)», а после пяти подобных
запусков сообщение «Задание выполнено!». С помощью модуля PT4 Results из базового варианта
задачника Programming Taskbook
мы можем вывести на экран окно результатов, в котором будут перечислены все наши попытки решения задания:
String9 e24/03 11:37 Ознакомительный запуск.
String9 е24/03 11:48 Неверно указан тип при вводе исходных данных.
String9 е24/03 11:49 Выведены не все результирующие данные.
String9 е24/03 11:49 Ошибочное решение.
String9 е24/03 11:52 Задание выполнено!
Заметим, что указанная перед датой выполнения задания буква «e» (начальная буква слова Enterprise)
означает, что задание выполнялось в системе 1С:Предприятие.
|