Программирования Турбо Паскаль 5


Разветвляющийся вычислительный процесс



страница9/10
Дата01.08.2016
Размер0.66 Mb.
ТипРеферат
1   2   3   4   5   6   7   8   9   10

Разветвляющийся вычислительный процесс


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


Оператор условного перехода в Турбо Паскаль имеет вид:
if условие then оператор 1 else оператор 2;
условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать:
if условие then оператор 1;
Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.


Примеры:
if x > 0 then modul := x else modul := -x;
if k > 0 then WriteLn('k - число положительное');
if min > max then begin

t := min;

min := max;

max := t;

end;

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


Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:
case выражение of

вариант : оператор;

...

вариант : оператор;



end;

или


case выражение of

вариант : оператор;

...

вариант : оператор;



else оператор

end;
Выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантав записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть).

Пример:

case ch of



'A'..'Z', 'a'..'z' : WriteLn('Буква');

'0'..'9' : WriteLn('Цифра');

'+', '-', '*', '/' : WriteLn('Оператор');

else WriteLn('Специальный символ')

end;

      1. Оператор безусловного перехода


Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:
goto метка;
Оператор goto переходит при выполнении программы к определенному оператору программы, перед которым находится метка. Метка должна быть описана в разделе описания меток той программы (процедуры или функции), в которой она используется. Нельзя перейти из одной процедуры или функции в другую.

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


Пример:

label 1;


begin

...


goto 1;

...


1: WriteLn('Переход к метке 1');

end.
Само понятие структурного программирования и общепринятый стиль программирования на структурных языках НЕ ПРИВЕТСТВУЕТ применение меток и операторов перехода в программах. Это затрудняет понимание программы, как автором, так и потребителями, кроме того, применение меток отрицательно сказывается на эффективности генерируемого кода.


    1. Операторы повторений


В языке Турбо Паскаль имеются три оператора, позволяющих запрограммировать повторяющиеся фрагменты программ (циклы). Это операторы while, repeat, for.
      1. Оператор цикла while-do (цикл с предусловием)


Общий вид записи:
While <условие> do

begin


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

...


< оператор n>

End;
Запись означает «пока выполняется <условие>, делать».

Инструкция while-do означает «пока выполняется <условие>, делать» и

выполняется следующим образом: сначала проверяется условие. Если оно истинно, выполняются < оператор 1>...< оператор n> и так далее. Если же условие ложно, выполнение считается законченным, и программа переходит к обработке следующих команд. Таким образом, если условие с самого начала оказалось ложным, < оператор 1>...< оператор n> не будут выполнены ни разу. В цикле while-do <условие> - это условие выполнения цикла: пока оно истинно, программа из цикла не выйдет. В том случае, если внутри цикла стоит только один оператор, пара begin - end может отсутствовать, если операторов больше одного, то пара begin - end обязательна, так как иначе будет выполняться только один оператор, стоящий сразу после слова do.


Пример: Надо вычислить сумму S=1+1/2+1/3+...+1/50
VAR S: REAL; N:INTEGER;

BEGIN


S:=0; N:=1;

WHILE N<=50 DO

BEGIN

S:=S+1/N;



N:=N+1;

END;


WRITELN(' S=',S);

END.

      1. Оператор цикла repeat-until (цикл с постусловием)


Общий вид записи:
Repeat

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

...


< оператор n>

until <условие>;
Инструкция repeat-until означает «повторять до тех пор, пока не будет выполнено <условие>» и выполняется следующим образом : сначала выполняются < оператор 1>...< оператор n>. Затем проверяется условие. Если оно ложно, происходит возврат с выполнению <оператор 1>...<оператор n>. Если условие истинно, цикл считается выполненным и программа переходит к обработке следующих команд. Таким образом, в цикле repeat-until <условие> - это условие завершения цикла: цикл повторяется, пока оно ложно.
Пример:

VAR S: REAL; N:INTEGER;

BEGIN

S:=0; N:=1;



REPEAT

S:=S+1/N;

N:=N+1;

UNTIL N>50;

WRITELN(' S=',S);

END.

      1. Оператор цикла for (цикл с параметром)


Общий вид:
For I:=N1 to N2 do <простой или составной оператор>;
I - переменная цикла (параметр цикла),

N1- начальное значение цикла,

N2- конечное значение цикла,

I,N1,N2 должны быть одного и того же типа, но не real.

I принимает последовательные значения данного типа от N1 до N2. Если N1 и N2 - целые числа, а I - целая переменная, то шаг всегда равен единице.

Инструкция for означает «для I, изменяющегося от N1 до N2 делать» и выполняется следующим образом: вначале вычисляется значение N1 и оно присваивается I. После этого циклически повторяется:

- проверка условия I <=N2. Если условие не выполнено, оператор for завершает свою работу;

- если условие I <=N2 выполнено, то исполняется конструкция «<простой или составной оператор>»;

- наращивание переменной I на единицу.
Пример:

VAR S: REAL; N:INTEGER;

BEGIN

S:=0;


FOR I:=1 TO 50 DO

S:=S+1/I;

WRITELN(' S=',S);

END.
Цикл по убывающим значениям параметра I от N2 до N1 имеет вид:


For I:=N2 downto N1 do <простой или составной оператор>;
Пример 1:

For I:=20 downto 1 do A:=A+1;

I изменяется от 20 до 1 с шагом -1.




  1. Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   10


База данных защищена авторским правом ©uverenniy.ru 2019
обратиться к администрации

    Главная страница