ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π‘ΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос — Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ out, Ссли Ρ‚Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚вия обСспСчиваСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ref? Бвязано появлСниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° out с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ out «Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚» компилятору — «Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚сутствиС значСния Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая использована Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°», ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅. Однако эта… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ возмоТности ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ фиксированный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ замСщаСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. БоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ устанавливаСтся ΠΏΠΎ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Ρ‚. Π΅. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ.

АргумСнт, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ фиксированный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, прСдставляСт собой Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ совпадаСт ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ Ρ‚ΠΈΠΏΡƒ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ создаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° соотнСсСно с ΡΡ‚ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ΠΎ с Ρ‚Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использован Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, выполняСмыС Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΡƒΡ‡Π°ΡΡ‚ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π΅ C# для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ нСзависимости Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

// 0904.cs — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ

using System;

class Program.

{

static void F (int p).

{

p++;

Console.WriteLine («p = {0}», p);

}

static void Main ().

{

int a = 1;

Console.WriteLine («pre: a = {0}», a);

F (a);

Console.WriteLine («post: a = {0}», a);

} }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

pre: a = 1.

P = 2.

post: a = 1.

ИзмСнСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° p Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° F () Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΎ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ, слуТат для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π’ ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС количСство статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ бСспрСпятствСнно ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ. ПокаТСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈ этом ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ возмоТности.

Π—Π°Π΄Π°Ρ‡Π°: Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΌΠ΅Ρ‚ΠΎΠ΄), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ минимального ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΡΠΌΠΎΠΉ ΠΏΡƒΡ‚ΡŒ — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ условныС выраТСния. ΠŸΠΎΡΡ‚ΡƒΠΏΠΈΠΌ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ — ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ:

// 0905.cs — Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ using System; class Program {.

// Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция:

static double min2(double zl, double z2).

{

return zl < z2? zl: z2;

}

// функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ минимальноС ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: static double min4(double xl, double x2, double x3, double x4).

{

return min2(min2(min2(xl, x2), x3), x4);

}

static void MainQ.

{

Console.WriteLine (min4(24, 8, 4, 0.3));

} }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

0.3.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±Π° статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π° min2() ΠΈ min4() Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² Ρ€ΠΎΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ min2() Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ min4().

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ внСшниС ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ref, Ρ‚. Π΅. ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ этой возмоТности ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ 0904.cs — снабдим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FRQ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ref.

// 0906.cs — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° int, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅ using System; class Program {.

static void FR (ref int p).

{

p++;

Console.WriteLine («p = {0}», p);

}

int a = 1;

Console.WriteLine («pre: a = {0}», a);

FR (ref a);

Console.WriteLine («post: a = {0}», a);

} }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Ρ€Π³Π΅: Π° = 1.

Π  = 2.

post: Π° = 2.

ПослС обращСния ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ FRQ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСй ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ FRQ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ измСнилось.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, подставляСмый Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ снабТСн ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ref.

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

// Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

static void rank2(ref int x, ref int y).

