Programming Taskbook 0
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
Глава 1. Некоторые расширения Паскаля в языке PascalABC.NET 9 Предусмотрен вариант функций ввода со строковым параметром prompt — приглашением к вводу, которое выводится на экран при вызове функции ввода: var a := ReadInteger('Введите длину отрезка:'); В традиционном Паскале для организации аналогичного ввода с при- глашением потребовалось бы три оператора: описание переменной в раз- деле описаний, вывод приглашения с помощью процедуры Write и, нако- нец, ввод переменной с помощью процедуры Read. Заметим также, что программист не должен предусматривать вывод пробела после приглашения; об этом заботится сама функция ввода. Имеются модификации функций ввода, обеспечивающие немедлен- ный переход к следующей строке вводимых данных; в этих вариантах, как и в соответствующем варианте процедуры Read, используется суффикс ln после слова Read, например ReadlnInteger. Особое поведение реализовано для функции ReadString. Эта функция, в отличие от функций ввода других типов данных, обеспечивает автомати- ческий переход к следующей строке вводимых данных (т. е. выполняется так же, как и функция ReadlnString). Подобное поведение функции ReadString защищает программиста от ошибок, возникающих при исполь- зовании процедуры Read вместо Readln для ввода нескольких строковых данных. Кроме процедуры вывода Write и ее модификации Writeln в языке PascalABC.NET предусмотрены процедуры Print и Println, имеющие не- большое, но полезное отличие от традиционных аналогов: после вывода каждого элемента данных эти процедуры автоматически выводят символ пробела. Следует, однако, иметь в виду, что в процедурах Print и Println нельзя использовать атрибуты форматирования вида :width и :width:digits, до- ступные в процедурах Write и Writeln. Напомним, что запись a:10 означает, что значение a будет выведено в 10 экранных позициях (и при необходи- мости дополнено слева пробелами), а запись r:10:2, допустимая только для вещественных данных, означает, что число r будет выведено в 10 экранных позициях с 2 дробными знаками. Имеются также процедуры форматного вывода WriteFormat и Writeln- Format, обеспечивающие существенно более гибкие средства форматирова- ния выводимых данных, чем описанные в предыдущем абзаце форматиру- ющие атрибуты традиционного Паскаля. В процедурах WriteFormat и WritelnFormat форматные настройки указываются в специальной форматной строке, которая является первым параметром этих процедур (после фор- матной строки можно указывать произвольное количество выводимых данных любого скалярного типа). Правила задания форматной строки ана- 10 логичны стандартным правилам, используемым в языках платформы .NET (см., например, [3, п. 4.3.3]). Приведем их краткое описание. В форматной строке можно указывать обычный текст и форматные настройки для каждого из форматируемых параметров. Эти настройки за- ключаются в фигурные скобки и состоят из трех атрибутов, первый из ко- торых является обязательным, а любой из двух последующих может отсут- ствовать: {ind[,width][:spec]} (для большей наглядности необязательные атри- буты заключены в полужирные квадратные скобки; разумеется, эти скобки не следует указывать в форматных настройках) . Смысл атрибутов следу- ющий: • ind — целое число, которое определяет индекс форматируемого элемента в последующем списке выводимых данных (индексация ведется от 0); • width — целое число, модуль которого задает минимальную ширину поля вывода (т. е. минимальное число позиций, отводимое для форматируемого элемента), а знак определяет способ выравнивания элемента в пределах поля вывода; • spec — строка, которая задает спецификатор формата для данного элемента. Между двоеточием и строкой spec не должно быть пробелов. Напри- мер, для вывода вещественного числа с 2 дробными знаками достаточно указать спецификатор формата f2 (таким образом, если первый элемент выводимых данных является вещественным числом и его надо вывести в 10 экранных позициях с 2 дробными знаками, то соответствующая фор- матная настройка должна иметь вид {0,10:f2}). Если атрибут spec отсутству- ет, то выбирается вариант форматирования по умолчанию. Если атрибут width отсутствует, то используется ширина поля вывода, минимально необходимая для отображения отформатированного элемента. Если отформатированный элемент не занимает всего поля вывода, то он дополняется пробелами: пробелы добавляются слева, если атрибут width положителен, и справа, если атрибут width отрицателен. Таким образом, при положительном значении width выполняется выравнивание по правой границе поля вывода, а при отрицательном — по левой границе. Функции ввода и процедуры Print/Println можно использовать не только для ввода данных с клавиатуры и вывода на экран, но и для ввода-вывода данных, содержащихся в текстовых файлах. В этом случае первым пара- метром функции ввода или процедуры Print/Println должна быть файловая переменная типа Text. Кроме того, эти новые средства ввода-вывода можно применять при выполнении учебных заданий с применением электронного задачника Programming Taskbook, встроенного в среду PascalABC.NET (особенности использования задачника описываются в главе 2). |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling