ΠΠ°ΠΊΡΠΎΡΡ ΠΈ C++ | Microsoft Docs
- Π§ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 2Β ΠΌΠΈΠ½
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅
C++ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ANSI C. ΠΡΠΈ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠ°.
Π C++ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ,
constΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ . ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΎ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ ΠΎ ΡΠΈΠΏΠ΅ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°#defineΠ΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠΎΡΠ½Ρ ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡconst, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ.ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ C++ Π²ΡΡΠ΅ΡΠ½ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠΈΠΏΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π½ΠΈΠΆΠ΅.
Π’ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π’ΠΈΠΏΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΠΎ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΊΡΠΎΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π² Π²ΠΈΠ΄Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°Π½ΡΠ°, ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ __inline, _ _forceinline.
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ Π² ANSI C ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ C++, ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π΄Π»Ρ Microsoft C++.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
ΠΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΠ°ΠΊΡΠΎΡΡ (C/C++)
c β ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Ρ ΠΌΠ°ΠΊΡΠΎΡΡ C?
ΠΠ°ΠΊΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π£ΡΡΠΈ ΡΡΠΎ:
- ΠΠΎΠ½ΡΡΠ°Π½ΡΡ C ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ C ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- ΠΠ°ΠΊΡΠΎΡΡ Π‘ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠΈΠΌΠ΅Ρ: make Arch = arm (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ ΠΊΠ°ΠΊ cc -DARCH = arm)
ΠΡΠΎΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ: (ΠΠ· glibc limit.h ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ long)
#if __WORDSIZE == 64
#define LONG_MAX 9223372036854775807L
#else
#define LONG_MAX 2147483647L
#endif
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ #define __WORDSIZE) Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ 32 ΠΈΠ»ΠΈ 64 Π±ΠΈΡ. Π ΠΌΡΠ»ΡΡΠΈΠ±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ -m32 ΠΈ -m64 ΠΌΠΎΠ³ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΈΡΠΎΠ².
(ΠΠ°ΠΏΡΠΎΡ Π²Π΅ΡΡΠΈΠΈ POSIX)
#define _POSIX_C_SOURCE 200809L
ΠΠ°ΠΏΡΠΎΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ POSIX 2008. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ (Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅) ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΏΡΠΈΠΌΠ΅Ρ: getline (), no gets () ΠΈ Ρ.Π΄.). ΠΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ #error Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ±ΠΎΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
(ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΡΡ)
#ifndef LIBRARY_PATH
#define LIBRARY_PATH "/usr/lib"
#endif
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ -DLIBRARY_PATH =/home/user/lib. ΠΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ» const char *, ΠΊΠ°ΠΊ Π±Ρ Π²Ρ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ?
(pthread.h, ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ)
# define PTHREAD_MUTEX_INITIALIZER \
{ { 0, 0, 0, 0, 0, 0, { 0, 0 } } }
ΠΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΈΠ½Π°ΡΠ΅, ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΎ (Π²ΡΠ΅Π³Π΄Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ). ΠΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ).
Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠ»ΠΎΡ ΠΈΠ΅ ΡΡΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΡΠΎΡΡ-ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π³Π΄Π΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΏΠ°ΠΌΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ, Π° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½Ρ.
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΏΡΠΎΡΠΈΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ? ΠΡΠ²Π΅Ρ — Π΄Π°, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΡΡΠ°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ.
ΠΠ°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ — ΡΡΠΎ… Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠ°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ?
ΠΠ°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡΒ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Π‘ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ°ΠΊΡΠΎΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ISO/IEC 9899:1999 (C99) ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ Π² 1999. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π² ISO/IEC 14882:2011 (C++11) ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C++ Π² 2011 Π³ΠΎΠ΄Ρ[1].
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡ ΠΎΠΆ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΏΡΠΎΠΏΡΡΠΊ Β«…Β» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ. ΠΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° __VA_ARGS__ Π² ΡΠΏΠΈΡΠΊΠ΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΈ ΠΏΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
GNU Compiler Collection, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0, C++ Builder 2006 ΠΈ Visual Studio 2005 [1] ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C++. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, GCC ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Objective-C.
ΠΡΠΈΠΌΠ΅Ρ
ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ printf-ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ dprintf(), ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ:
void realdprintf (char const *file, int line, char const *fmt, ...); #define dprintf(...) realdprintf(__FILE__, __LINE__, __VA_ARGS__)
dprintf() ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΊΠ°ΠΊ:
ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ:
realdprintf(__FILE__, __LINE__, "Hello, world");
ΠΈΠ»ΠΈ:
dprintf("%d + %d = %d", 2, 2, 5);
ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ:
realdprintf(__FILE__, __LINE__, "%d + %d = %d", 2, 2, 5);
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΠ²ΡΠ·ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
#ifdef TRACING #define TRACE(_p) printf _p #else #define TRACE(_p) #endif
ΠΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ TRACING ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π²ΡΠ·ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠ° TRACE Π±ΡΠ΄Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ printf:
TRACE(("ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° %d\n", __LINE__));
ΠΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ TRACING Π½Π΅ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» stdargs ΡΠ·ΡΠΊΠΎΠ² Π‘ΠΈ/C++ ΠΈ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ vprintf.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
- ΠΠ°ΡΠΈΠ°ΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
- β Working draft changes for C99 preprocessor synchronization — http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ
ΠΠ°ΠΊΡΠΎΡΡ Π² Π‘
ΠΠ° ΡΡΠ΅Π½ΠΈΠ΅ 5 ΠΌΠΈΠ½ ΠΡΠΎΡΠΌΠΎΡΡΠΎΠ² 42 ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄Β C ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π²Β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux, ΠΎΠ½Β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ΄ CΒ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΒ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π° C.Β ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° C.Β ΠΠ°Β Π²ΡΠ΅ΠΌ ΡΠ·ΡΠΊΠ΅Β C ΠΌΠ°ΠΊΡΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π·Π°Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΊΠ° ΠΈΒ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ΄Π°. ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠ°ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΒ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Β«#Β», ΠΈΒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΒ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²Β C, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡΒ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π²Β ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ: Π΅ΡΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΄Π°Π²Π°Π»ΠΈΡΡ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎ, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΎΡΠ±ΡΠΎΡΠ΅Π½Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΌΠ°ΠΊΡΠΎΡΡ: ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ
ΠΠ°ΠΊΡΠΎΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠ°ΠΊ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Linux ΠΈΒ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π²Β Π½Π΅Π΅. ΠΠ°Β ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠ°ΡΡΠΈ ΠΌΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ UbuntuΒ 20.04Β Linux. ΠΠΎΡΠ»Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π° Π²Β ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, Π½Π°ΠΆΠ°Π² Β«Ctrl + Alt + TΒ» ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠΈΡΠΊΠ° Π²Β ΠΎΠ±Π»Π°ΡΡΠΈ Β«ΠΠ΅ΠΉΡΡΠ²ΠΈΡΒ».
ΠΡΠΈΠΌΠ΅Ρ 1
ΠΡΠ°ΠΊ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» ΡΠΈΠΏΠ° CΒ Β«test.cΒ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π΄Π°ΠΊΡΠΎΡ GNU Nano Editor. ΠΡΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux.
Π€Π°ΠΉΠ» ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π±ΡΡΡΡΠΎ. ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Β«stdio.hΒ». ΠΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π°Β ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅. ΠΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ #define ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«newΒ» ΡΠΎΒ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«42Β». ΠΡΒ Π½Π΅Β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΒ ΡΠΎΡΠΊΠΎΠΉ ΡΒ Π·Π°ΠΏΡΡΠΎΠΉ Π²Β ΠΊΠΎΠ½ΡΠ΅. ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Β«;Β» Π²Β ΠΌΠ°ΠΊΡΠΎΡΠ°Ρ . Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Β«ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉΒ» ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΒ ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ°ΡΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«newΒ» ΡΒ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π² ββΠ½Π΅ΠΉ. Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΒ Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ Π²Β ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΡΠ΅ΡΠ΅Π· Β«Ctrl + SΒ» ΠΈΒ Β«Ctrl + XΒ» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ°ΠΉΠ»Π° ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Β Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ·ΡΠΊΠ° C.Β ΠΠ°Β ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΌΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Β«gccΒ». ΠΡΠ»ΠΈ Π²ΡΒ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π²Β ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
$Β sudoΒ aptΒ installΒ gcc
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΡΒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΒ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Β«gccΒ». ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΒ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Β Π±ΡΠ»ΠΎ; ΠΌΡΒ Π·Π°ΠΏΡΡΡΠΈΠΌ Π½Π°Ρ ΡΠ°ΠΉΠ» ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«a.outΒ», ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½Π°Β ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ 2
Π’Π΅ΠΏΠ΅ΡΡ ΡΒ Π½Π°Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡΒ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ. ΠΡΠ°ΠΊ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠΎΡΒ ΠΆΠ΅ ΡΠ°ΠΉΠ», ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½Π°ΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ val ΡΠΎΒ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ float Β«5.765Β» Π²Β ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° Π²Β Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ½ΡΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° float, Β«rΒ» ΠΈΒ Β«aΒ», Π±ΡΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎΒ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«rΒ» Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π΄ΠΈΡΡ, Π°Β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«aΒ» Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Β«ΠΏΠ»ΠΎΡΠ°Π΄ΡΒ». ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π²Π²Π΅ΡΡΠΈ ΡΠ°Π΄ΠΈΡΡ ΠΏΠΎΒ ΡΠ²ΠΎΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ. Π‘ΡΡΠΎΠΊΠ° scanf ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π° ΠΎΡΒ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΒ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΈΒ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ ΠΊΒ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«rΒ». ΠΡΒ Π²ΡΡΠΈΡΠ»ΡΠ»ΠΈ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Β«Π°Β», Π²ΡΡΠΈΡΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΒ ΡΠ°Π΄ΠΈΡΡ, Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π²Β ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½Π°Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π°Β ΡΠΊΡΠ°Π½Π΅ Π²Β Π²ΠΈΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠ΅ΡΠ°ΡΠΈ.
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ Β«gccΒ».
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΈΒ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ°Π΄ΠΈΡΡ ΠΏΠΎΒ Π·Π°ΠΏΡΠΎΡΡ, ΠΈΒ ΠΎΠ½Β ΡΠ°ΡΡΡΠΈΡΠ°Π΅Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π΄Π»Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ
ΠΒ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΌΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ.
ΠΡΠΈΠΌΠ΅Ρ 1
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΒ C test.c, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄.
Π€ΡΠ½ΠΊΡΠΈΡ Β«ΡΠ»ΠΈΡΠ½ΠΈΠ΅Β» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ ΡΒ Π΄Π²ΡΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π²Β ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅. ΠΡΒ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡ-ΡΡΠ½ΠΊΡΠΈΠΈ #define, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π½Π΅Β ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ Π±Π΅Π· Π½Π΅Π΅. ΠΡΠ°ΠΊ, ΠΌΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Β«a ## bΒ». ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π²Β ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Β ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ°ΡΠΈ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Β«gccΒ».
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° Β«test.cΒ» Π²ΡΒ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π²Β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ 2
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ. ΠΠ°Β ΡΡΠΎΡ ΡΠ°Π· ΠΌΡΒ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠΌ. ΠΡΠΊΡΠΎΠΉΡΠ΅ C-ΡΠ°ΠΉΠ» Β«test.cΒ».
ΠΡΒ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ MACRO, Π²Β ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«aΒ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π°Β Β«limΒ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ° Β«aΒ» ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Β«limΒ», ΠΎΠ½Β Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΡΡΠΎΠΊΡ Β«AqsaΒ» ΠΈΒ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β«aΒ». ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«aΒ», Π°Β ΠΌΠ΅ΡΠΎΠ΄ MACRO ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«8Β», ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ Π²Β Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«limΒ», ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Β Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΡΡΠΎΠΊΡ Β«8Β» ΡΠ°Π·.
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π·:
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΡΡΠΎΠΊΠ° Β«AqsaΒ» ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ 8Β ΡΠ°Π·.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΒ ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡΒ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅, ΡΠ°ΠΊ ΠΈΒ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ. ΠΡΒ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΠΎΠ½Β ΡΠ°Π·Π²Π΅Π΅Ρ Π²ΡΠ΅ Π²Π°ΡΠΈ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ ΠΈΒ ΠΏΡΠΎΡΡΠ½ΠΈΡ Π²Π°ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΒ ΠΌΠ°ΠΊΡΠΎΡΠ°Ρ Β C.
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
Π§ΡΠΎΠ±Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²Π°ΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ (ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠΎΠ·Π³).- ΠΠ°ΠΊΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
#define X 100
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π°: const int X = 100;
- ΠΠ°ΠΊΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ) Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΡ
ΠΎΡ ΡΠΈΠΏΠ°
#define max(X,Y) (X>Y?X:Y)
Π Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈΠ»ΠΈ, Π² ΡΠ·ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ°ΠΊΡΠΎΡ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ ΠΏΠΎ ΡΠΈΠΏΡ, ΠΎΠ½ΠΈ Π½Π΅ Π΄Π°Π΄ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈΠ»ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
- ΠΠ°ΠΊΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΡΠ»ΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
#define p printf
ΠΡΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, p()ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π² C (ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ va_arg()ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ), Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ·ΡΠΊΠ΅, Π° Π½Π΅ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ·ΡΠΊΠ΅, ΠΏΡΠΎΡΠ΅, ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ Π΄ΡΡΠ³ΠΈΡ
, ΡΠΈΡΠ°ΡΡΠΈΡ
ΠΊΠΎΠ΄. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π»ΡΠ·Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠΎ , Π³Π΄Π΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ , ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ #if( ΠΈ Ρ.Π΄.).
ΠΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ Ρ Π½Π΅ Π±ΡΠ΄Ρ ΡΠΏΠΎΡΠΈΡΡ Ρ Π²Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π½Π΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π² Java). ΠΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ, ΠΊΠ°ΠΊ D, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ, ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ.
1.19. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ°. C++. Π‘Π±ΠΎΡΠ½ΠΈΠΊ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ²
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π²ΡΡΠ°ΠΆΠ°ΡΡ Π½Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ΄ Β«Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉΒ» ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΠΎΠ³Π΄Π° Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΏΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ,
4.1.1 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
4.1.1 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΠ½Π΄Π΅ΠΊΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΈ ΡΠ΄ΡΠΎ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΈΡΠΊΠΎΠ²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ:β’ ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΡΠ°ΠΉΠ»Π°. ΠΡΠ°Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ IP ΠΏΠΎ ICQ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ IP ΠΏΠΎ ICQ Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ IP ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ ΠΎΠ±ΡΠ°Π΅ΡΡΡ Ρ Π²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ICQ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ UIN2IP (http://neptunix.narod.ru/uin.htm).ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ UIN2IP:βΒ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΡΠ°;βΒ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ° Π² Π±ΡΡΠ΅Ρ ΠΏΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ
2.2.1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
2.2.1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠΌΡΡΠ»Π΅, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π°Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° β ΡΡΠΎ Π²ΠΈΠ΄ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΠΊΠ»Π°ΠΌΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΎΠ± Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΡ , ΡΠ΅ΠΊΠ»Π°ΠΌΠ° ΡΠΎΡΠΎΠ²ΡΡ
ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°
ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².* ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°.* ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π²Π°Ρ Π±ΡΠ΄ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠΈ
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠ° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Visual Basic
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠ° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Visual Basic ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ Π·Π°ΠΏΠΈΡΠ°Π½, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ VBA-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΏΡΠΎΡΡΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΡΡΠΎΠΊΠΈ Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°). ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.1. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π‘Π΅ΡΠ²ΠΈΡ=ΠΠ°ΠΊΡΠΎΡ=ΠΠ°ΠΊΡΠΎΡΡ ΠΈΠ»ΠΈ
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ°
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΠ°ΠΏΡΡΠΊ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈΠ· Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΠ°ΠΊΡΠΎΡ Π²ΡΡΠ΄ Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ.ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°ΠΊΠΎΠΉ.1. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠ»Ρ ΠΠΌΡ.2. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ.ΠΡ ΠΊΠ°ΠΊ, ΠΊΡΡΡΠΎ? ΠΠ°ΠΊ
ΠΠΎΠΈΡΠΊ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΠ°ΠΊΡΠΎΡ
ΠΠΎΠΈΡΠΊ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΠ°ΠΊΡΠΎΡ Π Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΠ°ΠΊΡΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ VBA-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²) ΠΌΠΎΠ³ΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ±ΠΈΠ²Π°ΡΡ Ρ ΡΠΎΠ»ΠΊΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΌ Π΅Π΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ.Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π»Ρ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ Ρ ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.1. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΠ°Π·Π½Π°ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ. ΠΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Word Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° (ΡΠΈΡ. 9.3). Π ΠΈΡ. 9.3.
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌ ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.1. Π Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°
ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°
ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ Π·Π°ΠΊΡΠΎΠ΅ΡΠ΅ ΠΎΠΊΠ½Π° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΈΠ΄ Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π²
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΊΠ½Π° ΠΠ°ΠΊΡΠΎΡ
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΊΠ½Π° ΠΠ°ΠΊΡΠΎΡ ΠΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, Π½ΠΎ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΎΠΊΠ½Π° ΠΠ°ΠΊΡΠΎΡ. Π§ΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΠ°ΠΊΡΠΎΡΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π»Π΅Π½ΡΡ ΠΈΠ»ΠΈ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡΠ°ΡΠΈΠΈ Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²ΠΈΠ΄. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π² Π³Π»Π°Π²Π΅ 7 ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡ ΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ , Π½ΠΎ
ΠΠ°ΠΊΡΠΎΡΡ: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²
8. ΠΠ°ΠΊΡΠΎΡΡ: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ° Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π΄Π°ΡΡ Π²Π°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π½ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Common Lisp Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ Π² C, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π° Lisp ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π° C ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ C. ΠΠ°ΠΊΡΠΎΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΠΎΠ²Π΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ Π²Π°Ρ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΡΠ°Π·ΠΈΡΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΌΡΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π½ΠΈ ΠΏΠ°ΡΠ°Π΄ΠΎΠΊΡΠ°Π»ΡΠ½ΠΎ, ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ·ΡΠΊ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΠ½ΠΈ ΠΊΠ°ΠΆΡΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ β ΠΎΠ½ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΠΠΈΡΠΏ, ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡ ΠΎΠ΄ΡΡΠ²Π°, ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΡΡΠΎΠ²Π½Π΅ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ Π²ΠΈΠ΄ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΡΠ·ΡΠΊ ΡΡΠ°Π½Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠΌ. Π Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π»ΠΈΡΠΏΠ΅ΡΠΎΠ² ΡΡΠΎ ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΏΡΡΠ°Π½ΠΈΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΠΉ Π² ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²Π°ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ, Π½Π°ΠΏΡΠ°Π²Π»ΡΡ Π²Π°ΡΠΈ ΠΌΡΡΠ»ΠΈ ΠΊΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΡΡΠ»ΠΎ.
ΠΡΡΠΎΡΠΈΡ ΠΠ°ΠΊΠ°: ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠ°ΠΊΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ
ΠΠΎΠ³Π΄Π°-ΡΠΎ, Π΄Π°Π²Π½ΡΠΌ-Π΄Π°Π²Π½ΠΎ, ΠΆΠΈΠ»Π°-Π±ΡΠ»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Lisp ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ, ΡΡΠΎ Π² Lisp Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π²ΡΠ΅ ΡΠΎ, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅, ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ Π΄Π΅Π»ΠΎΠΌ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π² ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π±ΡΠ»ΠΈ Ρ ΠΎΡΡ ΠΈ Π±Π»Π΅ΡΡΡΡΠΈ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ Π»Π΅Π½ΠΈΠ²Ρ. ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΠΎΠΌΠΈΡΠ΅Π»Π΅Π½, ΠΎΠ½ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠ΄. Π Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠ·-Π·Π° ΡΠ²ΠΎΠ΅ΠΉ Π»Π΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½Π°Π·Π°Π΄ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ . ΠΡΠΊΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° Π±ΠΎΠ»ΡΡΡΡ ΠΊΡΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠ³ Π·Π°ΠΏΡΡΡΠΈΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π±ΡΠ» ΠΏΠΎΠ»ΠΎΠ½ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ.
Π ΠΎΡΡΠ°ΡΠ½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΠΎΡΡ Π½Π°Π½ΡΠ» ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ (junior) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΠ°ΠΊΠ°, ΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΡΠ°Π» ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΡΠ°Π²ΠΊΠ° Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Π΅Π΄Ρ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅ ΠΌΠΎΠ³ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ, ΠΠ°ΠΊ Π½Π΅ Π·Π½Π°Π», ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΡ Π½Π° ΠΈΡ Π²Ρ ΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ°Π» ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΠΈ ΠΏΠΎΡΡΠ»Π°Π» Π΅Π³ΠΎ Π½Π°Π·Π°Π΄ ΡΠΎΠ·Π΄Π°Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ°ΠΊΠ° Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠΊΠΎΡΠ΅ Π±ΡΠ»ΠΈ Π΄ΠΎΠ΄Π΅Π»Π°Π½Ρ, ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»Π° ΡΠΉΠΌΡ Π΄Π΅Π½Π΅Π³ ΠΏΡΠΎΠ΄Π°Π²Π°Ρ ΠΈΡ : ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅Π½Π΅Π³, ΡΡΠΎ ΡΠΌΠΎΠ³Π»Π° ΡΠ΄Π²ΠΎΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π΄ΡΠΌΠ°Π» Π½Π°Π½ΠΈΠΌΠ°ΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π² ΠΏΠΎΠΌΠΎΡΡ ΠΠ°ΠΊΡ; Π²ΡΠΊΠΎΡΠ΅ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π΄ΡΠΆΠΈΠ½Π°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΠ°ΠΊ Π²Π½Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΡΡΠ΅ΡΠ°Π» ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΠΎ ΠΎΡΡΡΠ»Π°Π» Π΅Π³ΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠΎΠΉ ΠΠ°ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΆΠ΄Π°Π» ΠΎΡΠ²Π΅ΡΠ° Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄ΠΎΠΌ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Ρ ΡΡΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΠ°ΠΊΡ Π±ΡΠ»ΠΎ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ°ΠΊ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ³, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ Π±ΡΠ»ΠΈ ΡΡΠ½Ρ, ΠΎΠ½ Π΄ΠΎΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠ΅ΠΌ ΡΠΎΡΠ½Π΅Π΅ ΠΎΠ½ΠΈ ΠΏΠΈΡΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΠ°ΠΊ Π²Π΅ΡΠ½Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ°ΠΊ-ΡΠΎ ΡΠ°Π· ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π²ΡΡΡΠ΅ΡΠΈΠ² Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π² ΡΠ»ΠΎΠ²Π°Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡΡΠΈΠ» Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Lisp, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ» ΡΠ΄ΠΎΠ±Π΅Π½ ΠΠ°ΠΊΡ: ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΡΠ»Π°Π» ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π²ΡΡΠ°Π²ΠΈΠ» Π² ΡΠ°ΠΌΡΠΉ Π²Π΅ΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅, Π³Π»Π°ΡΠΈΠ²ΡΠ΅Π΅: «ΠΠ°ΠΊ, Π½Π΅ ΠΏΠΈΡΠΈ Π·Π΄Π΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΠΈ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅; Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ²ΠΎΠΈΡ
ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
.» ΠΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π³Π»Π°ΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: «ΠΠ°ΠΊ, Π·Π°ΠΌΠ΅Π½ΠΈ ΡΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ x ΠΈ y ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.»
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠ»ΡΡ ΡΠ°ΠΊ Π±ΡΡΡΡΠΎ, ΡΡΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π½Π΅ΠΉ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΡΠ°Π»ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΡΠΆΠΈΠ½Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ΠΎΠΌ Π² Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ . Π§ΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΠ°ΠΊΡ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ: «Definition for Mac, Read Only» (ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΠ°ΠΊΠ°, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ). ΠΡΠΎ (ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π±ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Π»Π΅Π½ΠΈΠ²Ρ) Π±ΡΡΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ Π΄ΠΎ «DEF. MAC. R/O», Π° ΠΏΠΎΡΠΎΠΌ Π΄ΠΎ «DEFMACRO».
ΠΡΠ΅Π½Ρ ΡΠΊΠΎΡΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π΄Π»Ρ ΠΠ°ΠΊΠ° Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ. Π¦Π΅Π»ΡΠΌΠΈ Π΄Π½ΡΠΌΠΈ ΠΎΠ½ ΡΠΈΡΠ°Π» ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π» Π½Π° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ DEFMACRO ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ·ΡΠ²Π°Π» ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² DEFMACRO. Π’Π°ΠΊ ΠΊΠ°ΠΊ Lisp ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΠΈ Π²ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΌΠΈ ΠΏΠΈΡΡΠΌΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»Π° Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π£ ΠΠ°ΠΊΠ° Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΡΠ°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΎΠ½ ΡΠΈΠ΄Π΅Π» Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ ΠΈ Π³ΡΠ΅Π·ΠΈΠ» ΠΎ Π±Π΅Π»ΡΡ ΠΏΠ΅ΡΡΠ°Π½ΡΡ ΠΏΠ»ΡΠΆΠ°Ρ , ΡΠΈΡΡΠΎΠΉ Π³ΠΎΠ»ΡΠ±ΠΎΠΉ ΠΎΠΊΠ΅Π°Π½ΡΠΊΠΎΠΉ Π²ΠΎΠ΄Π΅ ΠΈ Π½Π°ΠΏΠΈΡΠΊΠ°Ρ Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌΠΈ Π±ΡΠΌΠ°ΠΆΠ½ΡΠΌΠΈ Π·ΠΎΠ½ΡΠΈΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠΏΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΡΠΎΠ·Π½Π°Π»ΠΈ ΡΡΠΎ ΠΠ°ΠΊΠ° ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π». ΠΡΠΈΠ΄Ρ Π² Π΅Π³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ, ΠΎΠ½ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΠΊΡΡΡΠΎ ΡΠΎΠ½ΠΊΠΈΠΌ ΡΠ»ΠΎΠ΅ΠΌ ΠΏΡΠ»ΠΈ, ΡΡΠΎΠ» ΡΡΡΠΏΠ°Π½ Π±ΡΠΎΡΡΡΠ°ΠΌΠΈ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠΎΠΏΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ , Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π²ΡΠΊΠ»ΡΡΠ΅Π½. ΠΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ! ΠΠ°ΠΊ Π΅ΠΌΡ ΡΡΠΎ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ? ΠΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π» Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅: Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ° Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ ΠΠ°ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ» ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ DEFMACRO ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π½Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ Π±ΠΎΡΡΠ°ΠΌ, ΡΡΠΎ ΠΠ°ΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΏΠΎ ΡΠ΅ΠΉ Π΄Π΅Π½Ρ: ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π°ΡΠΏΠ»Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ»Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΎΡΠΊΡΡΡΠΊΠΈ ΡΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΠΏΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ°Π½Ρ, ΡΠΎ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ.
ΠΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ»ΡΡΠΎΠΌ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ (ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ), ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅). ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°ΡΠΊΡΡΡΡ, Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π°. ΠΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²; ΠΎΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ.
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ΅ΠΌΡΡ ΠΎΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΠ°ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠ³ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π», ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π²Ρ ΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π½ΠΈΡ , ΠΊΠΎΠ΄, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ²Π»ΡΡΡΠΈΠΌΠΈΡΡ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π΄Π΅-ΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
(defun foo (x)
Β Β (when (> x 10) (print 'big)))
ΠΠ±ΡΡΠ½ΠΎ Π²Ρ Π±Ρ Π΄ΡΠΌΠ°Π»ΠΈ ΠΎ x ΠΊΠ°ΠΊ ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ foo. ΠΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ WHEN) Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π½Π΅Ρ Π²ΡΠ·ΠΎΠ²Π° foo ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ x. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² WHEN, ΡΠ²Π»ΡΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ Lisp, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ (> x 10) ΠΈ (print 'big). ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ WHEN ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, ΠΊΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(defmacro when (condition &rest body)
Β Β `(if ,condition (progn ,@body)))
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° foo, ΠΌΠ°ΠΊΡΠΎΡ WHEN Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΎΡΠΌΠ°ΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ condition Π±ΡΠ΄Π΅Ρ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠΎΡΠΌΠΎΠΉ (> x 10), Π° ΡΠΎΡΠΌΠ° (print 'big) Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΡΠ°Π½Π° (will be collected) Π² ΡΠΏΠΈΡΠΎΠΊ (ΠΈ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ), ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° &rest body. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΡΠ΅ΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
(if (> x 10) (progn (print 'big)))
ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ condition, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»Π΅ΠΈΠ²Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ body Π² PROGN.
ΠΠΎΠ³Π΄Π° Lisp ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ «ΠΏΠ΅ΡΠ΅ΠΏΠ»Π΅ΡΠ΅Π½Ρ» Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (temporally intertwined). Π’Π°ΠΊΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠ·ΡΠΊΠ° Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ°ΡΡ Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ ΠΈ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΠΈ ΠΈΡ Π²ΡΡΡΠ΅ΡΠ΅. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½Π΅Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Lisp, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΎΡΠΌΡ ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΈ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΎΡΠ° Π²ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π° Π½Π΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
DEFMACRO
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 3, ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΡΠΌ DEFMACRO, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, «DEFine MACRO», Π° Π½Π΅ «Definition for Mac». ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ DEFMACRO ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ DEFUN.
(defmacro name (parameter*)
"Optional documentation string."
body-form*)
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΌΠ°ΠΊΡΠΎΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ, ΡΠΏΠΈΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Π»Π°, ΡΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Lisp 1). ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ, β Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
ΠΠ°ΠΊΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡ ΠΌΠΎΡΡ Lisp ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Ρ ΡΠΌΠΎΠ³Ρ Π΄Π°ΡΡ Π»ΠΈΡΡ ΠΎΠ±Π·ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΎΡ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ Π΄ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ .
ΠΠ°Π΄Π°ΡΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ° (Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΎΡΠΌΡ Lisp, ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ°) Π² ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ½ΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ, ΡΠΎ Π΅ΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ°. Π Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π· Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΊΠΎΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΈΡΠ΅ ΠΏΡΡΠ΅ΠΌ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ°.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ° Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ½Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ: Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ ΠΈ ΡΠΎ, ΠΎΡΠΊΡΠ΄Π° Π΄Π²ΠΈΠΆΠ΅ΡΠ΅ΡΡ, ΠΈ ΡΠΎ, ΠΊΡΠ΄Π°, Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΈ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΊΡΡΡΡΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΈ Π΅Π³ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅, Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΠ°Π³Ρ: ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π°-ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°, Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π½Π° Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°. Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠ°ΠΌΠΈ Π±ΡΠ΄ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ, Π½Π΅Ρ «ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΊ» Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ «Π΄ΡΡΡΠ²ΡΠ΅» Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ Π±ΡΠ΄ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ°ΠΊ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΌΠ°ΠΊΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ «ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡ» Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², Π²ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π²ΡΡΠ²Π»ΡΡΡ ΠΈΡ . Π― ΠΎΠ±ΡΡΠΆΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΠΈ «Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΊ».
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ°Π³ΠΈ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
1. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΡΠΊΡΡΡ (ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅).
2. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΡΠ½ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΏΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ·ΠΎΠ²Π°.
3. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π΅ «ΠΏΡΠΎΡΠ΅ΠΊΠ°Π΅Ρ».
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°: do-primes
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎΡ ΡΡΡΡ
ΡΠ°Π³ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ, Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ do-primes, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ DOTIMES ΠΈ DOLIST, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»Π°ΠΌ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»Π°ΠΌ. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΎΠ½ β Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ Π΄Π²Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΎΠ΄Π½Π° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΡΡΠΌ, ΠΈ Π²ΡΠΎΡΠ°Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎΠ΅ Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ «Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»Ρ».
(defun primep (number)
Β Β (when (> number 1)
Β Β Β Β (loop for fac from 2 to (isqrt number) never (zerop (mod number fac)))))(defun next-prime (number)
Β Β (loop for n from number when (primep n) return n))
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ. Π‘Π»Π΅Π΄ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅, ΠΎΡΠ΅ΡΡΠ΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΡΠΊΡΡΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ Π½Π°ΡΠ°Π»ΠΈ Ρ ΠΌΡΡΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
(do-primes (p 0 19)
Β Β (format t "~d " p))
Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅Π»ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½ΠΎΠ³ΠΎ 0 ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½ΠΎΠ³ΠΎ 19, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ p Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² DOLIST ΠΈ DOTIMES; ΠΌΠ°ΠΊΡΠΎΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π·ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π²ΠΎΠ΄ΡΡ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° do-primes Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ DO (ΠΈ Π΄Π²ΡΡ
Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠ°Π½Π΅Π΅) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(do ((p (next-prime 0) (next-prime (1+ p))))
Β Β Β Β ((> p 19))
Β Β (format t "~d " p))
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ°ΠΊΡΠΎΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π² ΠΌΠ°ΠΊΡΠΎΡ, ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Lisp, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ. ΠΠ»Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½, ΡΡΠΎΡ ΡΠ°Π³ ΡΡΠΈΠ²ΠΈΠ°Π»Π΅Π½: ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π·Π°Ρ Π²Π°ΡΠ° Π½ΡΠΆΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ do-primes. ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° do-primes ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΊΠ»Π°, p; Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, 0; Π²Π΅ΡΡ
Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, 19. ΠΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°ΡΠΊΡΡΡΠΈΠ΅, ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅, Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² Π½Π΅ΠΌ: ΡΡΠΈ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ ΠΈ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ do-primes Ρ Π΄Π²ΡΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ²ΡΠΉ Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ &rest Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° ΡΠΎΡΠΌ ΡΠ΅Π»Π° ΡΠΈΠΊΠ»Π°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(defmacro do-primes (var-and-range &rest body)
Β Β (let ((var (first var-and-range))
Β Β Β Β Β Β Β Β (start (second var-and-range))
Β Β Β Β Β Β Β Β (end (third var-and-range)))
Β Β Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var))))
Β Β Β Β Β Β Β Β Β ((> ,var ,end))
Β Β Β Β Β Β Β ,@body)))
ΠΡΠ΅Π½Ρ ΡΠΊΠΎΡΠΎ Ρ ΠΎΠ±ΡΡΡΠ½Ρ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅; ΡΠ΅ΠΉΡΠ°Ρ ΠΆΠ΅ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ var, start ΠΈ end, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· var-and-range, ΠΈ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅Π΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ do-primes.
ΠΠ΄Π½Π°ΠΊΠΎ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ var-and-range Π²ΡΡΡΠ½ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ°Π·Π±ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΏΠΈΡΠΎΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΡΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΡ.
ΠΠ½ΡΡΡΠΈ ΡΠΏΠΈΡΠΊΠ° Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, Π·Π°ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌ ΡΡΠΈΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ var-and-range ΡΠΏΠΈΡΠΊΠΎΠΌ (var start end) ΠΈ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ° Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΡΠΈ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΡΡΠ³ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ &body ΠΊΠ°ΠΊ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ &rest. Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ &body ΠΈ &rest ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡ, Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° &body Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ &body ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π·Π°Ρ Π²Π°ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΡΠΎΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π»ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»ΡΡΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° do-primes ΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ (ΠΊΠ°ΠΊ Π»ΡΠ΄ΡΠΌ, ΡΠΈΡΠ°ΡΡΠΈΠΌ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΠ°ΠΊ ΠΈ Π²Π°ΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ) ΠΎΠ± Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ:
(defmacro do-primes ((var start end) &body body)
Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var))))
Β Β Β Β Β Β Β ((> ,var ,end))
Β Β Β Β Β ,@body))
Π ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠΈ ΠΊ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ: ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ do-primes, Lisp Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΠΈ Π²ΡΠ΄Π°Π²Π°ΡΡ Π²Π°ΠΌ ΡΠ°Π·ΡΠΌΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
(ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»ΡΠΌ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²). Π’Π°ΠΊΠΆΠ΅, ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ SLIME, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π²Π°ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΠ΅ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ° Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ°. Π‘ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ SLIME Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²Π°ΠΌ, ΡΡΠΎ do-primes Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(do-primes var-and-range &rest body)
Π‘ Π½ΠΎΠ²ΡΠΌ ΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΎΠ½Π° ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(do-primes (var start end) &body body)
Π‘ΠΏΠΈΡΠΊΠΈ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ &optional, &key ΠΈ &rest, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ Π²Π°ΠΌ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ do-primes.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ do-primes ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π²ΡΡ ΡΡΠΎ Π²Π°ΠΌ ΠΎΡΡΠ°ΡΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΡΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π² ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ.
ΠΠ»Ρ ΠΏΡΠΎΡΡΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ do-primes, Π»ΡΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΠΎΡΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ «ΡΠ°ΡΠΊΠ°Π²ΡΡΠΈΡΡ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π²Π°ΡΡΡ ΠΈΡ
Π·Π°ΠΏΡΡΠΎΠΉ, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΠΊ «at» (@). ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° «at» Π·Π°ΠΏΡΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΠΉ ΠΏΠΎΠ΄Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎ Π·Π½Π°ΠΊΠΎΠΌ «at» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, «Π²ΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΡΡΡ» Π² ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ «ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ»: ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, `(,a b) Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ (list a ‘b). Π‘ΡΠ°Π½Π΄Π°ΡΡ ΡΠ·ΡΠΊΠ° Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΄Π°Π²Π°ΡΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ.
Π’Π°Π±Π»ΠΈΡΠ° 8-1 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌ ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΌ ΡΠΏΠΈΡΠΊΠΈ ΠΊΠΎΠ΄ΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°2):
| Π’Π°Π±Π»ΠΈΡΠ° 8-1. ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ||
|---|---|---|
| Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΊΠΈ ΠΊΠΎΠ΄ | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ |
| `(a (+ 1 2) c) | (list ‘a ‘(+ 1 2) ‘c) | (a (+ 1 2) c) |
| `(a ,(+ 1 2) c) | (list ‘a (+ 1 2) ‘c) | (a 3 c) |
| `(a (list 1 2) c) | (list ‘a ‘(list 1 2) ‘c) | (a (list 1 2) c) |
| `(a ,(list 1 2) c) | (list ‘a (list 1 2) ‘c) | (a (1 2) c) |
| `(a ,@(list 1 2) c) | (append (list ‘a) (list 1 2) (list ‘c)) | (a 1 2 c) |
ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½ΠΎΡΠ°ΡΠΈΡ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ. ΠΠΎ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ. ΠΠ»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΎ, ΡΡΠ°Π²Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΡ do-primes Ρ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΊΠΈ ΠΊΠΎΠ΄:
(defmacro do-primes-a ((var start end) &body body)
Β Β (append '(do)
Β Β Β Β Β Β Β Β Β Β (list (list (list var
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β (list 'next-prime start)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β (list 'next-prime (list '1+ var)))))
Β Β Β Β Β Β Β Β Β Β (list (list (list '> var end)))
Β Β Β Β Β Β Β Β Β Β body))
ΠΠ°ΠΊ Π²Ρ ΠΎΡΠ΅Π½Ρ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ΠΊΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ do-primes Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ. ΠΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ Π΅Ρ (ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΡΠΎ ΠΈ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ do-primes Π² REPL ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΈ Π² ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΡΡΡ
ΡΠΈΡΠ΅Π».
CL-USER> (do-primes (p 0 19) (format t "~d " p))
2 3 5 7 11 13 17 19
NIL
ΠΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π² Π½Π° ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. Π€ΡΠ½ΠΊΡΠΈΡ MACROEXPAND-1 ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Lisp Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π³Π° ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°3). Π’Π°ΠΊ ΠΊΠ°ΠΊ MACROEXPAND-1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, Π΄Π»Ρ Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΅ΠΉ ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΡΠΎΡΠΌΡ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ MACROEXPAND-1 Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°4).
CL-USER> (macroexpand-1 '(do-primes (p 0 19) (format t "~d " p)))
(DO ((P (NEXT-PRIME 0) (NEXT-PRIME (1+ P))))
((> P 19))
(FORMAT T "~d " P))
T
Π’Π°ΠΊΠΆΠ΅, Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Π² SLIME Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ² ΠΊΡΡΡΠΎΡ Π½Π° ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² Π²Π°ΡΠ΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ Π½Π°Π±ΡΠ°Π² C-c RET Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Emacs slime-macroexpand-1, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΡΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² MACROEXPAND-1 ΠΈ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ (Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²ΡΡΡΠ½ΡΡ) ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ΠΌ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ do-primes ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΊ
Π ΡΠ²ΠΎΠ΅ΠΌ ΡΡΡΠ΅ «ΠΠ°ΠΊΠΎΠ½ Π΄ΡΡΡΠ²ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ» ΠΠΆΠΎΡΠ» Π‘ΠΏΠΎΠ»ΡΡΠΊΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΡΠ΅ΡΠΌΠΈΠ½ «Π΄ΡΡΡΠ²ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ» Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΡ «ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡ» Π΄Π΅ΡΠ°Π»ΠΈ, Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΌΠ°ΠΊΡΠΎΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ Π½Π΅ «ΠΏΡΠΎΡΠ΅ΠΊΠ°Π΅Ρ»5)
ΠΠ°ΠΊ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ «ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡ» ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡΡ ΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. Π ΡΡΠ°ΡΡΡΡ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠ΅Ρ ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΈΡ .
Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π΄Π°Π΅Ρ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
«ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΊ» ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΡΠΌΡ end ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ Π²ΡΠ·Π²Π°Π»ΠΈ do-primes Ρ ΡΠ°ΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ (random 100), Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° end Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π°, ΡΠ°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ 19.
(do-primes (p 0 (random 100))
Β Β (format t "~d " p))
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»Π°ΠΌ ΠΎΡ Π½ΡΠ»Ρ Π΄ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ (random 100). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ MACROEXPAND-1.
CL-USER> (macroexpand-1 '(do-primes (p 0 (random 100)) (format t "~d " p)))
(DO ((P (NEXT-PRIME 0) (NEXT-PRIME (1+ P))))
Β Β Β Β ((> P (RANDOM 100)))
Β Β (FORMAT T "~d " P))
T
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΡΠ°ΡΠΊΡΡΡΠΈΡ RANDOM Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠΊΠ° p Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΡΠΎΡ ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ»ΡΡΠΈΡΡΡ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ p. Π₯ΠΎΡΡ ΠΎΠ±ΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ, ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ½ΠΎΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΌΡ ΠΎΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² RANDOM.
ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΎΠΉ» Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΡΠΌΠ° end Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ do-primes. ΠΠΎ ΡΡΠΎ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ: ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΡΠ°Π²ΠΈΠ»ΠΎ ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π£Π΄ΠΈΠ²Π»Π΅Π½ΠΈΡ. Π ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ, Π±ΡΠ΄ΡΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·, ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ6). ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ do-primes ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² DOTIMES ΠΈ DOLIST, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ ΡΠΎΡΠΌΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΡΠΌ ΡΠ΅Π»Π°, ΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΎΡ do-primes ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ: Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ end ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π² ΡΠΈΠΊΠ»Π΅ DO ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΡΠΎΡΠΌΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π±Π΅Π· ΡΠΎΡΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ:
(defmacro do-primes ((var start end) &body body)
Β Β `(do ((ending-value ,end)
Β Β Β Β Β Β Β Β (,var (next-prime ,start) (next-prime (1+ ,var))))
Β Β Β Β Β Β Β ((> ,var ending-value))
Β Β Β Β Β ,@body))
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ Π΄Π²Π΅ Π½ΠΎΠ²ΡΠ΅ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ» Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π½Π°ΡΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ.
ΠΠ΄Π½Π° ΠΈΠ· ΡΡΠΈΡ
«ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΊ» ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΡΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠΈΠΊΠ»Π° DO Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, ΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ end, Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ ΠΊΠ°ΠΊ start, ΡΠΎ Π΅ΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠ΄ΡΡ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠ° «ΠΏΡΠΎΡΠ΅ΡΠΊΠ°» Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠΊΠ° start ΠΈ end ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π°ΠΌΠΈ Π²ΡΠΎΠ΄Π΅ 0 ΠΈ 19. ΠΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΡ
Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ½ΠΎΠ²Π° Π½Π°ΡΡΡΠ°Π΅Ρ ΠΡΠ°Π²ΠΈΠ»ΠΎ ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π£Π΄ΠΈΠ²Π»Π΅Π½ΠΈΡ.
ΠΡΠ° «ΠΏΡΠΎΡΠ΅ΡΠΊΠ°» ΡΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
(defmacro do-primes ((var start end) &body body)
Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var)))
Β Β Β Β Β Β Β Β (ending-value ,end))
Β Β Β Β Β Β Β ((> ,var ending-value))
Β Β Β Β Β ,@body))
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ «ΠΏΡΠΎΡΠ΅ΡΠΊΠ°», ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ, Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ending-value. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π΄Π΅ΡΠ°Π»ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠΏΠΈΡΡ Π²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΈΠ»ΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ, ΠΊΠ°ΠΆΡΡΠΈΠΉΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ, Π²ΡΠ·ΠΎΠ² do-primes Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ·-Π·Π° Π΄Π°Π½Π½ΠΎΠΉ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ»:
(do-primes (ending-value 0 10)
Β Β (print ending-value))
Π’ΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°:
(let ((ending-value 0))
Β Β (do-primes (p 0 10)
Β Β Β Β (incf ending-value p))
Β Β ending-value)
Π ΡΠ½ΠΎΠ²Π° MACROEXPAND-1 ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
(do ((ending-value (next-prime 0) (next-prime (1+ ending-value)))
Β Β Β Β Β (ending-value 10))
Β Β Β Β ((> ending-value ending-value))
Β Β (print ending-value))
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Lisp ΠΌΠΎΠ³ΡΡ ΠΎΡΠ²Π΅ΡΠ³ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ending-value ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ-ΠΆΠ΅ ΡΠΈΠΊΠ»Π° DO. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΡΠΎ ΠΊΠΎΠ΄ Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ending-value Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ.
ΠΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(let ((ending-value 0))
Β Β (do ((p (next-prime 0) (next-prime (1+ p)))
Β Β Β Β Β Β Β (ending-value 10))
Β Β Β Β Β Β ((> p ending-value))
Β Β Β Β (incf ending-value p))
Β Β ending-value)
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π°ΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ending-value, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LET ΡΠ½Π°ΡΡΠΆΠΈ ΡΠΈΠΊΠ»Π° ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π½ΡΡΡΠΈ DO,
ΡΠΎ ΡΠΎΡΠΌΠ° (incf ending-value p) ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π° ending-value Π²ΠΌΠ΅ΡΡΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»7).
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ» β ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ½Π°ΡΡΠΆΠΈ ΠΊΠΎΠ΄Π°, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π΄Π°ΡΡ Π²Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ΅Π±Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π³Π»Π°Π²Π΅ 21. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π€ΡΠ½ΠΊΡΠΈΡ GENSYM Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ²ΠΎΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅. Π’Π°ΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π±ΡΠ» ΠΏΡΠΎΡΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ ΡΡΠ΅Π½ΠΈΡ Lisp ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ (isn’t interned) Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½ Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΡΡ
ΠΈΠΌΠ΅Π½ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ending-value, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΠΈ do-primes.
(defmacro do-primes ((var start end) &body body)
Β Β (let ((ending-value-name (gensym)))
Β Β Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var)))
Β Β Β Β Β Β Β Β Β Β (,ending-value-name ,end))
Β Β Β Β Β Β Β Β Β ((> ,var ,ending-value-name))
Β Β Β Β Β Β Β ,@body)))
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ GENSYM Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ; ΠΎΠ½ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½Π½ΡΠΌ ΡΠ½Π°ΡΠ°Π»Π°: ending-value-name ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° var, ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ var Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠΌΠ° ΠΌΠ°ΠΊΡΠΎΡΠ° Π±ΡΠ»Π° ΠΏΡΠΎΡΠΈΡΠ°Π½Π°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ending-value-name Π±ΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠ°.
Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²Π΅ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΡΠΎΡΠΌΡ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΠ΅ΡΠ²Π°Ρ ΡΠΎΡΠΌΠ°:
(do-primes (ending-value 0 10)
Β Β (print ending-value))
ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
(do ((ending-value (next-prime 0) (next-prime (1+ ending-value)))
Β Β Β Β Β (#:g2141 10))
Β Β Β Β ((> ending-value #:g2141))
Β Β (print ending-value))
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gensym ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ, #:g2141. ΠΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, G2141, Π±ΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GENSYM, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΡΠΎ; Π²Π°ΠΆΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Ρ
ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ Π΄Π»Ρ Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ #:.
ΠΡΠΎΡΠ°Ρ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½Π°Ρ ΡΠΎΡΠΌΠ°:
(let ((ending-value 0))
Β Β (do-primes (p 0 10)
Β Β Β Β (incf ending-value p))
Β Β ending-value)
ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΌΠ΅Π½Ρ do-primes Π΅Π³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(let ((ending-value 0))
Β Β (do ((p (next-prime 0) (next-prime (1+ p)))
Β Β Β Β Β Β Β (#:g2140 10))
Β Β Β Β Β Β ((> p #:g2140))
Β Β Β Β (incf ending-value p))
Β Β ending-value)
Π ΡΠ½ΠΎΠ²Π°, ΡΡΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ending-value, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΠΈΠΊΠ» do-primes ΡΠΎΡΠΌΠΎΠΉ LET, Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΡΠΊΡΡΡΠΈΡ.
ΠΠ΅ Π²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·ΠΎΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ; ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΊ «ΠΏΡΠΎΡΠ΅ΡΠΊΠ΅» Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ. ΠΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ Π²Π΅Π·Π΄Π΅ Π΄Π»Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ.
ΠΡΠΈΠΌ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡ ΡΡΡΡΠ°Π½ΠΈΠ»ΠΈ Π²ΡΠ΅ «ΠΏΡΠΎΡΠ΅ΡΠΊΠΈ» Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ do-primes. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌΠΈ «ΠΏΡΠΎΡΠ΅ΡΠΊΠ°ΠΌΠΈ» ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:
- ΠΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½Π°ΡΠ΅, Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΡΠΌΡ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ Π½Π° ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ ΠΈΠ΄ΡΡ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ°ΠΊΡΠΎΡΠ°.
- ΠΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½Π°ΡΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΡΠΌΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π»ΠΈΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ, ΠΏΡΡΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠΈ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅Π·Π΄Π΅ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠΈ, Π³Π΄Π΅ Π½ΡΠΆΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠΎΡΠΌ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ GENSYM Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠΈ.
ΠΠ°ΠΊΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°Π΄Π°ΡΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ², Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π° ΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΡ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ do-primes, Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ LET, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π²ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠ°ΡΠΊΡΡΡΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π°ΠΌ Π½Π΅ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°?
Π ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ with-gensyms, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ: ΠΌΠ°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΌΠΎΠ³ΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΡΠ±ΠΈΠ²Π°ΡΡ Ρ ΡΠΎΠ»ΠΊΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ ΠΏΡΠΈΠ²ΡΠΊΠ½Π΅ΡΠ΅ ΠΊ Π»Π΅Π³ΠΊΠΎΠΌΡ ΡΠΌΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠΎΠ²Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°, with-gensyms Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅Π΅Π½ ΠΈ ΠΏΠΎΡΠ»ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΠΌ Π½Π΅ΠΏΠΎΠΌΠ΅ΡΠ½ΡΡ
ΡΠΌΡΡΠ²Π΅Π½Π½ΡΡ
ΡΡΠΈΠ»ΠΈΠΉ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:
(defmacro do-primes ((var start end) &body body)
Β Β (with-gensyms (ending-value-name)
Β Β Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var)))
Β Β Β Β Β Β Β Β Β Β (,ending-value-name ,end))
Β Β Β Β Β Β Β Β Β ((> ,var ,ending-value-name))
Β Β Β Β Β Β Β ,@body)))
ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ do-primes, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, with-gensyms Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡ Π² LET, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ending-value-name Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°-ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
(defmacro with-gensyms ((&rest names) &body body)
Β Β `(let ,(loop for n in names collect `(,n (gensym)))
Β Β Β Β Β ,@body))
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ LOOP. ΠΡΠΎΡ ΡΠΈΠΊΠ» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ
ΡΠΎΡΠΌ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
with-gensyms ΠΈΠΌΠ΅Π½, Π° ΡΠ°ΠΊΠΆΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (gensym). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ LOOP Π² REPL, Π·Π°ΠΌΠ΅Π½ΠΈΠ² names ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
CL-USER> (loop for n in '(a b c) collect `(,n (gensym)))
((A (GENSYM)) (B (GENSYM)) (C (GENSYM)))
ΠΠΎΡΠ»Π΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ
ΡΠΎΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»Π° LET Π²ΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ body with-gensyms. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ· ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΠ΅ Π² with-gensyms, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ with-gensyms.
ΠΡΠ»ΠΈ Π²Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ macro-expand Π΄Π»Ρ ΡΠΎΡΠΌΡ with-gensyms Π² Π½ΠΎΠ²ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ do-primes, ΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:
(let ((ending-value-name (gensym)))
Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var)))
Β Β Β Β Β Β Β Β (,ending-value-name ,end))
Β Β Β Β Β Β Β ((> ,var ,ending-value-name))
Β Β Β Β Β ,@body))
ΠΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ. Π₯ΠΎΡΡ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ, ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡ: ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ DEFMACRO do-primes, ΡΠΎΡΠΌΠ° with-gensyms ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ do-primes Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ LET Π²ΡΡΡΠ½ΡΡ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ do-primes, ΡΠΎ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ do-primes Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ with-gensyms, Π½ΠΎ ΡΠ°ΠΌ with-gensyms ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΡΠΌΡ do-primes Π½Π΅ Π½ΡΠΆΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠΆΠ΅ Π±ΡΠ» ΡΠ°ΡΠΊΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ do-primes.
ΠΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡΡ: ONCE-ONLY
ΠΡΡΠ³ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ once-only, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°, Π²ΡΡΠΈΡΠ»ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ once-only Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ do-primes ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ «ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡΡΡ» Π²Π΅ΡΡΠΈΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(defmacro do-primes ((var start end) &body body)
Β Β (once-only (start end)
Β Β Β Β `(do ((,var (next-prime ,start) (next-prime (1+ ,var))))
Β Β Β Β Β Β Β Β Β ((> ,var ,end))
Β Β Β Β Β Β Β ,@body)))
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ once-only Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½Π° Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ «ΡΠ°ΡΠΊΠ°Π²ΡΡΠΈΠ²Π°Π½ΠΈΡ». ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ°ΠΊΡΠΎΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(defmacro once-only ((&rest names) &body body)
Β Β (let ((gensyms (loop for n in names collect (gensym))))
Β Β Β Β `(let (,@(loop for g in gensyms collect `(,g (gensym))))
Β Β Β Β Β Β `(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
Β Β Β Β Β Β Β Β ,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
Β Β Β Β Β Β Β Β Β Β Β ,@body)))))
ΠΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΠ°ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π±ΡΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΈΠ·Π±Π°Π²Π»ΡΡΡΠΈΠΌΠΈ Π²Π°Ρ ΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π½Π°Π±ΠΎΡΡ ΡΠ΅ΠΊΡΡΠ°, Π½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΡΡΠ»Π΅ΠΉ. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π²Π°ΠΌ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΠΌΡΡΠ»ΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ Π±Π΅Π· ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². Π Π²Ρ Π½Π°ΡΠ½Π΅ΡΠ΅ ΠΏΡΡΠΌΠΎ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊΡΠΎΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C
ΠΠ°ΠΊΡΠΎΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C — ΡΡΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ. ΠΠΎΠ³Π΄Π° ΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C.Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
START Π¦ΠΠΠΠ n = 5;
PRINT (Β«ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ n ΡΠ°Π²Π½ΠΎ% dΒ», n);
ΠΠΠΠΠ¦
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ C.
ΠΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
// ΠΡΠΈΠΌΠ΅Ρ1.c#define START int main () {
#define END}
#define INTEGER int
#define PRINT (A, B) printf (A, B)
START
INTEGER n = 5;
PRINT (Β«ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ n ΡΠ°Π²Π½ΠΎ% dΒ», n);
ΠΠΠΠΠ¦
ΠΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΎΡΡ START, INTEGER, PRINT ΠΈ END Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΈ ΠΊΠΎΠ΄ ΡΡΠ°Π» Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ C. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΠΊΡΡΡΠΈΡ Π²ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²:
1.ΠΠ°ΠΊΡΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
#define macro_name macro_value
- ΠΠ°ΠΊΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ #define
- macro_name — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ°
- macro_value — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ ΠΎΠ΄Π½Π° ΡΡΡΠΎΠΊΠ° ΠΈ ΡΠ΅Π»ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ°ΠΌΠΈ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ (;) Π² ΠΊΠΎΠ½ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
#define macro_name macro_value1 \macro_value2 \
macro_value3
#define MAX 200
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ.
//Example2.c// # include
#define MAX 200
int main ()
{
printf («ΠΠΠΠ‘ΠΠΠΠΠ¬ΠΠΠ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:% d», ΠΠΠΠ‘);
Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
}
Π Exapmle2.c MAX — ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ. ΠΠ· Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ MAX Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 200 .
2. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
#define ΠΈΠΌΡ_ΠΌΠ°ΠΊΡΠΎΡΠ° () Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅_ΠΌΠ°ΠΊΡΠΎΡΠ°
ΠΈΠΌΡ_ΠΌΠ°ΠΊΡΠΎΡΠ° — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠ°.ΠΠ°ΡΠ° ΡΠΊΠΎΠ±ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π° ββΠΏΠΎΡΠ»Π΅ macro_name . ΠΠ΅ΠΆΠ΄Ρ macro_name ΠΈ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ². ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΡΠΎΠΌ ΡΠΈΠΏΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
//Example3.c
#define add (x, y) x + y
int main ()
{
int a;
float b;
a = Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (4,5);
b = Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (2.5,3.6)
Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
}
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Example3.c ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ C, ΠΌΠ°ΠΊΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π½Π΅ Π²ΡΡΠΈΡΠ»ΡΡ Π΅Π³ΠΎ. ΠΡΠ°ΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ°ΠΊΡΠΎΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΏΡΠΎΠ±Π΅Π» ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ C, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎ.
//Example4.c
#define add (x, y) x + y
int main ()
{
int a;
float b;
a = Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (4,5);
b = Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (2.5,3.6)
}
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ 4 .c ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ add Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° (x, y) x + y. Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ.
3. ΠΠ°ΠΊΡΠΎΡ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠΊΠ΅Π½Π°:
Π ΡΠ·ΡΠΊΠ΅ C Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠΊΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ##. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΎΠΊΠ΅Π½Π° Π² ΠΎΠ΄ΠΈΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½.
ΠΡΠΈΠΌΠ΅Ρ:
//Example5.c
#define MARGE (x, y) x ## y
int main ()
{
int num = MARGE (52,34);
Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
}
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
//Example6.c
#define MARGE (x, y) x ## y
int main ()
{
int num = MARGE (52, +);
Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
}
Π Example6.c Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄Π²ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΠΎΠΊΠ΅Π½ β52 + β.
4. ΠΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ:
Π ΡΠ·ΡΠΊΠ΅ C ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ # ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ°ΠΊΡΠΎΡΠ° Π² ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠΎΠ³Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ # ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π».Π‘ΡΡΠΈΠ½Π³ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
.
ΠΡΠΈΠΌΠ΅Ρ:
#define STRINGIZING (x) #x
int main ()
{
printf (STRINGIZING (ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ));
Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
}
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Example7.c Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Β«Hello WorldΒ» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ° STRINGIZING.
ΠΡΠ²ΠΎΠ΄:
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΡΠΈΠΏΠ°Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² , Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² , ΠΠ°ΠΊΡΠΎ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ² , ΠΠ°ΠΊΡΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ C.Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΡΠΎΠΌΠ½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ C.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ Π² C
ΠΠ΄Π½ΠΎ ΡΡΡΠ°Π½Π½ΠΎΠ΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΡΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΊΡΠΎΠΌΠ΅ C ++). Π Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΡΠΈΠ½Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΈ ΠΎΠ½ΠΈ ΡΠΊΡΡΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΌΠ½Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ Π½Π°ΠΉΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π° C ΠΈΠ»ΠΈ C ++, Π²Ρ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΡΡΠ΅ΡΠΈΡΠ΅ ΠΈΡ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
ΠΠ°ΡΠ° ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡ — ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½Π° ΡΠ°ΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ.
ΠΠΎΠ³Π΄Π° Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Ρ Π½ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½ΠΎ ΠΎΠ½ΠΈ Β«Π²Π΅Π΄ΡΡ ΡΠ΅Π±ΡΒ» ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’ΠΎΠ³Π΄Π° Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ°?
ΠΡ, ΠΌΠ°ΠΊΡΠΎΡΡ — ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° . ΠΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ΅ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Β«ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡΒ» ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ?
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π²
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, Π΄Π»Ρ Π½ΠΈΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΉΠΌ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π²ΡΠ·Π²Π°Π½Ρ.
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ foo, ΠΈ ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ bar , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var , ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π² bar , ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² foo .
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅, Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ ΠΈ Π΄ΡΡΠ³Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ:
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΡΡΠΎΠΊΡ, Π½ΠΎ Π²Ρ Π΄Π°Π΅ΡΠ΅ Π΅ΠΉ int, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°).
ΠΠ°ΠΊΡΠΎΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅.
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ»Π°ΠΆΠ΅Π½Ρ . ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ. ΠΠ°ΠΊΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ.
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΄Π΅-ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΡΠ½ΠΈΡΡ, Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, — ΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
ΠΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ — ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
ΠΠ°ΠΊΡΠΎΡ Π±ΡΡΡΡΠ΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π», ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΡΠ΅ΠΊΠ΅, ΠΈ ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΊΡΠΎΡΡ
Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΡ
Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ
ΡΠ°ΡΡ
ΠΎΠ΄ΠΎΠ².
ΠΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Π²ΡΡΠΎΠΊΠΈΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΡΠΉ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ.
ΠΠΎ Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π² C99 ΠΈ C ++ — ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ .
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ inline ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, Π²Ρ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π²ΡΡΡΠΎΠΈΡΡ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΎΡ).
ΠΠΎ ΡΡΠΎ Ρ
ΠΎΡΠΎΡΠΎ Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ»Π°ΠΆΠ΅Π½Ρ . Π Ρ Π½ΠΈΡ
Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ inline — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΡΠΎ Π½Π΅ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ.
ΠΠΎ Π² gcc Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ ( always_inline ), ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΡΡΠΎΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ — ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠC ++ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π² C. ΠΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ:
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ Π² C. ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΠΈ Π½Π΅ ΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ Π»ΠΎΠ²ΡΡΠ΅ΠΊ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ.ΠΠ°ΠΊΡΠΎΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡΡ : __FILE__, __LINE__, __func__ .
ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ , Π° Π½Π΅ ΡΡΡΠΎΠΊΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅Π΅ Π²ΡΠ·Π²Π°Π»Π°. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈ Ρ __func__ .
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΡΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ C.
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² C. Π½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ foreach .
ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ.
ΠΠ΄Π΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΌΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ·Π»Π°ΠΌΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠΉΡΠΈ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ LIST_FOREACH , ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±Ρ foreach Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ C #.
ΠΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ ΠΈ ΠΏΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Catch Test Framework.
ΠΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΠΎΠΌΠΈΠΌΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ.
ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ :
#include — Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° Π² Π²Π°Ρ ΡΠ°ΠΉΠ»
#ifdef — ΡΡΠ»ΠΎΠ²Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
#define — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² C.
#ifdef ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ².ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π±ΡΠ» Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·:
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, #ifdef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
#define Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΡΠ°ΡΠ°ΡΡΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π·Π°ΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ const ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ .
ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ.
const ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½ΠΈΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Π² C, ΡΡΠΎ Π½Π΅ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ switch-case ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π C ++ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠ»ΡΡΠ°ΡΡ ), ΠΈ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ #define .
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ , Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ. ΠΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ
switch-case ΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡ
Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ #define — Π²Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΠ°ΠΊΡΠΎΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°Ρ .
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ — Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ!
ΠΠΎΠ²ΡΡΠΊΠ° 1: Π½Π΅ ΡΡΠ°Π²ΠΈΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ
Π‘Π°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ Π²ΠΈΠ΄Π΅Π» ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², — ΡΡΠΎ Π·Π°Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
ΠΡ, Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΡΡΠΌΠΎ Π² Π²Π°Ρ ΠΊΠΎΠ΄. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈΠ·-Π·Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°!
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΡΠ΅Π½ΠΈΡΡ MULTIPLY (x + 5) , ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ 50.ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ 30.
ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ°ΠΊ, ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
ΠΠΠ‘ΠΠΠΠ¬ΠΠ (x + 5) -> (x + 5 * 5)
Π, ΠΊΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
ΠΠΎΠ²ΡΡΠΊΠ° 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ / ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ
ΠΠ½ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΊΡΡΡΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΡ ΡΠΊΠ»ΠΎΠ½Π½Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
ΠΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎ Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°, Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ!
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ x Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 6, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ 5. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
ΠΡΠΈΡΠΈΠ½Π° ΠΎΠΏΡΡΡ ΠΆΠ΅ — ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ°ΠΊΡΠΎΡΠ°:
ABS (x ++) -> ((x ++) <0? - (x ++): (x ++))
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ x ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΈ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠΎΠ²ΡΡΠΊΠ° 3: ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ
Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ — ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠ°ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΡΠ°ΠΊ:
Π ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°, Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ!
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄:
ΠΠ΄Π΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ sum_chars . ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· Π΄Π»Ρ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠ°, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ 3 ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ
Π²ΡΠ·ΠΎΠ²Π° Π²ΠΌΠ΅ΡΡΠΎ 2.
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΊΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ !
ΠΠΎΠ²ΡΡΠΊΠ° 4: ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΠ½ΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΡΠ°ΠΉΠ»Π΅, Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² if.
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠ·ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠ° Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΠΈΡΡΡ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΠ΅Π³ΠΎ Π²Ρ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ while, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ, Π² ΡΠΈΠΊΠ»Π΅ while Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΡΠΈΠΊΠ»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡ — ΡΡΠΎ ΠΎΠΊΡΡΠΆΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΈΠΊΠ»ΠΎΠΌ do-while ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΎ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ.
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠΎ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ ΠΎΡΡ Π±Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ , ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΎΠ³ΡΠΎΠΌΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ°. Π Π½Π΅ Π·Π½Π°Ρ ΠΎΠ± ΡΡΠΎΠΌ, Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π§ΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
Π§ΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π― Π²ΠΈΠ΄Π΅Π» ΠΏΡΠΎΠ΅ΠΊΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΎΠ±ΡΡΠ²Π»ΡΠ»ΠΈΡΡ ΠΠΠ Π₯ΠΠΠ Π ΠΠΠΠ‘Π’Π .
Π Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Ρ Π²ΡΡΡΠ΅ΡΠ°Π» ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ βmβ, , ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄Π΅Π»ΠΎ Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ.
Π§ΡΠΎ Π±Ρ Π²Ρ Π½ΠΈ Π²ΡΠ±ΡΠ°Π»ΠΈ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ΡΡΡ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅Π½ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅. Π’Π°ΠΊ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΡΠΎ ΠΎΠ½ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠΊΡΡΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ.
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΌΠ½ΡΡ , Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΠ°ΡΡΡ, ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ Ρ ΠΎΡΠΎΡΠ΅ΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ΠΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²ΡΠ΅ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ GNU, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ C ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ: C, C ++ ΠΈ Objective-C. ΠΡ ΡΠ΅Π½Π½ΠΎΡΡΠΈ — Π³Π»Π°Π²Π½ΡΠ΅ Π²Π΅ΡΡΠΈΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, GCC 3.2.1 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ __GNUC__ ΡΠ°Π²Π½ΡΠΌ 3, __GNUC_MINOR__ Π½Π° 2 ΠΈ __GNUC_PATCHLEVEL__ Π½Π° 1. ΠΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ; Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ·ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ.
__GNUC_PATCHLEVEL__ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΌ Π΄Π»Ρ GCC 3.0; ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 3.0 (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ GCC 2.96 ΠΈΠ»ΠΈ 2.97, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ Π²Π°Ρ ΡΠ½ΠΈΠΌΠΎΠΊ).
ΠΡΠ»ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCC Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ __GNUC__.ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΌΠ»Π°Π΄ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ; ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ (ΡΡΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅Π΄ΠΊΠΎ) ΠΌΠΈΠ½ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΡΠΌΠΎ Π² ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π½ΡΠ°Π²ΠΈΡΡΡ:
/ * Π’Π΅ΡΡ Π΄Π»Ρ GCC> 3.2.0 * /
#if __GNUC__> 3 || \
(__GNUC__ == 3 && (__GNUC_MINOR__> 2 || \
(__GNUC_MINOR__ == 2 && \
__GNUC_PATCHLEVEL__> 0)) |
ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ»ΠΎ, Π·Π°ΡΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠΌ:
#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
β¦
/ * Π’Π΅ΡΡ Π½Π° GCC> 3.2.0 * /
#if GCC_VERSION> 30200 |
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡ ΡΡΡ ΡΠΎΡΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 1, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Objective-C Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ __OBJC__, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ C ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Objective-C.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ GNU C ++ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎ. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (__GNUC__ && __cplusplus).
GCC ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡΡ -ansi ΠΈΠ»ΠΈ -std ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΡΡΠΎΠ³ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²Π΅ΡΡΠΈΠΈ ISO C, Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ GCC. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ 1. ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² GNU libc Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΌ Π² C 1989 Π³. ΡΡΠ°Π½Π΄Π°ΡΡ.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ C.ΠΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° C.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ Π³Π»ΡΠ±ΠΈΠ½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ #include ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΎΡΠΌΡ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π½ΠΎΠΌΠ΅Ρ Π²ΡΠΏΡΡΠΊΠ°.
ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. __OPTIMIZE__ — ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡΡ . __OPTIMIZE_SIZE__ — ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ, Π° Π½Π΅ ΡΠΊΠΎΡΠΎΡΡΡ. __NO_INLINE__ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² ΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ (ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ -fno-inline).
ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² GNU ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΡΡΡΠ΅ΠΊΡΠΎΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 1.
GCC ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ char unsigned Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.ΠΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ» limits.h Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΠΌ; Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π² limits.h.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π° (Π½Π΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π¦Π Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ΅Π΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ΅Π΄Π΅ m68k-aout ΡΡΠΎ Π½Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ, Π½ΠΎ Π² ΡΡΠ΅Π΄Π΅ m68k-coff ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ%.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ (ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠ΄Π° C) Π² ΡΠ±ΠΎΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ m68k-aout ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ _, Π½ΠΎ Π² ΡΡΠ΅Π΄Π° m68k-coff ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ -f (no-) ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ΅Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π³ΡΠ»ΠΈΡΡΡΡ ΡΡΠΎΡ ΠΏΡΠ΅ΡΠΈΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π³ΡΠ°ΠΌΠΌ. Π² OSF / rose -mno-underscores ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ).
ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ size_t, ptrdiff_t, wchar_t ΠΈ wint_t typedefs ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². stddef.h ΠΈ wchar.h ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π°ΠΏΡΡΠΌΡΡ; Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ typedefs.
ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 1, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ setjmp ΠΈ longjmp Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΌΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ.
ΠΠ°ΠΊΡΠΎΡΡ
ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ C
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° C — ΡΡΠΎ Π΄Π²ΡΡ ΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊ ΡΠ°ΠΉΠ»Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ C. ΠΠ°ΡΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C.
ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ°. ΠΠ°Π΄Π°ΡΠ° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° — ΠΈΡΠΊΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° , Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄.ΠΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ: Π²ΡΠ΅ ΠΎΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° #.
ΠΠΊΠ»ΡΡΠ°Π΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅Ρ if / else
Π‘Π°ΠΌΠ°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° — ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° #include. Π¦Π΅Π»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ — Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² ΡΠ°ΠΉΠ»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #include, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
#include
ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠ°ΠΉΠ» ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° #include.
ΠΡΡΠ³ΠΎΠΉ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° #define, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ
#define ARRAY_SIZE 100
ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ #define Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ #define Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡ ARRAY_SIZE Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 100 Π²Π΅Π·Π΄Π΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
#defines ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ #ifdef.. #else .. #endif construct. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ.
#ifdef ARRAY_SIZE int A [ARRAY_SIZE]; #Π΅ΡΠ΅ int A [20]; #endif
Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΡΠ°ΠΉΠ» ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠΈΠΌΠ²ΠΎΠ» ARRAY_SIZE , ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΎΡΡΠ°Π²ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ A Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡ Π²ΡΠΎΡΠΎΠ΅. ΠΡΠ»ΠΈ ARRAY_SIZE Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠ΄Π°Π»ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ A ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ°Π²ΠΈΡ Π²ΡΠΎΡΠΎΠ΅.
ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° — ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ. ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² — Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. #Define Π½ΠΈΠΆΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΠΊΠ²Π°Π΄ΡΠ°Ρ.
#define SQ (x) x * x
ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ SQ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° SQ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ SQ (, ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠΌ .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΠΊΡΠΎΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΡΠ²Π»ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΉΡΠΈ Π½Π΅ ΡΠ°ΠΊ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ΄ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π΅ΡΠ»ΠΈ (SQ (x + 1)> 4)
ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΡΡΡΠΎΠΊΡ, ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ SQ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
Π΅ΡΠ»ΠΈ (x + 1 * x + 1> 4)
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ.ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΠΊΡΠΎΡ — ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°, Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠΎΠΌΡ.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΡΠΈΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ SQ (x) (x) * (x)
ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ
Π΅ΡΠ»ΠΈ (SQ (x + 1)> 4)
Π²
Π΅ΡΠ»ΠΈ ((x + 1) * (x + 1)> 4)
, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° C
Π― ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» C Π² 1989β1992 Π³ΠΎΠ΄Π°Ρ .ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΎ Π±ΡΠ» C ++. Π‘ 1999 Π³ΠΎΠ΄Π° Ρ Π½Π°ΡΠ°Π» ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Java, Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C # Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows.
Π ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ 2005 Π³ΠΎΠ΄Π° ΠΌΠ½Π΅ Π΄ΠΎΠ²Π΅Π»ΠΎΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C, ΠΈ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°Π»ΡΡ ΡΡΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ. Π― ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² C, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π΅ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ 1990-Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π·Π°Π΄ΡΠΌΠ°Π», Π½ΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π».
IMHO, Π·Π½Π°Π½ΠΈΠ΅ C ++ ΠΈ Java ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° C ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΠΠ.ΠΠΏΡΡ Π² C / C ++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java ΠΈ C #, ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°. Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π₯ΠΎΡΡ Ρ Π½Π΅ ΡΠΏΡΡΠΊΠ°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ C ΠΈ AutoPointers C ++, Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠΊΡΡΠ°Ρ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² Java. Π Π°Π΄, ΡΡΠΎ Π² C # ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π° Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ Π½Π°ΡΠ°ΡΡ Π΄Π΅Π»ΠΈΡΡΡΡ Ρ Π²Π°ΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ C ΠΈ Π½Π°Π΄Π΅ΡΡΡ, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ.
Java ΠΈ C # ΠΈΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Β« Π΄Π»ΠΈΠ½Π° Β» Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ²Π°. Π£ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² C, Π½ΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π° Π½Π΅ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ malloc ΠΈΠ»ΠΈ calloc.
#define GET_ARRAY_LEN (ΠΈΠΌΡ_ΠΌΠ°ΡΡΠΈΠ²Π°) (sizeof (ΠΈΠΌΡ_ΠΌΠ°ΡΡΠΈΠ²Π°) / sizeof ((ΠΈΠΌΡ_ΠΌΠ°ΡΡΠΈΠ²Π°) [0]))
MIN ΠΈ MAX — ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ.ΠΡ
ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡ
Π½Π΅Ρ Π² Π½Π°Π»ΠΈΡΠΈΠΈ.
#ifndef MIN #define MIN (n1, n2) ((n1)> (n2)? (n2): (n1)) #endif #ifndef MAX #define MAX (n1, n2) ((n1)> (n2)? (n1): (n2)) #endif
ΠΠ½ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡΠ» ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΠ» ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ, ΠΈ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ.
#define ALIGN_SIZE (sizeToAlign, PowerOfTwo) \
(((sizeToAlign) + (PowerOfTwo) - 1) & ~ ((PowerOfTwo) - 1))
#define IS_SIZE_ALIGNED (sizeToTest, PowerOfTwo) \
(((sizeToTest) & ((PowerOfTwo) - 1)) == 0) ΠΡΠΎΡΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ((sizeToTest% PowerOfTwo) == 0) .ΠΠ°ΠΊΡΠΎΡ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΡΠ½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π²ΠΎΠΉΠΊΠΈ, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΡΠ°ΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π .
ΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ (sizeToAlign + PowerOfTwo - 1) / PowerOfTwo * PowerOfTwo . ΠΠ°ΠΊΡΠΎΡ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΡΠΈΡΠΊΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π°.
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΡΡΡΡΠΊΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΠ»Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ Π΅Π³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ struct , — ΡΡΠΎ ALLOC_STRUCT ΠΈ INIT_STRUCT . Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ, ΡΠΎΠΊΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
#define GET_FIELD_OFFSET (StructName, FieldName) \
((ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅) (Π΄Π»ΠΈΠ½Π½ΠΎΠ΅) (& ((StructName *) NULL) -> FieldName))
#define GET_FIELD_PTR (pStruct, nOffset) \
((void *) (((char *) pStruct) + (nOffset)))
#define ALLOC_STRUCT (StructName) ((StructName *) malloc (sizeof (StructName)))
#define INIT_STRUCT (pStruct) (memset (pStruct, '\ 0', sizeof (* (pStruct)))) ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ
, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΌΠΎΡ Π»ΡΠ±ΠΈΠΌΡΡ ΡΡΡΠΎΡΠΊΡ ΠΈΠ· ΡΠ°ΠΌΠΎΠΉ ΠΎΠ±ΠΎΠΆΠ°Π΅ΠΌΠΎΠΉ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Β«Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ CΒ» ΠΡΠ°ΠΉΠ°Π½Π° Π. ΠΠ΅ΡΠ½ΠΈΠ³Π°Π½Π° ΠΈ ΠΠ΅Π½Π½ΠΈΡΠ° Π. Π ΠΈΡΠΈ. Π¦ΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΎΡΠ½ΠΎΠΉ, Π½ΠΎ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ½ΡΠ».
Β«ΠΡΠΎΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ. ΠΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΡΡΠΎ. ΠΠΎ Π½Π΅ ΠΏΡΠΎΡΠ΅Β». .
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ Π·Π½Π°ΠΊΠΎΠΌ Ρ C, «ΠΠ½ΠΈΠ³Π° ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° C» ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°, ΠΈ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡΠΌ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅. Π§ΡΠΎΠ±Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Β«ΠΠΎΠ²ΡΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ CΒ», Β«ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°Β», Β«ΠΠ΅ΠΌΡΡΠΆΠΈΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ», Β«ΠΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ΠΌΡΡΠΆΠΈΠ½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ», Β«Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ CΒ» ΠΈ Ρ. Π.
ΠΠΎΡ ΡΡΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ½ΡΠΌ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ (ΠΎΠ±Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ).
#define IS_ODD (ΡΠΈΡΠ»ΠΎ) ((ΡΠΈΡΠ»ΠΎ) & 1)
#define IS_EVEN (ΡΠΈΡΠ»ΠΎ) (! IS_ODD ((ΡΠΈΡΠ»ΠΎ)))
#define IS_BETWEEN (numToTest, numLow, numHigh) \
((ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ°) ((numToTest)> = (numLow) && (numToTest) <= (numHigh))) Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ ΠΈΠ· MFC (Microsoft Foundation Classes) Π΄Π»Ρ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
#define ΠΠΠΠ‘ΠΠΠΠ¬ΠΠ£ΠΠΠ«Π (ParamName) \
((void) (0? ((ParamName) = (ParamName)): (ParamName))) ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π±Π»ΠΎΠΊ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«, Π΅ΡΠ»ΠΈ Β», Β« Π΄Π»Ρ Β» ΠΈΠ»ΠΈ Β«, Π° Β». Π C ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΈ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΈΠ³ΡΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΡΡΠ°Π²ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ.
Π ΡΠ»ΡΡΠ°Π΅ C ++, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π²ΡΠ΅Ρ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Ρ ΡΡΠ΅Π» ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ BEGIN_BLOCK ΠΈ END_BLOCK Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΎΡΡΡΡΠΏΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΡΠΊΠΎ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ².
#define BEGIN_BLOCK {
#define END_BLOCK} Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΡΠΈΠ½ CISC, ΡΠ²Π»ΡΠ΅ΡΡΡ Little-Endian, Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ RISC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Big-Endian, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Π¦Π Π·Π΄Π΅ΡΡ. ΠΡΠΈ ΡΠ»ΠΎΠ²Π° Little-Endian ΠΈ Big-Endian Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Ρ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΠΆΠΎΠ½Π°ΡΠ°Π½Π° Π‘Π²ΠΈΡΡΠ° Β«ΠΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΡ ΠΡΠ»Π»ΠΈΠ²Π΅ΡΠ°Β». ΠΡΠΎ ΠΈΠΌΠ΅Π½Π° Π΄Π²ΡΡ Π²ΡΠ°ΠΆΠ΄ΡΡΡΠΈΡ ΡΡΠ°ΠΊΡΠΈΠΉ Π»ΠΈΠ»ΠΈΠΏΡΡΠΎΠ², ΡΠΈΠ³ΡΡΠΈΡΡΡΡΠΈΡ Π² ΡΡΠΎΠΉ Π²Π½Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΡΠΈΡΠ΅.
ΠΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ². ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 16 Π±ΠΈΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅, Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΈ ΡΠ½ΠΎΠ²Π° ΡΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°Π½ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ², ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±Π°ΠΉΡΠΎΠ². ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ, ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΠΊ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
Java ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ Big-Endian ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΠ» ΡΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Java, ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ C ΠΈΠ»ΠΈ C ++, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Java, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ².
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ. ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΌΠ°ΠΊΡΠΎΡΠ° IS_LITTLE_ENDIAN ΠΈ IS_BIG_ENDIAN Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΠ‘Π’ΠΠΠ ΠΈΠ»ΠΈ ΠΠΠΠ¬ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.ΠΠ°ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΡΠ°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ IS_DEFAULT_ENDIAN , Π³Π΄Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ΅Π», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ ΡΠΈΡΠ»Π° Π² ΡΠ°ΠΉΠ» ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΈΡΠ»ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ΅Π».
ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² ΠΌΠ°ΡΠΈΠ½Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ , Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΡΠΈΡΠ»Π° ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ ΠΏΠΎΠ΄ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ. ΠΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»ΡΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΌΠ½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΠΏΠΎΠΊΠ° Ρ Π½Π°ΡΠ½Ρ Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Π²Π°ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΡ Π² Π±Π»ΠΎΠ³Π΅.
#define IS_LITTLE_ENDIAN () (((* (ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ *) "21") & 0xFF) == '2')
#define IS_BIG_ENDIAN () (((* (ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ *) "21") & 0xFF) == '1')
#define IS_DEFAULT_ENDIAN () IS_LITTLE_ENDIAN ()
#define REVERSE_BYTE_ARRAY (ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ², ΡΠ°Π·ΠΌΠ΅Ρ) \
Π΅ΡΠ»ΠΈ (! IS_DEFAULT_ENDIAN ()) \
{\
int _i, _j; \
char _cTmp; \
for (_i = 0, _j = (Π Π°Π·ΠΌΠ΅Ρ) - 1; _i <_j; _i ++, _j--) \
{\
_cTmp = ((char *) (ByteArray)) [_i]; \
((char *) (ByteArray)) [_i] = ((char *) (ByteArray)) [_j]; \
((char *) (ByteArray)) [_j] = _cTmp; \
} \
}
#define CONVERT_NUM (n) REVERSE_BYTE_ARRAY ((& (n)), sizeof (n))
#define CONVERT_NUM16 (n) ((void) (IS_DEFAULT_ENDIAN ()? (n) \
: ((n) = ((((n) & 0x00FF) << 8) | (((n) & 0xFF00) >> 8)))))
#define CONVERT_NUM32 (n) ((void) (IS_DEFAULT_ENDIAN ()? (n) \
: ((n) = ((((n) & 0x000000FF) << 24) | (((n) & 0x0000FF00) << 8) \
| (((n) & 0xFF0000) >> 8) | (((n) & 0xFF000000) >> 24)))))
#define CONVERT_FLOAT (f) CONVERT_NUM32 ((* (Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ *) & (f)))
#define CONVERT_DOUBLE (d) CONVERT_NUM (d)
#define CONVERT_NUM64 (n) CONVERT_NUM (n) ΠΠ°ΠΊΡΠΎΡΡ- Π£ΡΠ΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ C - Sanfoundry
ΠΡΠΎΡ ΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ C ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.ΠΠ°ΠΊΡΠΎΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
#define MAX (a, b) ((a)> (b)? (A): (b))
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° C,
#include#define MAX (a, b) ((a)> (b)? (a): (b)) int main (ΠΏΡΡΡΠΎ) { int x = 10, y = 15; ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ u = 2.0, v = 3.0; Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ s = 5, t = 5; printf ("ΠΠ°ΠΊΡΠΈΠΌΡΠΌ Π΄Π²ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»% d ΠΈ% d ΡΠ°Π²Π΅Π½:% d \ n", x, y, MAX (x, y)); printf ("ΠΠ°ΠΊΡ. ΠΈΠ· Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ% .2f ΠΈ% .2f:% .2f \ n", u, v, MAX (u, v)); printf ("ΠΠ°ΠΊΡΠΈΠΌΡΠΌ Π΄Π²Π° Π΄Π²ΠΎΠΉΠ½ΡΡ %.2lf ΠΈ% .2lfis:% lf \ n ", s, t, MAX (s, t)); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; }
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π²ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» 10 ΠΈ 15: 15 ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠΎΠ² 2,00 ΠΈ 3,00: 3,00 ΠΠ°ΠΊΡΠΈΠΌΡΠΌ Π΄Π²Π° Π΄Π²ΠΎΠΉΠ½ΡΡ 5.00 ΠΈ 5.00is: 5.000000
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ°ΠΊΡΠΎΡ MAX (a, b) ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΈΠ· Π΄Π²ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ. Π. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏΠ°. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π±Ρ ΡΡΠΈ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΡΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° Π²ΡΠ·ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π’ΠΎΠ³Π΄Π° ΠΊΡΠΎ ΠΈΠ· ΡΡΠΈΡ Π΄Π²ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π΄ΡΡΠ³ΠΈΡ ? Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ°ΠΊΡΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ, ΡΠ΅ΠΌ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠΠΠΠ‘ (Π°, Π±). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ²ΠΎΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ. Π₯ΠΎΡΡ ΡΡΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°ΡΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΏΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
Sanfoundry Global Education & Learning Series - Π£ΡΠ΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ 1000 C.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΡΡΠ΅Π±Π½ΡΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΡ ΠΏΠΎ C, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ ΡΡΠ΅Π±Π½ΡΠΌ ΠΏΠΎΡΠΎΠ±ΠΈΡΠΌ ΠΏΠΎ C.