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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Действие оператора GOTO состоит в передаче управления соответствующему оператору. Структура оператора:

GOTO метка;

Метка в Турбо Паскале – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Перед тем как появиться в программе, метка должна быть задана в разделе описанания. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток.

Пример 2.

LABEL 1; {в разделе описания};

goto 1; {в разделе операторов} {перейти на метку 1}

1: read(x,y); {строка с меткой 1 в разделе операторов}

При исполнении меток необходимо руководствоваться следующими правилами:

1) метка, на которую ссылается оператор GOTO, должна быть задана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;

2) метки, описанные в процедуре (функции), локализуется в ней, поэтому передача управления извне процедуры (функции) на метку внутри неё невозможна.

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

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

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

IF <условие> THEN <оператор 1> ELSE <оператор 2>;

где: IF, THEN, ELSE – зарезервированные слова (если, то, иначе);

<условие> – произвольное выражение логического типа;

<оператор 1>, <оператор 2> – любые операторы языка Турбо Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор 1>, а <оператор 2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор 1> пропускается, а выполняется <оператор 2>.

Поскольку любой из операторов <оператор 1> и <оператор 2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <оператор 2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Условный оператор позволяет проверить некоторое условие и в зависимости от результатов поверки выполнить то или иное действие. Таким образом, условный оператор – это средство ветвления вычислительного процесса.

Операторы условного перехода подразделяются на: простые и составные, на короткие и полные.

1) Простой, короткий IF (если)

Структура оператора имеет вид:

IF (условие) THEN (оператор или метка);

Пример 3.

Вычислить y: = ln x, если x > 0.

Программа имеет вид:

Program PR3;

Var

y, x: real;

begin

writeln(‘ввести x’);

Readln (x);

{простой, короткий IF}

IF x > 0 THEN y: = ln(x);

writeln (‘x=’, x:7:2, ‘ y=’, y:7:2);

end.

2) Простой, полный IF

Пример 4.

Вычислить y = ln x, если X>0, иначе y=cos x.

В примере 4 рассматривается не только вариант «тогда», но и «иначе».

Программа имеет вид:

Program PR4;

var

x, y: real;

begin

writeln(‘ввести х’);

Readln (х);

{простой, полный IF}

if x>0 THEN y:= ln (x) ELSE y:=cos(x);

Writeln (‘x = ‘, x:6:2, ‘ y = ‘, y:7:2)

end.

Если Х > 0, тогда выполняется оператор за словом THEN, иначе выполняется оператор, следующий за этой строкой.

3) Составной, короткий IF

Составной оператор – это последовательность произвольных операторов программ, заключенная в операторные скобки – зарезервированные слова BEGIN…END. Составные операторы – важный инструмент Турбо Паскаля, дающий возможность писать программы по современной технологии структурного программирования (без перехода GOTO).

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

Пример 5.

Вычислить y=ln x, z=y–5×x, если x > 0.

Оператор условия запишется в виде:

IF x>0 then

Begin

y:=Ln(x);

z:=y–5*x;

Writeln (’y = ‘, y:7:2, ‘z =’, z:8:3)

end;

4) Составной, полный IF

Рассмотрим задание примера 4, но вывод делается для каждого условия.

Пример 6.

Оператор условия запишется в виде:

IF x>0 then

Begin

Y:=ln (x);

Writeln (‘x = ‘, x:6:2,’ y =’, y:7:2);

End

Else

begin

Y:=cos (x);

Writeln (‘x = ‘, x:6:2,’ y =’, y:7:2);

End;

В примере 6 после слов then, еlse операторы заключены в операторные скобки.

5) Структурированный (разветвленный) IF

Среди условных операторов можно выделить структурированный, который предполагает проверку условий путём вложения.

5.1) Структурированный, короткий, простой IF.

В структурированном операторе содержится последовательная проверка вложенных условий.

Пример 7.

Вычислить r=ln(x+y+z), если x > 0, y > 0, z > 0.

Оператор условия запишется в виде:

IF x>0 then

IF y>0 then

IF z>0 then

R:=LN(X+Y+Z);

Пример 8.

Можно этот пример записать иначе коротким, простым IF с логическим выражением:

IF (x>0) and (y>0) and (z>0) then R:=LN(X+Y+Z);

Пример 9.

Вычислить r=x+y+z, если выполняется хотя бы одно из условий x>0, y>0, z>0. Оператор условия запишется в виде:

IF (x>0) or (y>0) or (z>0) then R:=(x+y +z);

В примерах 8, 9 логические выражения включают в себя логические операции.

5.2) Структурированный, полный, простой IF.

Пример 10.

Вычислить:

r=ln(x+y+z), если x>0, y>0, z>0;

r=ln (x+y)+ z, если x>0, y>0;

r=ln (x)+y+ z, если x>0, иначе r = x+y+z.

Оператор условия запишется в виде:

IF x>0 then

IF y>0 then

IF z>0 then r:=ln (x+y+z)

Else r:= ln (x+y)+z

Else r:= ln (x)+y+z

Else r:= x+y+z;

Вначале проверяются три условия. Если они выполняются, то вычисляется r=ln(x+y+z). Иначе выполняются первые два условия, а последнее не выполняется и z ≤ 0 (первое слово else относится к последнему условию). В этом случае вычисляется r=ln(x+y)+z.

Если из двух условий выполняется только первое, то вычисляется r=ln x+y+z (второе слово else относится ко второму условию) и в этом случае y ≤ 0. Последнее слово else относится к первому условию и в этом случае х ≤ 0. В этом случае вычисляется r=x+y+z.

