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

Лекция №5 Представления основных структур программирования: итерация, ветвление, повторение.

Расширение диапазона значений вещественных переменных

Расширение диапазона значений целых переменных

 

Турбо-Паскаль имеет возможности для расширения диапазона значений целых переменных.

Так, если тип integer устанавливает диапазон целых значений от -32768 до 32767, то целый тип longint расширяет его от -2147483648 до 2147483647.

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

 

Целые типы

 

Длина, байт Название типа Диапазон значений
byte 0 ... 255
shortint -128 ... 127
word 0 ... 65535
integer -32768 ... 32767
longint -2147483648 ... 2147483647

 

При использовании процедур и функций с целочисленными параметрами следует руководствоваться "вложенностью" типов, т.е. везде, где может использоваться WORD, допускается использование BYTE (но не наоборот), в LONGINT входит INTEGER, который, в свою очередь, включает в себя SHORTINT.

 

 

 

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

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

 

Вещественные типы

 

Длина, байт Мантисса Название типа Диапазон значений
11-12 real ± 2.9E-39 ... ± 1.7E38
7-8 single ± 1.5E-45 ... ± 3.4E38
15-16 double ± 5.0E-324 ... ± 1.7E308
19-20 extended ± 3.4E-4932 ... ± 1.1E4932

 

Для работы программы с использованием расширенных типов single, double и extended необходимо переключать модель генерации чисел с плавающей точкой. Это делается с помощью добавления в программу директивы {$n+} перед словом program:

{$n+}

program abc;

var a:single;

Без данной директивы попытка присвоить переменной расширенного вещественного типа какое-либо значение закончится ошибкой вида:

Error 116: Must be in 8087 mode to compile this.

(Ошибка 116: Должен быть в 8087 режиме чтобы компилировать это.)

 


 

 

Оператор перехода указывает, что дальше программа должна выполняться, начиная с оператора, помеченного меткой, которая записана в этом операторе перехода.

Оператор перехода имеет вид: goto <метка>. Здесь goto - зарезервированное слово (перейти на ... [метку]).

Метка в Турбо Паскале - это произвольный идентификатор, позволяющий именовать (помечать) некоторый оператор программы и таким образом ссылаться на него. Допускается в качестве меток (в том числе) использовать целые числа без знака.

Например:

goto 2341, goto 23, goto 1, goto bl1, goto mnk3, goto n56.

Любая метка должна быть описана в разделе описания меток, который обычно располагается в программе до начала раздела операторов:

label <список меток>.

 

Например: label 2341; label 1, 2; label bl1, 18, mnk.

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

1: writeln('Число не содержит цифру 2');

 

Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием.

1: 25: a := b div 10;

 

Итак, оператор перехода изменяет последовательность выполнения операторов - они выполняются не в том порядке, как написаны в тексте программы.

Оператор if ... then ... else

 

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

После оператора if записывается условие, а после операторов then и else - команды, которые необходимо выполнить.

Перед оператором else точка с запятой не ставится.

Если после оператора then записано несколько команд, в нём устанавливаются операторные скобки:

 

begin

........

end;

 

Такие же операторные скобки в необходимых случаях могут быть использованы и в операторе else.

Блок-схемы, изображающие условные операторы:

 

 

Цикл с предыдущим условием. Оператор while ... do ...

 

Циклы в математике - явление очень часто встречающееся.

Например, пока натуральные числа меньше 10, тогда надо суммировать их. Другими словами, мы находим сумму чисел от 1 до 10.

В этом примере повторяется сложение натуральных чисел, пока выполняется условие (числа меньше 10).

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

Цикл в программировании - это многократно выполняемая группа команд, часть программы.

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

На языке Паскаль возможны циклы с предусловием, которые организуются с помощью оператора: while (пока) ... do (выполнять) ...

Формат оператора: while <условие> do <операция>.

Работа оператора заключается в том, что операция выполняется до тех пор, пока будет выполняться условие, указанное в операторе while.

Если операция содержит не один оператор, а несколько, то их объединяют с помощью операторных скобок begin и end, например;

while <условие> do

begin

S1; S2; S3; ...

end;

 

В этом примере символами s1, s2, s3, ... обозначены операторы.

Действие цикла while ... do ... можно изобразить графически следующей схемой:

 

 

Цикл с последующим условием. Оператор repeat...until...

 

Оператор цикла с последующим условием (постусловием) похож на оператор цикла с предусловием, но условие вычисляется и проверяется после выполнения операторов, составляющих тело цикла.

Общий вид оператора цикла с постусловием такой:

repeat

s1; s2; s3; ..

until <условие>,

 

где s1, s2, s3, ... - операторы тела цикла; <условие> - логическое выражение.

Переводится: repeat - повторять, until - до тех пор пока.

Такой цикл начинается с выполнения операторов внутри цикла, а уже затем вычисляется выражение, записанное в условии.

Если значение этого выражения истинно, тогда осуществляется выход из цикла, если значение ложно, то цикл продолжается, и снова выполняются операторы

В отличии от цикла while ... do, в цикле repeat ... until ... операторные скобки begin ... end могут не использоваться, хотя и использование их возможно. Оператор цикла repeat ... until. ... не требует операторных скобок begin ... end.

Действие цикла repeat...until...можно изобразить графически следующей схемой: