Пример 2.5

Операторы повторений

End.

End

Else

Begin

Var

n : Integer; {Вводимое число}

ch : Char; {Результат}

Write('n = ');

ReadLn(n); { Вводим число }

{Проверяем число на принадлежность к диапазону 0...15)

if (n >= 0) and (n <= 15) then

begin {Да, принадлежит диапазону}

if n < 10 then

ch := chr(ord('0') + n)

ch := chr(ord ('A') + n – 10);

WriteLn('n - ',ch)

else {He принадлежит диапазону}

WriteLn('Ошибка')

В щестнадцатеричной системе счисления используется 16 цифр в каждом разряде: цифры 0...9 обозначают первые 10 возможных значений разряда, буквы A...F – остальные шесть.

В программе учитывается непрерывность и упорядоченность множеств цифр 0...9, букв A...F и их кодов (см. гл.4).

 

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

Счетный оператор цикла FOR имеет такую структуру:

FOR <пар_цик> := <нач_знач> ТО <кон_знач> DO <оператор>.

Здесь FOR, TO, DO – зарезервированные слова (для, до, выполнить);

<пар_цик> – параметр цикла – переменная типа INTEGER (точнее, любого порядкового типа, см. гл.4);

<нач_знач> – начальное значение – выражение того же типа;

<кон_знач> – конечное значение – выражение того же типа;

<оператор> – произвольный оператор Турбо Паскаля.

При выполнении оператора FOR вначале вычисляется выражение <нач_знач> и осуществляется присваивание <пар_цик> := <нач_знач>. После этого циклически повторяется:

• проверка условия <пар_цик> <= <кон_знач>; если условие не выполнено, оператор FOR завершает свою работу;

• выполнение оператора <оператор>;

• наращивание переменной <пар_цик> на единицу.

В качестве иллюстрации применения оператора FOR рассмотрим программу, осуществляющую ввод с клавиатуры произвольного целого числа N и вычисление суммы всех целых чисел от 1 до N (пример 2.5).

Program Summ_of_Integer;

{Программа вводит целое положительное число N и

подсчитывает сумму всех целых чисел от 1 до N}

var

i, n, s : Integer;

begin

Write('N = ');

ReadLn(n); {Вводим N}

s := 0; {Начальное значение суммы}

for i := 1 to n do {Цикл подсчета суммы}

s : = s + i ;

writeln('Сумма = ',s) {Выводим результат}

end.

Отметим два обстоятельства. Во-первых, условие, управляющее работой оператора FOR, проверяется перед выполнением оператора <оператор>: если условие не выполняется в самом начале работы оператора FOR, исполняемый оператор не будет выполнен ни разу. Другое обстоятельство – шаг наращивания параметра цикла строго постоянен и равен ( + 1). Существует другая форма оператора:

FOR <пар_цик>: = <нач_знач> DOWNTO <кон_знач> DO <оператор>

Замена зарезервированного слова ТО на DOWNTO означает, что шаг наращивания параметра цикла равен (–1), а управляющее условие приобретает вид <пар_цик> = <кон_знач>.

Пример 2.5 можно модифицировать так, чтобы сделать его пригодным для подсчета любых сумм – положительных и отрицательных: