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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ОписаниС языка PascalABC.NETΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 13

Автор W Cat

uint64

uint64

BigInteger

single

real

int64

int64

int64

int64

int64

int64

uint64

int64

uint64

BigInteger

single

real

uint64

uint64

uint64

uint64

uint64

uint64

uint64

uint64

uint64

BigInteger

single

real

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

BigInteger

-

-

single

single

single

single

single

single

single

single

single

-

single

real

real

real

real

real

real

real

real

real

real

-

real

real

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ - Ρ†Π΅Π»Ρ‹Π΅, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для прСдставлСния всСх ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с uint64 ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ uint64, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ / данная Ρ‚Π°Π±Π»ΠΈΡ†Π° исправляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния любого Ρ†Π΅Π»ΠΎΠ³ΠΎ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ real.

Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ div ΠΈ mod Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ эти ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹ΠΌΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π° вычислСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ div ΠΈ mod - ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

x div y - Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ цСлочислСнного дСлСния x Π½Π° y. Π’ΠΎΡ‡Π½Π΅Π΅, x div y = x / y, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅ Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ 0;

x mod y - остаток ΠΎΡ‚ цСлочислСнного дСлСния x Π½Π° y. Π’ΠΎΡ‡Π½Π΅Π΅, x mod y = x - (x div y) * y.

Унарная арифмСтичСская опСрация + для любого Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ этот Ρ‚ΠΈΠΏ. Унарная арифмСтичСская опСрация - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ для Ρ†Π΅Π»Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹Ρ… integer, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° integer, для longword ΠΈ int64 - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int64, ΠΊ uint64 унарная опСрация - Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°, для Ρ‚ΠΈΠΏΠΎΠ² single ΠΈ real - соотвСтствСнно Ρ‚ΠΈΠΏΡ‹ single ΠΈ real. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для прСдставлСния всСх ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

К логичСским относятся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ and, or ΠΈ xor, Π° Ρ‚Π°ΠΊΠΆΠ΅ унарная опСрация not, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠ° boolean ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° boolean. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ стандартным ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π»ΠΎΠ³ΠΈΠΊΠΈ: a and b истинно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° истинны a ΠΈ b, a or b истинно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° истинно Π»ΠΈΠ±ΠΎ a, Π»ΠΈΠ±ΠΎ b, a xor b истинно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· a ΠΈ b истинно, not a истинно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° a Π»ΠΎΠΆΠ½ΠΎ.

ВыраТСния с and ΠΈ or Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ схСмС:

Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ x and y Ссли x Π»ΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ всС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ, ΠΈ y Π½Π΅ вычисляСтся;

Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ x or y Ссли x истинно, Ρ‚ΠΎ всС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно, ΠΈ y Π½Π΅ вычисляСтся.

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

К ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ относятся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ and, or, not, xor, shl, shr. Они производят ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ манипуляции с ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ для and, or, xor Π±ΡƒΠ΄Π΅Ρ‚ наимСньшим Ρ†Π΅Π»Ρ‹ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Для shl, shr Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ совпадаСт с Ρ‚ΠΈΠΏΠΎΠΌ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, для not - с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ (0 принимаСтся Π·Π° False, 1 - Π·Π° True) производится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ логичСская опСрация. НапримСр:

00010101 and 00011001 = 00010001

00010101 or 00011001 = 00011101

00010101 xor 00011001 = 00001100

not 00010101 = 11101010

(ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСдставлСны Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΠΈ shl ΠΈ shr ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄:

a shl n

a shr n

Π³Π΄Π΅ n - Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, a - Ρ†Π΅Π»ΠΎΠ΅ число.

a shl n прСдставляСт собой Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния числа a сдвигом Π²Π»Π΅Π²ΠΎ Π½Π° n ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ. ДобавляСмыС справа ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями.

a shr n прСдставляСт собой Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния числа a сдвигом Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

НапримСр:

3 shl 2 = 12

12 shr 2 = 3

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 3=112, послС сдвига Π²Π»Π΅Π²ΠΎ Π½Π° 2 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 112 прСобразуСтся Π² 11002=12, Π° 12=11002 послС сдвига Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 2 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ прСобразуСтся Π² 112=3.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния <, >, <=, >=, =, <> Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° boolean ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ простого Ρ‚ΠΈΠΏΠ° ΠΈ ΠΊ строкам.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ = ΠΈ <> Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСм Ρ‚ΠΈΠΏΠ°ΠΌ. Для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния, для ссылочных Ρ‚ΠΈΠΏΠΎΠ² - ссылки. МоТно ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ = ΠΈ <>. Аналогично ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния для Ρ‚ΠΈΠΏΠΎΠ² записСй ΠΈ классов, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.


Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

К строкам ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния <, >, <=, >=, =, <>. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк Π½Π° нСравСнство осущСствляСтся лСксикографичСски: s1 < s2 Ссли для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ символа с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ i s1[i]<s2[i] ΠΈΠ»ΠΈ всС символы строк ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π½ΠΎ s1 ΠΊΠΎΡ€ΠΎΡ‡Π΅ s2.

ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΊ строкам ΠΈ символам ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° опСрация ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (слияния) +, Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ строковый Ρ‚ΠΈΠΏ.

НапримСр, 'a'+'b'='ab'.

К строкам Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° опСрация +=:

s += s1; // s := s + s1;

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ с числом, ΠΏΡ€ΠΈ этом число ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСобразуСтся ΠΊ строковому ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ:

s := 'Π¨ΠΈΡ€ΠΈΠ½Π°: '+15; // s = 'Π¨ΠΈΡ€ΠΈΠ½Π°: 15'

s := 20.5+''; // s = '20.5'

s += 1; // s = '20.51'

Над строками ΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° опСрация *: s*n ΠΈ n*s ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ строку, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ· строки s, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½Π½ΠΎΠΉ n Ρ€Π°Π·:

s := '*'*10; // s = '**********'

s := 5*'ab' // s = 'ababababab'

s := 'd'; s *= 3; // s = 'ddd'

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями

Ко всСм указатСлям ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния = ΠΈ <>.

К Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ указатСлям ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° опСрация разымСнования ^: Ссли p являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ‚ΠΈΠΏ T, Ρ‚ΠΎ p^ - элСмСнт Ρ‚ΠΈΠΏΠ° T, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ p. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ pointer Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ нСльзя.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с мноТСствами

К мноТСствам с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ элСмСнтами ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ + (объСдинСниС), - (Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ) ΠΈ * (пСрСсСчСниС), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ +=, -= ΠΈ *=:

var s1,s2,s: set of byte;

begin

s1 := [1..4];

s2 := [2..5];

s := s1 + s2; // s = [1..5]

s := s1 - s2; // s = [1]

s := s1 * s2; // s = [2..4]

// s += s1 эквивалСнтно s := s + s1

// s -= s1 эквивалСнтно s := s - s1

// s *= s1 эквивалСнтно s := s * s1

s += [3..6]; // s = [2..6]

s -= [3]; // s = [2,4..6]

s *= [1..5]; // s = [2,4..5]

end.

К мноТСствам с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ элСмСнтами ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния = (равСнство), <> (нСравСнство), <= (нСстрого Π²Π»ΠΎΠΆΠ΅Π½ΠΎ), < (строго Π²Π»ΠΎΠΆΠ΅Π½ΠΎ), >= (нСстрого содСрТит) ΠΈ > (строго содСрТит):

[1..3] = [1,2,3]

['a'..'z'] <> ['0'..'9']

[2..4] < [1..5]

[1..5] <= [1..5]

[1..5] > [2..4]

[1..5] >= [1..5]

Но Π½Π΅Π²Π΅Ρ€Π½ΠΎ, Ρ‡Ρ‚ΠΎ [1..5] < [1..5].

НаконСц, опСрация in опрСдСляСт, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π»ΠΈ элСмСнт мноТСству: 3 in [2..5] Π²Π΅Ρ€Π½Π΅Ρ‚ True, 1 in [2..5] Π²Π΅Ρ€Π½Π΅Ρ‚ False.


ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ @

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ @ примСняСтся ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π΅ адрСс. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° прСдставляСт собой Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НапримСр:

var

r: real;

pr: ^real := @r;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ is ΠΈ as

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ is ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ классовая пСрСмСнная ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ динамичСский Ρ‚ΠΈΠΏ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ as позволяСт бСзопасно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ классового Ρ‚ΠΈΠΏΠ° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ классовому Ρ‚ΠΈΠΏΡƒ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ явного привСдСния классового Ρ‚ΠΈΠΏΠ°).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ is ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

a is ClassType

ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True Ссли a ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ классу ClassType ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

НапримСр, Ссли Base ΠΈ Derived - классы, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, Derived - ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Base, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ b ΠΈ d ΠΈΠΌΠ΅ΡŽΡ‚ соотвСтствСнно Ρ‚ΠΈΠΏΡ‹ Base ΠΈ Derived, Ρ‚ΠΎ выраТСния b is Base ΠΈ d is Base Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ True, Π° b is Derived - False.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ as ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

a as ClassType

ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ClassType Ссли ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ nil.

НапримСр, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

type

Base = class

end;

Derived = class(Base)

procedure p;

begin

end;

end;

var b: Base;

begin

b := new Base;

writeln(b is Derived);

b := new Derived;

writeln(b is Derived);

end.