ээээээ ээээээээээээээээ
.pdf32. Оператор безусловного перехода 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).