Форум Сообщества Аналитиков

Дисциплины => Обучение => Термины и Определения => Тема начата: AndriyankovDN от 10 Ноября 2009, 11:08:28

Название: Термин "Инвариант"
Отправлено: AndriyankovDN от 10 Ноября 2009, 11:08:28
Привет, Всем!

Меня беспокоит то, что читая литературу по программированию и проектированию я не совсем ясно понимаю "что такое инвариант?". При ОО-проектировании это одно, при написании цикла это другое.

Возьму за основу эти слова (http://ru.wikipedia.org/wiki/Инвариант#.D0.98.D0.BD.D0.B2.D0.B0.D1.80.D0.B8.D0.B0.D0.BD.D1.82.D1.8B_.D0.B2_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B8) .

Исходя из этих слов, у меня возникает вопросы:
1) Если взять цикл for(int i = 0; i < susp_cnt; i++) , то будет ли условие < i < susp_cnt > инвариантом или нет ?
2) Допустим есть цикл, где организовано шифрование заданого региона памяти, т.е. копируются какие-то байты, обрабатываются байты и ложатся в другие места, то для работы нужно чтобы указатели получателя и источника действительно существовали. Взяв это условие, о том что "указатель на источик и получатель не есть NULL" будет инвариантом ?