Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика в тестах_2008_пособие.doc
Скачиваний:
174
Добавлен:
28.03.2015
Размер:
1.71 Mб
Скачать
    1. 1.5.2. Программы линейной структуры. Операторы ветвления.

    2. Операторы цикла

Наиболее популярным языком при традиционном – процедурном – подходе к программированию является Turbo Pascal.

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

Pascal-программа состоит из трёх блоков:

– заголовка программы;

– раздела описаний;

– тела программы.

Раздел описаний, в свою очередь, может содержать шесть разделов. Если нет необходимости использовать какие-либо из разделов, то они опускаются; последовательность записи разделов описаний не обязательная, причём некоторые из них могут повторяться.

Тело программы начинается служебным словом Begin, которое определяет точку начала выполнения программы. Затем следуют операторы, описывающие алгоритм решения задачи. Друг от друга они отделяются точкой с запятой « ; ». Завершается тело программы служебным словом End, после которого ставится точка.

Program Name (Input, Output); {Заголовок программы}

Uses {Описание используемых модулей}

Label {Описание меток}

Const {Описание констант} Раздел описаний

Type {Описание типов}

Var {Описание переменных}

Procedure {Описание процедур}

Function {Описание функций}

Begin

Оператор 1;

Оператор 2; {Раздел операторов ... (тело программы)}

……

Оператор n

End.

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

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

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

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

В качестве условия могут использоваться операции сравнения, логические операции или переменные логического типа Boolean.

Для записи на языке программирования Pascal ветвящихся вычислительных процессов используется условный оператор:

If <условие> then <оператор_1> else <оператор_2>;

где If, then, else – служебные слова;

<условие> – логическое выражение.

При истинности условия выполняется <оператор_1>, записанный за служебным словом then, в противном случае – <оператор_2>, следующий за служебным словом else.

Допускается использовать сокращённую форму записи условного оператора:

If <условие> then <оператор>;

Оператор, следующий за служебным словом then, будет выполнен при истинном условии, в противном случае управление передаётся на следующий по порядку оператор.

Допускается использование вложенных условных операторов. При этом после служебных слов then или else записывается очередной условный оператор. Степень вложенности неограниченна.

Оператор выбора Casе используется, когда существует большое количество вариантов решения задачи.

Оператор выбора Casе состоит из выражения-переключателя и списка операторов, каждому из которых предшествует одна или более констант выбора или ключевое слово Else.

Case <выражение> of

<список констант> <оператор 1>;

…….

<список констант> <оператор N>

Очень часто при разработке программ необходимо, чтобы один или более операторов выполнялись два или более раз. Такие алгоритмы называют циклическими, а повторяющиеся операторы – телом цикла. Количество повторений тела цикла может быть либо известно, либо нет. Если количество повторений тела цикла неизвестно, то завершение его работы происходит по достижению определённого условия. Таким образом, циклы делятся на циклы с параметром и условные.

В цикле с параметром задаётся переменная, выполняющая роль параметра цикла, а также её начальное и конечное значения и приращение (шаг изменения значения параметра цикла).

Условные циклы предназначены для организации итерационных вычислительных процессов. Они, в свою очередь, подразделяются на циклы с предусловием и циклы с постусловием. В цикле с предусловием перед выполнением тела цикла осуществляется проверка значения логического выражения или переменной логического типа; если значение этих величин удовлетворяют условию работы цикла, то выполняется тело цикла, в противном случае выполняется следующий за циклом оператор. Таким образом, операторы тела цикла с предусловием могут быть ни разу не выполнены.

Цикл с постусловием предназначен для организации циклических алгоритмов, в которых проверка условия работы цикла выполняется после исполнения операторов тела цикла.

Для реализации цикла с параметром в Pascal используется оператор For. Синтаксис оператора For выглядит следующим образом:

For i:=k to n do <оператор >;

где i – параметр цикла;

k – начальное значение параметра цикла;

n – конечное значение параметра цикла;

<оператор> – оператор, являющийся телом цикла;

For, to, do – служебные слова.

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

Например: For i:=1 to 20 do <оператор>;

При выполнении данного цикла, параметр i (целочисленный) будет при каждой итерации (повторении) принимать последовательно значения 1, 2, …,20. Приращение (шаг изменения значения) параметра для такого цикла всегда равно 1. Начальное значение параметра всегда должно быть меньше конечного.

Если же i, n, k символьного типа n и k имеют значения, например, 'A' и 'Z' соответственно, то переменная i принимает последовательные значения в порядке букв латинского алфавита: 'А', 'В', 'С', ... ,'Z'.

Возможна и другая конструкция цикла For.

For i:=n downto k do <оператор>;

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

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

Приведём фрагмент программы:

For i:= 1 to n Do

   Begin < Операторы 1-го уровня>;

  For j:= i+1 to m Do

    Begin        <Операторы 2-го уровня>;

   End;

End;

В этом фрагменте операторы 2-го уровня будут выполняться от значений j = i + 1 до j = m при переданных в цикл значениях i из цикла 1-го уровня, после чего произойдут изменения в операторах 1-го уровня и снова будет повторён весь цикл 2-го уровня. Этот процесс будет продолжаться до тех пор, пока переменная i не пройдёт все предписанные ей значения.

Оператор While предназначен для реализации цикла с предусловием. Синтаксис его выглядит следующим образом:

While <условие> do <оператор>,

где While, do – служебные слова;

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

<оператор> – оператор, входящий в тело цикла.

Перед началом выполнения тела цикла осуществляется проверка значения условия. Тело цикла с предусловием выполняется, пока <условие> имеет истинное значение (True). Как только значение условия станет ложным (False), цикл прекращает работу и управление передаётся на оператор, следующий за циклом. Таким образом, если при первом вхождении в цикл значение условия ложно, то тело цикла не выполнится ни одного раза. Следует отметить, что в теле цикла необходимо предусмотреть операторы, выполнение которых может повлиять на изменение значения условия, иначе цикл будет выполняться бесконечно.

Цикл While используется, как правило, в тех случаях, когда заранее неизвестно количество повторений тела цикла.

В любом из перечисленных случаев, по синтаксису языка допускается выполнение в теле цикла или при истинности или ложности условия одного оператора. При необходимости использовать два и более операторов применяется составной оператор. Составной оператор начинается служебным словом begin, заканчивается служебным словом end, за которым ставится « ; », между ними записываются операторы, которые необходимо выполнить. Количество операторов, объединяемых составным оператором неограниченно.

Например:

For i:=n downto k do

begin

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

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

. . .

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

end;

Синтаксис цикла с постусловием выглядит следующим образом:

Repeat

<оператор>;

<оператор>;

<оператор>;

Until <условие>;

В операторе цикла с постусловием выражение, которое управляет повторным выполнением последовательности операторов тела цикла (условие), содержится после служебного слова Until. Между служебными словами Repeat и Until заключаются операторы, входящие в тело цикла.

Правила использования данного цикла аналогичны правилам цикла с While. Однако прежде чем будет проверено условие выполнения тела цикла, выполняются операторы, входящие в состав цикла. Цикл работает при ложном (False) значении условия.