Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по Паскалю.docx
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
84 Кб
Скачать
☆

17. Оператор циклов for-downto.

Существует аналогичный вариант цикла for, который позволяет производить обработку не от меньшего к большему, а в противоположном направлении:

for i:= first downto last do <оператор>;

Счетчик i (переменная), верхняя граница first (переменная, константа или выражение) и нижняя граница last (переменная, константа или выражение) должны иметь эквивалентные порядковые типы. Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение типов.

Цикл for-downto работает следующим образом:

  1. переменной i присваивается значение first;

  2. производится проверка условия, что i>=last;

  3. если условие истинна, то выполняется <оператор>;

  4. значение переменной i уменьшается на единицу;

  5. пункты 2-4 выполняются до тех пор, пока i не станет меньше, чем last; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.

Если при этом

first < last, то цикл вообще не будет работать;

first = last, то цикл отработает один раз;

first > last, то цикл будет работать first-last+1 раз.

18-19. Оператор циклов while и repeat-until.

Если заранее неизвестно, сколько раз необходимо выполнить тело цикла, то удобнее всего пользоваться циклом с предусловием (while) или циклом с постусловием (repeat-until).

Общий вид этих операторов таков:

while <условие_1> do <оператор>;

repeat <операторы> until <условие_2>;

Условие окончания цикла может быть выражено переменной, константой или выражением, имеющим логический тип.

Замечание: Обратите внимание, что на каждой итерации циклы for и while выполняют только по одному оператору (либо группу операторов, заключенную в операторные скобки begin-end и потому воспринимаемую как единый составной оператор). В отличие от них, цикл repeat-until позволяет выполнить сразу несколько операторов: ключевые слова repeat и until сами служат операторными скобками.

Так же, как циклы for-to и for-downto, циклы while и repeat-until можно назвать в некотором смысле противоположными друг другу.

Последовательности действий при выполнении этих циклов таковы:

Для while:

Для repeat-until:

1. Проверяется, истинно ли <условие_1>.

1. Выполняются <операторы>.

2. Если это так, то выполняется <оператор>.

2. Проверяется, ложно ли <условие_2>

3. Пункты 1 и 2 выполняются до тех пор, пока <условие_1> не станет ложным.

3. Пункты 1 и 2 выполняются до тех пор, пока <условие_2> не станет истинным.

Таким образом, если <условие_1> изначально ложно, то цикл while не выполнится ни разу. Если же <условие_2> изначально истинно, то цикл repeat-until выполнится один раз.

20. Массивы. Описание переменных размерностей. Обращение к компонентам массива.

Массив - наиболее широко используемый структурированный тип данных, предназначенный для хранения нескольких однотипных элементов.

Для того чтобы задать массив, необходимо в разделе описания переменных (var) указать его размеры и тип его компонент(элементов).

array[<тип_диапазон>] of <тип_данных>;

Чаще всего это трактуется так:

array[<левая_граница>..<правая_граница>] of <тип_данных>;

При описании массивов в квадратных скобках указывается тип-диапазон, с помощью которого компилятор определяет общее число элементов массива.

Нумерация компонент массива не обязана начинаться с 1 или с 0, необходимо лишь, чтобы номер последней компоненты был больше, чем номер первой: var x: array [-5..4] of integer;

Многомерные массивы:

var a9: array[1..10,1..20] of real; - двумерный массив 10 х 20

Если вам известны максимальные границы, в которые могут попасть индексы обрабатываемого массива. Скажем, N и М заведомо не могут превосходить 100. Тогда можно выделить место под наибольший возможный массив, а реально работать только с малой его частью:

const nnn=100;

var a: array[1..nnn,1..nnn] of real;

m,n: integer;

Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей нас компоненте массива.

Доступ к компонентам линейного массива осуществляется так:

<имя_массива>[<индекс_компоненты>]

а многомерного - так:

<имя_массива>[<индекс>,_,<индекс>]