Система программирования Турбо паскаль 7.0

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


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

  • табулирование функций;
  • организация счетчика;
  • накопление суммы или произведения;
  • поиск минимального или максимального члена последовательности.
  • Ниже приводятся примеры программирования задач на основе базовых алгоритмов.

    Задача 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(2*k+1)/cos(2*k+1);
                                         if  a<min then min := a;
                                     end;
                                    writeln(‘min=’, min:6:2);
                              End.

    Содержание раздела