Главная >> Информатика 8 класс. Босова

§ 3.5 Программирование циклических алгоритмов

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

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

Пример. Напишем программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт количества введённых положительных и отрицательных чисел.

Так как здесь в явном виде задано условие окончания работы, то воспользуемся оператором repeat.

    program n_17;
        var n, k1, k2: integer;
    begin
        k1:=0;
        k2:=0;
    repeat
            write ('Введите целое число>>');
            readln (n);
            if n>0 then k1:=k1+1;
            if n<0 then k2:=k2+1;
        until n=0;
        writeln ('Введено:');
        writeln ('положительных чисел - ', k1) ;
        writeln ('отрицательных чисел - ', k2)
    end.

Имеющееся условие окончания работы можно достаточно просто преобразовать в условие продолжения работы — работа продолжается, пока n ≠ 0. И мы можем воспользоваться оператором while:

    program n_18;
        var n, k1, k2: integer;
    begin
        k1:=0;
        k2:=0;
        while n<>0 do
        begin
            writeln ('Введите целое число>>') ;
            read (n);
        if n>0 then k1:=k1+1;
        if n<0 then k2:=k2+1;
        end;
        writeln ('Введено:');
        writeln ('положительных - ', k1);
        writeln ('отрицательных - ', k2)
    end.

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

 

 

???????@Mail.ru