Алгоритмы бывают линейные, разветвляющиеся и циклические.
Линейный алгоритм не содержит логических условий, имеет одну ветвь обработки и изображается линейной последовательностью связанных друг с другом блоков. Условное изображение линейного алгоритма может быть представлено на рис. 1.1
Начало
Действие
Действие
Конец
Рис. 1.1. Условное изображение линейного алгоритма.
Пример простейшего линейного процесса
Наиболее часто в практике программирования требуется организовать расчет некоторого арифметического выражения при различных исходных данных. Например, такого:
где x > 0 – вещественное, m – целое.
Разработка алгоритма обычно начинается с составления схемы. Продумывается оптимальная последовательность вычислений, при которой, например, отсутствуют повторения. При написании алгоритма рекомендуется переменным присваивать те же имена, которые фигурируют в заданном арифметическом выражении либо иллюстрируют их смысл.
Для того чтобы не было «длинных» операторов, исходное выражение полезно разбить на ряд более простых. В нашей задаче предлагается схема вычислений, представленная на рис. 1.2.
Рис. 1.2. Схема линейного процесса
Она содержит ввод и вывод исходных данных, линейный вычислительный процесс, вывод полученного результата. Заметим, что выражение вычисляется только один раз. Введя дополнительные переменные a, b, c, мы разбили сложное выражение на ряд более простых.
Вопрос 5 Выражения и операции
Во всех языках программирования под выражением подразумевается конструкция, составленная из констант, переменных, знаков операций, функций, скобок. Выражение определяет порядок вычисления некоторого значения. Если это числовое значение, то такое выражение называют арифметическим. Вот несколько примеров арифметических выражений, записанных по правилам языка Си:
a+b 12.5-z 2*(X+Y)
х++ ++b --n*2 n*=l
Три первых выражения имеют традиционную форму для языков программирования высокого уровня. Следующие четыре выражения специфичны для языка Си.
Операция, применяемая к одному операнду, называется унарной, а операция с двумя операндами – бинарной.
2.7.1 Арифметические операции
К арифметическим операциям относятся:
- вычитание или унарный минус;
+ сложение или унарный плюс;
* умножение;
/ деление;
% деление по модулю;
++ унарная операция увеличения на единицу (инкремент);
-- унарная операция уменьшения на единицу (декремент).
Все операции, кроме деления по модулю, применимы к любым числовым типам данных. Операция % применима только к целым числам.
Рассмотрим особенности выполнения операции деления. Если делимое и делитель – целые числа, то и результат – целое число. Например, значение выражения 5/3 будет равно 2, а при вычислении 1/5 получится 0.
Если хотя бы один из операндов имеет вещественный тип, то и результат будет вещественным. Например, операции 5./3, 5./3., 5/3. дадут вещественный результат 1.6666.
Операции инкремента и декремента могут применяться только к переменным и не могут – к константам и выражениям. Операция ++ увеличивает значение переменной на единицу, операция -- уменьшает значение переменной на единицу. Оба знака операции могут записываться как перед операндом (префиксная форма), так и после операнда (постфиксная форма), например: ++х или х++, --а или а--. Три следующих оператора дают один и тот же результат:
х=х+1; ++х; х++ .
Различие проявляется при использовании префиксной и постфиксной форм в выражениях. Проиллюстрируем это на примерах. Первый пример:
а=3; b=2;
с=а++*b++;
В результате выполнения переменные получат следующие значения: а=4, b=3, с=6.
Второй пример: а=3; b=2; с=++а*++b;
Результаты будут такими: а=4, b=3, с=12.
Объяснение следующее: при использовании постфиксной формы операции ++ и -- выполняются после того, как значение переменной было использовано в выражении, а префиксные операции – до использования. Поэтому в первом примере значение переменной с вычислялось как произведение 3 на 2, а во втором – как произведение 4 на 3.
По убыванию старшинства арифметические операции расположены в следующем порядке:
++, --, - (унарный минус), *, /, %, +, -
Одинаковые по старшинству операции выполняются в порядке слева направо. Для изменения порядка выполнения операций в выражениях могут применяться круглые скобки.