Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

3. Цикл с параметром (for)

Предыдущий раздел:

Следующий раздел:

3.2. Прием накопления суммы

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

Пример 4: Просуммировать все целые числа от 1 до 100.

  s := 0;	{Обнуление переменной}
  for i:=1 to 100 do
    s:=s+i;  {Прибавление очередного элемента суммы}

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

А к чему добавляется очередное число на самом первом шаге? Чтобы было к чему добавлять, перед циклом обязательно должна присутствовать инициализация (присваивание начального значения) переменной, в которой накапливается сумма. Чаще всего требуется присвоить ей начальное значение 0.

Программистский анекдот в тему:

Буратино подарили три яблока. Два он съел. Сколько яблок осталось у Буратино? Ответ «одно» неправильный. Неизвестно, сколько осталось, так как не сказано, сколько яблок было у него до того, как ему подарили три новых. Мораль: не забывайте обнулить переменные.

Следующий раздел:

Предыдущий раздел:

2 комментария

  1. Роман

    Здравствуйте, Тарас!

    Нельзя преобразовать тип string к integer
    Вот что мне написало, в этом фрагменте программы:
    s1:=0;
    for i1:= 1 to n1 do
    begin
    readln(b1);
    s1:=s1+b1; === вот здесь.
    end;
    Как с этим бороться?

    В сие программе я в var задал каждой букве определенное число ==> a:=1; b:=2; c:=3; d:=4; e:=5;…..
    И я хотел бы что бы когда вводили (b1) (буквой лат. алф.)она преобразовалась в нужную цифру, и дальше считалась с остальными заданными, и теми которые зададут. Как это сделать?

  2. Taras

    Переменная e и символ ‘e’ связаны между собой только в твоей голове. Компьютер об этом ничего не знает, до тех пор пока ты явно ему об этой связи не скажешь. Например, так:

    Если символ равен ‘e’, тогда использовать переменную e.

    То есть:

      if b1 = 'e' then
        s1 = s1 + e;
    

Добавить комментарий