Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Турбо Паскаль.doc
Скачиваний:
20
Добавлен:
22.03.2016
Размер:
307.71 Кб
Скачать

Оператор варианта

Оператор варианта case также является условным оператором, но он более мощный по сравнению с оператором условного перехода ifю

Вид оператора:

Case <селектор>

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

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

………………….

<мn>: <оператор n>;

else

<оператор n+1>

end;

где <селектор> - выражение, которое принимает одно из значений м1, м2, …, мn, которые называются метками варианта.

В зависимости от того, какое значение имеет селектор, на ту метку и передается управление для выполнения соответствующего оператора. Например, если значение селектора равно м1, то будет выполнен оператор 1, а затем управление передастся следующему после case оператору. Если в каком либо варианте необходимо выполнить несколько операторов, то они записываются в виде составного оператора между операторными скобками begin и end. Если значение селектора не совпадает ни с одной из меток варианта, то выполняется <оператор n+1>, стоящий в веточке else (при отсутствии веточки else управление передается следующему после case оператору).

Правила, которые должны соблюдаться при использовании оператора варианта:

1). Значение <селектора > должно быть определено к началу выполнения оператора варианта;

2). Значение <селектора > должно принадлежать дискретному (перечисляемому) типу;

3). Тип констант, играющих роль метки варианта, должен совпадать с типом <селектора >;

4). Все константы в альтернативах должны быть уникальны в пределах одного оператора варианта, т. е. не должны повторяться. Метка варианта может содержать диапазон значений, в этом случае она записывается в виде минимального и максимального значения, разделенных между собой двумя точками (..). Если при разных значениях меток варианта выполняется один и тот же оператор, то эти метки варианта могут быть записаны через запятую.

Например,

case k of

2: y:=sqr(3*g);

3,15: y:=exp(g*x);

4..9: y:=ln(2+x);

end;

case b of

‘C’,’c’: ck:=ck+1;

‘H’,’h’: hk:=hk+1;

‘E’,’e’: ek:=ek+1;

end;

Циклы

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

Цикл с параметрами

Цикл с параметрами имеет формат:

For <имя>:=<начало> to <конец> do

<тело цикла>;

где <имя> - идентификатор переменной цикла, <начало> - начальное значение переменной цикла, <конец> - конечное значение переменной цикла. Переменная цикла должна иметь перечисляемый тип. Тип начального и конечного значения должен совпадать с типом переменной цикла. <Тело цикла> состоит из одного или нескольких операторов. Если в теле цикла должно выть несколько операторов, то они записываются в виде составного оператора между begin и end/

Оператор цикла for работает следующим образом

  1. переменной цикла присваивается начальное значение.

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

  3. Если значение переменной цикла не превышает конечного значения, то выполняется тело цикла и переменная цикла увеличивается на 1, а затем осуществляется возврат на пункт 2.

Необходимо помнить, что в этом операторе цикла шаг приращения переменной равен 1 или -1.

Если необходимо задать шаг приращения -1, то оператор цикла должен иметь вид:

For <имя>:=<начало> downto <конец> do

<тело цикла>;

Пример

Вычислить сумму десяти чисел, введенных с клавиатуры.

Program summa;

Var

i: integer; {переменная цикла-счетчик количества введенных чисел}

a,s: real; {a-число s-сумма}

begin

s:=0;

for i:=1 to 10 do

begin

write(‘Ввести число ’);

readln(a);

s:=s+a

end; {for i}

writeln(‘Сумма=’,s:8:2);

readln;

end.

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

Оператор имее вид:

While <условие> do

<тело цикла>;

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

Пример:

Вычислить сумму

program summa1;

var

i,n:integer;

а, s,p:real;

begin

writeln(‘Ввести переменную а и количество слагаемых n’);

readln(a,n);

s:=0; p:=1; {s-сумма, p- факториалы- произведение чисел}

i:=1; { i – счетчик слагаемых }

while i<=n do

begin

p:=p* i;

s:=s+(2*i*a) /p;

i:=i+1;

end; {while}

writeln(‘Сумма=’.s:6:2);

readln;

end.

Оператор цикла с постусловием

Оператор имеет вид

repeat

<тело цикла>;

until <условие>;

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

Пример

Вычислить сумму

,

x, n ввести с клавиатуры.

program summa2;

var

i,n,k,j: integer;

x,p,s: real;

begin

writeln(‘Ввести х, n’);

readln(x,n);

s:=0;

k:=-1;

i:=2;

repeat

p:=1;

for j:=1 to i-1 do

p:=p*j; !

s:=s+(k*p)/exp(i*ln(x));

i:=i+2; k:=-k;

until i>2*n;

writeln(‘Сумма=’,s:6:2);

readln;

end.

Пример

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

program alfa;

var

k,s,a: integer;

begin

repeat

write(‘Ввести число ’);

readln(a);

if odd(a) and (a<0)

then inc(k)

else

if (a>0) and (a mod 2=0) then s:=s+a;

until a=0;

writeln(‘Количество нечетных отрицательных чисел=’,k,

’ Сумма четных положительных чисел=’,s);

readln;

end.

Пример

Из последовательности чисел, вводимых с клавиатуры посчитать количество четных и нечетных чисел, найти сумму четные чисел кратные трем. Ввод чисел прекратить, после ввода числа 32000.

program chetnechet;

var

c,chet,nechet,s3: integer;

begin

chet:=0;

nechet:=0;

s3:=0;

repeat

write(‘Ввести число ’);

readln(c);

if c<>32000 then

case odd(c) of

false: begin chet:=chet+1;

if c mod 3=0 then s3:=s3+c;

end;

true: nechet:=nechet+1;

end; {case}

until c=32000;

writeln (‘количество нечетных чисел=’,nechet);

writeln(‘количество четных чисел=’,chet,’ , сумма четных чисел кратных 3=’,s3);

readln;

end.