рдЬрд╝реЛрд░ред рдпрд╣ рдХреНрдпрд╛ рд╣реИ

рдореБрдЦрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдордирдорд╛рдиреЗ рдбреЗрдЯрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдЧрд▓рдд рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЬреАрдм, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдбрд┐рдЬрд╛рдЗрди - рд╕рдмрд╕реЗ inopportune рдкрд▓ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрднрд┐рднреВрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ? рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рддреБрд░рдВрдд "рднрд░" рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕рдХреЗ рдмрд╛рдж рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреГрд╢реНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗред рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреНрд╖рдг рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рд╡рд╣ рдЦреБрдж "рдХреЗрд╡рд▓" рдЧрд┐рд░ рдЬрд╛рдПред рдпрд╛ рдЖрдк рд╕рдорд▓реИрдВрдЧрд┐рдХ рдЕрд╢реНрд▓реАрд▓ рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдкреВрд░реА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдВрдк рдХрд░реЗрдВред рдЗрд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рд▓реЛрдХрдкреНрд░рд┐рдп рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ (рдЙрд░реНрдл рд╕реА, рд╕реА ++)ред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЦрд░ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдмрдЧ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЧрд▓рдд рдбреЗрдЯрд╛ рд╣реБрдЖред рдпрд╣реА рдЙрд╕рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдЬрд╛рд╡, рд╕реА #, рд╕реА, рдФрд░ рдЕрдЬрдЧрд░ рд╕рд╣рд┐рдд рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджрд╛рд╡реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рд╣реИрдВ?
рдЬреЛрд░ рдЖрдк рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдЪреЗрдХ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ - рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рди рдЪреЗрдХ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдЕрднрд┐рдХрд░реНрдордХ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореБрдЦрд░ рд╣реЛрдиреЗ рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╣реА рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред

рдореБрдЦрд░ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдпрджрд┐ рдХрд┐рд╕реА рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдорд╛рдиреНрдп рдореВрд▓реНрдп рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд╣реАрдВ рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рдкрд╛рд╕ рдЬрд╣рд╛рдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рд╡рд╣рд╛рдВ рдХреАрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
//    n. //  n      0  10 . int factorial(int n) { //      assert(n >= 0); //  n  10,        //  ,    . assert(n <= 10); if (n < 2) { return 1; } return factorial(n - 1) * n; } //  ''    factorial()    //    0  99. // //   factorial()      , //          . // //     ,       // ,         //   . for (int i = 0; i < 100; ++i) { a[i] = factorial(i); } 

рдкреВрд░реНрдгрд╛рдВрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреНрдпрд╛ рд╣реИред
рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреНрдпрд╛ рд╣реИред

рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ (рдЙрд░реНрдл рдЗрд╕ рдФрд░ рд╕реЗрд▓реНрдл) рдХреЛ рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдбреЗрдЯрд╛ рдпрд╛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕реНрдХреЛрдк рд╕реЗ рднреА рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рдореБрдЦрд░рддрд╛ рдХреА рдорджрдж рд╕реЗ рдЗрди рддрд░реНрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреА рдЙрдЪрд┐рдд рд╣реИред
рдпрджрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 int factorial(int n) { int result = 1; for (int i = 2; i <= n; ++i) { result *= i; } //         -   //    .    n   // ,   .    // a[i]      . // //          , //      n,    //    . assert(result > 0); return result; } 


рдордирдорд╛рдиреА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдЕрдВрдХрдЧрдгрд┐рдд рдХреНрдпрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд (рд╕реАрдзреЗ рдпрд╛ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ) рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдпрд╛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕реНрдХреЛрдк рд╕реЗ рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдореЗрдВ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪреЗрдХ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреАрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 int factorial(int n) { int result = 1; while (n > 1) { //      . // //      ,      //     n,   . // //   ,      (  //  ), ..      result, //         ,  //    (  )   // result  . assert(result <= INT_MAX / n); result *= n; --n; } return result; } 


рдореБрдЭреЗ рдХрдм рдФрд░ рдХрд╣рд╛рдБ рдореБрдЦрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЬрд╡рд╛рдм рд╕рд░рд▓ рд╣реИ - рдЬрдм рднреА рдФрд░ рдЬрд╣рд╛рдВ рднреА рд╡реЗ рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рдЙрдкрдпреЛрдЧреА рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛрд░ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡реЗ рдХреЛрдб рдореЗрдВ рдмрдЧреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдкрд╖реНрдЯ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдмрд╛рдж рдХреЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд╕рдореЗрдВ рд░реЗрдВрдЧ рд╕рдХрддрд╛ рд╣реИред рдбрд░реЛ рдордд рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрдбрд░реНрд╕ рдХреЛрдб рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдВрдЧреЗред рдореБрдЦрд░ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рдЧрд╛рдП рдЧрдП рджрд╛рд╡реЗ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдореБрдЦрд░рддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рддрд╛рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЙрдирдХрд╛ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗред рдЖрдо рддреМрд░ рдкрд░ рдЬреЛрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо OOP рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рдВрдкрд░рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдЙрджреНрдпрдо рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ , рддреЛ рдореБрдЦрд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдЬрдм рдореИрдВ рдЬреЛрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЦрд░рддрд╛ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдмрдЧ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрднрд┐рдХрд░реНрдордХреЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирд╛, рддреЛ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ 100500 рджрд╛рд╡реЗ рд╢рд╛рдорд┐рд▓ рдереЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ред рд╕рдордп рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдЬреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛрдиреЗ рд▓рдЧреАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдмрдЧ рдкрдХрдбрд╝рдиреЗ рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рдмрд┐рдирд╛ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
рдЖрдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХреЛрдВ рдХреА рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЬрд╛рдВрдЪ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд░рдЦрдХрд░ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдлреВ () рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрд╛рд░ () рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдлреВ () рдореЗрдВ рдЗрд╕ рддрд░реНрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рд░ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдк рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЬреЛрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЗрди рдореБрдЦрд░рддрд╛ рдХреЗ рддрддреНрдХрд╛рд▓ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рджреБрд░реНрдШрдЯрдирд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреНрд░реИрд╢ рд╕реЗ рдЖрдк рдмрдЧ рдХрд╛ рд╢реАрдШреНрд░ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢реЛрдзрдкрддреНрд░реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ NULL рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдФрд░ рд╡рд┐рднрд╛рдЬрди рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рднрдХреНрдд рдХреЗ рд╢реВрдиреНрдп рдорд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ - рдРрд╕реЗ рдЪреЗрдХ рдХреЗрд╡рд▓ рддрднреА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд░рдирдЯрд╛рдЗрдо рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдмрдЧ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рджрдХреНрд╖рддрд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдПрд╕реЛрд░реНрд╕реНрдЯреЛрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрд╡рдЧрдд рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдореИрдВ рдХрд┐рд╕ рд╕рдордп рдореБрдЦрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЦрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдореБрдЦрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореБрдЦрд░ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдореБрдЦрд░ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рджрд╛рд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
 //   . // //  0,      -  : // -    . // - mtx     . //  1,    . int acquire_mutex(mutex *mtx); //   . // //  0,      -  // : // -    . // - mtx     . //  1,    . int release_mutes(mutex *mtx); // ,   . assert(acquire_mutex(mtx)); //   , "" . process_data(data_protected_by_mtx); // ,   . assert(release_mutes(mtx)); 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬрдм рдбреЗрдЯрд╛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдбреЗрдЯрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореБрдЦрд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 int is_success; is_success = acquire_mutex(mtx); assert(is_success); //        assert'. process_data(data_protected_by_mtx); is_success = release_mutex(mtx); assert(is_success); 


рдХреНрдпреЛрдВрдХрд┐ рдореБрдЦрд░ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмрдЧ (рдЙрд░реНрдл рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ) рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реИ, рдлрд┐рд░ рд╡реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 //   buf_size  ,    buf, //     connection. // //  0    ,     . , //       . //  1     . int write(connection *connection, const void *buf, size_t buf_size); int is_success = write(connection, buf, buf_size); // "",    . assert(is_success); 


рдпрджрд┐ рд▓рд┐рдЦрдирд╛ () рд░рд┐рдЯрд░реНрди 0 рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рдмрдЧ рд╣реИред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рджреБ: рдЦрдж рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореБрдЦрд░ () рдпрд╣рд╛рдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдпрд╣рд╛рдВ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 while (!write(connection, buf, buf_size)) { //          . close_connection(connection); connection = create_connection(); } 


рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЬреЛрд░ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореБрдЦрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╕рдорд░реНрдерди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╣рд╛рдВ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди":

 function assert(condition) { if (!condition) { throw "Assertion failed! See stack trace for details"; } } assert(2 + 2 === 4); assert(2 + 2 === 5); 


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрднрд┐рдХрд░реНрдордХреЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╡рд┐рднрд┐рдиреНрди рдЪреМрдЦрдЯреЗ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдЙрдореНрдореАрдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЬреЛрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмреАрдЪ рдХрдИ рд╕рдорд╛рдирддрд╛рдПрдВ рд╣реИрдВ - рджреЛрдиреЛрдВ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рджрд╛рд╡реЗ рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдордЬрдмреВрддред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд░рдЦрд╛ рдЬреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рдкрд░реАрдХреНрд╖рдг, рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪреЗрдХ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ рдЕрднрд┐рдХрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреЗрдХ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рднреА рдЪреЗрдХ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдкрд╛рдд рдмрдирд╛рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In141080/


All Articles