Давайте рассмотрим простейшую логику компьютера на примере расчета значения факториала.
Факториал— это произведение чисел от 1 до какого-то числа. Например, факториал 5 равен 1x2x3x4x5 = 120. Факториал обозначается как знак восклицания "!".
Давайте напишем алгоритм в виде блок-схемы
Представим, что мы не знаем числа, факториал которого мы должны вычислить. Пусть это число будет вводить пользователь. Поэтому расчетная формула выглядит
как число F факториал (F!). В этом случае надо перемножить все числа от 1 до F, т. е. 1 х 2 х 3 х 4 х ... х F. Перемножение можно делать последовательно. Умножить 1x1. Затем проверить, не превысили ли мы число F. Если нет, то результат прошлого вычисления надо умножить на 2 и снова сделать проверку. Если не превысили F, то снова умножить результат прошлого вычисления на 3. И т. д.
Теперь постараемся объяснить назначение каждого блока в блок-схеме, чтобы было понятно, как она работает. В данном случае это очень важно. Работа блок- схемы очень похожа на то, как "мыслит" компьютер, выполняя заданную программу. Именно так вы должны будете размышлять, когда начнете писать свои первые программы.
Итак, давайте рассмотрим назначение каждого блока в отдельности.
- Это начало.
- Объявление трех переменных: f, r и index. В переменной f будет храниться число, факториал которого надо вычислить. Переменная r используется для хранения результата вычислений. И, наконец, в переменной index — будет содержаться счетчик вычислений.
- В этом блоке происходит ввод числа, факториал которого надо вычислить. Если пользователь ввел 5, то нам нужно вычислить 5!.
- Здесь задаются начальные значения переменным. На этом этапе устанавливается значение счетчика и начальный результат вычислений равными 1. Почему именно 1? Да потому что нам нужно перемножить все числа начиная от 1 до числа, факториал которого вычисляется.
- В этом блоке проверяется счетчик (index). Проверка заключается в определении, превысило ли его значение число, которое ввел пользователь, или нет? Если "нет", надо перейти на блок 6. Допустим, пользователь ввел число 5. Значение счетчика пока равно единице. 1 меньше 5, значит, должен произойти переход на блок 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.
Нарисуйте эту блок-схему на бумаге и попробуйте мысленно пройтись по ней, выполняя каждый блок, как это делала бы машина. Если вы думаете, что блок-схемы слишком просты, попробуйте написать что-нибудь более сложное. Это необходимо сделать, чтобы научиться мыслить как компьютер. Только так вы сможете объяснить ему, что от него требуется, и что самое главное, он вас сможет понять.