- •Билет 1
- •Билет 2
- •Билет 3
- •Билет 4
- •2) В отличие от оператора if, оператор case позволяет выбрать и выполнить один оператор не из двух, а из нескольких операторов. В общем случае оператор case может быть записан следующим образом:
- •Билет 5
- •Билет 6
- •Билет 7
- •Билет 8
- •Билет 9
- •Билет 10
- •Билет 11
- •Билет 12
- •Билет 13
- •Билет 14
- •Билет 15
- •Билет 16
- •Билет 17
- •Билет 18
- •Билет 19
- •2) Выражения различают по типу их результата: целые, вещественные, символьные, логические, строковые и т.Д. Выражения, имеющие результат целого и вещественного типа, называются арифметическими.
- •Билет 20
- •Билет 21
- •Билет 22
- •2)Оператор repeat имеет следующий формат:
- •Билет 23
- •2) В Pascal имеются две основных процедуры ввода read и readln, которые используются для чтения данных, вводимых с клавиатуры. Формат этих процедур таков:
- •Билет 24
- •Билет 25
- •Билет 26
Билет 25
Управление форматом выводимых данных с помощью процедуры Format.
Операторы цикла. Назначение операторов 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 - обеспечивает досрочное завершение очередного прохода цикла; эквивалент передачи управления в самый конец циклического оператора.