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



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

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

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

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

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

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

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