как доказать
while i < n do i := i + 1
равносилен
if i < n then i := n
это ведь и так очевидно..?
Показывается, что при n = 1, i совпадает.
При n = 2, i тоже совпадает.
Предполагается, что при n = N, iN-ые тоже равны.
и выводится что в обоих случаях, N+1 значение получается с N-го добавлением одной 1-ы.
В общем на редкость большая гдупость.
Такое доказывается мат.индукцией.
Показывается, что при n = 1, i совпадает.
При n = 2, i тоже совпадает.
Предполагается, что при n = N, iN-ые тоже равны.
и выводится что в обоих случаях, N+1 значение получается с N-го добавлением одной 1-ы.
В общем на редкость большая гдупость.
Спасибо, конечно, большое, но то, что такое мат.индукцией доказывается, я знаю, просто я думала, что она пойдет по тому, сколько раз проработает цикл. Но это зависет от значений i ? получается, что базис - цикл работает 1 раз, т.е. i = n - 1, индукционное предположение - для работы цикла m раз верно, т.е. при i = n - m, а дальше дла работы цикла m + 1 раз, т.е. если i = n - m - 1, это есть работв цикла m и ещё один раз, т.е. на шаге m i = n - 1, по индукционному предположению, а на m + 1 шаге i увеличится ещё на единицу, таким образом вся эта глупость верна. :))) Прошу, пожалуйста, скажите все, что я тут понаписала коректно и сайдет за доказательство? Спасибо за все!!!
Как это сделать не знаю. Думаю твое доказательство потянет, хотя бы на 3.
К счастью мне с такой ерундой не пришлесь заниматься. Только в одном модуле несколько тысчяч команд. Если ДОКАЗЫВАТЬ правильность каждого оператора, прога никогда не будет готова.
Твой препод далек от жизни, только это не нужно ему говорить, а то может обидеться и будет мстить. :)
Фокус в мат.индукции, что m+1-е значение нужно получить из m-го.
Как это сделать не знаю. Думаю твое доказательство потянет, хотя бы на 3.
К счастью мне с такой ерундой не пришлесь заниматься. Только в одном модуле несколько тысчяч команд. Если ДОКАЗЫВАТЬ правильность каждого оператора, прога никогда не будет готова.
Твой препод далек от жизни, только это не нужно ему говорить, а то может обидеться и будет мстить. :)
За советы спасибо, а как ещё это доказать можно, ты не знаешь, а? Или еще кто-нибудь на знает. А то мой "далекий препод" сказал, что мол ему эти индукции надоели, потому что глупые студенты ничего умнее придумать на могут, и он решил вообще больше доказательства индукцией не принимать:-? :!!!:
while i < n do i := i + 1; (1)
if i < n then i := n; (2)
нужно доказать, что они равносильны. Т.е., что для
любого значения i c [МИН_ЦЕЛОЕ..МАКС_ЦЕЛОЕ],
они присваивают i, одинаковые значения.
Возможны два случая.
Первый случай. i >= n.
Тогда условие продолжения цикла для оператора (1)
не выполняется, и управление сразу же передается
за тело цикла, следовательно значение i не меняется.
Для второго оператора, условие (i<n) так же не
выполняется и управление передается след.
оператору программы. Т.е. значение i не меняется.
Следовательно, для [n, МАКС_ЦЕЛОЕ] операторы
равносильны, они не меняют значение i.
Второй случай. i < n.
Для первого оператора условие цикла выполняется, и
управление передается в тело цикла, где i
увеличивается на 1. После этого проверяется
условие продолжения цикла. Если она выполняется,
то управление передается на начало цикла и i
увеличится на 1. Это будет повторяться до тех пор
пока i не станет равным n. Тогда условие
прод.цикла не выполнится, и произойдет выход из
цикла.
Следовательно в первом операторе, внутри цикла
i получает значение n.
Для второго оператора if условие удовлетворяется
и поэтому выполняется then оператор: i := n.
Т.е. для [МИН_ЦЕЛОЕ..n-1] оба оператора
присваивают i значение n.
Резьюме. Для всех i больше равно n, оба оператора
не меняют значение i. А для всех i меньше n,
оба оператора присваивают ему значение n.
Может это тоже не доказательсьво, но хоть твой
препод будет видеть, что стараешся :)
P.S. Что-то твой препод резко выразился.
Временами он не выходит в инет?:roll:
Временами он не выходит в инет?:roll: [/QUOTE]
Да, большое спасибо, я тут как раз типа такого придумала и вот искала всякие источники в книшках и в инете, чтоб всё это как - нибудь по-умнее написать. А у тебя вообще все достаточно складно получилось, вообще классно! :))
Может он и выходит, и что с этого, про него я ничего плохового не говорила, потому что нечего, он лекции-то нормально читает, просто задания у него немного непривычные, но что делать - это его право, я столько сама намучилась и истратила столько сил и нервов на это задание, что мне совсем не стыдно, что я прошу других людей поделиться своими сооброжениями со мной, все равно я сдам своё результируещее решение. Я уж точно больше подумала над этим заданием, чем любой другой человек на этом форуме!
Потом, если ты понимаешь решение, тогда не имеет значение, что сама нашла его или же кто-то помог.