Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

4.3. Составной и пустой операторы

Составной оператор используется в том случае, когда по правилам синтаксиса сложного оператора должен стоять только один оператор, а в алгоритме необходимо выполнить некоторую последовательность действий. Составной оператор объединяет эту последовательность в единый по син­таксису оператор путем заключения в операторные скобки begin и end. Например:

ВEGIN

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

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

. . . ;

<операторN>

END;

Для составного оператора допускается любая глубина вложенности:

BEGIN

BEGIN

. . .

BEGIN

. . .

END;

. . .

END;

END ;

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

Например, пустыми операторами будут следующие записи:

1) ; ; 2) <метка>: ;

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

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

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

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 используется для досрочного выхо­да из любого сложного оператора или вложенных операторов цикла.

4.5. Пример и задания с оператором 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=Ax+b

y = ax2 Ln(x+1)

аждому условному оператору в программе соответствует символ “решение” в схеме алгоритма на рис. 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,

8

y =

. Для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, найти площадь квадрата; в противном случае подсчитать площадь трапеции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]