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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ Π‘ΠΈ - руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор M. УЭИВ

     ΠšΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ самим ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½ΡƒΠ»ΡŒ символ Π² ΠΊΠΎΠ½Π΅Ρ† массива. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π·Π° нас Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ scanf( ) ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строки. PRAISE - "символичСская строковая константа". НиТС ΠΌΡ‹ рассмотрим Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #define Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Π° ΠΏΠΎΠΊΠ° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ„Ρ€Π°Π·Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π° строковой константой PRAISE, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ эту Ρ„Ρ€Π°Π·Ρƒ ΠΊΠ°ΠΊ строку, ΠΈ поэтому Π² Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ† Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π½ΡƒΠ»ΡŒ-символ.

     Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ (ΠΈ это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ), Ρ‡Ρ‚ΠΎ функция scanf( ) ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ строки "Π­Π»ΠΌΠΎ Π‘Π»Π°Π½ΠΊ" Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Π­Π»ΠΌΠΎ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, встрСтив ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (ΠΏΡ€ΠΎΠ±Π΅Π», символ табуляции ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки), функция scanf( ) ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ символов, Ρ‚. Π΅. Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ опрос ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ "Π­Π»ΠΌΠΎ" ΠΈ "Π‘Π»Π°Π½ΠΊ". Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, функция scanf( ) Π²Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ слова, Π° Π½Π΅ Ρ†Π΅Π»ΡƒΡŽ Ρ„Ρ€Π°Π·Ρƒ Π² качСствС строки. Для чтСния Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² языкС Π‘ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ функция gets( ), прСдназначСнная для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ со строками ΠΌΡ‹ рассмотрим Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

     ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ строка "Ρ…" Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ символ 'x'. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅: 'Ρ…' - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· основных Ρ‚ΠΈΠΏΠΎΠ² (Char), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ "Ρ…" - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (массива элСмСнтов Ρ‚ΠΈΠΏΠ° char). Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅: "Ρ…" Π½Π° самом Π΄Π΅ Π»Π΅ состоит ΠΈΠ· Π΄Π²ΡƒΡ… символов - символа 'x' ΠΈ Π½ΡƒΠ»ΡŒ-символа.

  


                                                                    РИБ.4.3. Π‘ΠΈΠΌΠ²ΠΎΠ» 'Ρ…' ΠΈ строка "Ρ…"

Π”Π»ΠΈΠ½Π° строки - функция strlen( ) 

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ практичСски Π±Π΅Π· объяснСний использовали ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ sizeof, которая Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π±Π°ΠΉΡ‚Π°Ρ… Ѐункция strlen( ) позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки числом символов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для размСщСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² памяти отводится 1 Π±Π°ΠΉΡ‚, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ примСнСния любой ΠΈΠ· этих Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ строкС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, это Π½Π΅ Ρ‚Π°ΠΊ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π°ΡˆΡƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π½Π΅ΠΉ нСсколько строк), ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠΉΠΌΠ΅ΠΌ, Π² Ρ‡Π΅ΠΌ Π΄Π΅Π»ΠΎ.

/*ΠΏΠΎΡ…Π²Π°Π»Π° 2*/

#define PRAISE " Π’ΠΎΡ‚ это Π΄Π°, ΠΊΠ°ΠΊΠΎΠ΅ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅ имя!"

main( )

{

char name [50];

printf(" Как вас Π·ΠΎΠ²ΡƒΡ‚?\n");

scanf(" %s", name);

printf(" ΠŸΡ€ΠΈΠ²Π΅Ρ‚, %s. %s\n" , name, PRAISE);

printf(" Π’Π°ΡˆΠ΅ имя состоит ΠΈΠ· %d Π±ΡƒΠΊΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ %d ячССк памяти. \n",

strlen (name), sizeof name);

printf(" Π₯валСбная Ρ„Ρ€Π°Π·Π° состоит ΠΈΠ· %d Π±ΡƒΠΊΠ²", strlen (PRAISE));

printf(" ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ %d ячССк памяти. \n", sizeof PRAISE);

}

     Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ случайно ΠΌΡ‹ воспользовались двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² printf(). Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΌΡ‹, записав ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π² Π΄Π²ΡƒΡ… строках ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠœΡ‹ сдСлали это, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строку ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π½ΠΎ Π½Π΅ посСрСдинС строки. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС использовались Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° printf() для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строки; ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ символ "новая строка" (\n) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ…. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

Как вас Π·ΠΎΠ²ΡƒΡ‚ ?

ΠŸΠ΅Ρ€ΠΊΠΈ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠŸΠ΅Ρ€ΠΊΠΈ. Π’ΠΎΡ‚ это Π΄Π°, ΠΊΠ°ΠΊΠΎΠ΅ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅ имя!

Π’Π°ΡˆΠ΅ имя состоит ΠΈΠ· 5 Π±ΡƒΠΊΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 50 ячССк памяти.

