алгоритм пошуку

1 2 3 4 5 ^ Рис. 4.21 Алгоритм бінарного пошуку
Алгоритм оперирует с переменными imax, imin, ind, n, tst (целого типа) и переменной found (логического типа), которая используется как признак успешного завершения поиска. Исходные данные записываются в массив a из 100 элементов целого типа. Кроме того, алгоритм оперирует с пользовательскими функциями fmin( ind), fmax( ind), которые описаны выражениями (4.33б), (4.34б), и пользовательской функцией
find( found):= ifa( found, ind, 0),
которая возвращает значение найденного индекса (для found = true) или 0 (для found = false).
Блоки 2 и 3 обеспечивают ввод числа элементов массива ( n  20) и чтение данных из файла в массив (в данном случае файл Sorted20.dat содержит 100-элементный массив целого типа, у которого первые 20 элементов упорядочены по возрастанию). Ввод (блок 3) выполняется только при первом запуске алгоритма.
Блок 4 вводит заданное значение tst. Блок 5 выполняет начальные присваивания перед циклом поиска, состоящим из блоков 6–11. Блок 7 вычисляет текущее значение индекса ind в соответствии с выражением (4.32). Блоки 8, 9 проверяют равенство a[ ind] = tst и в случае его выполнения присваивают признаку found значение true и обеспечивают переход в конец цикла. В случае невыполнения указанного равенства управление передается блоку 10, который изменяет границы поиска в соответствии с выражениями (4.33), (4.34). Блок 11 конца цикла обеспечивает выход из процесса поиска либо при истинности признака found (элемент найден), либо при выполнении неравенства imin > imax (элемент не найден). Блок 12 выводит результаты поиска.
Приведенный алгоритм записан в файл BinSearch.alg.
^ 4.6 Иерархические структуры
Основные определения
Иерархические структуры широко используются при построении сложных алгоритмов.
В соответствии с общепринятой практикой программирования, целесообразно выделить из сложного алгоритма отдельные фрагменты, каждый из которых решает какую-либо частную задачу. Это особенно полезно, когда приходится многократно решать одну и ту же частную задачу при различных исходных данных. Однако разбиение алгоритма на относительно самостоятельные фрагменты целесообразно даже в том случае, когда они выполняются однократно. Отдельные фрагменты легче отлаживать и проще изменять их функциональность, что в конечном итоге повышает эффективность процесса создания алгоритма. Подобное структурирование алгоритма основано на понятии процедуры и блока вызова процедуры, которые не следует отождествлять друг с другом.

^ Понятие процедуры относится к выделенной взаимосвязанной группе блоков, которые решают некоторую частную задачу. Процедуре присваивается собственное имя и она оформляется аналогично любому алгоритму, то есть, имеет один вход (Начало) и один выход (Конец).
Таким образом, процедура представляет собой целостную структуру.
Обращение к алгоритму процедуры из вызывающего алгоритма осуществляется с помощью блока, который изображается графическим символом ПРОЦЕДУРА (см. п.4.1.2). Условное обозначение блока (УОБ) состоит из буквы Р и 1-2-х цифр или букв, задаваемых пользователем по своему усмотрению. Оператор блока ПРОЦЕДУРА имеет вид
Ім‘я_процедури(необов‘язковий список параметрів)
^ Блок ПРОЦЕДУРА обеспечивает передачу управления блоку Начало той процедуры, имя которой указано в операторе. После ее выполнения управление возвращается блоку ПРОЦЕДУРА вызывающего алгоритма. Далее управление передается по адресу, который указан в параметре msb.
Вызывающий алгоритм и вызываемая процедура образуют иерархическую структуру, пример которой схематически показан на рис. 4.22.
На рис. 4.22а изображена схема передачи управления. В основном алгоритме два блока ПРОЦЕДУРА, обозначенные как Р1 (с метками g и h) вызывают одну и ту же процедуру с именем Proced1. Несмотря на то, что они оба передают управление блоку Начало процедуры, блок Конец возвращает управление именно тому блоку Основного алгоритма, который вызвал процедуру Proced1: в первом случае – блоку g, во втором случае – блоку h. Поскольку параметры msb этих блоков равны их меткам, увеличенным на 1, то управление передается следующим за ними блокам. Процедура Proced1 в данном примере выполняет функцию подпрограммы. В свою очередь, она с помощью блока Р2 (метка m) и блока Р3 (метка n) вызывает соответственно процедуры с именем Proced2 и Proced3.

