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

Оператор выбора. Блок-схема.Синтаксис на языке паскаль.

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

Структура оператора выбора в Паскале такова:

Case <ключ_выбора> of  <список_выбора> [else <оператор_иначе>] end

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

  • <ключ_выбора> - выражение порядкового типа;

 

  • <список_выбора> - одна или более конструкций вида: 

    • <константа_выбора>: <оператор>;

  • <константа_выбора> - константа того же типа, что и выражение

    • <ключ_выбора>;

<операторы> - произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

Пример программы с использованием Case of

Program dni_nedeli; Var n: byte;  Begin      Readln(n);      Case n of         1: writeln(‘понедельник ’);         2: writeln(‘вторник ’);         3: writeln(‘среда ’);         4: writeln(‘четверг ’);         5: writeln(‘пятница ’);         6: writeln(‘суббота ’);         7: writeln(‘воскресенье’);         else writeln(‘дня недели с номером’, n,’нет’);     end; end. 

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

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Пример программы с использованием Case of с несколькими переменными

Var ch: char;  Begin      Readln(ch);      Case ch of        N, n: writeln(‘Да ’);         Y, y: writeln(‘Нет ’);     End; End.

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

Составной оператор.Синтаксис на языке паскаль.Особенности применения.

Составной оператор: если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор. Составной оператор начинается ключевым словом BEGIN и заканчивается словом END. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования. После END ставится точка с запятой, а после BEGIN - только пробелы.

Замечение редактора: составной оператор можно использовать не только внутри условного оператора, после BEGIN тоже можно ставить ;, хотя это и не принято, после END ; может и не ставится. Такое происходит, например, в случае наличия ещё одного END сразу после него.

Пример:

BEGIN

I:=2;

K:=I/5;

END;

Слова BEGIN и END играют роль операторных скобок. Тело самой программы также имеет вид составного оператора. После последнего END ставится точка. Нельзя извне составного оператора передавать управление внутрь его.

Примечание редактора: имеется в виду неизучаемый нами оператор GOTO (безусловного перехода).

ОПЕРАТОР ЦИКЛА С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЯ.БЛОК-СХЕМА.СИНТАКСИС НА ЯЗЫКЕ ПАСКАЛЬ.

На языке Паскаль повторение некоторой последовательности действий известное число раз выполняет оператор for. Подсчет количества выполняемых действий осуществляется при помощи специальной переменной — счетчика. Поэтому цикл for называют иногда циклом со счетчиком. Цикл for на Паскале может быть представлен в двух формах.

Первая форма последовательно наращивает счетчик: for<переменная порядкового типа>:=<начальное значение> to <конечное значение> do <оператор>

Вторая форма последовательно уменьшает счетчик:  for<переменная порядковоготипа>:=<начальное значение> downto <конечное значение> do <оператор>

Оператор for с последовательным увеличением счетчика

Пример 6.1.  Вывод на экран квадратов чисел от 1 до 10

Program Test1; var N: integer;  begin for N:=l to 10 do { Переменная N будет меняться от 1 до 10 с шагом 1 } writeln(sqr(N)); { Эта строка - тело цикла. Оно выполняется 10 раз } readln  end.

Поясним пример 6.1.  Переменная N является счетчиком цикла. Счетчик цикла всегда должен иметь порядковый тип (то есть он не может иметь тип real). В операторе for указаны его начальное и конечное значения. Начальное значение не обязательно равно 1!  При первом выполнении тела цикла N = 1, при втором — N = 2, и т. д. При последнем выполнении тела цикла N = 10. Каждый раз перед выполнением тела цикла текущее значение N сравнивается с конечным. После каждого выполнения тела цикла переменная N увеличивается на 1.

Рис. 6.1. Блок-схема организации цикла в примере 6.1

Как только N превысит конечное значение, выполнение цикла прекращается. Считается, что после окончания цикла переменная цикла не определена (то есть в разных реализациях языка Паскаль она может принимать разные значения). Иными словами, неправильно считать, что после окончания цикла переменная-счетчик цикла имеет какое-то определенное значение. Крайне не рекомендуется внутри цикла самостоятельно менять счетчик цикла, особенно в сторону уменьшения. Это может привести к «зацикливанию» программы (бесконечному повторению тела цикла).

 

Оператор for с последовательным уменьшением счетчика

Счетчик может изменяться с шагом -1.  Это вторая форма оператора for (for... downto ... do).

Пример 6.2.  Вывод на экран кубов чисел от 11 до 5

Program Test2;  var N: integer;  begin for N:=11 downto 5 do { Счетчик N изменяется с шагом -1 } write(N*N*N:5); { Эта строка - тело цикла; оно выполняется 8 раз, так как N изменяется от 11 до 5 с шагом -1 } writeln; { Этот оператор нужен, чтобы закончить вывод чисел в одну строку } readln  end.

Применение циклов со счетчиком

Можно организовать выполнение одного цикла внутри другого. В этом случае различают внешний и внутренний циклы — например, когда при каждом значении счетчика внешнего цикла нужно несколько раз выполнить какое-то действие (внутренний цикл). Счетчик внешнего цикла изменяется медленнее, чем счетчик внутреннего.

Цикл в цикле Рассмотрим задачу вывода последовательности пар чисел:

11  12  13  14  21  22 23  24  31  32  33  34

Блок-схема алгоритма решения задачи показана на рис. 6.2.

Рис. 6.2. Блок-схема алгоритма с вложенными циклами, выводящего последовательность из примера 6.2

 

Пример 6.3.  Использование цикла в цикле

Program Test3 var К.М: integer;  begin for K:=l to 3 do  for M:=l to 4 do writeln(K,' ',M); { Пробел в апострофах между К и М нужен для того, чтобы эти числа не сливались друг с другом } readln  end.

 

Для каждого значения переменной К переменная М меняется от 1 до 4. Нетрудно подсчитать, что в этом случае оператор writeln выполнится 12 раз.