3. Примеры выполнения задания к практическому занятию № 4

Программы линейных алгоритмов

Пример 11.

Написать программу линейного алгоритма примера 8 практической работы №1.

Вычислить и вывести на экран значение функции:

Y = sin (x+30)/(a + x)+b*a;

Значение х ввести в градусах.

Решение.

В программе примера 11 после слова «BEGIN» перед операторами в фигурных скобках даются комментарии, поясняющие действия этих операторов.

PROGRAM PR11;

VAR

a, b, x, y:real;

BEGIN

{На экран выводится подсказка – текст в скобках}

Writeln (‘ввести a, x, b’);

{Ввод с клавиатуры переменных a, x, b}

Readln (a, x, b);

{перевод из градусов в радианы переменной х}

x:=x*pi/180;

y: = sin (x+30*pi/180)/(a + x)+b*a;

{Вывод переменных a, x, b}

Writeln (‘a=’, a: 7:3,’ x=’, x: 7:3,’ y=’, y: 7:3);

END.

В примере11 вывод переменных записан в формате с фиксированной точкой.

Примечание.

Необходимо учесть последовательность действий при выполнении арифметического выражения с учётом приоритета арифметических действий:

а) вычисляются скобки: первая слева и вторая,

б) вычисляется синус первой скобки,

в) выполняется операция деления синуса на вторую скобку,

г) выполняется операция умножения b*a,

д) выполняется операция сложения

Программы разветвляющихся алгоритмов

Пример 12.

Написать программу разветвляющегося алгоритма примера 9 практической работы №1.

Если х>0, тогда вычислить:

y = lg(x) + (a-d)/(d+b);

иначе вычислить:

y=sin (x)/(a + b)-b/d.

PROGRAM PR12;

VAR

a, b,d, x, y:real;

BEGIN

{На экран выводится подсказка – текст в скобках}

Writeln (‘ввести a, x, b, d’);

{Ввод с клавиатуры переменных a, x, b,d}

Read (a, x, b, d);

{перевод из градусов в радианы переменной х}

x:=x*pi/180;

if x>0 then

y: = ln(x)/ln(10) + (a-d)/(d+b)

else

y:=sin (x)/(a + b)-b/d;

{Вывод результата}

Writeln (’y=’, y: 7: 3);

END.

Пример 13.

Дана точка А (X,Y) с координатами X,Y не равными нулю.

Найти четверть, в которой находится эта точка.

Program Pr 13;

Var

X, Y: integer;

Begin

writeln(‘ввести координаты т. А: X,Y’);

Readln (x,y);

IF (x>0) and (y>0) then writeln (‘т. A: в 1четверти’)

else

IF (x>0) and (y<0) then writeln (‘т. А в 4 четверти’)

else

IF y>0 then writeln (‘т. А во 2 четверти’)

else writeln (‘т. А в 3 четверти’);

End.

Каждому ELSE соответствует предыдущее свободное then.

Задания к практическому занятию № 4

  • Написать программу для линейного алгоритма, выполненного в практической работе №1.
  • Написать программу для разветвляющегося алгоритма, выполненного в практической работе №1.
  • Ввести каждую программу в компьютер, сохранить в разных файлах.
  • Запустить каждую программу, исправить ошибки, ввести данные, получить результат.
  • Представить преподавателю программу с полученным результатом на компьютере.
  • Оформить и защитить работу преподавателю (тест по данной теме).

Задания ИДЗ №3 по теме: «Программирование. Линейные процессы. Ветвления» в Приложении №1 (Задание 4).

Вопросы для самоконтроля к практическому занятию № 4

1. Во фрагменте программы:

begin

writeln (‘ x,y’);

readln(x,y,z);

z:=x+y;

writeln (x,y,z);

end.

Представлен раздел:

1) операторов; 2) описания переменных; 3) ввода данных; 4) вывода данных.

2. Во фрагменте программы:

var

x,y,z: real;

выполняется описание:

1) числовых переменных целого типа;

2) числовых переменных вещественного типа;

3) описание констант;

4) ввода данных.

3. Укажите правильно записанное логическое выражение на паскале:

1) r<0 and r>0;

2) 0 <x<1 and y >x;

3) (z>y) or (z<x);

4) A>B>C<0.

4. В программе паскаля оператор: writeln(‘z=’, z: 8: 4):

1) вводит данные с клавиатуры;

2) выводит на экран подсказку;

3) выводит переменную с плавающей запятой;

4) выводит переменную с фиксированной точкой.

5. В результате работы линейного алгоритма:

x:=5

y:=x+1;

x:=2*y;

y:=x+y;

вывод y.

Переменная У приняла значение:

1) 16; 2) 5; 3) 6; 4) 18.

6. В результате работы линейного алгоритма:

y:=x+3;

x:=2*y;

y:=x+y;

вывод y.

Переменная У приняла значение 18. Указать значение Х до начала работы алгоритма.

1) 7; 2) 3; 3) 5; 4) 10.

7. Укажите правильно записанный оператор присваивания на паскале:

1) z:= cos(x) + ln(y);

2) cos(x):= z+ln(y);

3) z =cos(x)+log(y);

4) a+b:=c+d.

8. При x, y: integer;

в результате выполнения фрагмента программы:

x:= -5; y:= -10;

if abs (x) > abs(y) then x:= x + 15 else y:=x-y;

write (x,y);

на экран будет выведено:

1) 5; - 10;

2) 10; -10;

3) 10; 5;

4) -5; 5.



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 559; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.104.248 (0.04 с.)