Р
ис. 4.22 Приклад ієрархічної структури
Иерархия процедур определяется тем, как они вложены друг в друга. Основной алгоритм всегда образует 0-й уровень иерархии. В примере, изображенном на рис. 4.22, в основной алгоритм вложена одна процедура Proced1, которая образует 1-й уровень иерархии. В свою очередь, в Proced1 вложены две процедуры Proced2 и Proced3, которые образуют 2-й уровень иерархии. Номера уровней характеризуют «глубину» вложения, поэтому 0-й уровень является самым высоким. В данном случае, иерархическая связь процедур показана на рис. 4.22б. Она определяет взаимную доступность процедур для вызова, которая обозначена простыми стрелками, и доступность данных, которая показана контурными стрелками.
Для вызывающего алгоритма доступны все непосредственно вложенные в него процедуры.
В рассмотренном примере Основной алгоритм может вызывать процедуру Proced1, но для него недоступны процедуры Proced2, Proced3. Последние доступны только из процедуры Proced1.
Допускается (но не рекомендуется) обращение друг к другу процедур одного и того же уровня иерархии, если они вложены в один и тот же алгоритм предыдущего уровня. То есть, в приведенном примере Proced2 может вызывать Proced3 и наоборот. Особый случай представляет вызов процедурой самой себя, который называется рекурсией. Он отдельно рассматривается в п.?.
В каждой процедуре при необходимости могут быть использованы свои внутренние данные, которые называются локальными. Они должны быть описаны аналогично глобальным данным Основного алгоритма (см. п.2.6.1 и п.2.6.2). Доступность данных определяется следующими правилами.
Для вызывающего алгоритма недоступны локальные данные вызываемых процедур.
Для каждой процедуры доступны не только ее локальные данные, но и данные вызывающих процедур по всей иерархической цепочке вверх, вплоть до Основного алгоритма, то есть, включая глобальные данные.
Эти правила называются локализацией имен и необходимо их учитывать во избежание ошибок, которые проявляются при выполнении алгоритма, но не обнаруживаются при диагностировании его логической структуры.
Благодаря указанным правилам можно использовать для локальных данных имена, которые уже использованы на более высоких уровнях иерархии. При определении текущего значения данных вначале просматривается список локальных данных. Если найдено интересующее имя, то значение выбирается из этого списка и дальнейший поиск прекращается. Если в списке локальных данных нет интересующего имени, то просматривается список данных вызывающего алгоритма и т.д., вплоть до Основного алгоритма. Пусть, например, в Основном алгоритме и вызываемой процедуре Р1 используются циклы с параметром i.
Похожие: Учебник По Математике и Ествознанию
Потому что в нашем учебнике будут задания разных сложностей для изучения,а конкретнее лёгкая задача, нормальная задача, !-сложная...
Задача №1/1
Каждая задача должна иметь дробный номер. Например №3/5 – третье задание; пятая задача
Информация о реализации на территории Московской области мероприятий...
Пособностей каждого – это и есть задача нашего сегодняшнего дня, задача нашего развития, задача нашего государства, задача нашего...
Воспитательная задача
Развивающая задача: развитие интеллектуальных и познавательных способностей у учащихся
Задача 1
Задача Найти общий интеграл дифференциального уравнения. Ответ представить в виде
Задача 1
Задача 17. Вычислить длины дуг кривых, заданных уравнениями в прямоугольной системе координат
Задача 3
Задача посвящена анализу работы параллельного колебательного контура с нагрузкой и без нагрузки
Задача 3
Задача расчет разветвленной линейной цепи постоянного тока с несколькими источниками электрической энергии
Задача 5
Задача Для разветвленной цепи, пользуясь законами Кирхгофа, определить токи во всех ветвях
Задача 1 Задача 2
Модель — это некоторое упрощенное подобие реального объекта, явления или процесса
Вы можете разместить ссылку на наш сайт:
Школьные материалы Школьные материалы

алгоритм пошуку прикметника

алгоритм пошуку рядка

Лєнков С.В.,Джулій В.М., Муляр І.В., Охрамович Л. Назва: Алгоритм пошуку семантично подібних документів.

Читать

алгоритм пошуку інформації в інтернеті

Алгоритм пошуку Попелюшки, за задание 49 балов. 5 часов назад.  Виконайте алгоритм для чисел 2,5;1;6;0,3.