Здавалка
Главная | Обратная связь

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



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

Структура такого оператора:

GOTO<метка>;

гдеGOTO - ключевое слово, обозначающее перейти к <метке>,

<метка> является произвольным идентификатором, который позволяет пометить любой оператор в программе и потом ссылаться на него. Оператор от метки отделяется двоеточием. В языке Pascal ABC допускается использовать в качестве метки также целое число без знака.

Пример:

LABEL m1, loop;

VAR a, b, c, d: word;

BEGIN

m1: a := b+c*d;

. . .

goto m1;

loop: END.

Все использованные в программе метки должны быть описаны в разде­ле описаний программы с указанием ключевого слова “LABEL”. Описанные в этом операторе метки обязательно должны быть использованы в программе.

Метки, описанные в функции или процедуре, локализуются только в ней, передача управления извне процедуры на метку внутри ее невозмож­на. С помощью оператора GOTO не рекомендуется осуществлять переход во внутреннюю часть сложного оператора (цикла, составного оператора). Запрещается переход с одной альтернативной части (ветви) сложного опе­ратора на другую.

Современная технология структурного программирования основана на принципе программирования без GOTO. Считается, что злоупотребление этими операторами затрудняет чтение программы, усложняет ее отладку.

Тем не менее, в некоторых случаях использование оператора перехода мо­жет упростить программу. Обычно GOTO используется для досрочного выхо­да из любого сложного оператора или вложенных операторов цикла.

 

Пример и задания с оператором IF

Пример. Вычислить значения функции y(x) в зависимости от интервала, в который попадает аргумент x.

Для xÎ [-10,5]

 

 

где а = 1.5, b = 0.5 ;

Напишем программу, соответствующую схеме алгоритма (рис. 5):

Program Lr2;

Label m1, 10;

Const A = 1.5; B = 0.5;

var x, y: real; // переменные вещественного типа

Begin

m1: read(x); // вводим значение переменной x

IF (x < -10) or (x>5) then goto m1;

IF x<0 then begin y:= a*x+b ; goto 10 end ;

if (x >= 0) and (x<=2) then y :=A*SQR(x)*LN(x+1) ;

if x>2 then y := EXP(A*x+1)*COS(B*x);

10: writeln( ' x= ', x :8:1 , ' y= ' , y :8:2); //вывод значений x и y

End.

y = ax2 Ln(x+1)
y=Ax+b  
y=eax+1 cos(bx)
Да
Нет
Нет
Да
Да
Каждому условному оператору в программе соответствует символ “решение” в схеме алгоритма на рис. 5. Программу можно упростить, используя вложенные условные операторы. Например, если в первом и втором операторах IF добавить их альтернативные части ELSE, тогда в третьем IF условие упростится до вида (x <= 2) и не потребуется последний оператор IF.

 

 

 
 
Нет

 


Рис. 5


Задания к самостоятельному выполнению (программа_2_1)

Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:

1. Для t [0,3], at2lnt при 1 £ t £ 2,

где a = -0.5,b = 2 z = 1 при t < 1,

eatcosbt при t > 2,

 

2. Для x [0,4], при x > 2,

где а = 2.3 f = х при 0.3 < x £ 2,

cos(x-a) при x £ 0.3,

 
 


3. Для x [0,7], (a+b)/(ex+cosx) при 0 £ x < 2.3,

где a = -2.7,b = -0.27 z = (a+b)/(x+1) при 2.3 £ x < 5,

ex+sinx при 7 ³ х ³ 5,

 

4. Для i [7,12], ai4+bi при I < 10,

где a = 2.2,b = 0.3. y = tg(i+0.5) при I = 10,

e2i+ при I > 10,

5. Для x [0.9,5], x2-7/x2 при x < 1.3,

где a = 1.5 y = ax3+7 при 1.3 £ x < 3,

lg(x+7 ) при x ³ 3,

6. Для t [-1.4], при t < 0.1,

