Смекни!
smekni.com

Информатика и компьютерная техника (стр. 12 из 15)

В операторе A0 осуществляется подготовка цикла, т.е. параметр цикла и величины, которые изменяются в цикле, этими операторами приводятся в исходные значения.

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

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

Относительно расположения вложенных циклов существуют такие правила:

1. Внутренний цикл должен быть строго внутренним.

2. Не допускается пересечений циклов.

Для передач управления из цикла в цикл приняты следующие правила:

1. Передача управления в цикл может быть осуществлена только через его начало;

2. Выход из цикла может быть осуществлен до окончания цикла;

3. Передачи управления внутри цикла допускаются.

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

Блок-схема алгоритма

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

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

Таблица 1. Основные операторы и их геометрическое представление, соответствующее принятому стандарту.

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

Пример 5. Условие задачи опишем следующим образом:

Пусть х – величина произвольной ставки. В зависимости от конкретного значения х, начисляется подоходный налог у, по следующему правилу (тарифной сетке):

· Если х меньше или равен а, то подоходный налог не начисляется, т.е. у=0.

· Если х больше а, но меньше или равен b, то подоходный налог равен 10% от х.

· Если х больше b, но меньше или равен c, то подоходный налог равен 15% от х.

· Если х больше c, то подоходный налог равен 20% от х.

Значение заработной платы, с учетом вычитаемого подоходного налога, будет z = xy. Если описанный процесс обозначить математическими формулами, то будем иметь следующую запись:

,

.

Исходными данными для рассматриваемой задачи являются значения x, a, b, c. Результатом будет значение z. Заметим, что в зависимости от требуемого, результатом может быть величина подоходного налога у и заработная плата z. Выводить на печать можно также вместе с результатами и значение х.

Блок схема алгоритма решения данной задачи представлена на рис. 4.

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

Рис. 4. Блок-схема задачи начисления подоходного налога.

Наиболее часто используемым методом построения блок-схем алгоритмов является метод последовательной декомпозиции. Суть его заключается в том, что вначале строят укрупненную схему алгоритма, каждый блок которой может представлять решение довольно сложной задачи. Затем последовательно, шаг за шагом, производят разукрупнение блоков до последовательности указаний (операторов), которые легко можно перевести в программу на алгоритмическом языке.

Пример 6. Проиллюстрируем метод декомпозиции на составлении блок-схемы алгоритма решения квадратного уравнения:

Укрупненная схема алгоритма следующая:


1. Исходными данными для задачи являются значения коэффициентов уравнения a, b, c. Разукрупнять блок «Ввод исходных данных» не надо, т.к. этот ввод можно осуществить одним оператором.

2. Блок «Нахождение решения уравнения». Для определения решения уравнения надо вначале вычислить дискриминант

. Затем проверить знак дискриминанта. Если дискриминант больше нуля, то уравнение имеет два корня, которые вычисляются по формулам:

;
.

В этом случае результатом будет значения этих корней.

Если дискриминант равен нулю, то уравнение имеет один корень, который вычисляется по формуле:

. Это значение и будет результатом в этом случае.

Если дискриминант меньше нуля, то уравнение не имеет действительных корней. В этом случае результатом будет фраза «Уравнение не имеет действительных корней».

Декомпозиция этого блока следующая:


3. Блок «Вывод результатов». В зависимости от значения дискриминанта, мы можем получить три результата. Поэтому этот блок по сути состоит из трех разных операторов вывода:


Приведем примеры циклических алгоритмов

Пример 7.Составим блок-схему алгоритма начисления процентов по вкладам.


Рис. 5. Блок-схема алгоритма начисления процентов по вкладам.

Описание постановки задачи:

Имеется n записей z1,z2,…zn, характеризующих вклады. Среди характеристик имеются следующие: si – величина вклада; di – дата последнего начисления процентов. Если по вкладу не было начислений процентов, то эта дата совпадает с датой вложения. Требуется произвести начисление процентов из условия p процентов годовых. Начисление проводится в конце некоторого периода (года, квартала) на дату, которую обозначим D. Кроме начислений по каждому вкладу, требуется определить общую сумму начисленных процентов. Суть алгоритма заключается в следующем: просматриваем записи, поочередно, начиная с первой. Для каждой записи находим количество дней, прошедших после последнего начисления процентов. Пусть это количество равно ki для i-ой записи. Тогда соответствующая сумма процентов будет определяться по формуле:


Эту сумму добавляем к si и в общую сумму начисленных процентов, которую обозначим Sp. Блок-схема алгоритма представлена на рис.3.

Пример 8. Блок–схема алгоритма сортировки. (Метод «Пузырек»).

Пусть а12,…,аnесть массив записей, описывающих некоторое множество объектов. Например, аi – анкета i-го работника учреждения. Требуется упорядочить множество элементов аi по возрастанию признака pi, например, по возрасту или стажу работы.

Для сортировки используем алгоритм «Пузырек». Суть его состоит в том, что вначале просматриваются поочередно все соседние пары элементов (ai-1,ai, i=2,3,…,n) и сравниваются признаки, по которым ведется сортировка. Если pi-1<pi, то пара пропускается, и переходят к просмотру следующей пары (ai,ai+1). Если pi-1>pi, то в такой паре меняются местами элементы ai-1 и ai. После просмотра последней пары, элемент обладающий наибольшим значением признака сортировки, автоматически переместится (всплывет) на последнее место. Затем просматриваются все пары без последней (an-1,an). За каждым таким шагом, количество просматриваемых пар уменьшается на единицу. Просмотр заканчивается, когда остается одна пара.