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

### Конспект урока | Вопросы самопроверки | Задания на дом | Практикум | Тест

В Турбо Паскале имеются специальные конструкции, которые позволяют реализовать команды ветвления и выбора. Эти конструкции называются операторами условного перехода (условный оператор), операторами выбора. Кроме того, есть еще один оператор, носящий название оператор безусловного перехода. Итак: рассмотрим эти операторы по порядку. Условный оператор. В Турбо Паскале имеются два вида операторов, позволяющих совершать какие-либо операции в зависимости от выполнения заданного условия. Эти операторы называются операторами условного перехода или просто условными операторами. Полная форма условного перехода.
If <логическое выражение> Then <оператор1> Else <оператор2>;
Например:
If a>0 then s:=s+d else s:=s-b;
После Then и Else можно записать только один оператор. В том случае, когда по условию задачи необходимо использовать несколько операторов или выражений, при выполнении или невыполнении условия применяется так называемый составной оператор.
Составной оператор.
Begin
Операторы
End.
Например:
If a>c then
Begin
C:=a-c;
K:=k+1;
End
Else
Begin
a:=c-a;
L:=l+1;
End.
Неполная форма оператора.
If <логическое выражение> Then <оператор>;
Например:
If a<>b Then a:=a-b;
If (x<=10) and (x>=0) Then y:=sgr(x);
Задача: Нахождение наибольшего из трех введенных с клавиатуры чисел.
Program maks(input,output);
Uses crt;
Var
a,b,c,max:real;
Begin
{Ввод данных}
Writeln (‘Введите значение чисел а,b,c’);
Readln(a,b,c);
{Поиск максимального числа}
If a>b then max:=a else max:=b;
If max {Печать результатов}
Writeln (‘Наибольшее из введенных чисел= ’,max);
{Задержка вывода на экран}
Repeat until keypressed;
End.
Пояснение алгоритма решения задачи:
Сравниваются два первых числа, после определения максимального из них сравнивается максимальное и третье число и определяется максимальное значение. Значение максимального числа и есть искомый максимум. Затем это значение выводится на экран.
Безусловный переход.
Для осуществления безусловного перехода, т.е. для изменения хода выполнения программы без каких - либо условий или досрочного прекращения выполнения какой-либо части программы или программы в целом в Турбо Паскале существует специальный оператор- именуемый оператором условного перехода (иногда встречается понятие – переход): GOTO номер метки; Осуществляет переход на указанную метку, независимо от каких-либо условий. Рекомендуется применять лишь в тех случаях, когда без него не обойтись, так как его применение может нарушить взаимосвязь текста программы и динамического хода выполнения программы. (Нужно иметь ввиду, что с помощью этого оператора нельзя выйти из подпрограммы).
Например:
1: clrscr;
Readln(a);
If a<>0 then
Begin
If a mod 2=0 then k:=k+1;
Goto 1;
Writeln (k);
End.
Оператор выбора (варианта).
А) Полная форма:
CASE ключ OF
Знач.1:выражение1(оператор1);
Знач.2:выражение2(оператор2);
…………………….
Знач.n:выражениеn(операторn);
Else выражение(оператор);
End.
Б) Неполная форма:
Case ключ Of
Знач.1:выражение1(оператор1);
Знач.2:выражение2(оператор2);
……………………..
Знач.n:выражениеn(операторn);
End.
В качестве ключа может быть имя переменной любого порядкового типа, кроме вещественного и строкового, или выражение (арифметическое с целым значением, или логическое). Тип параметра Знач. должен совпадать с типом ключа, при этом параметр Знач.- константа. (Можно задавать или список или диапазон констант).
Рассмотрим пример:
Написать программу, которая в зависимости от введенного символа выполнит следующие действия:
1. вычислит значение функции y=2*ln(x), если введен символ f;
2. найдет корни квадратного уравнения, если введен символ k;
3. найдет наибольший общий делитель трех чисел, если введен символ d;
program wibor(input,output);
uses crt;
var s:char;
x,a,b,c:integer;
d,y,x1,x2:real;
begin
clrscr;
writeln ('Введите символ f или k');
readln(s);
case s ofbr> 'f':begin
writeln ('Введите х ');
readln(x);
if x<>0 then
begin
y:=2*ln(x);
writeln('x=',x:5,' y=',y:5:2);
end;
end;
'k':begin
writeln('Введите b,a,c');
readln(b,a,c);
d:=(sqr(b)-4*a*c);
if d<0 then writeln('Уравнение не имеет решения');
if d=0 then
begin
x1:=b/(2*a);
writeln('d=0', 'x1=',x1:8:3);
end;
if d>0 then
begin
d:=sqrt(d);
x1:=(-b-d)/(2*a);
x2:=(-b+d)/(2*a);
writeln('x1= ',x1:8:3);
writeln ('x2= ',x2:8:3);
end;
end;
end;
repeat until keypressed;
end.

1.Как называются конструкции, позволяющие реализовать команды ветвления и выбора?.
2.Какие два оператора позволяют совершать какие-либо операции в зависимости от выполнения заданного условия?
3.Как записывается полная форма условного оператора?
4.Как записывается неполная форма условного оператора?
5.Что такое безусловный переход?
5.С помощью какого оператора осуществляетя безусловный переход?
6. Опишите формат оператора выбора.

1. Ввести программу вычисления значение функции y=2*ln(x) в компьютер и проверить результат при х=2,7,12,17;
2. Определите результат при m=2, n=-4.
a) If m>n then if n>0 write(m) else write(n) else write(m+n);
б) if (m>n) then if (n>0) or (m>0) then write(m) else write(n);
c) if not(m>0) and (n<0) then write(m) else write(n);