Система программирования Турбо Паскаль. Воробьева А.П - 39 стр.

UptoLike

Составители: 

79
Решение
Для реализации алгоритма выделяется ячейка памяти
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<min then min := a;
end;
writeln(‘min=’, min:6:2);
End.
80
6.4. Кратные циклы
Тело цикла может содержать любой оператор, в том числе и
другой оператор цикла.
Структура цикла, содержащая вло-
женный цикл, называется кратным циклом
. Число вложений
может быть произвольным. Если цикл содержит один вложенный
цикл, то он называется
двойным циклом, если содержит два
вложенных цикла, то является
тройным циклом, и т.д. Цикл, ко-
торый содержит вложенный цикл, называется
внешним. Вло-
женный цикл называется
внутренним.
Переменная внутреннего цикла всегда меняется быстрее, чем
внешнего. Это означает, что для каждого значения внешней пе-
ременной цикла меняются все значения внутренней переменной.
Внешний и внутренний циклы могут использовать любой вид
операторов цикла (
while, repeat…until, for).
Пример. Алгоритм табулирования функции с двумя пе-
ременными
Вычислить значение функции:
z(x, y) = sinx + cosy
при всех x, изменяющихся на интервале [–1, 1] с шагом x = 0.2, и
y, изменяющихся на интервале [0, 1] с шагом y = 0.1.
Данный алгоритм реализуется с использованием двойного
цикла, в котором x примем за внешнюю переменную цикла, yза
внутреннюю переменную цикла.
Program TAB_2;
Var
x, y, z: real;
Begin
writeln(‘x y z(x,y)’);
x := –1;
while x<=1 do
begin
y := 0;
while y<=1 do
                               Решение                                                    6.4. Кратные циклы
     Для реализации алгоритма выделяется ячейка памяти min, в             Тело цикла может содержать любой оператор, в том числе и
которую сначала заносится первый член последовательности. За-        другой оператор цикла. Структура цикла, содержащая вло-
тем, начиная со второго, производится сравнение вычисленных
членов последовательности с содержимым ячейки min. Если те-          женный цикл, называется кратным циклом. Число вложений
кущий член последовательности меньше содержимого ячейки              может быть произвольным. Если цикл содержит один вложенный
min, то он переписывается в эту ячейку. В противном случае со-       цикл, то он называется двойным циклом, если содержит два
держимое ячейки min сохраняет прежнее значение. При заверше-         вложенных цикла, то является тройным циклом, и т.д. Цикл, ко-
нии сравнения всех членов последовательности в ячейке min за-        торый содержит вложенный цикл, называется внешним. Вло-
поминается минимальное значение.                                     женный цикл называется внутренним.
     Замечание 1. Алгоритм поиска максимального члена после-
довательности отличается от поиска минимального члена лишь                Переменная внутреннего цикла всегда меняется быстрее, чем
тем, что в ячейке (ей можно дать, например, имя max) запомина-       внешнего. Это означает, что для каждого значения внешней пе-
ется больший из сравниваемых членов последовательности.              ременной цикла меняются все значения внутренней переменной.
     Замечание 2. В начальный момент в ячейку min можно зане-             Внешний и внутренний циклы могут использовать любой вид
сти не первый член последовательности, а достаточно боль-            операторов цикла (while, repeat…until, for).
шое число, которое превышало бы область определения сравни-               Пример. Алгоритм табулирования функции с двумя пе-
ваемых чисел (например, min:=+1E6;). Тогда при сравнении с со-
                                                                     ременными
держимым ячейки min первый член последовательности обяза-
тельно окажется меньше и переписывается в ячейку min. При по-             Вычислить значение функции:
иске максимального члена последовательности в ячейку max в                                     z(x, y) = sinx + cosy
начальный момент заносится, наоборот, достаточно малое число,        при всех x, изменяющихся на интервале [–1, 1] с шагом ∆x = 0.2, и
которое должно быть меньше всех сравниваемых членов после-           y, изменяющихся на интервале [0, 1] с шагом ∆y = 0.1.
довательности (например, max:= –1E6;). В этом случае первый               Данный алгоритм реализуется с использованием двойного
из сравниваемых членов последовательности окажется больше            цикла, в котором x примем за внешнюю переменную цикла, y – за
содержимого ячейки max и переписывается в эту ячейку.
                                                                     внутреннюю переменную цикла.
                  Program Z_4;
                  Var                                                                 Program TAB_2;
                     a, min: real;                                                    Var
                     k: integer;                                                         x, y, z: real;
                  Begin                                                               Begin
                     min := +1E6;
                     for k := 1 to 10 do                                                 writeln(‘x y z(x,y)’);
                         begin                                                           x := –1;
                            a := exp(k)∗sin(2∗k + 1)/cos(2∗k + 1);                       while x<=1 do
                            if a