Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

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

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

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

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

 

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

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

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

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

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

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом 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
forN:=11downto 5do { Счетчик N изменяется с шагом -1 }
write(N*N*N:5); { Эта строка - тело цикла; оно выполняется 8 раз, так как N изменяется от 11 до 5 с шагом -1 }
writeln; { Этот оператор нужен, чтобы закончить вывод чисел в одну строку }
readln
end.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 346; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.86.53 (0.007 с.)