Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π‘++ Π·Π° 21 дСнь.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 138

Автор ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

1. ΠšΠ°ΠΊΠΎΠ²Π° Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ шаблоном ΠΈ макросом?

2. Π’ Ρ‡Π΅ΠΌ состоит ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° шаблона ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

3. Π§Π΅ΠΌ отличаСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ друТСствСнный ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ класс ΠΎΡ‚ друТСствСнного шаблонного класса, спСциализированного ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ?

4. ΠœΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ особоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра шаблона?

5. Π‘колько статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ создано, Ссли Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса шаблона ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ статичСский Ρ‡Π»Π΅Π½?

6. Π§Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹?

7. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

УпраТнСния

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ шаблон Π½Π° основС Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса List:

class List

{

   public:

      List():head(0),tail(0),theCount(0) { }

      virtual ~List();

      void insert( int value );

      void append( int value );

      int is_present( int value ) const;

      int is_empty() const { return head == 0; }

      int count() const { return theCount; }

   private:

      class ListCell

      {

         public:

            ListCell(int value, ListCell *cell = ):val(value),next(cell){ }

            int val;

            ListCell *next;

      };

      ListCell *head;

      ListCell *tail;

      int theCount;

};

2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ (Π½Π΅ шаблонной) вСрсии класса List.

3. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ выполнСния.

4. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ списка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Ρ‚ΠΈΠΏΠ° Strings, Ρ‚ΠΈΠΏΠ° Cat ΠΈ Ρ‚ΠΈΠΏΠ° int.

5. Π–ΡƒΡ‡ΠΊΠΈ: Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅? (ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ опрСдСляСтся шаблон класса List, Π° Cat β€” это класс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… занятий.)

List<Cat> Cat_List;

Cat Felix;

CatList.append( Felix );

cout << "Felix is " << ( Cat_List.is_present( Felix ) ) ? "" : "not " << "present\n";

6. ΠŸΠžΠ”Π‘ΠšΠΠ—ΠšΠ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π΅ ΠΈΠ· самых Π»Π΅Π³ΠΊΠΈΡ…): ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Π΅ΠΌ Ρ‚ΠΈΠΏ Cat отличаСтся ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° int?

7. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ друТСствСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ operator== для класса List.

8. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ друТСствСнного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° operator== для класса List.

9. Π“Ρ€Π΅ΡˆΠΈΡ‚ Π»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ operator== Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, которая сущСствуСт Π² ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ 5?

10. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ шаблона, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ содСрТимым.

11. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ класса SchoolClass, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² листингС 19.8, ΠΊΠ°ΠΊ списка. Для добавлСния Π² список Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… студСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ push_back(). Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ списку ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ возраст ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта Π½Π° ΠΎΠ΄ΠΈΠ½ Π³ΠΎΠ΄.

12. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈΠ· упраТнСния 10 Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ студСнтС использовался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”Π΅Π½ΡŒ 20-ΠΉ. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций ΠΈ ошибок

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, прСдставлСнный Π² этой ΠΊΠ½ΠΈΠ³Π΅, Π±Ρ‹Π» создан Π² ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… цСлях. ΠœΡ‹ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ вас ΠΎΡ‚ основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² программирования, прСдставлСнных Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ ситуации. БСгодня Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

β€’ Π§Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации

β€’ ΠšΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

β€’ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ наслСдованиС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

β€’ ΠšΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΎΠ±Ρ‰Π΅ΠΉ структурС отслСТивания ΠΈ устранСния ошибок

β€’ Π§Ρ‚ΠΎ прСдставляСт собой ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Ошибки, ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ, ляпусы ΠΈ "Π³Π½ΠΈΠ»ΠΎΠΉ" ΠΊΠΎΠ΄

