Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kitkat_otvety.doc
Скачиваний:
3
Добавлен:
01.08.2019
Размер:
3.29 Mб
Скачать

Билет 25

  1. Управление форматом выводимых данных с помощью процедуры Format.

  2. Операторы цикла. Назначение операторов break и continue.

Мощная функция преобразования Format перешла в Object Pascal из языка Си. Она позволяет преобразовать сразу не­сколько элементов открытого массива аргументов в соответствии с указаниями форматирующей строки. Например:

Format('Строка "%s" содержит %d символов',['Паскаль',7])

даст такой результат: Строка "Паскаль" содержит 7 символов.

Элементами массива аргументов могут быть константы и/или пе­ременные целого и вещественного типа, строки и указатели. Форматирующая строка - это произвольная строка, в которую в любом месте можно вставить форматирующий спецификатор. Коли­чество форматирующих спецификаторов должно быть не больше количества элементов массива аргументов - в противном случае возникнет исключительная ситуация. Каждому элементу массива аргументов по порядку их перечисления в конструкторе массива функция ставит в соответствие форматирующий спецификатор по порядку его следования в форматирующей строке: первому аргу­менту - первый спецификатор, второму - второй и т. д. Если коли­чество спецификаторов меньше количества аргументов, «лишние» аргументы игнорируются.

Форматирующий спецификатор всегда начинается символом процента и в общем случае имеет такую структуру (в квадратных скобках указываются необязательные элементы): "%" [index ":"] ["-"] [width] ["." prec] type

Здесь: index ":" - индекс открытого массива, с помощью этого эле­мента можно явно указать аргумент, который будет обрабатывать спецификатор; "-" указывает на необходимость прижать отформа­тированный спецификатором текст к левой границе отведенного для него пространства; width - число, определяющее количество симво­лов для обработанного спецификатором текста; если это число меньше требуемого, этот элемент спецификатора игнорируется, если больше - дополняется справа (если есть элемент "-") или слева (если он отсутствует) нужным количеством пробелов; "." ргес – задает точность представления целых и вещественных типов; type - символ, определяющий тип форматирования.

Функция не чувствительна к высоте букв, указывающих тип пре­образования. Параметры index, prec и width задаются явно (числами в форматирующей строке) или неявно - с помощью символа «*». В этом случае в качестве параметра берется значение очередного аргу­мента в списке аргументов (он должен быть целым числом). Напри­мер, два следующих обращения дадут одинаковый результат:

Format('%*.*£', [8, 2, 123.456]);

Format('%8.2f', [123.456]);

2) Цикл For – это цикл с параметром. For – счетный оператор цикла. Такой цикл следует использовать в том случае, когда заранее известно число повторений выполнения последовательности операторов. Существуют два варианта оператора. Первый вариант – с увеличением счетчика: for <счетчик> := <начальное значение> to <конечное значение> do <оператор>; Второй вариант - с уменьшением счетчика: for <счетчик> := <начальное значение> downto <конечное значение> do <оператор>. Счетчиком является переменная порядкового типа – параметр цикла. Начальное и конечное значение – выражения того же типа. Оператором, выполняемым в цикле и образующим тело цикла, может являться также составной оператор. Оператор for действует следующим образом. В начале вычисляются начальное и конечное значение счетчика. Далее счетчику присваивается начальное значение. Затем значение счетчика сравнивается с конечным значением. Пока счетчик меньше или равен конечному значению (либо >= для downto), выполняется очередная итерация цикла. В противном случае происходит выход из цикла. Выполнение очередной итерации включает в себя сначала выполнение тела цикла, а затем присвоение счетчику цикла следующего значения. Если в первом варианте начальное значение больше конечного или во втором варианте меньше конечного, то цикл не выполнится ни разу. Цикл выполняется для to <конечное значение> - <начальное значение> + 1 раз. Если внутри одного оператора цикла встречается другие операторы цикла, то такие циклы называются вложенными. Внутренний цикл должен целиком размещаться внутри внешнего и не пересекаться с ним.

Оператор цикла с предусловием while имеет следующий формат: while < логическое выражение > do < оператор >; Выполняется оператор следующим образом. Вначале вычисляется значение логичес­кого выражения. Если это значение равняется true, то выполняется оператор, стоящий после слова do. После этого управление вновь передается на начало оператора, снова вычисляется значение логического выражения и процесс повторяется. Цикл прекраща­ется, если при очередном вычислении логического выражения его значение окажется равным false. Если при первом вычислении значения логического выражения окажется, что оно равно false, то оператор цикла не выполнится ни разу. Поскольку логическое выражение вычисляется при выполнении каждой итерации, его следует делать по возможности более простым. Если в цикле нужно выполнить не один оператор, а несколько, то их следует заклю­чить в операторные скобки begin...end, т.е. использовать составной оператор.

Замечу, что для правильного выхода из цикла условие выхода должно меняться внутри операторов, составляющих тело цикла while или repeat... until. Следующий цикл никогда не завершится «естественным» способом:

while True do begin

end;

Оператор repeat имеет следующий формат:

Repeat

< оператор! >;

< оператор2 >; ...;

< onepaтopN >

until < логическое выражение>;

Выполняется оператор repeat следующим образом. В начале выполняется группа опе­раторов – оператор1, оператор2,..., onepaтopN. Затем вычисляется значение логического выражения. Если оно равняется true, то цикл прекращается, в противном случае выпол­няется следующая итерация цикла. Поскольку условие прекращения цикла проверяется в конце цикла, то операторы, об­разующие тело цикла, выполняются по крайней мере один раз. В отличие от операторов for и while, синтаксис которых предусматривает выполне­ние в цикле только одного оператора, в тело цикла оператора repeat может входить про­извольное количество операторов. Это означает, что использование операторных скобок begin...end в операторе repeat не обязательно, хотя их присутствие не будет ошибкой.

Для правильного выхода из цикла условие выхода должно меняться внутри операторов, составляющих тело цикла while или repeat... until. Следующий цикл никогда не завершится «естественным» способом:

Repeat

until False;

Для гибкого управления циклическими операторами for, while и repeat в состав Object Pascal включены две процедуры без параметров:

break - реализует немедленный выход из цикла; действие проце­дуры заключается в передаче управления оператору, стоя­щему сразу за концом циклического оператора;

continue - обеспечивает досрочное завершение очередного про­хода цикла; эквивалент передачи управления в самый конец циклического оператора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]