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

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. Зачем необходимо при отладке программы тестировать все ветви алгоритма?