Машинная логика и циклы

Давайте рассмотрим простейшую логику компьютера на примере расчета значе­ния факториала.

Факториал— это произведение чисел от 1 до какого-то числа. Например, факториал 5 равен 1x2x3x4x5 = 120. Факториал обозначает­ся как знак восклицания "!".

Давайте напишем алгоритм в виде блок-схемы

логика программы

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

как число F факториал (F!). В этом случае надо перемножить все числа от 1 до F, т. е. 1 х 2 х 3 х 4 х ... х F. Перемножение можно делать последовательно. Умножить 1x1. Затем проверить, не превысили ли мы число F. Если нет, то ре­зультат прошлого вычисления надо умножить на 2 и снова сделать проверку. Если не превысили F, то снова умножить результат прошлого вычисления на 3. И т. д.

 

Теперь постараемся объяснить назначение каждого блока в блок-схеме, чтобы было понятно, как она работает. В данном случае это очень важно. Работа блок- схемы очень похожа на то, как "мыслит" компьютер, выполняя заданную програм­му. Именно так вы должны будете размышлять, когда начнете писать свои первые программы.

 

Итак, давайте рассмотрим назначение каждого блока в отдельности.

  1. Это начало.
  2. Объявление трех переменных: f, r и index. В переменной f будет храниться число, факториал которого надо вычислить. Переменная r используется для хранения результата вычислений. И, наконец, в переменной index — будет со­держаться счетчик вычислений.
  3. В этом блоке происходит ввод числа, факториал которого надо вычислить. Если пользователь ввел 5, то нам нужно вычислить 5!.
  4. Здесь задаются начальные значения переменным. На этом этапе устанавливается значение счетчика и начальный результат вычислений равными 1. Почему именно 1? Да потому что нам нужно перемножить все числа начиная от 1 до числа, факториал которого вычисляется.
  5. В этом блоке проверяется счетчик (index). Проверка заключается в определе­нии, превысило ли его значение число, которое ввел пользователь, или нет? Ес­ли "нет", надо перейти на блок 6. Допустим, пользователь ввел число 5. Значе­ние счетчика пока равно единице. 1 меньше 5, значит, должен произойти переход на блок 6.
  6. Здесь мы вычисляем результат r:=r*index. На этом этапе index = 1 и r = 1. Значит, r: =1*1. Результат будет 1, а значит, в r опять будет единица. Далее, мы увеличиваем index на 1 (index: =index+i), после чего index становится равным 2 (index: =1+1), и снова возвращаемся на блок 5. В нем опять происходит про­верка index>F. index сейчас равен 2, а это меньше 5. Значит, снова идем на блок 6. Здесь опять производится расчет r: =r*index (r: =1*2), после чего r становится равным 2. Опять увеличиваем счетчик (index: =index+i), и index становится равным 3. Снова переход на блок 5.

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

 

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

 

Цикл— повторяющееся выполнение какого-либо блока. В данном случае несколько раз выполняется шес­той блок. Если бы число факториала было известно заранее, можно было бы упро­стить блок-схему, написав формулу типа r: =1*2*3*4*5. Но мы не знаем числа, которое введет пользователь. Поэтому приходится делать цикл и на каждом его этапе вычислять промежуточный результат.

 

Попробуйте сами написать блок-схему арифметической прогрессии. Ее формула достаточно проста. В этом случае можно модифицировать блок-схему, которая по­казана на рис. 2.3. Разница заключается только в том, что в арифметической про­грессии рассчитывается сумма, а не произведение чисел от 1 до определенного числа F.

 

Нарисуйте эту блок-схему на бумаге и попробуйте мысленно пройтись по ней, выполняя каждый блок, как это делала бы машина. Если вы думаете, что блок-схемы слишком просты, попробуйте написать что-нибудь более сложное. Это необходимо сделать, чтобы научиться мыслить как компьютер. Только так вы сможете объяснить ему, что от него требуется, и что самое главное, он вас сможет понять.

dle

Помоги проекту! Расскажи друзьям об этом сайте: