Скачать презентацию Понятие циклического алгоритма Задача Вычислить значения функции Y X Скачать презентацию Понятие циклического алгоритма Задача Вычислить значения функции Y X

lec_5_sem_2_inf.ppt

  • Количество слайдов: 17

Понятие циклического алгоритма. Задача. Вычислить значения функции Y=X 3+BX-C при Х=2, 4, 6. Решение. Понятие циклического алгоритма. Задача. Вычислить значения функции Y=X 3+BX-C при Х=2, 4, 6. Решение. В соответствии с изложенным выше все значения X можно вычислить по формуле Х=Х+2, возложив эту обязанность на ЭВМ. В таком случае исходными данными будут только величины В и С. Здесь данными задачи являются величины X, В, С, но исходными данными для алгоритма будут лишь В, С. Решая задачу, получим три значения величины Y, выдаваемые последовательно. Порядок решения задачи можно описать следующим линейным алгоритмом: 1. X=2 2. Y=X 3+BX-C 3. Вывод Y 4. X=X+2 5. Y=X 3+BX-C 6. Вывод Y 7. X=X+2 8. Y=X 3+BX-C 9. Вывод Y 10. X=X+2 11. Останов.

Однако эта запись весьма громоздка, а если представить, что X изменяется до 2000 (или Однако эта запись весьма громоздка, а если представить, что X изменяется до 2000 (или до 20000!), то и вообще окажется неприемлемой (описать 1000 (или 10 000) этапов!). Можно заметить, что в алгоритме операции этапов 2— 4 фактически повторяются три раза без каких-либо изменений, поэтому запишем алгоритм в таком виде: X=2 Y=X 3+BX-C Вывод Y X=X+2 Перейти к п. 2. В этом алгоритме этапы 2— 5 выполняются многократно благодаря операции пятого этапа. Это и есть описание алгоритма, называемого циклическим. Недостаток этого описания — алгоритм будет выполняться бесконечно, хотя по условию задачи он должен выполняться до тех пор, пока Х 6. Проверкой такого условия и дополним его. Тогда получим: X=2 Y=X 3+BX-C Вывод Y Проверить X< =6 Да – перейти к п. 5; Нет – перейти к п. 7. X=X+2 Перейти к п. 2. Останов.

Блок-схема циклического алгоритма (а) (б) X=2 Проверку условия Х 6 можно поместить и перед Блок-схема циклического алгоритма (а) (б) X=2 Проверку условия Х 6 можно поместить и перед п. 2 алгоритма. X=2 Нет Y=X 3+BX-C X 6 Да Вывод Y Y=X 3+BX-C Да Вывод Y X=X+2 X 6 X=X+2 Нет

Циклическим называют алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же Циклическим называют алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же операций. Структуру любого циклического алгоритма можно описать схемами, которые называют типовыми. (а) (б) 1 1 Присваивание переменным начальных значений 2 Рабочий блок (вычисление результатов) 2 3 3 4 Изменение переменных Проверка окончания цикла 4 Любой циклический алгоритм определяется тремя наборами формул (содержащихся в блоках 1, 2, 4) и одним условием (отношением, логическим выражением).

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

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

Задача Вычислить значение функции р; p=(61 x 2+d)+3 ai, где х=2, 4, 6, 8, Задача Вычислить значение функции р; p=(61 x 2+d)+3 ai, где х=2, 4, 6, 8, 10, 12, 14; а=1, 2, 3, 7, 9, 10; d принимает значения из отрезка [3, 7] с шагом 0. 5. Результаты представить в виде массива. Решение. Исходные данные: Х{2, 4, 6, 8, 10, 12, 14}; А{1, 2, 3, 7, 9, 10}; d{3; 3, 5; 4; 4, 5. . . 7}. Исходные массивы X и d можно не вводить, а задать их начальные и конечные значения и шаг изменения. Результат: линейный массив Р, количество элементов которого определим. как произведение 7 x 6 x 9 — количество элементов исходных массивов. Блок-схема решения задачи

Начало I=1, K=1 Ввод A(I) D=3 X=2 P(K)=(61 x 2+d)+3 A(I) Вывод P(K) K=K+1 Начало I=1, K=1 Ввод A(I) D=3 X=2 P(K)=(61 x 2+d)+3 A(I) Вывод P(K) K=K+1 X=14 Нет X=X+2 Да D=7 Нет D=D+0, 5 Да I=6 Да Конец Нет I=I+1

Задача № 4 Записать элементы массива D(l: 20) в виде матрицы С(1: 4, 1: Задача № 4 Записать элементы массива D(l: 20) в виде матрицы С(1: 4, 1: 5) и вычислить сумму угловых элементов матрицы. Решение. Шаг 1. Рассматриваем решение всей задачи в целом. 1. Исходные данные: массив D(l: 20). Результаты: матрица C(l: 4, l: 5), S. 2. Метод решения задачи заключается в однократном решении двух подзадач: образование матрицы С(1: 4, 1: 5); вычисление суммы S. 3. Рисуем укрупненную схему алгоритма задачи.

Начало Блок 1 Ввод D (1: 20) Задача 1 Блок 2 Блок 3 Задача Начало Блок 1 Ввод D (1: 20) Задача 1 Блок 2 Блок 3 Задача 2 Конец

Шаг 2. Рассматриваем задачу укрупненного блока 2. 1. Исходные данные: массив D(l: 20). Результат: Шаг 2. Рассматриваем задачу укрупненного блока 2. 1. Исходные данные: массив D(l: 20). Результат: матрица С(1: 4, 1: 5). 2. Метод решения задачи. Первые пять элементов массива D записываем в первую строку матрицы С, следующие пять элементов — во вторую, следующие пять элементов — в третью, и т. д. 3. Описываем этапы решения задачи: Этап 1. Из элементов с d (1) по d (5) образуем первую строку матрицы С. Этап 2. Из элементов с d (6) по d (10) образуем вторую строку матрицы С. Этап i. Из элементов с d (5*i-4) по d (5*i) образуем i-ю строку матрицы С. 1 4. Записываем параметры переменной i. i= i+1 4 5. Рисуем подробную схему алгоритма блока 2.

Начало блока 2 i=1 C(i, 1)=d(5*i-4) C(i, 2)=d(5*i-3) C(i, 3)=d(5*i-2) C(i, 4)=d(5*i-1) C(i, 5)=d(5*i) Начало блока 2 i=1 C(i, 1)=d(5*i-4) C(i, 2)=d(5*i-3) C(i, 3)=d(5*i-2) C(i, 4)=d(5*i-1) C(i, 5)=d(5*i) Нет i=4 Да Конец блока 2 i=i+1

Шаг 3. Рассматриваем задачу укрупненного блока 3. 1. Исходные данные: матрица С(1: 4, 1: Шаг 3. Рассматриваем задачу укрупненного блока 3. 1. Исходные данные: матрица С(1: 4, 1: 5). Результат: S. 2. Метод решения задачи очень прост: S= С(1, 1) + С(1, 5) + С(5, 1) + С(5, 5). 3. Блок-схема блока 3 Начало блока 3 S= С(1, 1) + С(1, 5) + С(5, 1) + С(5, 5). Конец блока 3

Шаг 4. Рассмотрим задачу ввода массива D(l: 20). Блок-схема блока 1 Начало блока 1 Шаг 4. Рассмотрим задачу ввода массива D(l: 20). Блок-схема блока 1 Начало блока 1 i=1 Ввод D(i) Нет i=5 i=i+1 Да Конец блока 1 Соединив блок-схемы задач укрупненных блоков 1, 2 и 3, мы получим блоксхему алгоритма решения всей задачи.

Вспомогательные алгоритмы. Очень часто при составлении алгоритмов сложных задач приходится выполнять одинаковые действия для Вспомогательные алгоритмы. Очень часто при составлении алгоритмов сложных задач приходится выполнять одинаковые действия для различных наборов исходных данных. Для того чтобы упростить работу по составлению таких алгоритмов, применяют вспомогательные алгоритмы. Эти алгоритмы, оформленные в виде небольших программ, могут быть собраны в специальную библиотеку. В программировании такие алгоритмы называются подпрограммами. Подпрограммы бывают двух видов — процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его обратно в главную программу (возвращает значение). Это значение имеет определенный тип (говорят, что функция имеет такой-то тип), а если никакого значения функция не вычисляет, то считается, что она возвращает значение типа «никакое» (void). Программа разбивается на множество мелких подпрограмм Наличие подпрограмм позволяет вести проектирование и разработку приложения сверху вниз — такой подход называется нисходящим проектированием.

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

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