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

20. Условный оператор. Оператор выбора.

Условный оператор.

Оператор if выбирает между двумя вариантами развития событий:

if <выражение> then <один_оператор1>

[else <один_оператор2>];

Условный оператор if работает следующим образом:

  1. Сначала вычисляется значение <выражение> - это может быть любое выражение, возвращающее значение типа boolean.

  2. Затем, если в результате получена "истина" (true), то выполняется оператор, стоящий после ключевого слова then, а если "ложь" (false) - без дополнительных проверок выполняется оператор, стоящий после ключевого слова else. Если же else-ветвь отсутствует, то не выполняется ничего.

Оператор выбора.

Оператор case позволяет сделать выбор между несколькими вариантами:

case <переключатель> of

<список_констант> : <один_оператор>;

[<список_констант> : <один_оператор>;]

[<список_констант> : <один_оператор>;]

[else <один_оператор>;]

end;

Выполнение оператора case происходит так:

  1. вычисляется значение переключателя;

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

  3. если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий выбранной ветви, после чего управление передается оператору, следующему за ключевым словом end, которое закрывает всю конструкцию case.

  4. если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else.

Если else-ветви нет, то не выполняется ничего.

Существуют дополнительные правила, относящиеся к структуре этого оператора:

  • Переключатель должен относиться только к порядковому типу данных, но не к типу longint.

  • Переключатель может быть переменной или выражением.

  • Список констант может задаваться как явным перечислением, так и интервалом или их объединением.

  • Повторение констант не допускается.

  • Тип переключателя и типы всех констант должны быть совместимыми.

21. Циклы. Цикл с параметром. Циклы с пост и предусловием. Операторы циклов

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

Оператор цикла повторяет некоторую последовательность операторов заданное число раз, которое может быть определено и динамически - уже во время работы программы.

Замечание: Алгоритмы, построенные только с использованием циклов, называются итеративными1) - от слова итерация, которое обозначает повторяемую последовательность действий.

for-to и for-downto

В случае когда количество однотипных действий заранее известно (например, необходимо обработать все компоненты массива), стоит отдать предпочтение циклу с параметром ( for ).

Инкрементный цикл с параметром

Общий вид оператора for-to:

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

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

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

  1. вычисляется значение верхней границы last;

  2. переменной i присваивается значение нижней границы first;

  3. производится проверка того, что i<=last;

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

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

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

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

  • first < last: цикл будет работать last-first+1 раз;

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

  • first > last: цикл вообще не будет работать.

После окончания работы цикла переменная-счетчик может потерять свое значение2). Таким образом, нельзя с уверенностью утверждать, что после того, как цикл завершил работу, обязательно окажется, что i=last+1. Поэтому попытки использовать переменную-счетчик сразу после завершения цикла (без присваивания ей какого-либо нового значения) могут привести к непредсказуемому поведению программы при отладке.