какие существуют базовые алгоритмические структуры
Информатика. 11 класс
Конспект урока
Информатика, 11 класс. Урок № 2.
Тема — Базовые алгоритмические структуры
Перечень вопросов, рассматриваемых в теме: алгоритм, блок-схема, следование, линейный алгоритм, ветвление, полная форма ветвления, неполная форма ветвления, разветвляющийся алгоритм, повторение, циклический алгоритм, цикл с предусловием, цикл с постусловием, цикл с параметром, комбинации базовых алгоритмических структур
Глоссарий по теме: следование, ветвление, повторение, цикл с предусловием, цикл с постусловием, цикл с параметром.
Основная литература по теме урока:
Л. Л. Босова, А. Ю. Босова. Информатика. Базовый уровень: учебник для 11 класса
— М.: БИНОМ. Лаборатория знаний, 2017
Дополнительная литература по теме урока:
И. Г. Семакин, Т. Ю. Шеина, Л. В. Шестакова. Информатика и ИКТ. Профильный уровень: учебник для 11 класса — М.: БИНОМ. Лаборатория знаний, 2012
Теоретический материал для самостоятельного изучения
В 1969 году нидерландский ученый Эдсгер Дийкстра доказал важную теорему. Суть ее в том, что для решения любой логической задачи можно составить алгоритм, используя лишь три алгоритмических структуры: следование, ветвление и повторение. Эти структуры называют базовыми.
Самой простой структурой является «следование».
Алгоритм реализован через последовательную алгоритмическую структуру, если все команды этого алгоритма выполняются один раз, причем в том порядке, в котором они записаны.
Алгоритм, основанный на конструкции «следование» называется линейным алгоритмом. Примером такого алгоритма может служить алгоритм вычисления дискриминанта квадратного уравнения, блок-схема которого приведена на рисунке 1.
Следующей конструкцией является «ветвление». Она встречается, если действия алгоритма зависят от некоторого условия.
Алгоритм реализован через алгоритмическую конструкцию «ветвление», если от входных данных зависит, какие команды будут выполняться. Условие, которое выражает эту зависимость, фактически является вопросом, на который можно ответить либо «да», либо «нет».
Существуют полная и неполная формы ветвления.
В полной форме если условие выполняется, то алгоритм переходит к выполнению первой серии команд, а если не выполняется — то ко второй.
В неполной форме алгоритм выполняет серию команд только если условие истинно. В противном случае ничего не происходит.
Алгоритм, основанный на конструкции «ветвление» называется разветвляющимся алгоритмом. Примером такого алгоритма может служить алгоритм нахождения корней квадратного уравнения, блок-схема которого приведена на рисунке 2.
И, наконец, последняя алгоритмическая конструкция — «повторение».
Алгоритм реализован с использованием алгоритмической конструкции «повторение», если некая группа подряд идущих шагов алгоритма (она называется телом цикла) может выполняться многократно в зависимости от входных данных.
Алгоритм, содержащий конструкцию «повторение» называется циклическим алгоритмом.
Существует несколько разновидностей циклических алгоритмов.
Первый — цикл с заданным условием продолжения работы (цикл с предусловием или цикл-пока).
Второй — цикл с заданным условием окончания работы (цикл с постусловием или цикл-до).
И третий — цикл с заданным числом повторений (цикл с параметром).
Доказано, что при решении задач можно ограничиться только одним циклом — циклом с предусловием. Но в ряде случаев цикл с постусловием или цикл с параметром делают решение задачи легче.
Примером решения одной и той же задачи с помощью различных циклов может служить задача возведения некоторого числа a в натуральную степень n.
Какие существуют базовые алгоритмические структуры
Существуют три основных типа базовых алгоритмических структур, или три основных типа алгоритмов: линейный, разветвленный и циклический.
Графические изображения структур управления показано на рис. 3.
а) линейная структура, б) ветвление, в) циклический алгоритм
Рисунок 3.2-Графическое изображение структуры ветвления Выбор
В структуре Выбор действие Q может отсутствовать, тогда при невыполнении условия B ни одно действие не выполняется, работа структуры завершается. Можно считать, что структура Выбор является расширением структуры ветвления или, наоборот, структура ветвления есть частным случаем структуры Выбор.
Существует несколько разновидностей циклической структуры while (рис. 3.3 а, б)
При использовании цикла ПОКА (цикл с постусловием) сначала выполняется тело цикла D. Затем проверяется условие B. Если условие подтверждается, то происходит выход из цикла, если условие не исполняется, то процесс повторяется. Условие B называется условием продолжения цикла.
Отметим различия между структурами повторения типов цикла ДО и ПОКА. В структуре ДО тело цикла D может не выполняться ни разу (если условие B не выполняется), в структуре ПОКА тело цикла D должно выполниться по крайней мере один раз.
Структуры повторения применяются для организации циклов. Чтобы цикл работал правильно, нужно организовать подготовку к циклу. Например, чтобы правильно вычислить сумму чисел, надо обнулить переменную, где накапливается сумма. Кроме этого, чтобы цикл закончился, надо обеспечить изменение условия B. Это значит, что условие B должно зависеть от некоторых параметров (параметров цикла), которые меняются в теле цикла D.
Таким образом, цикл включает в себя:
а) цикл ДО (цикл с предусловием) б) цикл ПОКА (цикл с постусловием)
Рассмотрим примеры алгоритмических структур и составления блок-схем для них.
Пример 1.
Пример 2. Решить квадратное уравнение ax 2 + bx + c = 0.
Рисунок 3.5- Блок-схема алгоритма нахождения корнем квадратного уравнения
Пример 3. Алгоритм подсчета суммы N первых натуральных чисел.
Сумму обозначим через S. Сначала S = 0, поскольку еще сумму не находили, i = 1 (первое натуральное число). Чтобы найти сумму, то нужно к предыдущей сумме прибавить следующий слагаемое: S = S + i. Для получения следующего числа требуется предварительное увеличить на единицу: i = i +1. Выполнение цикла продолжается до тех пор, пока i
3.2 Структуры данных, средства изображения
Данные в программе для определенного исполнителя характеризуются структурой, типом и значением.
Структура данных представляет собой именуемую совокупность простых элементов, между которыми существуют определенные связи, соотношения. Существуют простые и сложные структуры данных.
Каждый исполнитель характеризуется памятью, в которой размещаются данные. Они определенным образом кодируются. Так, в компьютерах для кодирования используется двоичная система счисления. Для одного двоичного разряда отводится один бит памяти. Для обозначения данных отводится соответствующее поле памяти. Размер поля определяет максимальное количество значений элемента данных. Например, если для целого числа отводится 2 байта (16 бит), то различных значений может быть 216, в то время как целых чисел существует бесконечное множество. Совокупность битов соответствует значению данного, должна определенным образом интерпретироваться исполнителем, то есть иметь определенное семантическое значение. Можно сказать также, что семантическое значение определяет внутреннее изображение данных в памяти исполнителя. Семантика, в свою очередь, определяет совокупность (набор) операций (действий) над данными. Например, над целыми числами выполняются четыре арифметических действия, операции сравнения, над буквами допустимые операции сравнения и т.п..
Тип данных определяет:
Таким образом, тип данных можно рассматривать как шаблон, определяющий структуру данных, их интерпретацию, а также количество допустимых значений данных и операций исполнителя над данными этого типа.
3.3 Алгоритмическая культура
Для того, чтобы решать задачи с помощью ЭВМ, составлять программы и пользоваться ими, необходимо придерживаться алгоритмической культуры.
Алгоритм должен отвечать следующим требованиям:
С практического опыта построения алгоритмов и реализации их в виде программ вытекают следующие выводы и рекомендации:
Алгоритмические структуры
Любой алгоритм можно построить из ограниченного числа структурных конструкций. Обычно выделяют три структуры: линейную, разветвленную и циклическую.
Линейной структурой или следованием называют последовательное однократное выполнение двух или более операторов. Например:
Разветвленная структура предусматривает выбор одной из двух или более последовательностей операторов в зависимости от некоторого условия. Основной вариант реализации в программе — с помощью условного оператора:
Если значение логического выражения — истина, выполняется «оператор1», иначе (т.е. при ложности логического выражения) — «оператор2».
Пример:
При положительном x переменная y получит значение квадратного корня из x, в другом случае — значение 0.
Если нужно выбирать более чем из 2 вариантов, используют вложенные условные операторы, например:
Второй вариант реализации ветвления — оператор множественного выбора:
Оператор выбора используется только в тех случаях, когда «ключевое» выражение может принимать несколько конкретных значений. В программе указывается действия, выполняемые при каждом из этих значений. В ряде реализаций языка может быть также указан оператор, выполняемый при несовпадении выражения ни с одним из перечисленных значений (эта часть, начинающаяся вместо значения словом «otherwise» или, в зависимости от реализации, «else», всегда записывается последней).
Пример:
В алгоритме циклической структуры некоторая последовательность действий повторяется многократно. Последовательность операторов, описывающих повторяющиеся действия, называют телом цикла.
В программе циклическая структура реализуется с помощью операторов цикла. В Pascal имеется 3 типа таких операторов: цикл с предусловием, цикл с постусловием и цикл с параметром. Они отличаются друг от друга тем, как определяется число повторений.
Циклы с условием обычно используются в тех случаях, когда число повторений заранее неизвестно. Нужно повторять действия еще раз либо цикл должен быть завершен, определяется условием.
Если условие проверяется перед выполнением действий тела цикла, то такой цикл называют циклом с предусловием или циклом «пока» («повторять пока истинно условие»). В Pascal он выглядит следующим образом:
Пример:
Такая запись обозначает: пока значение переменной a превосходит 10, из него следует извлекать квадратный корень. Предположим, что до начала цикла переменная имела значение 10000. Поскольку 10000 > 10, из него будет извлечен корень; переменная получит значение 100. С этим значением вновь проверяется условие повторения. 100 больше 10, поэтому квадратный корень извлекается еще раз; переменная получает значение 10. Опять проверяется условие, но на этот раз 10 не больше 10, значит цикл будет завершен, и компьютер перейдет к исполнению следующего оператора.
Другой тип цикла с условием — цикл с постусловием, в котором проверка условия происходит после выполнения операторов тела цикла. Действия повторяются до того момента, когда условие станет истинным. В Pascal он записывается следующим образом:
Пример:
Этот фрагмент программы осуществляет ввод исходных данных с проверкой их корректности. Запрос будет повторяться до тех пор, пока пользователь не введет значение, удовлетворяющее поставлеенному условию (в данном случае — положительное).
В тех случаях, когда количество посторений известно заранее (до начала цикла), обычно бывает удобнее использовать цикл с параметром. Он выполняется следующим образом: переменная-параметр (её также называют счетчиком) принимает последовательные значения в заданных пределах и при каждом из них выполняются операторы тела цикла.
В Pascal оператор цикла с параметром выглядит следующим образом:
(в таком случае параметр будет увеличиваться). Если необходимо, чтобы значения параметра убывали, оператор немного изменяется:
Пример 1:
При выполнении этого фрагмента программы переменная i примет поочередно все значения от 1 до 20, при каждом из них на экран на отдельной строке (writeln) будет выводиться само это значение и его куб. В результате получится таблица кубов первых двадцати натуральных чисел. Чтобы значения выводились ровными колонками, в процедуре вывода указан формат (на значение переменной i отведено 3 позиции, для куба — 5).
Пример 2:
Этот фрагмент программы выведет на экран английский алфавит в обратном порядке —от «z» до «a»:
Базовые алгоритмические структуры
Алгоритм – это упорядоченная совокупность точных (формализованных) и полных команд исполнителю алгоритма (человек, ЭВМ), задающих порядок и содержание действий, которые он должен выполнить для нахождения решения любой задачи из рассматриваемого класса задач.
Алгоритм удовлетворяет следующим основным свойствам :
Любой алгоритм ориентирован на некоторый общий метод решения класса задач и представляет собой формализованную запись метода, процедуры.
Для записи, исполнения, обмена и хранения алгоритмов существуют различные средства, языки, псевдокоды – блок-схемы, структурограммы (схемы Нэсси-Шнайдермана), Р-схемы, школьный алгоритмический язык (ШАЯ), различные языки программирования.
На алгоритмическом языке Паскаль любой алгоритм простой (не модульной, не составной) структуры имеет следующий стандартный вид:
Приведем таблицу наиболее часто используемых в языке Паскаль функций и процедур.
Порядок выполнения операций (старшинство операций – по убыванию) в языке Паскаль :
Команда описания (заголовка) алгоритма (программы) :
где – имя, задаваемое составителем программы (краткое, полное, грамотное отражение сути алгоритма ).
Ввод – команда ввода в рассмотрение (в тело алгоритма ) тех или иных входных параметров:
Первая команда вводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.
Вывод – команда вывода на экран тех или иных входных или выходных параметров алгоритма :
Первая команда выводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.
Присваивание – команда изменения текущего значения переменной вида:
Команда вставки комментариев в текст алгоритма имеет вид:
Комментировать можно любой объект в программе. Обычно комментируют переменную, структуру данных, команду, группу команд.
Базовые алгоритмические структуры. Тема 11. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Тема 11. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Содержание:
11.1 Алгоритмы. Алгоритмизация. Алгоритмические языки. 1
11.1.1. Понятие алгоритма. 1
11.1.2. Базовые алгоритмические структуры. 5
11.1.3. Итерационные циклы. 8
11.1.4. Вложенные циклы. 10
11.1.5. Простейшие структуры данных. 10
11.2. Примеры разработки алгоритмов. 12
11.2.1. Линейные алгоритмы. 12
11.2.2. Разветвляющиеся алгоритмы. 13
11.2.3. Циклические алгоритмы. 14
11.2.4. Алгоритмы со структурами вложенных циклов. 15
11.2.5. Вспомогательные алгоритмы. 18
11.2.6. Декомпозиция алгоритма. 19
11.3. Технология подготовки и решения задач с помощью компьютера. 21
11.4. Языки программирования. 27
11.4.1. Алгоритмические языки. 29
11.4.2. Принципы построения трансляторов. 34
Алгоритмы. Алгоритмизация. Алгоритмические языки
Понятие алгоритма
Понятие алгоритма такое же основополагающее для информатики, как и понятие информации. Именно поэтому важно в нем разобраться.
Название «алгоритм» произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал–Хорезми (Alhorithmi), жившего в 783–850 гг. В своей книге «Об индийском счете» он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними «столбиком», знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.
Человек ежедневно встречается с необходимостью следовать тем или иным правилам, выполнять различные инструкции и указания. Например, переходя через дорогу на перекрестке без светофора надо сначала посмотреть направо. Если машин нет, то перейти полдороги, а если машины есть, ждать, пока они пройдут, затем перейти полдороги. После этого посмотреть налево и, если машин нет, то перейти дорогу до конца, а если машины есть, ждать, пока они пройдут, а затем перейти дорогу до конца.
В математике для решения типовых задач мы используем определенные правила, описывающие последовательности действий. Например, правила сложения дробных чисел, решения квадратных уравнений и т. д. Обычно любые инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения задачи надо знать, что дано, что следует получить, какие действия и в каком порядке следует для этого выполнить. Предписание, определяющее порядок выполнения действий над данными с целью получения искомых результатов, и есть алгоритм.
Алгоpитм – заранее заданное понятное и точное предписание возможному исполнителю совеpшить определенную последовательность действий для получения решения задачи за конечное число шагов.
Это – не определение в математическом смысле слова, а, скорее, описание интуитивного понятия алгоритма, раскрывающее его сущность.
Понятие алгоритма является не только одним из главных понятий математики, но одним из главных понятий современной науки. Более того, с наступлением эры информатики алгоритмы становятся одним из важнейших факторов цивилизации.
Исполнитель алгоритма – это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом. Обычно исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов «почему» и «зачем».
Сpеда (или обстановка) – это «место обитания» исполнителя.
Система команд. Каждый исполнитель может выполнять команды только из некоторого строго заданного списка – системы команд исполнителя. Для каждой команды должны быть заданы условия применимости (в каких состояниях среды может быть выполнена команда) и описанырезультаты выполнения команды.
После вызова команды исполнитель совершает соответствующее элементарное действие.
Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
В информатике универсальным исполнителем алгоритмов является компьютер.
Основные свойства алгоритмов следующие:
1. Понятность для исполнителя – исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.
2. Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).
3. Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
4. Результативность (или конечность) состоит в том, что за конечное число шагов алгоритм либо должен приводить к решению задачи, либо после конечного числа шагов останавливаться из–за невозможности получить решение с выдачей соответствующего сообщения, либо неограниченно продолжаться в течение времени, отведенного для исполнения алгоритма, с выдачей промежуточных результатов.
5. Массовость означает, что алгоритм решения задачи разрабатывается в общем виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
На практике наиболее распространены следующие формы представления алгоритмов:
· словесная (запись на естественном языке);
· графическая (изображения из графических символов);
· псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
· программная (тексты на языках программирования).
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.
Например. Записать алгоритм нахождения наибольшего общего делителя(НОД) двух натуральных чисел (алгоритм Эвклида).
Алгоритм может быть следующим:
1. задать два числа;
2. если числа равны, то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма;
3. определить большее из чисел;
4. заменить большее из чисел разностью большего и меньшего из чисел;
5. повторить алгоритм с шага 2.
Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи. Убедитесь в этом самостоятельно, определив с помощью этого алгоритма наибольший общий делитель чисел 125 и 75.
Словесный способ не имеет широкого распространения, так как такие описания:
· строго не формализуемы;
· страдают многословностью записей;
· допускают неоднозначность толкования отдельных предписаний.
Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным. При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.
Такое графическое представление называется схемой алгоритма или блок–схемой. В блок–схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. В таблице приведены наиболее часто употребляемые символы (ГОСТ 19002-90 и ГОСТ 19003-90 «Схемы алгоритмов и программ»).
Название символа | Обозначение и пример заполнения | Пояснение |
Процесс | | Вычислительное действие или последовательность действий |
Решение | | Проверка условий |
Модификация | | Начало цикла |
Предопределенный процесс | | Вычисления по подпрограмме, стандартной подпрограмме |
Ввод–вывод | | Ввод–вывод в общем виде |
Пуск–останов | | Начало, конец алгоритма, вход и выход в подпрограмму |
Документ | | Вывод результатов на печать |
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация» используется для организации циклических конструкций. (Слово модификация означает видоизменение, преобразование). Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределенный процесс» используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов. Псевдокод занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя.
Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. В частности, в псевдокоде, так же, как и в формальных языках, есть служебные слова, смысл которых определен раз и навсегда. Они выделяются в печатном тексте жирным шрифтом, а в рукописном тексте подчеркиваются.
Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.
Ниже при рассмотрении алгоритмов будет применен один из псевдокодов. Основные служебные слова:
алг (алгоритм) | сим (символьный) | дано | для | да |
арг (аргумент) | лит (литерный) | надо | от | нет |
рез (результат) | лог (логический) | если | до | при |
нач (начало) | таб(таблица) | то | знач | выбор |
кон (конец) | нц (начало цикла) | иначе | и | ввод |
цел (целый) | кц (конец цикла) | все | или | вывод |
вещ (вещественный) | длин (длина) | пока | не | утв |
Общий вид алгоритма: алг название алгоритма (аргументы и результаты) дано условия применимости алгоритма надо цель выполнения алгоритма нач описание промежуточных величин | последовательность команд (тело алгоритма) кон |
Часть алгоритма от слова алг до слова нач называется заголовком, а часть, заключенная между словами нач и кон – телом алгоритма.
В предложении алг после названия алгоритма в круглых скобках указываются характеристики (арг, рез) и тип значения (цел, вещ, сим, литилилог) всех входных (аргументы) и выходных (результаты) переменных. При описании массивов (таблиц) используется служебное слово таб, дополненное граничными парами по каждому индексу элементов массива.
Базовые алгоритмические структуры
Алгоритмы можно представлять как некоторые структуры, состоящие из отдельных базовых (т.е. основных) элементов. Естественно, что при таком подходе к алгоритмам изучение основных принципов их конструирования должно начинаться с изучения этих базовых элементов. Для их описания будем использовать язык схем алгоритмов и простейший псевдокод.
Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление, цикл. Характерной особенностью базовых структур является наличие в них одного входа и одного выхода.
1.Базовая структура «следование». Образуется последовательностью действий, следующих одно за другим:
2.Базовая структура «ветвление». Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах:
Примеры структуры ветвление
Псевдокод | Язык блок–схем |
если x > 0 то y := sin(x) все | |
если a > b то a := 2*a; b := 1 иначе b := 2*b все | |
выбор при n = 1: y := sin(x) при n = 2: y := cos(x) при n = 3: y := 0 все | |
выбор при a > 5: i := i+1 при a = 0: j := j+1 иначе i := 10; j:=0 все | |
3. Базовая структура «цикл» (повторение). Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:
Псевдокод | Язык блок–схем |
Цикл типапока. Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова пока. | |
нц пока условие тело цикла (последовательность действий) кц | |
Цикл типа для. Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне. | |
нц для i от i1до i2 тело цикла (последовательность действий) кц | |
Для того чтобы понять, как функционирует не только этот, а и любой другой цикл, обратимся к рис. 11.1, 11.8. На них показана общая структура цикла и его важнейшие параметры. Как видно из рис. 11.1, цикл состоит из заголовка и тела. Всякий цикл обязательно имеет свой счетчик.
На рис. 11.2, где показана структура и параметры заголовка цикла, роль такого счетчика выполняет переменная i. Внутри заголовка после счетчика и символа «=» через запятую указывает начальное и конечное значения счетчика и шаг его изменения (на рис. 11.2 их роль выполняют переменные j, k, l соответственно). Если значение шага l = l, то его можно не указывать.
Сначала производится вход в цикл. После этого начинается его выполнение.
| |
Рис. 11.1. Структура цикла | Рис. 11.2. Структура заголовка цикла |
Внутри заголовка счетчику первоначально присваивается значение i = j. Затем выполняется блоки, образующие тело цикла. Обработка блоков внутри цикла производится по часовой стрелке. В результате после первого выполнения тела цикла управление вновь передается заголовку. Здесь к текущему значению счетчика добавится шаг. Теперь, если новое значение счетчика не вышло за свои пределы (т.е. не стало больше своего конечного значения при положительном шаге или меньше конечного значения – при отрицательном шаге), то снова выполняется тело цикла, вновь после возврата к заголовку к счетчику добавляется шаг. Так цикл будет выполняться до тех пор, пока значение счетчика однажды не выйдет за предписанный предел. Как только такой предел будет преодолен, произойдет выход из цикла и управление будет передано блоку, который следует сразу за циклом.
Примеры структуры цикл
Псевдокод | Язык блок–схем |
нц пока i Eps p := –p*x | p – числитель | очередного слагаемого m := p/i | m – очередное слагаемое S := S + m | S – частичная сумма i := i + 1 | i – номер | очередного слагаемого кц вывод S кон | |
Алгоритм, в состав которого входит итерационный цикл, называется итеpационным алгоpитмом. Итерационные алгоритмы используются при реализации итерационных численных методов.
В итерационных алгоритмах необходимо обеспечить обязательное достижение условия выхода из цикла (сходимость итерационного процесса). В противном случае произойдет «зацикливание» алгоритма, т.е. не будет выполняться основное свойство алгоритма – результативность.
Вложенные циклы
Возможны случаи, когда внутри тела цикла необходимо повторять некоторую последовательность операторов, т. е. организовать внутренний цикл. Такая структура получила название цикла в цикле или вложенных циклов. Глубина вложения циклов (то есть количество вложенных друг в друга циклов) может быть различной.
При использовании такой структуры для экономии машинного времени необходимо выносить из внутреннего цикла во внешний все операторы, которые не зависят от параметра внутреннего цикла.
Пример вложенных циклов для
Вычислить сумму элементов заданной матрицы А(5,3).
Матрица А | | S := 0; нц для i от 1 до 5 нц для j от 1до 3 S:=S+A[i,j] кц кц |
Пример вложенных циклов пока
Вычислить произведение тех элементов заданной матрицы A(10,10), которые расположены на пересечении четных строк и четных столбцов.