Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Вспомогательные алгоритмы






При построении новых алгоритмов могут использоваться алгоритмы, составленные раньше.

Алгоритмы, целиком используемые в составе других алгоритмов, называют вспомогательными (или подчиненными) алгоритмами.

Использование ранее составленных алгоритмов при составлении новых находит широкое применение в практике алгоритмизации.

Составим алгоритм поиска большего из двух чисел (БИД):

алг БИД (вещ а, b, x) арг a, b рез x нач если a≥ b то x: =a иначе x: =b все кон

 

Рассмотрим использование вспомогательного алгоритма при составлении основного. Составим алгоритм для поиска большего из трех чисел (БИТ). Чтобы найти большее из трех чисел, нужно сначала выбрать большее из двух любых чисел. Затем выбранное число сравнить с оставшимся числом и выбрать из них большее. Последнее число и будет большим из трех чисел. Значит для решения нашей задачи, мы должны дважды воспользоваться алгоритмом БИД (поиска большего из двух чисел).

Построим алгоритм:

алг БИТ (вещ m, n, k, y) арг m, n, k рез y начвещ z БИД(m, n, z) БИД(z, k, y) кон

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

Исполним алгоритм БИТ для чисел 3, 9, 5. Построим таблицу для исполнения алгоритма:

Шаги алгорима Аргумент Пром. вел. Результат Проверка условий
m n k z y
             
             

 

Проследим исполнение алгоритма БИД, для этого построим таблицу его исполнения:

Шаги алгоритма Аргумент Результат Проверка условий
a b x
         
        3≥ 9 (нет)
         
        9≥ 5 (да)  

При исполнении вспомогательного алгоритма в первый раз, мы переменной а присваиваем значение m, переменной b присваиваем значение n. У нас в таблицу вводятся данные 3 и 9. Переменной z алгоритма БИТ, присваивается значение переменной х алгоритма БИД. Во второй раз мы присваиваем а значение z, а переменной b значение k. Полученное значение переменной х алгоритма БИД присваиваем переменной y алгоритма БИТ. Так с помощью двукратного обращения к вспомогательному алгоритму мы находим, большее из трех чисел.

При составлении алгоритма для нахождения большего из 4 чисел можно три раз обращаться к алгоритму БИД, а можно использовать алгоритм БИТ, как вспомогательный. При исполнении такого алгоритма нужно будет строить три таблицы для исполнения:

1) исполнение основного алгоритма;

2) исполнение вспомогательного алгоритма БИТ;

3) исполнение вспомогательного алгоритма БИД.

Причем вспомогательный алгоритм БИД будет вызываться один раз основным алгоритмом и два раза вспомогательным алгоритмом БИТ. Рассмотрим оба случая.

1 случай (алгоритм БИД используется трижды в качестве вспомогательного):

алг БИЧ (вещ q, w, r, t, s) арг q, w, r, t рез s начвещ z, f БИД(q, w, z) БИД(z, r, f) БИД(f, t, s) кон

Исполним алгоритм для чисел 2, 5, 8 и 3. Строим таблицу для основного алгоритма:

Шаги алгоритма Аргумент Промеж. вел. Результат Проверка условий
q w r t z f s
                 
                   

При исполнении основного алгоритма происходит трехкратное обращение к вспомогательному алгоритму БИД. Построим таблицу для его исполнения:

Шаги алгоритма Аргумент Результат Проверка условий
a b x
         
        2≥ 5 (нет)
         
        5≥ 8 (нет)  
         
        8≥ 3 (да)

 

2 случай (используем алгоритм БИТ, как вспомогательный):

алг БИЧ (вещ q, w, r, t, s) арг q, w, r, t рез s начвещ z БИТ(q, w, r, z) БИД(z, t, s) кон
 

Исполним алгоритм для второго случая. При исполнении этого алгоритма, мы будем обращаться к алгоритму БИТ, а он при исполнении будет использовать в качестве вспомогательного алгоритм БИД. Для этого строим сначала таблицу для исполнения основного алгоритма:

 

 

Шаги алгоритма Аргумент Промеж. вел. Результат Проверка условий
q w r t z s
               
               

Первое обращение идет к вспомогательному алгоритму БИТ. Строим таблицу для его исполнения:

Шаги алгорима Аргумент Пром. вел. Результат Проверка условий
m n k z y
             
             

Алгоритм БИТ дважды обращается к алгоритму БИД. Строим таблицу для исполнения алгоритма БИД:

Шаги алгоритма Аргумент Результат Проверка условий
a b x
         
        2≥ 5 (нет)
         
        5≥ 8 (нет)  
Обращение основного алгоритма БИЧ к вспомогательному алгоритму БИД
         
        8≥ 3 (да)

 

Составим алгоритм поиска максимального элемента линейной таблицы:

 

алг максимальный элемент (вещтаб В[1: n], вещ k) арг В рез k начнат i i: =1 k: =B[1] пока i< =n нц БИД(k, B[i], k) i: =i+1 кц кон

 

Вопросы

1 Для чего нужны вспомогательные алгоритмы?

2 Как записывается команда вызова вспомогательного алгоритма?

3 Каков порядок исполнения основного алгоритма при использовании вспомогательных алгоритмов?

4 Может ли алгоритм, содержащий ссылку на вспомогательный, оказаться в роли вспомогательного?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.