где a = 2.1,b = 0.37. z = at+b при 0.1 £ t < 2,

при t ³ 2,

7. Для x [0,6], a esinx+2.5 при x < 0.3,

где a = 1.5. y = ecosx+a при 0.3 £ x < 4,

(sin x)/(a+ex) при x ³ 4,

 

y =
8. Для x [1,2], a/x+bx2-c при x £ 1.2,

где a = 1.8,b = -0.5, c = 3.5 (a+bx)/ при x > 1.2,

 

9. Для t [1,5], t при t > a,

где a = 2.5 z = t sin at при t = a,

e-at cos at при t < a,

 


10. Для x [0,4], e-bx sin bx при x < 2.3,

где a = 1,b = 3 y = сos bx при 2.3 £ x £ 3,

e-ax cos bx при x ³ 3,

 

11. Для t [0.5,3], at2-b при t < a,

где a = 1.3, b = 6.5 z = a-b при a £ t £ b,

a t2/3- при t > b,

 
 


12. Для x [0,2], |e-2x sin bx| при x >1,

где b = -2.9 y = cos bx при x = 1,

e-x cos bx при x < 1,

 

13. Для x [0.5,2] sin (cos ax) при x >1,

где a = -0.8 z = tg ax при x = 1,

a2 x при x < 1,

 

14. Для x [1,2], ln bx - 1/(bx+1) при x < 1.3,

где b = 1.3 y = bx + 1 при 1.3 ³ x ³ 1.7,

ln bx +1/(bx+1) при x > 1.7,

 
 


15. Для x [-1,1], ax2+bx2/3 при x < 0.1,

где a = 2.5,b = -0.9 z = a x2 при x = 0.1,

b x2/3 при x > 0.1.

 

16. Ввести координаты точки (x, y). Напечатать, в каком квадранте или на какой оси координат находится эта точка.

17. Ввести радиусы R1, R2 и высоту. Вычислить объем усеченного конуса: , где S – площадь оснований. Если R1 = R2 – объем и площадь цилиндра, если R1 = 0 или R2 = 0 – объем (hπr2) и площадь πr( ) поверхности конуса.

18. Ввести с клавиатуры цифру. Определить, какой системе счисления она может принадлежать.

19. Ввести число. Определить, делится ли оно нацело на два, три или на пять.

20. Ввести a, b, h. Если h = 0, вычислить площадь прямоугольника; при a = b, найти площадь квадрата; в противном случае подсчитать площадь трапеции.


4.6. Оператор выбора варианта CASE

Оператор CASE позволяет в зависимости от значения какой-либо пе­ремен­ной или выражения порядкового типа выполнить те или иные дейс­твия.

Его структура имеет следующий вид:

CASE<ключ_выбора> OF

<константа_выбора1>: <оператор1>;

<константа_выбора2>: <оператор2>;

. . .

<константа_выбораN>: <операторN>

ELSE <оператор>

END;

где <ключ_выбора> - переменная (или выражение) любого порядкового типа; <константа_выбора> - константа того же типа, что и <ключ_выбора>; <оператор> - произвольный оператор Pascal ABC.

Принцип действия оператора. Сначала вычисляется <ключ_выбора>, затем в списке конс­тант выбора отыскивается нужная константа, равная <ключу_выбора>, и выполня­ется стоящий за ней оператор. После этого оператор CASE завершает рабо­ту. Если в списке не найдена константа, совпадающая с "ключом", выпол­няется оператор, стоящий после ELSE.

Заметим, что стоящая в конце часть ELSE <оператор> является не обязательной. При отсутс­твии в списке выбора нужной константы оператор выбора просто завершает свою работу.

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

Пример:

CASE <ключ> OF

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

2, 3:<оператор2>;

4 ..6:<оператор3>

ELSE <оператор>

END;

<Константа_выбора> не является меткой оператора, поэтому в разде­ле меток описывать её нельзя.








©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.