~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 524EE653A21A3335F8A1F2E3D50D5421__1693402680 ✰
Заголовок документа оригинал.:
✰ Precondition - Wikipedia ✰
Заголовок документа перевод.:
✰ Предварительное условие — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Precondition ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/52/21/524ee653a21a3335f8a1f2e3d50d5421.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/52/21/524ee653a21a3335f8a1f2e3d50d5421__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:47:45 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 30 August 2023, at 16:38 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Предварительное условие — Википедия Jump to content

Предварительное условие

Из Википедии, бесплатной энциклопедии

В компьютерном программировании предусловие , — это условие или предикат который всегда должен быть истинным непосредственно перед выполнением некоторого раздела кода или перед операцией в формальной спецификации .

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

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

Пример [ править ]

Функция факториала определяется только в том случае, если ее параметром является целое число, большее или равное нулю. Таким образом, реализация функции факториала будет иметь предварительное условие, чтобы ее параметр был целым числом и чтобы этот параметр был больше или равен нулю. В качестве альтернативы можно использовать систему типов языка, чтобы указать, что параметром функции факториала является натуральное число (целое число без знака), которое может быть формально проверено автоматически с помощью средства проверки типов компилятора.

Кроме того, если числовые типы имеют ограниченный диапазон (как в большинстве языков программирования), предварительное условие должно также указывать максимальное значение, которое может иметь параметр, чтобы не произошло переполнение. (например, если реализация факториала возвращает результат в виде 64-битного целого числа без знака, тогда параметр должен быть меньше 21, поскольку факториал(21) больше максимального целого числа без знака, которое может быть сохранено в 64 битах). Если язык поддерживает подтипы диапазонов (например, Ada ), такие ограничения могут автоматически проверяться системой типов. Более сложные ограничения можно формально проверить в интерактивном режиме с помощью помощника по доказательству .

В объектно-ориентированном программировании [ править ]

Предварительные условия в объектно-ориентированной разработке программного обеспечения являются важной частью контрактного проектирования . Проектирование по контракту также включает в себя понятия постусловия и инварианта класса .

Предварительное условие для любой процедуры определяет любые ограничения на состояние объекта, необходимые для успешного выполнения. С точки зрения разработчика программы, это составляет часть контракта, касающуюся вызывающей программы. Затем вызывающая сторона обязана убедиться, что предварительное условие выполняется перед вызовом подпрограммы. Награда за усилия вызывающей стороны выражается в постусловии вызываемой процедуры . [1]

Пример Эйфелевой [ править ]

Процедура в следующем примере, написанная на Eiffel, принимает в качестве аргумента целое число, которое должно быть допустимым значением для часа дня, т. е. от 0 до 23 включительно. Предварительное условие следует за ключевым словом require. Он указывает, что аргумент должен быть больше или равен нулю и меньше или равен 23. Тег " valid_argument:" описывает это предварительное условие и служит для его идентификации в случае нарушения предварительного условия во время выполнения.

    set_hour   (  a_hour  :   INTEGER  ) 
             — Установите для `hour' значение `a_hour' 
         require 
             valid_argument  :   0   <=   a_hour   и   a_hour   <=   23 
         dohour 
             :   =   a_hour 
         убедитесь, 
             чтоhour_set  :   hour   =   a_hour 
         end 

Предварительные условия и наследование [ править ]

При наличии наследования подпрограммы, унаследованные классами-потомками (подклассами), делают это с действующими предварительными условиями. Это означает, что любые реализации или переопределения унаследованных подпрограмм также должны быть написаны в соответствии с их унаследованным контрактом. Предварительные условия можно изменить в переопределенных процедурах, но их можно только ослабить. [2] То есть переопределенный распорядок дня может уменьшить обязательства клиента, но не увеличить их.

См. также [ править ]

Ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 524EE653A21A3335F8A1F2E3D50D5421__1693402680
URL1:https://en.wikipedia.org/wiki/Precondition
Заголовок, (Title) документа по адресу, URL1:
Precondition - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)