Π₯валСбная Ρ„Ρ€Π°Π·Π° состоит ΠΈΠ· 35 Π±ΡƒΠΊΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 36 ячССк памяти.

     Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π² Ρ‡Π΅ΠΌ Π΄Π΅Π»ΠΎ. Массив name Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 50 ячССк памяти, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± этом сообщаСт опСрация sizeof. Но для хранСния ΠΈΠΌΠ΅Π½ΠΈ ΠŸΠ΅Ρ€ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ячССк, ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ± этом нас ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ функция strlen( ). Π’ ΡˆΠ΅ΡΡ‚ΠΎΠΉ ячСйкС массива name содСрТится Π½ΡƒΠ»ΡŒ-символ, ΠΈ Π΅Π³ΠΎ появлСниС слуТит сигналом для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strlen( ) ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ подсчСт символов

 


                                                           РИБ.4.4. РаспознаваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ strlen( ) ΠΊΠΎΠ½Ρ†Π° строки

     ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ константы PRAISE обнаруТиваСтся, Ρ‡Ρ‚ΠΎ функция strlen( ) ΠΎΠΏΡΡ‚ΡŒ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ число символов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ) Π² строкС. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ sizeof оказываСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большим, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом учитываСтся ΠΈ "Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ" Π½ΡƒΠ»ΡŒ-символ, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ½Π΅Ρ† строки. ΠœΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ компилятору, ΠΊΠ°ΠΊΠΎΠΉ объСм памяти ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ отвСсти для размСщСния всСй Ρ„Ρ€Π°Π·Ρ‹, ΠΎΠ½ сам подсчитываСт число символов ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

     Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ Π±Ρ‹Π»Π° использована опСрация sizeof со скобками, Π° Π² этой - Π±Π΅Π· Π½ΠΈΡ…. РСшСниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ скобки ΠΈΠ»ΠΈ Π½Π΅Ρ‚, зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ объСм памяти, ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΠΎΠ΄ элСмСнты ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΠ»ΠΈ объСм памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π²Ρ‹ писали Π±Ρ‹ sizeof(char) ΠΈΠ»ΠΈ sizeof(float), Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ - sizeof name ΠΈΠ»ΠΈ sizeof 6.28.

КОНБВАНВЫ И ΠŸΠ Π•ΠŸΠ ΠžΠ¦Π•Π‘Π‘ΠžΠ  Π―Π—Π«ΠšΠ Π‘ΠΈ

     Иногда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… константы. НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ окруТности, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

circ = 3.14 * diameter;

     ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ здСсь константа 3. 14 - извСстноС число Пи. Π§Ρ‚ΠΎΠ±Ρ‹ ввСсти Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ константу Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΅ фактичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сдСлано Π²Ρ‹ΡˆΠ΅. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ вСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто этого "символичСскиС константы", Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

circ = pi * diameter;

     Π° ΠΏΠΎΠ·ΠΆΠ΅ компилятор подставил Π±Ρ‹ Π² Π½Π΅Π³ΠΎ фактичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы.

Π’ Ρ‡Π΅ΠΌ достоинства Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, имя Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ большС, Ρ‡Π΅ΠΌ число. Π‘Ρ€Π°Π²Π½ΠΈΠΌ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

owed = 0 015 * housevl, owed = taxrate * housevl;

     Π•сли ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ понятСн.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ нСкоторая константа использовалась Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ впослСдствии Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - вСдь Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΈ Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹ (taxrate) ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, ΠΈ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ΠΊΠΎΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ собраниС приняло ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π·Π°ΠΊΠΎΠ½ Π²ΠΏΡ€Π΅Π΄ΡŒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число p Ρ€Π°Π²Π½Ρ‹ΠΌ 31/7. (Π’Π΅ΡΡŒΠΌΠ° вСроятно, Ρ‡Ρ‚ΠΎ окруТности ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈ этом ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ правосудия). Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ символичСской константы, Π° Π½Π΅ ΠΎΡ‚Ρ‹ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ случай Π΅Π΅ появлСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

     Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ константу? ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ константС. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

float taxrate, taxrate = 0 015;

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

     Π­Ρ‚ΠΎΡ‚ способ рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСпроцСссора языка Π‘ΠΈ. Π’ Π³Π». 2 ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ прСпроцСссор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #include для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, прСпроцСссор Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ константы. Для этого Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π°, содСрТащСго Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ:

#define TAXRATE  0.015

     ΠŸΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° появится пСрСмСнная TAXRATE, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 0.015. Π­Ρ‚ΠΎ называСтся подстановкой "Π²ΠΎ врСмя компиляции". К Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, всС подстановки Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΆΠ΅ сдСланы.

НСсколько Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

     Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ΄Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово #define. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с самой Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠŸΠΎΡ‚ΠΎΠΌ слСдуСт символичСскоС имя константы, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°. Π‘ΠΈΠΌΠ²ΠΎΠ» "Ρ‚ΠΎΡ‡ΠΊΠ° с запятой" Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ языка Π‘ΠΈ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ имя TAXRATE ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ прописными Π±ΡƒΠΊΠ²Π° ΠΌΠΈ? Π’ процСссС использования языка Π‘ΠΈ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°ΡΡŒ традиция ΠΏΠΈΡΠ°Ρ‚ΡŒ константы прописными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ. Если ΠΏΡ€ΠΈ просмотрС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π°ΠΌ встрСтится имя, написанноС прописными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, Π²Ρ‹ сразу ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с константой, Π° Π½Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΈ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ константы строчными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свою Π²ΠΈΠ½Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΡŽ.