Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ээээээ ээээээээээээээээ

.pdf
Скачиваний:
21
Добавлен:
14.05.2015
Размер:
628.39 Кб
Скачать

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

Оператор безусловного перехода goto имеет следующую форму:

goto метка

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

label1: оператор

Метки должны быть описаны в разделе меток с использованием служебного слова label:

label 1,2,3;

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

label 1,2; begin

var i := 5;

2: if i<0 then goto 1; write(i);

Dec(i); goto 2; 1:

end.

будет выведено 543210.

Метка должна помечать оператор в том же блоке, в котором описана. Метка не может помечать несколько операторов.

Переход на метку может осуществляться либо на оператор в том же блоке, либо на оператор в объемлющей конструкции. Так, запрещается извне цикла переходить на метку внутри цикла.

Использование оператора безусловного перехода в программе считается признаком плохого стиля программирования. Для основных вариантов использования goto в язык Паскаль введены специальные процедуры: break - переход на оператор, следующий за циклом, exit - переход за последний оператор процедуры, continue - переход за последний оператор в теле цикла.

Единственный пример уместного использования оператора goto в программе - выход из нескольких вложенных циклов одновременно. Например, при поиске элемента k в двумерном массиве:

var a: array [1..10,1..10] of integer;

...

var found := False; for var i:=1 to 10 do for var j:=1 to 10 do if a[i,j]=k then begin

found := True; goto c1;

end;

c1: writeln(found);

26. Реализация ветвления в ЯП. Оператор условного перехода

Оператор условного перехода в Турбо Паскаль имеет вид:

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

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

будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать:

if условие then оператор 1;

Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.

9. Логический тип

Базовый тип данных - данные логического типа.

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

Другое название Булевый. Допустимые значения ["истина", "ложь"]. Данные этого типа хранят значения всевозможных условий, пори помощи которых образуются ветвления и циклы (вспомните урок про структуры алгоритмов).

Способы представления (хранения).

B

P

C

A

A

н

SI

SC

е

C

A

в

н

L

ы

е

<

д

в

и

е

ы

м.

л

д

п

е

е

е

н

л

р.

,

е

>:

н

 

 

 

н

b

о

,

o

"

н

ol

и

о

ea

с

"

n;

т

и

и

с

ст

н

т

и

а

и

н

"

н

а"

=

а

=t

1

"

ru

"

=

e

л

-"л о

1 о ж

ж ь

"ь" "

л

=f

=

о

al

0

ж

se

ц

ье

"л

=о

0г

цо

ет

ли

оп

г

а

о

 

т

 

и

 

п

 

а

 

Основные операции. (Образование сложных условий.)

При работе с логическими данными используются операции:

унарная – отрицание. Как выполняются логические операции нетрудно разобраться с помощью таблиц истинности. В этих таблицах 1 соответствует истине, 0 обозначает ложь.

отрицание │ A │not A│

─┼───┼─────┼

0 │ 1 │

1 │ 0 │

Имеются бинарные (с двумя аргументами) операции:

not a

not a

отрицание

a and b

a and b

логическое И

a or b

a or b

логическое ИЛИ

a xor b

a xor b

исключающее ИЛИ

Эти операции реализованы и в бейсике, и в паскале.

Операции

a imp b

-

импликация (следование)

a eqv b

-

эквивалентность

имеются только в бейсике.

Специалисты по математической логике знают, как любую логическую формулу представить в виде набора операций, состоящих из конъюнкций (логическое «И»), дизъюнкций (логическое «ИЛИ») и отрицаний (логическое «НЕ»).

таблицы истинности бинарных операций

A │ B │and│ or│xor│eqv│imp

──┼───┼───┼───┼───┼───┼───

0 │ 0 │ 0 │ 0 │ 0 │ 1 │ 1 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 1 1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 1 │ 1 │ 1 │ 1 │ 0 │ 1 │ 1

BASIC

PASCAL

not a

not a

отрицание

a and b

a and b логическое И

a or b

a or b логическое ИЛИ

a xor b

a xor b исключающее ИЛИ

a imp b

-

импликация (следование)

a eqv b

-

эквивалентность

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

Если тип упорядочен, допустимы сравнения: > , >= , < , >= .

Вязыке PASCAL есть функция определения четности числа: odd(x) = true , если аргумент четный,

=false , если аргумент нечетный.

Вязыке BASIC можно перемешивать данные числовых и логического типа:

функция y=F(x) при x>a

=G(x) при x<=a

может быть записана y=-F(x)*(x>a)-G(x)*(x<=a).