1.4.6 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ switch
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ switch ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
switch (ch) (* case 'i': in = x; cm = x*fac; break; case 'c': in = x/fac; cm = x; break; default: in = cm = 0; break; *) ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ break ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° switch. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ Π² Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ case Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ, ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Π½ΠΈ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ default. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ default.
1.4.7 ΠΠΏΠ΅ΡΠ°ΡΠΎΡ while
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p Π½Π° Π΅Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ q Π½Π° ΡΠ΅Π»Π΅Π²ΡΡ ΡΡΡΠΎΠΊΡ. ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠ° ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Ρ ΡΠ΅Π»ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 0.
while (p != 0) (* *q = *p; // ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» q = q+1; p = p+1; *) *q = 0; // Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» 0 ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ Π½Π΅ Π±ΡΠ»
Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ»Π΅ while ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ, ΠΈ Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½ΠΎΠ»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° Π½ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅ Π΄Π°ΡΡ Π½ΠΎΠ»Ρ.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ++ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΏΡΠΎΡΡΠΈΡΡΡ:
while (*p) *q++ = *p++; *q = 0;
Π³Π΄Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ *p++ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: Β«Π²Π·ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ p, Π·Π°ΡΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ p.Β»
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΠ΅ ΡΠΏΡΠΎΡΡΠΈΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΊΠ». ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ³Π΄Π° ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΡ:
while (*q++ = *p++) ;
ΠΠ΄Π΅ΡΡ Π±Π΅ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ p, p ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΡΡΠ΄Π°, ΠΊΡΠ΄Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ q, ΠΈ q ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ, ΡΠΈΠΊΠ» ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΈ ΠΎΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. Π§ΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. Π‘++ (ΠΊΠ°ΠΊ ΠΈ C) ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π»ΡΠ±ΡΡ ΠΈ Π½Π΅Π½Π°Π²ΠΈΠ΄ΡΡ Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ*.
βΒ * Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅ expression-oriented (expression β Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅). (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)
1.4.8 ΠΠΏΠ΅ΡΠ°ΡΠΎΡ for
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΡΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ:
for (int i=0; iΒ«10; i++) q[i]=p[i];
ΠΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ int i = 0; while (iΒ«10) (* q[i] = p[i]; i++; *) Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΈΠΊΠ»ΠΎΠΌ, Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ++ ΠΊ ΡΠ΅Π»ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊ Π½Π΅ΠΉ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°. ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° for Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
for (i=0; iΒ«10; i++) q[i]=p[i];
ΡΠΎΠΆΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ i ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΠ°Π½ΡΡΠ΅.
1.4.9 ΠΠΏΠΈΡΠ°Π½ΠΈΡ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Π²Π²ΠΎΠ΄ΡΡΠΈΠΉ ΠΈΠΌΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ) ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
for (int i = 1; iΒ«MAX; i++) (* int t = v[i-1]; v[i-1] = v[i]; v[i] = t; *)
ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° for i Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π° t MAX-1 ΡΠ°Π·.
1.5 Π€ΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΈΡΠ»Π° 2:
extern float pow(float, int); //pow() ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅
main() (* for (int i=0; iΒ«10; i++) cout βΒ« pow(2,i) «« Β«\nβ; *)
ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ β Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, ΡΡΠΎ pow β ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° float ΠΈ int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ float. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ .
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ pow(12.3,"abcd") Π²ΡΠ·ΠΎΠ²Π΅Ρ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Β«abcdΒ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ, Π° Π½Π΅ int. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ pow(2,i) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ 2 ΠΊ ΡΠΈΠΏΡ float, ΠΊΠ°ΠΊ ΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ pow ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
float pow(float x, int n) (* if (n Β« 0) error(βsorry, negative exponent to pow()β); // ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ pow() switch (n) (* case 0: return 1; case 1: return x; default: return x*pow(x,n-1); *) *) ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π΅Ρ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ) ΠΈ ΡΠΈΠΏΡ ΠΈ ΠΈΠΌΠ΅Π½Π° Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° return.
Π Π°Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΈΠ½ΠΎΠ³Π΄Π° Π»ΡΡΡΠ΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π°. ΠΡΠ»ΠΈ ΡΠΈΠΏΡ ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½Ρ, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΈΡ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π½ΡΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΎΠΆΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅ΡΡΡΡ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π΄ΡΡΠ³Π°Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ:
overload pow; int pow(int, int); double pow(double, double); //... x=pow(2,10); y=pow(2.0,10.0);
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ overload pow;
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ pow Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌ.
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ void:
void swap(int* p, int* q) // ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ (* int t = *p; *p = *q; *q = t; *)
1.6 Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Π‘++ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. Π§ΡΠΎΠ±Ρ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½Π΅Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
extern double sqrt(double); extern instream cin;
Π‘Π°ΠΌΡΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² β ΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌΠΈ (ΠΈΠ»ΠΈ Ρ Π΅Π΄Π΅Ρ) ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈΡΡ, ΡΠΎ Π΅ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΠΎ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π³Π΄Π΅ Π½ΡΠΆΠ½Ρ ΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ sqrt Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ math.h, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ ΠΈΠ· 4, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
#include Β«math.hΒ» //... x = sqrt(4);
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π»Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ inline-ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (#1.12) ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (#1.3.1). ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π², Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ°Ρ . ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ include ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Β«math.hΒ», ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Ρ ΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ (ΡΠ°ΡΡΠΎ ΡΡΠΎ /usr/include/CC), Π½Π° ΡΠ°ΠΉΠ»Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ ΡΡΡΠ»Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π½, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
#include Β«math1.hΒ» #include Β«/usr/bs/math2.hΒ»
Π²ΠΊΠ»ΡΡΠΈΡ math1.h ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π° math2.h ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /usr/bs.
ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π° Π΅Π΅ ΠΏΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ. Π€Π°ΠΉΠ» header.h ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΈΠΏΡ:
// header.h
extern char* prog_name; extern void f();
Π ΡΠ°ΠΉΠ»Π΅ main.c Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
// main.c
#include Β«header.hΒ» char* prog_name = Β«Π΄ΡΡΠ°ΡΠΊΠΈΠΉ, Π½ΠΎ ΠΏΠΎΠ»Π½ΡΠΉΒ»; main() (* f(); *)
Π° ΡΠ°ΠΉΠ» f.c ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ:
// f.c
#include Β«stream.hΒ» #include Β«header.hΒ» void f() (* cout Β«β prog_name «« Β«\nβ; *)