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


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



ЗНАЕТЕ ЛИ ВЫ?

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



Оператор безусловного перехода (go to) означает "перейти к" и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор.

Напомним, что метка объявляется в разделе описания меток и может содержать как цифровые, так и буквенные символы.

При использовании оператора go to необходимо помнить, что областью действия метки является только тот блок, в котором она описана. Передача управления в другой блок запрещена.

Правила использования оператора безусловного перехода. Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как способствует созданию малопонятных и трудно модифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. Поэтому рекомендуется минимальное использование оператора go to с соблюдением следующих правил:

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

• расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).

Пример применения оператора безусловного перехода:

label Metka; {в раздале описания меток описали метку с именем Metka}

begin {основная программа}

{операторы основной программы}

go to Metka;

Metka:

{операторы основной программы помеченные меткой}

end.

Порядок выполнения работы

1. Изучить теоретические сведения по теме: “Написание программы на Паскале с использованием операторов присваивания и безусловного перехода ”.

2. Получить индивидуальное задание у преподавателя и разработать программу в соответствии с поставленной задачей.

3. Показать работающую программу преподавателю.

4. Ответить на контрольные вопросы.

Контрольные вопросы

1. Основные элементы программирования.

2. Основные характеристики программы. Понятия языка, оверлеев, глобальных и локальных блоков.

3. Операторы языка программирования Паскаль. Оператор присваивания. Формат, примеры.

4. Оператор безусловного перехода. Формат, примеры. Основные правила использования

 

Лабораторная работа № 7

Написание программы на Паскале с использованием условных операторов и оператора выбора Case

Цель работы: формирование знаний и умений по работе с операторами языка. Приобретение навыков написания программ с использованием операторов присваивания и безусловного перехода.

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

Условные операторы

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

В Турбо Паскале имеются два условных оператора: if и case.

Оператор условия if

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

Он может принимать одну из следующих форм:

· if <условие> then <оператор1>

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

· if <условие> then <оператор>;

В переводе с английского языка данные форматы можно определить как:

· ЕСЛИ <условие> ТО <оператор1> ИНАЧЕ <оператор2>

· ЕСЛИ <условие> ТО <оператор>

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

В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then (в переводе –“то”). Если результат вычисления выражения в условии есть False (ложь), то выполняется <оператор2>.

Во втором случае, если результат выражения True, выполняется <оператор>, если False - оператор, следующий сразу за оператором if. Операторы if могут быть вложенными.

Пример фрагмента программы с оператором условия if:

Read(Ch);

if Ch='N' then Parol:= True

else Parol:= False;

Read(X);

if Parol = True then

if X = 100 then Write('Пароль и код правильные')

else

begin

Writeln('Ошибка в коде');

Halt(1)

end;

В данном примере с клавиатуры считывается значение переменной символьного типа Ch. Затем проверяется условие Сh='N'. Если оно выполняется, то переменной Parol булевского типа присваивается значение True, если условие не выполняется, False. Затем с клавиатуры считывается значение кода X. Далее оператор if проверяет условие Parol = True. Если оно имеет значение True, то выполняется проверка введенного пароля оператором if X=100. Если условие Х=100 имеет значение True, то выводится сообщение "Пароль и код правильные", и управление в программе передается на оператор, следующий за словом end, если оно имеет значение False, выполняется составной оператор, стоящий после, слова else, который выводит на экран видеомонитора сообщение "Ошибка в коде", и вызывает стандартную процедуру Halt(1) для остановки программы.

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

if условие1 then if условие2 then <оператор1> else <оператор2>

Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else.

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

Пример 1. Составить программу, которая вычисляет частное двух целых чисел. В связи с тем, что делить на нуль нельзя, организовать контроль ввода данных.

Для контроля вводимых значений делителя используем оператор условного перехода if... then... else.

Текст программы может выглядеть следующим образом:

program Primer1;

var

А, В: integer;

Rezult: real;

Begin

Write('Введите значение делимого А: ');

Read(A);

Write('Введите значение делителя В: ');

Read(В);

if B=0 {Контроль ввода числа B}

then Writeln('Ha нуль делить нельзя') {Условие выполнено}

else

{Условие не выполнено}

begin

Rezult:= А / В;

Writeln('Частное чисел ',А,' и ',В, ' = ', Rezult);

end;

end.

Оператор выбора case

Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection — выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы).

Формат записи оператора case:

case <выражение-селектор> of

<список1>: <оператор1; >

<список2>: <оператор2; >

<списокN>: <onepaторN>

else <оператор>

end;

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

Селектор должен относиться к одному из целочисленных типов (находящихся в диапазоне — 32768..32767): булевскому, литерному или пользовательскому. Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель "..". Тип констант в любом случае должен совпадать с типом селектора. В синтаксическом описании, приведенном выше, предполагается использование одного оператора для каждой альтернативы, но при необходимости можно задать несколько операторов, сгруппировав их в составной оператор. В то же время ветвь else допускает использование последовательности операторов, разделенных символом ";".

Правила использования оператора сase. При использовании оператора выбора case должны выполняться следующие правила:

1. Значения выражения "переключателя", записанного после служебного слова case, должны принадлежать дискретному типу (лат. discretus — прерывистый, дробный, состоящий из отдельных частей); для целого типа они должны лежать в диапазоне integer.

2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.

3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

Формы записи оператора case.

Селектор интервального типа:

case I of

1..10: Writeln ('число ', I: 4, ' в диапазоне 1- 10');

11.. 20: Writeln ('число ', I:4, ' в диапазоне 11-20');

21.. 30: Writein ('число', I:4, ' в диапазоне 21-30')

else Writeln ('число ', I:4, ' вне пределов контроля');

end;

Селектор целочисленного типа:

case I of

1: Z:= I + 10;

2: Z:= I + 100;

3: Z:= I + 1000;

end;

Селектор перечисляемого пользовательского типа:

var

Season: (Winter, Spring, Summer, Autumn);

begin

case Season of

Winter: Writeln('Winter');

Spring: Writeln('Spring');

Suauner: Writeln (' Summer');

Autumn: Writeln('Autumn')

end; {конец case}

end;

Пример 2. Составить программу, которая по введенному пользователем номеру дня недели выводит на экран его название.

program Day_Week;

var Day: byte;

begin

Write ('Введите номер дня недели: ');

Readln(Day);

case Day of {Вычисление значения селектора и выбор}

1: Writeln('Понедельник');

2: Writeln('Вторник');

3: Writeln('Среда');

4: Writeln('Четверг');

5: Writeln<'Пятница');

6: Writeln('Суббота');

else

Writeln('Воскресенье');

end;

end.

В данном примере на экран выводится приглашение: 'Введите номер дня недели:', с клавиатуры считывается целочисленное значение дня недели и присваивается переменной Day. Затем в зависимости от значения селектора DAY обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Например, если значение Day равно 3, то реализуется оператор Writeln('Cpeдa'). Если значение Day равно 7, а ни одна из констант не равна этому значению селектора, то выполняется оператор, стоящий за словом else (на экран выводится текст 'Воскресенье'). Если слово else отсутствует, активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case. Если значение Day не равно значению ни одной из констант выбора (например, Day=8 или Day=0), то активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case - оператор end.

Порядок выполнения работы

1. Изучить теоретические сведения по теме: “Написание программы на Паскале с использованием условных операторов и оператора выбора case”.

2. Получить индивидуальное задание у преподавателя и разработать программу в соответствии с поставленной задачей.

3. Показать работающую программу преподавателю.

4. Ответить на контрольные вопросы.

Контрольные вопросы

1. Условные операторы. Оператор if. Формат, описание. Основные правила использования. Особенности использования вложенного оператора if.

2. Примеры использования оператора if.

3. Оператор выбора case. Формат, описание.

4. Правила использования оператора сase. Примеры использования.

Лабораторная работа № 8



Поделиться:


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

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