Учебное пособие Новосибирск 2001


страница6/10
lit.na5bal.ru > Документы > Учебное пособие
1   2   3   4   5   6   7   8   9   10
Глава 6. Циклические вычислительные

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

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

6.1. Операторы цикла с условием

Различают два вида операторов с условием:

  1. оператор цикла WHILE (пока);

  2. оператор цикла REPEAT (повторять до тех пор пока).

Оператор цикла WHILE

Общий вид записи:

WHILE < логическое выражение > DO < тело цикла>;

Тело цикла – единичный оператор, выполняемый в цикле.

Работа оператора

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

Графическая интерпретация оператора

В блок-схемах оператору цикла WHILE соответствует структура ЦИКЛ-ПОКА.



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

Вычислить таблицу значений функции:



при , изменяющемся в интервале [-0.5, 2.5] с шагом 0.1.

заданные вещественные числа.

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

Блок-схема







Программа
Program TAB_1;

Var

a, b, x, y: real;

Begin

writeln(‘Введите исходные данные’);

read(a, b);

writeln (‘ x y(x)’);

x := -0.5;

while x <= 2.5 do

begin

y := ln(abs(x))/(a*a - b*b);

writeln(x:8:1, y:8:1)

x := x + 0.1;

end;

End.
Оператор цикла REPEAT

Общий вид записи:

REPEAT

<тело цикла>;

UNTIL <логическое выражение>;

Работа оператора

Выполняется тело цикла, после чего вычисляется логическое выражение, определяющее условие выхода из цикла. Если логическое выражение имеет значение FALSE, то повторяется выполнение тела цикла. В противном случае оператор цикла REPEAT завершает свою работу.

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

Графическая интерпретация оператора

В блок-схемах оператору цикла REPEAT соответствует структура ЦИКЛ-ДО.



Выход из цикла


Пример 2. Решить предыдущую задачу табулирования функции с использованием оператора цикла REPEAT.

Программа
Program TAB_2;

Var

a, b, x, y: real;

Begin

writeln(‘Введите исходные данные’);

read(a, b);

writeln(‘ x y(x)’);

x := -0.5;

repeat

y := ln(abs(x))/(a*a - b*b);

writeln(x:8:1, y:8:1)

x := x + 0.1;

until x > 2.5;

End.


Блок-схема


Основные отличия оператора цикла WHILE

от оператора цикла REPEAT.

  1. В теле цикла оператора WHILE может стоять только один оператор. Для выполнения в цикле нескольких операторов тело цикла должно заключаться в операторные скобки BEGIN … END.

В операторе REPEAT операторные скобки не ставятся, так как их целиком заменяют служебные слова REPEAT … UNTIL.

  1. В операторе WHILE тело цикла может не выполняться ни разу, если логическое выражение сразу окажется ложным.

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

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

Различают два вида записи оператора:

FOR i := m1 TO m2 DO <тело цикла>;

FOR i := m1 DOWNTO m2 DO <тело цикла>;

i – параметр цикла целого типа, управляющий работой цикла;

m1, m2 – выражения целого типа, определяющие начальное и конечное значения параметра цикла.

Тело цикла состоит из одного оператора. В случае выполнения в цикле нескольких операторов надо воспользоваться операторными скобками BEGIN … END.

Работа оператора цикла FOR … TO

Тело цикла выполняется для каждого значения параметра i, начиная от m1 до конечного значения m2. После каждого шага выполнения цикла значение параметра i автоматически увеличивается на 1.

Графическая интерпретация оператора цикла FORTO

В блок-схемах оператору цикла FOR соответствует структура ЦИКЛ-ПОКА.

Замечание 1. Оператор цикла FOR … DOWNTO отличается от оператора FOR … TО лишь тем, что , и значение параметра i на каждом шаге вычислений автоматически уменьшается на 1.

Правила использования оператора цикла FOR

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

  2. Значение параметра увеличивается (или уменьшается) на 1 автоматически. Поэтому шаг изменения параметра не указывается в заголовке цикла.

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

  4. Тело цикла может не выполниться ни разу, если для цикла FOR … TO, или для цикла FOR … DOWNTO.

Замечание 2. Оператор цикла WHILE наиболее универсальный из трех операторов цикла, используемых в Турбо Паскале. Однако конструкция оператора цикла FOR является наиболее простой. Поэтому рекомендуется там, где возможно, использовать оператор FOR.

6.3. Базовые алгоритмы

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

  • табулирование функций;

  • организация счетчика;

  • накопление суммы или произведения;

  • поиск минимального или максимального члена последовательности.

Ниже приводятся примеры программирования задач на основе базовых алгоритмов.

Задача 1. Алгоритм организации счетчика.

Дана последовательность:

.

Определить количество положительных членов последовательности.

Решение

Представим последовательность в общем виде:

, где .

Для организации счетчика в памяти компьютера выделяется ячейка, содержимое которой увеличивается на 1 каждый раз, когда встречается положительный член последовательности. В программе ячейке (счетчику) соответствует переменная целого типа, например, переменная L. Работа счетчика реализуется с помощью оператора присваивания L:= L + 1;. В начальный момент содержимое ячейки должно быть равно нулю. С этой целью предварительно осуществляется очистка ячейки оператором L:= 0;.

Программа

Program Z_1;

Var

a: real;

n, L: integer;

Begin

L := 0;

for n := 1 to 50 do

begin

a := cos(2 n - 1);

if a>0 then L := L + 1;

end;

writeln(‘L=’, L);

End.

Задача 2. Алгоритм накопления суммы.

Дана последовательность:

,

где - заданное вещественное число.

Вычислить сумму членов последовательности, которые по модулю больше 0.3.

Решение

