Студопедия — Оператор goto, раздел описания меток.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Оператор goto, раздел описания меток.






 

Теоретические сведения

В лабораторной работе 1 мы рассматривали линейные программы,алгоритм которых можно представить в виде блок-схемы:

начало

оператор 1

оператор 2

Оператор N

 
 


Конец

Возможны случаи, когда программа должна разветвляться согласно какого либо условия. Разветвление может осуществляться по двум направлениям в зависимости от условия (логического выражения), которое может быть истинно или ложно. В этом случае применяется оператор if (если). Возможно разветвление на несколько направлений – оператор case.

If условие истинно case

Условие ложно оператор...

оператор операторы 1…n

 

Оператор goto, раздел описания меток.

Для того чтобы изменить (при необходимости) последовательное выполнение операторов применяется оператор goto. Его называют оператором безусловного перехода. Встретив оператор goto компьютер выполняет оператор «помеченный» меткой, которая помещена после goto.

Метка должна быть описана в разделе описания меток. Раздел описания меток помещается в разделе описаний блока и, начинается зарезервированным словом Label за которымперечисляются (через запятую) метки, используемые в этом блоке. Метки представляют собой набор латинских букв и цифр, первая из которых буква. Оператор считается помеченным, если передним помещена метка, после которой стоит двоеточие. Встретив при последовательном выполнении, оператор goto метка;компьютер не будет выполнять следующий за ним оператор, а перейдёт к выполнению оператора, помеченного указанной меткой.

Пример: написать программу, вычисляющую cos(x) для х=0, х=0.01, х=0.02 и т.д.

Program Progect3_1;

{$APPTYPE CONSOLE} uses SysUtils;

Label M; Var x:real;

Begin x:=0;

M:writeln('x=',x,'cos(x)=',cos(x));

x:=x+0.01; readln;

goto M;

End.

Данная программа имеет один недостаток, она бесконечная. Для того, чтобы она закончилась, например при х=3.14, необходимо применить оператор if.

program Project3_2;

{$APPTYPE CONSOLE} uses SysUtils;

Label M1,M2; Var x:real;

B egin x:=0;

M1:writeln('x=',x:4:2,'cos(x)=',cos(x):7:5); x:=x+0.01;

if x<=pi then goto M1 else goto M2;

M2:readln; end.

Из приведенной программы видно, что встретив оператор if (если) компьютер вычисляет условие (в общем случае логическое выражение) x<=pi (значение pi компьютеру «известно»). Если условие true (истинно), то выполняется оператор следующий за словом then (тогда), если условие false (ложно), то выполняется оператор следующий за словом else (иначе).

Замечание:Символ точка с запятой перед else не ставится поскольку оператор if ещё не закончился!

Оператор условия if может не содержать else, тогда в случае ложности логического выражения оператор if просто пропускается.

После then и else могут помещаться любые операторы, следовательно операторы if можно вкладывать друг в друга. При этом каждое else присоединяется к тому then, которое непосредственно ему предшествует.

Если необходимо, чтобы после then или else выполнялось несколько операторов, то их нужно объединить в один оператор с помощью операторных скобок begin, end (такой объединённый оператор называется составным оператором)..

Логическое выражение может состоять из логических констант true и false, результатов вычисления логических функций (тоже true и false), отношений между сравнимыми величинами, (результаты тоже true или false), кроме того эти объекты могут быть связаны логическими операциями. Результат вычисления логических выражений всегда true или false.

Операции отношения > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), = (равно), <> (не равно). Сравниваться могут константы, значения соответствующих переменных, значения выражений, значения вычисленных функций, символьные величины между собой, т.е. те величины, сравнивая которые можно заключить, что данное отношение истинно true или ложно false.

Логические операции. Логические операции могут применяться к объектам, которые могут принимать значения true и false, т.е. к логическим константам, результатам вычисления логических функций и результатам вычисления отношений. Всего в двоичной математической логике определены шестнадцать логических операций. Мы рассмотрим из них наиболее употребительные три, тем более, что с помощью этих трёх операций достаточно удобно конструировать логические выражения любой сложности. Поскольку операции производятся над объектами, которые могут принимать значения только true и false, то логические операции задают таблично:

Однокомпонентная операция отрицания (not) если А= true, то not А= false

если А= false, то not А= true

Двухкомпонентные операции логическое сложение or

Компоненты А и В могут принимать значения true и false, следовательно операцию or можно задать табличкой: А= true В= true А or В = true

А= true В= false А or В = true

А=false В= true А or В = true

А= false В= false А or В = false

Операцию or называют логическим сложением (или), поскольку, если считать true=1, а false=0, то

А= 1 В= 1 А or В =1

А=0 В= 1 А or В =1

А=1 В=0 А or В =1

А=0 В=0 А or В =0

Другими словами если или А или В равно 1, то А or В =1

Двухкомпонентная операция and называют логическим умножением, поскольку А and В =1 только тогда, когда оба компонента операции равны 1.

А= true В= true А and В =true А= 1 В=1 А and В =1

А= true В= false А and В = false А= 1 В=0 А and В =0

