Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДРАЗРАБОТКА ИНФОРМАТИКА ПАСКАЛЬ_p.doc
Скачиваний:
9
Добавлен:
07.05.2019
Размер:
504 Кб
Скачать
☆

4. Конструкции языка программирования Паскаль

4.1. Организация ветвления

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

4.1.1. Условные операторы. Оператор if

Синтаксис:

if <выражение> then

begin

<блок операторов 1>

end

else

begin

<блок операторов 2>;

end;

Сначала вычисляется выражение; если оно истинно, то выполняется <блок операторов 1>, в противном случае выполняется <блок операторов 2>.

В качестве <выражения> могут быть использованы только булевские (логические) выражения, которые могут принимать значения True и False. В таких выражениях очень часто используются операции отношения и логические операции.

Например, a>0, b+c<=d, (i<0) and (j<i) и т.д.

Перед зарезервированным словом else не ставится точка с запятой!!!

Если блок <операторов 1> или блок <операторов 2> содержит всего один оператор, то его можно не заключать в операторные скобки Begin … End.

Пример:

var y,i: real;

begin

write('Введите число: ');

readln(i);

if i>=0 then y:=i

else

y:=-i;

writeln('Абсолютное значение введенного числа равно',y:8:4);

end.

Конструкция else не обязательна. Если значение <выражения> ложно, а конструкция else опущена, то управление передается на оператор, следующий в программе за оператором if.

Пример:

var y,i: real;

begin

write('Введите число: ');

readln(i);

if i<0 then i:=-i;

y:=i;

writeln('Абсолютное значение введенного числа равно',y:8:4);

end.

Допускается вложение оператора if в <блок операторов 1> или <блок операторов 2> другого оператора if. При вложении операторов if рекомендуется для ясности группирования операторов использовать операторные скобки Begin …End, ограничивающие <блок операторов 1> и <блок операторов 2>.

Если же операторные скобки отсутствуют, то компилятор ассоциирует каждое зарезервированное слово else с ближайшим оператором if, у которого отсутствует конструкция else.

Пример:

Var i:real;

Begin

Writeln(‘Введите возраст:’);

Readln(i);

if i>0 then

if i<=14 then writeln('Паспорта нет')

else if i>110 then write('Некорректный возраст');

else writeln(У такого гражданина должен быть паспорт России“);

end.

Решение задачи: Нахождение корней квадратного уравнения.

var a, c, b, x1, x2, d: real;

begin

writeln('input a,b,c');

readln(a,b,c);

d:=(sqr(b)-4*a*c);

writeln('d=', d:8:5);

if d<0 then

writeln('Действительных корней нет');

else

if d=0 then

writeln('x1=x2=',-b/(2*a))

else

begin

x1:=(-b-sqrt(d))/(2*a);

x2:=(-b+sqrt(d))/(2*a);

writeln('x1=', x1:4:2);

writeln('x2=', x2:4:2);

end;

end.

4.1.2. Конструкция множественного выбора Case … Of

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

Синтаксис:

Case <порядковая переменная> Of

<значение 1>:

begin

<блок операторов 1>;

end;

<значение 2>:

begin

<блок операторов 2>;

end;

…

<значение n>:

begin

<блок операторов n>;

end;

Else

begin

<блок операторов n+1>;

end;

End;

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

В зависимости от значения <порядковой переменной> выполняется тот или иной <блок операторов>. Если значение ни разу не встречается в списке, то выполняется блок операторов конструкции Else.

В операторе Case … Of перед конструкцией Else ставится точка с запятой!!!

Данный оператор заканчивается зарезервированным словом End;.

Конструкция Else необязательна.

Если один и тот блок операторов необходимо выполнять при различных значениях <порядковой переменной>, то эти значения можно указывать в одной строке через запятую, либо, если они идут подряд, можно указать два крайних значения, разделив их двумя точками.

Пример:

Var n:integer;

…

Case N Of

1:Writeln('стол');

2..4: Writeln('стола');

0, 5..9: Writeln('столов');

Else

Writeln('чересчур много столов');

End;

Конструкция Case … Of очень часто используется для замены конструкций из многочисленных вложенных операторов If … Then.

Контрольные вопросы по теме «Организация ветвления»

  1. Чем отличается линейный алгоритм от ветвления?

  2. Что такое вычислительный процесс разветвляющейся структуры? Как организовать ветвление вычислений: а) на две ветви; б) на три ветви?

  3. Какие ключевые слова используются в Паскале для организации ветвления? Что находится между ними?

  4. Чем полное ветвление отличается от неполного?

  5. Как оформлять текст программы, чтобы он был понятнее?

  6. Что необходимо использовать, если в случае истинности некоторого условия нужно выполнить несколько операторов?

  7. Как быть, если в случае истинности некоторого условия никаких действий выполнять не требуется, а в случае ложности нужно выполнить несколько действий?

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

  9. В каком случае количество операторов begin в программе не должно соответствовать количеству операторов end?

  10. Составить последовательность операторов для вычисления величины z=0, если x<-2; z=1, если -2 7, x < 2; z=-1, если x>2.

  11. Зачем необходимо при отладке программы тестировать все ветви алгоритма?