Общий член последовательности имеет вид:

, где .

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

Программа

Program Z_2;

Var

a, x, S: real;

n: integer;

Begin

writeln(‘Введите число x’);

read (x);

S:=0;

for n := 1 to 8 do

begin

a := sin(2 n x);

if abs(a) > 0.3 then S := S + a;

end;

writeln(‘S=’, S:6:2);

End.

Задача 3. Алгоритм накопления произведения.

Дана последовательность:

.

Вычислить значение: , где - произведение отрицательных членов последовательности.
Решение

Общий член последовательности имеет вид:

где .

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

Программа

Program Z_3;

Var

x, y, P, PO: real;

Begin

PO := 1;

x := 0.1;

while x<=10 do

begin

y := cos(x);

if y<0 then PO := PO y;

x := x + 0.1;

end;

P := abs(PO);

writeln(‘P=’, P:6:2);

End.

Задача 4. Алгоритм поиска минимального члена последовательности.

Дана последовательность:

; .

Найти минимальный член последовательности.

Решение

Для реализации алгоритма выделяется ячейка памяти MIN, в которую сначала заносится первый член последовательности. Затем, начиная со второго, производится сравнение вычисленных членов последовательности с содержимым ячейки MIN. Если текущий член последовательности меньше содержимого ячейки MIN, то он переписывается в эту ячейку. В противном случае содержимое ячейки MIN сохраняется. При завершении сравнения всех членов последовательности в ячейке MIN запоминается минимальное значение.

Замечание 1. Алгоритм поиска максимального члена последовательности отличается лишь тем, что в ячейке (ей можно дать имя MAX) запоминается больший из сравниваемых членов последовательности.

Замечание 2. В начальный момент в ячейку MIN можно занести число, которое было бы достаточно большим и превышало область определения сравниваемых чисел, например:

MIN := +1E6;

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

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

MAX := -1E6;

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

Программа

Program Z_4;

Var

a, min: real;

k: integer;

Begin

min := +1E6;

for k := 1 to 10 do

begin

a := exp(k) sin(2k+1)/cos(2k+1);

if a

end;

writeln(‘min=’, min:6:2);

End.

6.4. Кратные циклы

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

Цикл, который содержит вложенный цикл, называется внешним. В двойном цикле вложенный цикл называется внутренним. Переменная внутреннего цикла всегда меняется быстрее, чем внешнего. Это означает, что для каждого значения внешней переменной цикла меняются все значения внутренней переменной.

Внешний и внутренний циклы могут использовать любой вид операторов цикла Турбо Паскаля (WHILE, REPEAT, FOR).

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

Вычислить значение функции:



при x, изменяющемся на интервале [-1, 1] с шагом и , изменяющемся на интервале [0, 1] с шагом .

При организации двойного цикла примем:

x - внешняя переменная цикла;

y - внутренняя переменная цикла.

Тогда вид таблицы на экране будет следующим:

x

y

z(x,y)

-1.0

0.0

z(-1.0,0.0)

-1.0

0.1

z(-1.0,0.1)







-1.0

1.0

z(-1.0,1.0)

-0.8

0.0

z(-0.8,0.0)







-0.8

1.0

z(-0.8,1.0)







Программа

Program TAB_2;

Var

x, y, z: real;

Begin

writeln(‘ x y z(x,y)’);

;

while x<=1 do

begin

y := 0;

while y<=1 do

begin

;

writeln(x:6:1, y:6:1, z:6:1);

;

end;

x := x + 0.2;

end;

End.
1   2   3   4   5   6   7   8   9   10

Похожие:

Учебное пособие Новосибирск 2001 iconУчебное пособие географического практикума для обучающихся профильных классов Новокузнецк
Учебное пособие предназначено для обучающихся общеобразовательных и инновационных школ с углубленным изучением географии

Учебное пособие Новосибирск 2001 iconУчебное пособие Рекомендовано умо вузов России по образованию в области социальной работы
...

Учебное пособие Новосибирск 2001 iconУчебное пособие (для студентов) Тема: «Приемное отделение больницы»
...

Учебное пособие Новосибирск 2001 iconУчебное пособие включает программу для дошкольных образовательных...
Л18 Авдеева Н. Н., Князева О. Л, Стеркина Р. Б безопасность: Учебное пособие по основам безопасности жизнедеятельности детей старшего...

Учебное пособие Новосибирск 2001 iconМеталлы подгрупп
Щая химия в формулах, определениях, схемах. Справочное руководство. Под ред. В. Ф. Тикавого. Минск: Университетское, 1987; Глинка...

Учебное пособие Новосибирск 2001 iconКураков Л. П., Тимирясов В. Г., Кураков В. Л. К 93 Современные банковские...
К 93 Современные банковские системы: Учебное пособие. — 3-е изд., перераб и доп. — М.: Гелиос арв, 2000. — 320 с

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям по нейрохирургии...
Учебное пособие предназначено для унификации требований к знаниям и умениям студентов при проведении практических занятий по нейрохирургии,...

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям и самостоятельной работы
Учебное пособие для самоподготовки к практическим занятиям и самостоятельной работы студентов 4 курса педиатрического факультета...

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям и самостоятельной работы
Учебное пособие для самоподготовки к практическим занятиям и самостоятельной работы студентов 6 курса педиатрического факультета...

Учебное пособие Новосибирск 2001 iconУчебное пособие для студентов Специальность: 09. 02. 03 Программирование в компьютерных системах
Химия. Самостоятельная внеаудиторная работа. Учебное пособие для студентов. Специальность: 09. 02. 03 Программирование в компьютерных...


Литература




При копировании материала укажите ссылку © 2000-2017
контакты
lit.na5bal.ru
..На главную