Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Выполнение алгоритма с результатами↑ ⇐ ПредыдущаяСтр 8 из 8 Содержание книги
Поиск на нашем сайте
В команде вызова вспомогательного алгоритма на месте его результатов указываются имена величин основного алгоритма, в которых должны оказаться вычисленные значения. Например, если нам надо в основном алгоритме "вычисление" найти гипотенузу х прямоугольного треугольника с катетами р - 1 и р + 1, то достаточно написать вызов вспомогательного алгоритма "гипотенуза" (А56):
алг вычисление нач вещ р, х … гипотенуза (р - 1, р + 1, х) … Кон Пусть к моменту выполнения этого вызова величина р имеет значение 7 (рис. 63).
Рис. 63
Встретив вызов "гипотенуза (р - 1, р + 1, х)", компьютер вычислит значения р-1 и р+1 передаст их алгоритму "гипотенуза" в качестве значений аргументов а и b. Значение х в этот момент не вычисляется, так как х соответствует результату вспомогательного алгоритма. Затем начинается выполнение вспомогательного алгоритма "гипотенуза". Выделяется память алгоритма, в ней создаются ячейки для аргументов а, b и результата с, аргументы получают значения, переданные из основного алгоритма (рис. 64).
Рис. 64
В памяти компьютера при этом будет одновременно храниться информация, относящаяся и к алгоритму "вычисление", и к алгоритму "гипотенуза". Далее ЭВМ выполнит алгоритм "гипотенуза" и вычислит значение величины-результата с (рис. 65).
Рис. 65
Встретив строчку кон, компьютер передаст значение результата в основной алгоритм и завершит работу алгоритма "гипотенуза", освободив его память. В основном алгоритме значение результата записывается в ячейку величины, указанной в команде вызова, т. е. в х (рис. 66). После этого компьютер продолжает выполнять алгоритм "вычисление".
Рис. 66
Общие правила выполнения команды вызова вспомогательного алгоритма
1. Выполняя команду вызова вспомогательного алгоритма, компьютер вычисляет значения аргументов и передает их вспомогательному алгоритму в том порядке, в котором они записаны в команде вызова. После этого выполнение основного алгоритма приостанавливается. 2. Перед началом выполнения вспомогательного алгоритма компьютер отводит для него место в памяти. Аргументы получают значения, переданные из основного алгоритма. 3. В конце выполнения вспомогательного алгоритма его результаты передаются в основной алгоритм и заносятся в ячейки величин, указанных в команде вызова в качестве результатов. 4. После окончания вспомогательного алгоритма все, что с ним связано, стирается из памяти компьютера. (Если алгоритм вызывается еще раз, то все начинается сначала: компьютер снова отводит место в памяти, присваивает значения аргументам и т. д.) 5. Продолжается выполнение основного алгоритма.
17.4. Алгоритм с результатами при управлении Роботом
алг средний уровень радиации в коридоре (рез вещ г) дано | Робот в левой клетке коридора, уходящего вправо надо | r = средний уровень радиации в коридоре, Робот | вышел из коридора вправо нач цел n, вещ S n:= 0; S:= 0 нц пока снизу стена n:= n + 1; S:= S + радиация вправо кц утв | n = длина коридора, S = суммарная радиация r:= S /n Кон
Алгоритм Евклида
Рассмотрим такую задачу: найти наибольший общий делитель двух натуральных чисел. Один из способов решения этой задачи был предложен древнегреческим математиком Евклидом, жившим более двух тысяч лет назад. Суть метода Евклида в следующем: большее из двух чисел надо заменить разностью этих чисел. При этом все общие делители, а значит, и наибольший из них, сохраняются. Если проделать эту операцию несколько раз, то, в конце концов, числа станут равны друг другу и полученное значение будет искомым.
Запишем алгоритм Евклида на алгоритмическом языке.
дано а > 0 и b > 0 надо | d = НОД (а, b) начцел m, n | дополнительные величины нужны, чтобы не менять | значения аргументов m:= а; n:= b нц пока m<> n утв | инвариант цикла: НОД (m, n) = НОД (а, b) если m > n то m := m – n иначе n := n – m Все кц утв m = n | НОД (m, n) = НОД (а, b) d := m Кон Докажем правильность этого алгоритма. Рассмотрим инвариант цикла. Ясно, что он справедлив при первом выполнении цикла — в этот момент значения т и п совпадают со значениями а и b. Предположим, что при некотором выполнении цикла инвариант справедлив. Пусть в этот момент т > п. Тогда выполнится команда m:= m - n и величина т получит новое значение. При этом все общие делители т и п остаются прежними, так как если т и п делятся на х, то т - п также делится на х. Аналогично сохраняются все делители, если п > т. Таким образом, инвариант цикла справедлив при первом выполнении и сохраняется при переходе от одного выполнения к следующему. Следовательно, он справедлив при любом выполнении цикла и после его завершения. Условие, записанное после цикла, следует из инварианта цикла и условия окончания цикла (т = п). Из чего очевидно вытекает НОД (а,b) = т. Осталось доказать, что выполнение цикла завершится. Для этого заметим, что при каждом выполнении цикла большее из чисел т и п уменьшается, но при этом они остаются положительными. Ясно, что это не может продолжаться бесконечно долго, следовательно, выполнение цикла когда-нибудь завершится.
|
||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 241; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.152.189 (0.009 с.) |