Студопедия — Оператор 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; просмотров: 379. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

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

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