Припущення (англ. Assertion) (варіанти перекладу терміну: твердження, пересвідчення) в програмуванні — конструкція в мові програмування яка описує певне припущення щодо властивостей змінних або стану програми. Це припущення зазвичай повинне бути істинним. Більшість мов програмування використовують ці припущення для перевірки таких коректності даних і виконання, а деякі використовують їх для документування. Якщо припущення не виконується, це може вказувати на наявність помилки в програмі.
Рекомендоване застосування
Припущення та перевірка помилок
Важливо розрізняти помилки алгоритмів програми та помилки, які виникають під час виконання програми:
- Помилка програми є дефектом, має ніколи не виникати.
- Помилка часу виконання програми, цілком імовірно може виникнути будь-коли під час роботи програми.
Припущення не є способом обробки помилок часу виконання. Наприклад, застосування припущень для обробки введених користувачем даних є прикладом поганої розробки.
Ця конструкція може використовуватись для перевірки того, що припущення, зроблене програмістом, залишається вірним і під час роботи програми. Приклад такого застосування наведено в наступному тексті програми на мові Java:
int total = countNumberOfUsers(); if (total % 2 == 0) { // total парне } else { // total не парне assert(total % 2 == 1); }
В мові програмування Java, «%» є оператором обчислення залишку від ділення (а не ) — у випадку, якщо перший його операнд від'ємний, результат також може бути від'ємним. В цьому прикладі, програміст зробив припущення, що кількість користувачів завжди не від'ємна, і залишок від ділення на 2 завжди дорівнюватиме 0 або 1. Твердження робить це припущення явним — якщо метод countNumberOfUsers поверне від'ємне число, це свідчитиме про дефект програми.
Іноді, твердження ставлять в ті частини коду, які вважаються недосяжними. Наприклад, твердження можуть ставитись в частину default вислову switch в програмах на мовах C, , та Java. Про випадки, які програміст навмисно залишив не обробленими, буде одразу повідомлено.
Основною перевагою такого підходу є те, що у випадку, коли помилка таки дійсно виникає, вона виявляється одразу ж, замість того, аби виплисти згодом у геть іншій ділянці коду. Через те, що повідомлення про хибність твердження містить вказівку на місце в коді програми, воно може значно полегшити пошук дефектів без відладки всієї програми.
Джерела інформації
- How to use assertions in C [ 7 грудня 2006 у Wayback Machine.]
Див. також
Посилання
- Assertions in Java 5.0 [ 2 січня 2007 у Wayback Machine.](англ.)
- Python Reference Manual: (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Pripushennya angl Assertion varianti perekladu terminu tverdzhennya peresvidchennya v programuvanni konstrukciya v movi programuvannya yaka opisuye pevne pripushennya shodo vlastivostej zminnih abo stanu programi Ce pripushennya zazvichaj povinne buti istinnim Bilshist mov programuvannya vikoristovuyut ci pripushennya dlya perevirki takih korektnosti danih i vikonannya a deyaki vikoristovuyut yih dlya dokumentuvannya Yaksho pripushennya ne vikonuyetsya ce mozhe vkazuvati na nayavnist pomilki v programi Rekomendovane zastosuvannyaPripushennya ta perevirka pomilok Vazhlivo rozriznyati pomilki algoritmiv programi ta pomilki yaki vinikayut pid chas vikonannya programi Pomilka programi ye defektom maye nikoli ne vinikati Pomilka chasu vikonannya programi cilkom imovirno mozhe viniknuti bud koli pid chas roboti programi Pripushennya ne ye sposobom obrobki pomilok chasu vikonannya Napriklad zastosuvannya pripushen dlya obrobki vvedenih koristuvachem danih ye prikladom poganoyi rozrobki Cya konstrukciya mozhe vikoristovuvatis dlya perevirki togo sho pripushennya zroblene programistom zalishayetsya virnim i pid chas roboti programi Priklad takogo zastosuvannya navedeno v nastupnomu teksti programi na movi Java int total countNumberOfUsers if total 2 0 total parne else total ne parne assert total 2 1 V movi programuvannya Java ye operatorom obchislennya zalishku vid dilennya a ne u vipadku yaksho pershij jogo operand vid yemnij rezultat takozh mozhe buti vid yemnim V comu prikladi programist zrobiv pripushennya sho kilkist koristuvachiv zavzhdi ne vid yemna i zalishok vid dilennya na 2 zavzhdi dorivnyuvatime 0 abo 1 Tverdzhennya robit ce pripushennya yavnim yaksho metod countNumberOfUsers poverne vid yemne chislo ce svidchitime pro defekt programi Inodi tverdzhennya stavlyat v ti chastini kodu yaki vvazhayutsya nedosyazhnimi Napriklad tverdzhennya mozhut stavitis v chastinu default vislovu switch v programah na movah C C ta Java Pro vipadki yaki programist navmisno zalishiv ne obroblenimi bude odrazu povidomleno Osnovnoyu perevagoyu takogo pidhodu ye te sho u vipadku koli pomilka taki dijsno vinikaye vona viyavlyayetsya odrazu zh zamist togo abi viplisti zgodom u get inshij dilyanci kodu Cherez te sho povidomlennya pro hibnist tverdzhennya mistit vkazivku na misce v kodi programi vono mozhe znachno polegshiti poshuk defektiv bez vidladki vsiyeyi programi Dzherela informaciyiHow to use assertions in C 7 grudnya 2006 u Wayback Machine Div takozhassert h Peredumova formalni metodi Pislyaumova formalni metodi Vislovlyuvannya ekzistencijniPosilannyaAssertions in Java 5 0 2 sichnya 2007 u Wayback Machine angl Python Reference Manual angl