А=false В= true А and В = false А= 0 В=1 А and В =0

А= false В= false А and В = false А=0 В=0 А and В =0

Пусть необходимо решить задачу:

ax2/sin x если а>0 и одновременно x>0 и одновременно x<0.5

ex если а>0 и одновременно x>=0.5 и одновременно x<3

Z= если a<=0 или x>=10

0 в других случаях

 

program Project3_3;

{$APPTYPE CONSOLE} uses SysUtils;

Label M1; Var a,x,z:real;

Begin M2:writeln(‘input a,x’); readln(a,x);

if a>0 and x>0 and x<0.5 then begin z:=a*sqr(x)/sin(x); gotoM1; end else

if a>0 and x>=0.5 and x<3 then begin z:=exp(x); gotoM1;end else

if a<=0 or x>=10 then begin z:=sqrt(a)*sqrt(x)/sin(x); gotoM1;end else z:=0; M1:wrineln(‘z=’,z); readln End.

Оператор выбораcase позволяет сделать выбор из произвольного количества имеющихся вариантов вычислений.

Оператор case имеет вид:

Case выражение-селектор of

список констант выбора1:оператор1;

список констант выбора 2:оператор2;

…………………………………

Список констант выбора N: оператор N

else оператор end; { else вместе с оператором может отсутствовать.}

Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем выполняется тот оператор, константа выбора которого в списке равна этому вычисленному значению селектора. Если ни одна из констант ни одного из списков не равна текущему значению селектора, то выполняется оператор, стоящий за словом else. Если слово else отсутствует, то case игнорируется и управление передается оператору, находящемуся за словом end.

Выражение-селектор может иметь любой скалярный тип, кроме вещественного, т.е. целый, символьный, булевский, интервальный, перечисляемый. Список констант выбора состоит из произвольного количества значений или диапазонов, отделенных друг от друга запятыми. Тип констант в любом случае должен совпадать с типом селектора.

i+10 если i= 1,2,5

Вычислить y = i+100 если i= 12,16

I+1000 если i= 31,35,46

Program Progect3_4; {селектор целого типа, константы выбора представлены списками}

{$APPTYPE CONSOLE} uses SysUtils;

Var y, i:integer;

Begin writeln(‘input i'); readln(i);

case i of

1,2,5:writeln(‘i=’,i,’ y=’,i+10);

12,16:writeln(‘i=’,i,’ y=’,i+100);

31,35,46: writeln(‘i=’,i,’ y=’,i+100); else writeln(‘I I is out region’); end; readln End.

Определить в какой из диапазонов попадает введённое число 1-10, 11-100, 101-1000

Program Progect3_5; {селектор целого типа, константы выбора представлены диапазонами}

{$APPTYPE CONSOLE} uses SysUtils;

Var y, i:integer;

Begin writeln(‘input i'); readln(i);

case i of

1..10: writeln(‘i=’,i,’ region 1-10’);

11..100: writeln(‘i=’,i,’ region 11-100’);

101..1000: writeln(‘i=’,i,’ region 101-1000’); else writeln(‘i is out region’); end; readln End.

Program Progect3_6; {case целого типа, константы выбора представлены списком и диапазоном}

{$APPTYPE CONSOLE} uses SysUtils;

Var y, i:integer;

Begin writeln(‘input i'); readln(i);

case i of

1,2,5,8..15:writeln(‘i=’,I,’ y=’,i+10);

15,18,21..30:writeln(‘i=’,I,’ y=’,i+100);

31,35,46..98: writeln(‘i=’,I,’ y=’,i+100); else writeln(‘I I is out region’); end; readln End.

Program Progect3_7; {case перечисляемого типа}

{$APPTYPE CONSOLE} uses SysUtils;

Type month=(‘jan’,’fab’,’mar’,’apr’,’may’,’jun’,’jul’,’aug’,’sep’,’okt’,’nov’,’des’);

Var i:month; {в i могут быть помещены только ‘jan’ …’des’}

Begin writeln(‘input i'); readln(i);

case i of

’des’, ‘jan’,’fab’:writeln(‘i=’,i,’ season-winter’);

’mar’,’apr’,’may’:writeln(‘i=’,i,’ season-spring’);

’jun’,’jul’,’aug’: writeln(‘i=’,i,’ season-summer’);

’sep’,’okt’,’nov’: writeln(‘i=’,i,’ season-autumn’); end; readln End.

 

Program Progect3_8; {case символьного типа}

{$APPTYPE CONSOLE} uses SysUtils;

Var y, i:char;

Begin writeln(‘input i'); readln(i);

case i of

‘0’..’9’:writeln(‘i=’,i,’ czifry);

‘+’,’-‘,’*’,’/’,’=’,’<’,’>’:writeln(‘i=’,i,’ znak’);

a..z, A..Z:writeln(‘i=’,I,’lit’)

31,35,46: writeln(‘i=’,I,’ y=’,i+100); end; readln End.

Условия принадлежности точки к некоторым графическим изображениям







Дата добавления: 2015-10-02; просмотров: 377. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

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

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия