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

Тема 3. Программирование циклических алгоритмов

Цель лабораторной работы: изучить простейшие средства отладки программ в среде DELPHI. Составить блок-схему, написать и отладить программу циклического алгоритма.

3.1 Операторы организации циклов

Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.

Для организации повторений в Delphi предусмотрены три различных оператора цикла.

3.1.1Оператор цикла - For

Оператор применяется, когда переменная цикла имеет порядковый тип.

Существует два варианта оператора For:

  1. c шагом 1:

For <переменная> := <нач. значение> To <кон. значение> Do

<оператор>;

<переменная> – переменная цикла, должна быть порядкового типа;

<нач. значение> и <кон. значение> – начальное и конечное значения переменной цикла, по типу совместимые с ней, иначе при неявном приведении типов возможны ошибки; могут быть константами, переменными, выражениями.

Для выполнения цикла необходимо соблюдение условиия:

<нач. значение> <кон. значение>

Выполнение цикла For:

  1. вычисляется начальное значение <нач. значение> и присваивается переменной цикла;

  2. проверяется условие выполнения цикла:

<нач. значение> ≤ <кон. значение>

  1. если условие истинно (выполняется), то выполняется <оператор> и пункты 4–5, иначе (условие ложно) цикл завершается и выполняется оператор, стоящий после цикла;

  2. значение переменной увеличивается на единицу;

  3. происходит переход к пункту 2.

Из этой последовательности действий можно понять, какое количество раз отработает цикл For в каждом из трех случаев:

  • <нач. значение> ≤ <кон. значение>: цикл будет работать

<кон. значение> – <нач. значение> + 1 раз;

  • <нач. значение> = <кон. значение>: цикл выполнится ровно один раз;

  • <нач. значение> ≤ <кон. значение>: цикл ни разу не выполнится.

  1. с шагом -1: переменная цикла изменяется не от меньшего к большему, а в противоположном направлении

For <переменная>:= <нач. значение> DownTo <кон. значение> Do

оператор;

DownTo – «вниз к».

<переменная>– переменная цикла, должна быть порядкового типа;

<нач. значение>, <кон. значение> – начальное и конечное значения переменной цикла, по типу совместимые с ней; могут быть константами, переменными, выражениями.

Для выполнения цикла должно соблюдаться условие:

<нач. значение> <кон. значение>

Цикл For–DownTo выполняется следующим образом:

  1. вычисляется начальное значение <нач. значение> и присваивается переменной цикла;

  2. проверяется условие выполнения цикла: <нач. значение> ≥ <кон. значение>;

  3. если условие истинно (выполняется), то выполняется <оператор> и пункты 4–5; иначе (условие ложно) цикл завершается и выполняется оператор, стоящий после цикла;

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

  5. происходит переход к пункту 2.

После окончания работы цикла <переменная> может потерять свое значение. Поэтому попытки использовать переменную цикла сразу после завершения цикла (без присваивания ей какого-либо нового значения) могут привести к непредсказуемому поведению программы при отладке.

Примеры: вычислить значение факториала n!=1·2·3·…· n

F:=1; F:=1;

For i := 1 To n Do For i := n DownTo 1 Do

F:= F*i; F:= F*i;

Фрагменты блок-схемы вычисления факториала:

Рисунок 3.1 – Цикл For с шагом 1 Рисунок 3.2 – Цикл For с шагом -1

Правила использования цикла For:

  1. Переменная цикла должна быть внутренней переменной подпрограммы.

  2. Внутри цикла нельзя изменять значения переменной цикла, а также переменных, входящих в расчет начального и конечного значения цикла.

  3. Циклы можно вкладывать друг в друга, но нельзя их пересекать.

  4. Можно передавать управление из цикла вовне его, но извне передавать управление внутрь цикла нельзя.

  5. Можно передавать управление из цикла вовне его с последующим возвратом в тот же цикл.

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

С помощью таких циклов можно запрограммировать любые повторяющиеся фрагменты алгоритмов. На практике данные циклы чаще всего используют в двух случаях:

  • число повторений заранее неизвестно (например, цикл до достижения требуемой точности результата и т.п.);

  • число повторений известно, но шаг переменной цикла не равен 1 или переменная цикла не является переменной порядкового типа.

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