К соТалСнию, всС программисты Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки. Π§Π΅ΠΌ большС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния Π² Π½Π΅ΠΉ ошибок, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎ ΠΏΠΎΡ€Ρ‹ Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ. Π‘ этой ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ истиной Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ, поэтому созданиС Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ…, свободных ΠΎΡ‚ ошибок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ΄ΠΈΠ½ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ программиста, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ относящСгося ΠΊ своСму Π΄Π΅Π»Ρƒ.

Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ острых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² индустрии создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ β€” это Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½Π°Ρ„Π°Ρ€ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ошибками. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ самыС большиС расходы Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ…, связанных с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, приходятся Π½Π° тСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ исправлСниС ошибок. Π’ΠΎΡ‚, ΠΊΡ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ создания Π΄ΠΎΠ±Ρ€ΠΎΡ‚Π½Ρ‹Ρ…, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΈ Π±Π΅Π·ΠΎΡ‚ΠΊΠ°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ срок ΠΈ ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚Π°Ρ…, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡŽ Π²ΠΎ всСй индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ВсС ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° нСсколько Π³Ρ€ΡƒΠΏΠΏ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ошибок Π²Ρ‹Π·Π²Π°Π½ нСдостаточно ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ β€” синтаксичСскиС ошибки, Ρ‚.Π΅. использованиС Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄ΠΈΠΎΠΌΡ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ структуры. Π­Ρ‚ΠΈ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ошибок самыС распространСнныС, поэтому ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΈΡ… сосрСдоточСно Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ программистов.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π΅ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΆΠΈΠΌΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ обнаруТиваСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‚Π΅ΠΌ Π΄ΠΎΡ€ΠΎΠΆΠ΅ стоит Π΅Π΅ устранСниС. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΠ»ΠΈ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… дСшСвлС всСго обойдутся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² Ρ‚ΠΎΠΌ случаС, Ссли своСврСмСнно ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΈΡ… появлСния. НС слишком Π΄ΠΎΡ€ΠΎΠ³ΠΎ обойдутся ΠΈ Ρ‚Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ компилятором. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ языка C++ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ компиляторы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ошибок Π½Π° этапС компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ этап компиляции, Π½ΠΎ Π±Ρ‹Π»ΠΈ выявлСны ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΆΠ΅ тСстировании ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ рСгулярно, Ρ‚Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ устранимы, Ρ‡Π΅Π³ΠΎ Π½Π΅ скаТСшь ΠΎ "ΠΌΠΈΠ½Π°Ρ… Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ дСйствия", ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ… сСбя Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π² самый нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π•Ρ‰Π΅ большСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‡Π΅ΠΌ логичСскиС ΠΈΠ»ΠΈ синтаксичСскиС ошибки, являСтся нСдостаточная ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚.Π΅. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сносно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ, Π½ΠΎ Π΄Π°Π΅Ρ‚ сбой, Ссли ΠΏΠΎ ошибкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вмСсто числа Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π° Π±ΡƒΠΊΠ²Π°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π·Π°Π²ΠΈΡΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ памяти, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ· дисковода Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ диска, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, программисты стрСмятся ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… ситуаций. Устойчивой ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ нСоТиданностями: ΠΎΡ‚ получСния нСстандартных Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π΄ΠΎ пСрСполнСния памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вслСдствиС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ синтаксиса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, логичСскиС ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ программист Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ истолковал ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, Π½ΠΎ прСдсказуСмых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ связанных с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ рСсурсов (имССтся Π² Π²ΠΈΠ΄Ρƒ нСдостача памяти ΠΈΠ»ΠΈ дискового пространства).

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации

Для выявлСния синтаксичСских ошибок программисты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ встроСнныС срСдства компилятора ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ занятии. Для обнаруТСния логичСских ошибок проводится критичСский Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ всСстороннСС тСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Однако Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ нСльзя ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ программист, это ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊ ΠΈΡ… возникновСнию. НапримСр, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ срСдствами программирования ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΎΡ‚ программиста зависит, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² этой ситуации. МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

β€’ ΠΏΡ€ΠΈΠ²Π΅ΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌΡƒ останову;

β€’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

β€’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ;

β€’ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ бСспокоя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ПослСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‚.Π΅. Π²Ρ‹Π±ΠΎΡ€ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ, бСзусловно, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ останова ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π₯отя этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, всС-Ρ‚Π°ΠΊΠΈ стоит Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, автоматичСски, Π±Π΅Π· лишнСго ΡˆΡƒΠΌΠ° справлялся со всСми ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ситуациями ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π―Π·Ρ‹ΠΊ C++ прСдоставляСт бСзопасныС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ отслСТивания всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСсколько слов о "гнилом" кодС

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, прямо ΠΊΠ°ΠΊ яблоко Π½Π° вашСм столС, β€” Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚. Π­Ρ‚ΠΎ явлСниС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ ΠΏΠΎ Π²ΠΈΠ½Π΅ Π·Π»Ρ‹Ρ… Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΠΉ ΠΈΠ»ΠΈ Π³Ρ€ΠΈΠ±ΠΊΠΎΠ² ΠΈ Π½Π΅ ΠΈΠ·-Π·Π° ΠΏΡ‹Π»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ практичСски любой ΠΊΠΎΠ΄ содСрТит скрытыС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ошибки, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ добавляСтся Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅Π΅ нСсоотвСтствиС старой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ. ИдСально написанная ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ отлаТСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² Π±Π΅Π·Π΄Π΅Π»ΠΈΡ†Ρƒ, большС Π½Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‰ΡƒΡŽ внимания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.