Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Глава 4. ПРОЕКТИРОВАНИЕ ПРОГРАММ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ



4.1. Программирование циклов
с известным числом повторений

Оператор цикла с параметром

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

Структуру оператора цикла с параметром можно представить в следующем виде:

For<имя> := <выражение_1> <выражение_2> do
<оператор>

<Оператор> выполняется в цикле forдля каждого значения параметра <имя> начиная со значения <выражение_1>, которое задает начальное значение параметра цикла, до значения <выражение_2>, задающего конечное значение параметра цикла, включительно. При использовании служебного слова to значение параметра цикла увеличивается, при downto – уменьшается, "пробегая" все подряд значения из упорядоченного множества значений, определяемого порядковым типом параметра цикла. При использовании в качестве параметра цикла целой переменной шаг изменения параметра равен единице.

Алгоритм выполнения оператора цикла с параметром можно пояснить схемой, представленной на рис. 4.1, где Е1 и E2 – это значения
<выражения_1> и <выражения_2> соответственно.

Необходимо придерживаться следующих правил организации цикла с параметром:

1) параметр цикла, начальное и конечное значения должны быть одного порядкового типа;

2) нельзя изменить внутри цикла значения Е1 и E2, так как они вычисляются один раз перед первым его выполнением;

Рис. 4.1. Алгоритм выполнения оператора цикла с параметром

3) можно изменять внутри цикла значение параметра цикла, что используется для организации циклов с переменным шагом;

4) нельзя передавать управление в тело цикла минуя заголовок for, начальное и конечное значения параметра будут неопределенны;

5) цикл forможетбытьпрерван с помощью процедуры break, параметр цикла сохранит текущее значение и может быть использован в дальнейших вычислениях;

6) после "нормального" выхода из цикла значение <имя> будет следующим за конечным и также может быть использовано в дальнейших вычислениях;

7) тело цикла не выполниться ни разу, если начальное значение при toбольше (при downtoменьше), чем конечное;



8) после служебного слова do может быть записан только один оператор, в случае, когда в теле цикла содержится несколько операторов, их необходимо заключать в операторные скобки begin и end, организуя составной оператор.

В качестве параметра цикла может выступать переменная любого скалярного типа, в том числе и определяемого программистом, кроме вещественного, т. е. переменная любого порядкового типа. Следующее значение параметра цикла определяется с помощью стандартной функции Succ(x) в сочетании с to или функции Pred(x) в сочетании с downto. Функция Succ(x) определяет следующее, а функция Pred(x) – предыдущее значение из упорядоченного множества возможных значений аргумента, определяемого его типом, например: Succ(4) = 5, Succ('D') = 'E', Pred(22) = 21, Pred(true) = false.

Рассмотрим типовые примеры использования оператора цикла с параметром.

Табулирование функции

Вычислим значения функции y = f(x) для значений аргумента x, изменяющихся от начального x0 до конечного xn с постоянным шагом hx: x = x0(hx) xn (см. п. 1.6.3). Поскольку в качестве параметра в операторе for не может быть использована переменная вещественного типа (переменная x), то введем дополнительную переменную i, значение которой будем изменять от 1 до Nx, с постоянным шагом 1. Значение Nx равно числу значений аргумента, т. е. числу повторений цикла, и определяется формулой

где [] означает целую часть числа.

Для переменной x перед циклом зададим ее начальное значение x0, а в теле цикла будем осуществлять ее модификацию (изменение). Закон изменения параметра i цикла укажем в заголовке цикла. В результате получаем схему алгоритма циклической структуры с заголовком (рис. 4.2), для которой запишем программу табулирования функции

при x = x0(hx) xn в виде:

{Цель – табулирование функции y = F(x) с }



{ помощью оператора цикла с параметром. }

{Переменные: }

{ x – переменная цикла; }

{ x0, xn – начальное и конечное значения; }

{ hx – шаг изменения; }

{ i – параметр цикла; }

{ nx – число повторений тела цикла. )

{Дата написания – 17.10.07 г. }

{Программист – Федоров Ф.Ф. }

Program Tab;

Var

hx, x, x0, xn, y : real;

i, nx : integer;

Begin {Tab}

{Ввод и эхо-печать исходных данных}

Write('x0= ');

Readln(x0);

Write('hx= ');

Readln(hx);

Write('xn= ');

Readln(xn);

Writeln('X0= ', x0, ' HX= ', hx, ' XN= ', xn);

{Табулирование функции}

x := x0;

nx := Trunc((xn-x0)/hx+1E-6)+1;

Writeln;

Writeln('Результаты вычислений');

for i := 1 to nx do

begin {начало цикла}

if x <= 0

then

y := 0

else if x < 1

then

y := x

else

y := 1;

Writeln('X= ', x, ' Y= ', y);

x := x+hx

end; {конец цикла}

ReadLn;

End. {Tab}

В программе использована стандартная функция Trunc(x), результат которой есть наибольшее целое число, меньшее или равное x. Аргумент функции Trunc дополнен слагаемым 1Е-6, который, не изменяя полученного результата, позволяет избежать ошибки представления вещественных значений x0, hx и xn.

Рис. 4.2. Алгоритм табулирования функции одной переменной


Эта страница нарушает авторские права

allrefrs.ru - 2019 год. Все права принадлежат их авторам!