- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
После запуска этого варианта мы получим сообщение Верное решение. Тест номер 1 (из 5)", а после пяти подобных запусков -- сообщение "Задание выполнено!":
Замечание. Приведем другой, более быстрый, способ решения задания String9, в котором результирующая строка заполняется посимвольно, как обычный массив:
uses PT4;
var
n, i: integer;
c1, c2: char;
s: string;
begin
Task('String9');
read(n, c1, c2);
SetLength(s, n);
for i := 1 to n div 2 do
begin
s[2 * i - 1] := c1;
s[2 * i] := c2;
end;
write(s);
end.
Обратите внимание на процедуру SetLength(s, n), которая обеспечивает правильную настройку длины результирующей строки s. Без вызова этой процедуры программа работала бы неверно, так как любая глобальная строковая переменная инициализируется пустой строкой, а при работе с отдельными символами строки корректировка ее длины не производится.
Просмотр результатов выполнения заданияЩелкнув мышью на метке Результаты (F2)", расположенной в правом верхнем углу окна задачника, или нажав клавишу F2, мы можем вывести на экран окно результатов, в котором будет перечислены все наши попытки решения задачи:
String9 a08/09 11:17 Ознакомительный запуск.
String9 a08/09 11:18 Неверно указан тип при вводе исходных данных.
String9 a08/09 11:21 Выведены не все результирующие данные.
String9 a08/09 11:26 Ошибочное решение.
String9 a08/09 11:29 Задание выполнено!
Для закрытия окна результатов достаточно нажать клавишу Esc. Окно результатов можно отобразить на экране и после закрытия окна задачника и возврата в среду PascalABC.NET. Для этого надо использовать команду меню Модули | Просмотреть результаты", кнопку или клавиатурную комбинацию Shift+Ctrl+R.
Задание на обработку файлов
Создание программы-заготовки и знакомство с заданиемВ качестве примера задания на обработку файлов рассмотрим задание File48.
Напомним, что программу-заготовку для решения этого задания можно создать с помощью команды меню Модули | Создать шаблон программы", кнопки или клавиатурной комбинации Shift+Ctrl+L. Эта заготовка будет иметь следующий вид:
uses PT4;
begin
Task('File48');
end.
После запуска данной программы на экране появится окно задачника:
В первой строке раздела исходных данных указаны имена трех исходных файлов (SA, SB и SC) и одного результирующего (SD). В последующих строках раздела исходных данных показано содержимое исходных файлов. Элементы файлов отображаются бирюзовым цветом, чтобы подчеркнуть их отличие от обычных исходных данных (желтого цвета) и комментариев (светло-серого цвета).
Поскольку размер файлов, как правило, превышает количество элементов, которое может уместиться на одной экранной строке, для отображения содержимого файла может отводиться более одной экранной строки. Слева от каждой строки с содержимым файла указывается порядковый номер файлового элемента, значение которого указано первым в этой строке (элементы нумеруются от 1).
Запуск нашей программы признан ознакомительным (и поэтому правильность решения не анализировалась), так как в ходе ее выполнения не было введено ни одного элемента исходных данных. При ознакомительном запуске раздел результатов не отображается, однако приводится пример верного решения, т. е. те числа, которые должны содержаться в результирующем файле при правильной обработке исходных файлов.
Ввод части исходных данныхДобавим в программу фрагмент, позволяющий ввести имена исходных файлов и связать с этими файлами соответствующие файловые переменные. Поскольку мы собираемся работать с четырьмя файлами одного типа, удобно предусмотреть массив для хранения всех файловых переменных:
uses PT4;
var
i: integer;
s: string;
f: array [1..4] of file of integer;
begin
Task('File48');
for i := 1 to 3 do
begin
read(s);
Assign(f[i], s);
end;
end.
Мы намеренно ограничились тремя итерациями цикла, оставив непрочитанным имя результирующего файла. Считывание имен файлов производится в одну и ту же переменную s, поскольку после связывания файла, имеющего имя s, с соответствующей файловой переменной (процедурой Assign) все остальные действия с данным файлом в нашей программе будут осуществляться с использованием файловой переменной, без обращения к имени файла.
Запуск нового варианта программы уже не будет считаться ознакомительным, поскольку в программе выполняется ввод исходных данных. Так как имя результирующего файла осталось непрочитанным, этот вариант решения будет признан неверным и приведет к сообщению Введены не все требуемые исходные данные":
При этом на экране появится раздел результатов (кроме комментария он пока ничего не содержит), а также панель индикаторов. Первый из индикаторов (индикатор ввода) показывает количество введенных исходных данных. Обратите внимание на то, что второй индикатор (индикатор вывода) является неактивным: он выделяется серым цветом более светлого оттенка и не содержит текстового заголовка. Это объясняется тем, что индикатор вывода показывает количество результирующих данных, полученных задачником от программы, а в нашем случае программа не должна передавать задачнику никакие данные; вместо этого ей необходимо создать файл и заполнить его требуемыми значениями. Для заданий подобного типа (обычно это задания, связанные с обработкой файлов) индикатор вывода не используется.
Ввод всех исходных данных без создания требуемого файлаИзменим программу, заменив в заголовке цикла число 3 на 4, и вновь запустим программу. Теперь все данные, необходимые для выполнения задания, введены в программу (это видно по индикатору ввода). Однако задание не выполнено, поскольку результирующий файл не создан. Поэтому решение опять признано ошибочным с диагностикой Результирующий файл не найден":
Пример программы, приводящей к ошибке времени выполненияДобавим в тело цикла после процедуры Assign вызов процедуры Reset, обеспечивающий открытие существующего файла:
uses PT4;
var
i: integer;
s: string;
f: array [1..4] of file of integer;
begin
Task('File48');
for i := 1 to 4 do
begin
read(s);
Assign(f[i], s);
Reset(f[i]);
end;
end.
Теперь запуск программы приведет к сообщению об ошибке Error System.IO.FileNotFoundException":
Сообщение, начинающееся со слова Error, означает, что при работе программы произошла ошибка времени выполнения (Runtime Error). После слова Error указывается имя этой ошибки (в данном случае System.IO.FileNotFoundException, то есть ошибка ввода-вывода, связанная с тем, что файл не найден) и краткое ее описание на английском языке.
Сообщение об ошибке времени выполнения появится и в разделе Список ошибок" окна PascalABC.NET:
Создание пустого результирующего файлаДля того чтобы избежать ошибки времени выполнения, отсутствующий файл результатов следует открыть не процедурой Reset, а процедурой Rewrite, которая и обеспечит создание этого файла. Далее, после завершения работы с файлами, открытыми в программе, их необходимо закрыть процедурой Close. Добавим в программу соответствующие операторы:
uses PT4;
var
i: integer;
s: string;
f: array [1..4] of file of integer;
begin
Task('File48');
for i := 1 to 4 do
begin
read(s);
Assign(f[i], s);
if i < 4 then Reset(f[i])
else Rewrite(f[i]);
end;
{ * }
for i := 1 to 4 do
Close(f[i]);
end.