{

int m;

if (x > y).

{

m = x; x = Ρƒ; Ρƒ = m;

>

}

ΠœΠ΅Ρ‚ΠΎΠ΄ rank2() ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ — ΠΎΠ½ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния void. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ — цСлочислСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ°ΠΌ. Π’ Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° объявлСна Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ локальная пСрСмСнная int m. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ… ΠΈ Ρƒ.

ИмСя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ сортировки Ρ‚Ρ€Π΅Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

static void rank3(ref int xl, ref int x2, ref int x3).

{

rank2(ref xl, ref x2) j rank2(ref x2, ref x3) j rank2(ref xl, ref x2);

>

Π’ Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° rank3() Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ обращСниях ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ rank2(). ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π³Π°ΠΏΠΊ2() вызываСтся Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сортируя значСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ сначала ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ xl, Ρ…2, Π·Π°Ρ‚Π΅ΠΌ Ρ…2, Ρ…Π— ΠΈ Π·Π°Ρ‚Π΅ΠΌ xl, Ρ…2. Ѐункция Main (), ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° rank3():

static void Main ().

{

int i = 85, j = 23, ΠΊ = 56;

rank3(ref i, ref j, ref k);

Console.WriteLine («i={0}, j={l}, k={2}», i, j, k);

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

i=23, j=56, k=85.

Π˜Ρ‚Π°ΠΊ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для измСнСния ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ref ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΌ Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Особо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСмСнная (Π½Π΅ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° ΠΈ Π½Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Console.WriteLine (rank3(ref 24, ref 8, ref 4)); // ошибка!

П ERROR — Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ!!!

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ out ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ.

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос — Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ out, Ссли Ρ‚Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚вия обСспСчиваСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ref? Бвязано появлСниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° out с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ out «Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚» компилятору — «Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚сутствиС значСния Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая использована Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°», ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅. Однако эта пСрСмСнная ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС компилятор зафиксируСт ΠΎΡˆΠΈΠ±ΠΊΡƒ. Ошибкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° использования Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° значСния Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ присваивания Π΅ΠΌΡƒ значСния.

ΠœΠ΅Ρ‚ΠΎΠ΄ с Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ref ΠΈΠ»ΠΈ out) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выступаСт Π² Ρ€ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π₯отя Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° слуТит ΠΌΠ΅Ρ‚ΠΎΠ΄ TryPasreO, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ использовали Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ примСнСния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π»ΡƒΡŽ (int integer) ΠΈ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ (double fra) части вСщСствСнного числа (double Ρ…). Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MainQ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: double real — исходноС число, double dPart — дробная Ρ‡Π°ΡΡ‚ΡŒ, int iPart — цСлая Ρ‡Π°ΡΡ‚ΡŒ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ real ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ iPart, dPart Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.

// 0908.cs — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ using System; class Program {.

// ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния Ρ†Π΅Π»ΠΎΠΉ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ частСй

// вСщСствСнного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

static void fun (double Ρ…, out int integer, out double fra).

{

integer = (int)x;

fra = x — integer;

}

static void Main ().

{

double real = 53.93;

double dPart;

int iPart;

fun (real, out iPart, out dPart);

Console.WriteLine («iPart={0}, dPart={l}», iPart, dPart);

}

>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: iPart=53, dPart=0,93.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… значСниях Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ double Ρ…, Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° (int)x ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π·Π° ΡΡ‡Π΅Ρ‚ пСрСполнСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π² Π³Π». 3.

Для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out Π² Π²Π΅Ρ€ΡΠΈΠΈ C# 7.0 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ряд синтаксичСских ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Ρ… ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ (Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, просто ΡƒΠΊΡ€Π°ΡΠΈΡ‚ΡŒ) ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Одним ΠΈΠ· Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объявлСния «Π½Π° Π»Π΅Ρ‚Ρƒ» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ся, Ссли Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° fun (), Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ нСпосрСдствСнно Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ:

static void Main ().

{

double real = 53.93;

fun (real, out int iPart, out double dPart);

Console.WriteLine («iPart={0}, dPart={l}», iPart, dPart);

}

Вторая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ out — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Для Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ «ΠΎΡ‚брасывания» Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ замСняСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ (подстановкой) Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°: «out_».

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ обращСния ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ fun () Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части вСщСствСнного числа, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ:

fun (real, out out double fraction);

Console.WriteLine («traction={0}», fraction);

Π£ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ out int integer Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΠ½ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ «out _». Для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° использован ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΉ Π½Π° Π»Π΅Ρ‚Ρƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ out double fraction.

Если Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ трСбуСтся ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Если соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ устанавливаСтся ΠΏΠΎ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ (Ρ‚. Π΅. ΠΏΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΌ ΠΈΠΌΠΈ позициям), Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

static void MainQ.

{

void PrintReal (double x, string format = «Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = {0:F4}»).

=> Console. WriteLine (format, x);

PrintReal (5.0/3);

}

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ PrintRealO, сТатый Π΄ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡ. Для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° string format Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ строки «Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = {0:F4}». Π’ Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PrintRealO ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ format ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π½ΠΎΠΉ строки ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WriteLine ().

Π’ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ PrintReal (5.0/3) Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡƒΡ‰Π΅Π½, ΠΈ Π²ΠΌΠ΅ΡΡ‚ΠΎ Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 1,6667.

ΠŸΡ€ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ сопоставлСнии Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΌΠΈ ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ спСцификации ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ значСниями Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ нСудобство, Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ идСнтифицируСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. АргумСнт выглядит Ρ‚Π°ΠΊ:

имя_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅:

PrintReal (format:" Научная нотация: {0:Π•4}", Ρ…: 479.77); Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:

Научная нотация: 4,7977Π•+002.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