C Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ – Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π² Англо-русском словарС тСхничСских Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

C β€” ВикипСдия

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ β€” свободной энциклопСдии

C (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°), Π‘ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°)

  • c β€” ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ (Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ).
  • (င) β€” Π±ΡƒΠΊΠ²Π° Нга бирманского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°.
  • C (Π‘ΠΈ) β€” язык программирования.
  • C# (C Sharp, Π‘ΠΈ-Π¨Π°Ρ€ΠΏ) β€” язык программирования.
  • C++ β€” язык программирования.
  • C β€” 16-Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС числа 12 (Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСниС числа 12 Π² 13-Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмС счислСния с основаниСм, большим числа 12).
  • C: (Ρ‡Π°Ρ‰Π΅ Π² составС Ρ„Ρ€Π°Π· Π²Ρ€ΠΎΠ΄Π΅ «диск C:Β») β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частоупотрСбляСмоС имя диска Π² ПК с ОБ сСмСйств DOS ΠΈ Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ OS/2; «диск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ»; стартовоС имя Π² IDE-Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².
  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΡ‚Ρ‹ Β«Π΄ΠΎΒ» Π»ΠΈΠ±ΠΎ Π°ΠΊΠΊΠΎΡ€Π΄Π° Π΄ΠΎ ΠΌΠ°ΠΆΠΎΡ€.
  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΡ‚Π°, эквивалСнтСн 4/4.
  • ΠŸΠ°Ρ€ΠΎΠ²ΠΎΠ· Π‘
  • Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ²ΠΎΠ·Ρ‹:
  • C β€” ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ нью-йоркского ΠΌΠ΅Ρ‚Ρ€ΠΎ.
  • C β€” число 100 римскими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ.
  • Β© β€” Π—Π½Π°ΠΊ ΠΎΡ…Ρ€Π°Π½Ρ‹ авторского ΠΏΡ€Π°Π²Π°.
  • C β€” Ρ‚ΠΈΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Ρ‚Π°Ρ€Π΅Π΅ΠΊ ΠΈ аккумуляторов Π΄Π»ΠΈΠ½ΠΎΠΉ 50 ΠΌΠΌ ΠΈ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 26,2 ΠΌΠΌ.
  • C β€” Π°Π½ΠΈΠΌΠ΅-сСриал 2011 Π³ΠΎΠ΄Π°.
  • C β€” Π΄ΡŽΠΉΠΌΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ видСозаписи.
  • Π‘ β€” Ρ‚ΠΈΠΏ совСтских ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΎΠ΄ΠΎΠΊ.
  • Π‘ β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΠ² для листов сСрии А.
  • Π’ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии:
    • C («цэ») β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Ρ„Π°Π· (A, B, C β€” Π°, бэ, цэ) (Ρ„Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²) ΠΏΡ€ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии.
    • C1, C2, C3 (Цэ-1, Цэ-2, Цэ-3) β€” Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ обозначСния Ρ„Π°Π· Π² Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ (вмСсто A, B, C).

C β€” ВикипСдия. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ β€” свободной энциклопСдии

C (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°), Π‘ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°)

Лингвистика

  • c β€” ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ (Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ).
  • (င) β€” Π±ΡƒΠΊΠ²Π° Нга бирманского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

  • C (Π‘ΠΈ) β€” язык программирования.
  • C# (C Sharp, Π‘ΠΈ-Π¨Π°Ρ€ΠΏ) β€” язык программирования.
  • C++ β€” язык программирования.
  • C β€” 16-Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС числа 12 (Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСниС числа 12 Π² 13-Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмС счислСния с основаниСм, большим числа 12).
  • C: (Ρ‡Π°Ρ‰Π΅ Π² составС Ρ„Ρ€Π°Π· Π²Ρ€ΠΎΠ΄Π΅ «диск C:Β») β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частоупотрСбляСмоС имя диска Π² ПК с ОБ сСмСйств DOS ΠΈ Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ OS/2; «диск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ»; стартовоС имя Π² IDE-Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Π€ΠΈΠ·ΠΈΠΊΠ°

Π₯имия ΠΈ биология

Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ

  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΡ‚Ρ‹ Β«Π΄ΠΎΒ» Π»ΠΈΠ±ΠΎ Π°ΠΊΠΊΠΎΡ€Π΄Π° Π΄ΠΎ ΠΌΠ°ΠΆΠΎΡ€.
  • C β€” Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΡ‚Π°, эквивалСнтСн 4/4.

ЖСлСзнодороТная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ²ΠΎΠ·Ρ‹:

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

Π”Ρ€ΡƒΠ³ΠΈΠ΅ области

  • C β€” число 100 римскими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ.
  • Β© β€” Π—Π½Π°ΠΊ ΠΎΡ…Ρ€Π°Π½Ρ‹ авторского ΠΏΡ€Π°Π²Π°.
  • C β€” Ρ‚ΠΈΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Ρ‚Π°Ρ€Π΅Π΅ΠΊ ΠΈ аккумуляторов Π΄Π»ΠΈΠ½ΠΎΠΉ 50 ΠΌΠΌ ΠΈ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 26,2 ΠΌΠΌ.
  • C β€” Π°Π½ΠΈΠΌΠ΅-сСриал 2011 Π³ΠΎΠ΄Π°.
  • C β€” Π΄ΡŽΠΉΠΌΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ видСозаписи.
  • Π‘ β€” Ρ‚ΠΈΠΏ совСтских ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΎΠ΄ΠΎΠΊ.
  • Π‘ β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΠ² для листов сСрии А.
  • Π’ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии:
    • C («цэ») β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Ρ„Π°Π· (A, B, C β€” Π°, бэ, цэ) (Ρ„Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²) ΠΏΡ€ΠΈ Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ элСктроснабТСнии.
    • C1, C2, C3 (Цэ-1, Цэ-2, Цэ-3) β€” Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ обозначСния Ρ„Π°Π· Π² Ρ‚Ρ€Ρ‘Ρ…Ρ„Π°Π·Π½ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅ (вмСсто A, B, C).

C++ | Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

ПослСднСС обновлСниС: 22.09.2017

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слуТат адрСса Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ) ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Как ΠΈ ссылки, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для косвСнного доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Однако Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ссылок ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ большими возмоТностями.

Для опрСдСлСния указатСля Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΈ символ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ *. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° int:

int *p;

Пока ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ссылаСтся Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈ этом Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ссылки ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ присвоим ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

int x = 10;		// опрСдСляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
int *p;			// опрСдСляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
p = &x;			// ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Для получСния адрСса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ примСняСтся опСрация &. Π§Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, пСрСмСнная x ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΅Π΅ адрСс, Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ соотвСтствиС ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ.

Если ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° консоль, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ прСдставляСт ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

#include <iostream>

int main()
{
	int x = 10;     // опрСдСляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
	int *p;         // опрСдСляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
	p = &x;         // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
	std::cout << "p = " << p << std::endl;
	return 0;
}

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ случаС адрСс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, Π½ΠΎ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΌΠΎΠ΅ΠΌ случаС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x β€” 0x60fe98. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΅ΡΡ‚ΡŒ адрСс 0x60fe98, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ располагаСтся пСрСмСнная x. Π’Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная x прСдставляСт Ρ‚ΠΈΠΏ int, Ρ‚ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 4 Π±Π°ΠΉΡ‚Π° (Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти для Ρ‚ΠΈΠΏΠ° int ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пСрСмСнная Ρ‚ΠΈΠΏΠ° int ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ‚ ячСйки памяти с адрСсами 0x60FE98, 0x60FE99, 0x60FE9A, 0x60FE9B.

И ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° адрСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ располагаСтся пСрСмСнная x, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° адрСс 0x60FE98.

Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎ этому адрСсу ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ хранящССся Ρ‚Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x. Для этого примСняСтся опСрация * ΠΈΠ»ΠΈ опСрация разымСнования, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π° опСрация, которая примСняСтся ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ указатСля. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ всСгда являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x:

#include <iostream>

int main()
{
	int x = 10;
	int *p;
	p = &x;
	std::cout << "Address = " << p << std::endl;
	std::cout << "Value = " << *p << std::endl;
	return 0;
}

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Address = 0x60fe98
Value = 10

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ разымСнования, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

int x = 10;
int *p  = &x;
int y = *p;
std::cout << "Value = " << y << std::endl;	// 10

И Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅:

int x = 10;
int *p = &x;
*p = 45;
std::cout << "x = " << x << std::endl;	 // 45

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ адрСсу, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, располагаСтся пСрСмСнная x, Ρ‚ΠΎ соотвСтствСнно Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСнится.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Π΅ нСсколько ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

#include <iostream>

int main()
{
	short c = 12;
    int d = 10;
    short s = 2;
     
    short *pc = &c;          // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠ° short
    int *pd = &d;           // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ d Ρ‚ΠΈΠΏΠ° int
    short *ps = &s;         // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ s Ρ‚ΠΈΠΏΠ° short
     
    std::cout << "Variable c: address=" << pc << "\t value=" << *pc << std::endl;
    std::cout << "Variable d: address=" << pd << "\t value=" << *pd << std::endl;
	std::cout << "Variable s: address=" << ps << "\t value=" << *ps << std::endl;
	
	return 0;
}

Π’ ΠΌΠΎΠ΅ΠΌ случаС я ΠΏΠΎΠ»ΡƒΡ‡Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Variable c: address=0x60fe92	value=12
Variable d: address=0x60fe8c	value=10
Variable s: address=0x60fe8a	value=2

По адрСсам ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ часто располоТСны Π² памяти рядом, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

C Sharp β€” это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ C Sharp?

Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. C.
ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” C#. Он ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·-Π·Π° тСхничСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.
C#
Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°:

ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ

Класс языка:

ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ:
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ,
ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, событийный, Ρ€Π΅Ρ„Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ

Появился в:

2000

Автор(Ρ‹):

АндСрс Π₯СйлсбСрг

Π Π΅Π»ΠΈΠ·:

5.0 (15 августа 2012)

Випизация Π΄Π°Π½Π½Ρ‹Ρ…:

статичСская, динамичСская, строгая, утиная, Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Visual C#, .NET Framework, Mono, DotGNU

Π”ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹:

Cω, Spec#, Polyphonic C#

Π˜ΡΠΏΡ‹Ρ‚Π°Π» влияниС:

C++, Java[1][2][3], Delphi, ΠœΠΎΠ΄ΡƒΠ»Π° ΠΈ Smalltalk

Повлиял на:

Cω, F#, Nemerle, Vala, Windows PowerShell

C# (произносится си ΡˆΠ°Ρ€ΠΏ) β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1998β€”2001 Π³ΠΎΠ΄Π°Ρ… Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ руководством АндСрса Π₯СйлсбСрга Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft ΠΊΠ°ΠΊ язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Microsoft .NET Framework ΠΈ впослСдствии Π±Ρ‹Π» стандартизирован ΠΊΠ°ΠΊ ECMA-334 ΠΈ ISO/IEC 23270.

C# относится ΠΊ сСмьС языков с C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ синтаксисом, ΠΈΠ· Π½ΠΈΡ… Π΅Π³ΠΎ синтаксис Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ C++ ΠΈ Java. Π―Π·Ρ‹ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (Π² Ρ‚ΠΎΠΌ числС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² явного ΠΈ нСявного привСдСния Ρ‚ΠΈΠΏΠ°), Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, события, свойства, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ, LINQ, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML.

ΠŸΠ΅Ρ€Π΅Π½ΡΠ² ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΎΡ‚ своих ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ² β€” языков C++, Java, Delphi, ΠœΠΎΠ΄ΡƒΠ»Π° ΠΈ Smalltalk β€” Π‘#, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ ΠΈΡ… использования, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ сСбя ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C# Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС классов (ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ допускаСтся мноТСствСнноС наслСдованиС интСрфСйсов).

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ языка

C# разрабатывался ΠΊΠ°ΠΊ язык программирования ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня для CLR ΠΈ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, зависит, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΡ‚ возмоТностСй самой CLR. Π­Ρ‚ΠΎ касаСтся, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, систСмы Ρ‚ΠΈΠΏΠΎΠ² C#, которая ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ BCL. ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй языка диктуСтся Ρ‚Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ конкрСтная языковая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ транслирована Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ конструкции CLR. Π’Π°ΠΊ, с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ CLR ΠΎΡ‚ вСрсии 1.1 ΠΊ 2.0 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обогатился ΠΈ сам C#; ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ взаимодСйствия слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΈ Π² дальнСйшСм. (Однако эта Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ C# 3.0, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ собой Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка, Π½Π΅ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET.) CLR прСдоставляСт C#, ΠΊΠ°ΠΊ ΠΈ всСм Π΄Ρ€ΡƒΠ³ΠΈΠΌ .NET-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»ΠΈΡˆΠ΅Π½Ρ‹ «классичСскиС» языки программирования. НапримСр, сборка мусора Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² самом C#, Π° производится CLR для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° C# Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это дСлаСтся для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° VB.NET, J# ΠΈ Π΄Ρ€.

НазваниС языка

НазваниС Β«Π‘ΠΈ ΡˆΠ°Ρ€ΠΏΒ» (ΠΎΡ‚ Π°Π½Π³Π». sharp β€” Π΄ΠΈΠ΅Π·) происходит ΠΎΡ‚ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ Π·Π½Π°ΠΊ Π΄ΠΈΠ΅Π·, прибавляСмый ΠΊ основному ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½ΠΎΡ‚Ρ‹, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ этой Π½ΠΎΡ‚Π΅ Π·Π²ΡƒΠΊΠ° Π½Π° ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½.[4] Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ названию языка C++, Π³Π΄Π΅ Β«++Β» ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π½Π° 1.

ВслСдствиС тСхничСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (стандартныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΈ Ρ‚. Π΄.) ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ Π΄ΠΈΠ΅Π· ♯​ Π½Π΅ прСдставлСн Π½Π° стандартной ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅, Π·Π½Π°ΠΊ Π½ΠΎΠΌΠ΅Ρ€Π° # Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ для прСдставлСния Π·Π½Π°ΠΊΠ° Π΄ΠΈΠ΅Π· ΠΏΡ€ΠΈ записи ΠΈΠΌΠ΅Π½ΠΈ языка программирования.[5] Π­Ρ‚ΠΎ соглашСниС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π―Π·Ρ‹ΠΊΠ° C# ECMA-334.[6] Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ ΠΈ ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅[7]), ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ.

Названия языков программирования Π½Π΅ принято ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, поэтому Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ язык Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎ-английски Β«Π‘ΠΈ ΡˆΠ°Ρ€ΠΏΒ».

Бтандартизация

C# стандартизирован Π² ECMA (ECMA-334)[8] ΠΈ ISO (ISO/IEC 23270)[9].

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΎ Ρ‚Ρ€Ρ‘Ρ… нСзависимых рСализациях C#, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° этой спСцификации ΠΈ находящихся Π² настоящСС врСмя Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стадиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

ВСрсии

На протяТСнии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языка C# Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ нСсколько Π΅Π³ΠΎ вСрсий:

ΠžΠ±Ρ‰Π°Ρ информация ΠΏΠΎ вСрсиям
C# 2.0C# 3.0C# 4.0C# 5.0
НовыС
возмоТности
  • ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹
  • АнонимныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  • ΠΡƒΠ»ΡŒ-Ρ‚ΠΈΠΏΡ‹
  • НСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ
  • АвтоматичСская рСализация свойств
  • АнонимныС Ρ‚ΠΈΠΏΡ‹
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
  • Запросы
  • Лямбда-выраТСния
  • Π”Π΅Ρ€Π΅Π²ΡŒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  • ДинамичСскоС связываниС
  • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
  • ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Π°Ρ ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • АсинхронныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΊΠ°ΠΊ слуТба

ВСрсия 1.0

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ C# Π±Ρ‹Π» Π½Π°Ρ‡Π°Ρ‚ Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 1998 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ COOL (C-style Object Oriented Language). ВСрсия 1.0 Π±Ρ‹Π»Π° анонсирована вмСстС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ .NET Π² июнС 2000 Π³ΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΆΠ΅ появилась ΠΈ пСрвая общСдоступная Π±Π΅Ρ‚Π°-вСрсия; C# 1.0 ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅Π» вмСстС с Microsoft Visual Studio .NET Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2002 Π³ΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия C# Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»Π° ΠΏΠΎ своим возмоТностям Java 1.4, нСсколько ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€ΡΡ: Ρ‚Π°ΠΊ, Π² C# имСлись свойства (выглядящиС Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π½Π° Π΄Π΅Π»Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса), индСксаторы (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ свойствам, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ индСкс массива), события, Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹, Ρ†ΠΈΠΊΠ»Ρ‹ foreach, структуры, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ нСобходимости (boxing), Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, встроСнныС срСдства взаимодСйствия с нСуправляСмым ΠΊΠΎΠ΄ΠΎΠΌ (DLL, COM) ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² C# Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π±Ρ‹Π»ΠΎ пСрСнСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности C++, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Π² Java: Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C++), ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ссылкС, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ goto (с ограничСниями). Π’Π°ΠΊΠΆΠ΅ Π² C# оставили ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями β€” Π² мСстах ΠΊΠΎΠ΄Π°, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… словом unsafe ΠΈ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ компилятору.

ВСрсия 2.0

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ спСцификации C# 2.0 Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Microsoft Π² октябрС 2003 Π³ΠΎΠ΄Π°; Π² 2004 Π³ΠΎΠ΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π±Π΅Ρ‚Π°-вСрсии (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Whidbey), C# 2.0 ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅Π» 7 ноября 2005 Π³ΠΎΠ΄Π° вмСстС с Visual Studio 2005 ΠΈ .NET 2.0.

НовыС возмоТности Π² вСрсии 2.0
  • ЧастичныС Ρ‚ΠΈΠΏΡ‹ (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»).
  • ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅, ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (generics). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ шаблонов C++, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ВмСстС с Ρ‚Π΅ΠΌ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ выраТСния, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ частично спСциализированы, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚ шаблонного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° нСльзя Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ Ρ‚. Π΄.[12]
  • Новая Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сопрограммы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова yield, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Python ΠΈ Ruby.
  • АнонимныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ замыкания.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ β€˜??’: return obj1 ?? obj2; ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ (Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ C# 1.0) return obj1!=null ? obj1 : obj2;.
  • ΠžΠ±Π½ΡƒΠ»ΡΠ΅ΠΌΡ‹Π΅ (β€˜nullable’) Ρ‚ΠΈΠΏΡ‹-значСния (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Π΅ Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int? i = null;), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой Ρ‚Π΅ ΠΆΠ΅ самыС Ρ‚ΠΈΠΏΡ‹-значСния, способныС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null. Π’Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ взаимодСйствиС с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· язык SQL.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° .Net языках (Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° C#).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 64-разрядных вычислСний, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, позволяСт ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ адрСсноС пространство ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 64-разрядныС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ВСрсия 3.0

Π’ июнС 2004 Π³ΠΎΠ΄Π° АндСрс Π₯СйлсбСрг Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ рассказал Π½Π° сайтС Microsoft ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… языка Π² C#3.0.[13] Π’ сСнтябрС 2005 Π³ΠΎΠ΄Π° Π²Ρ‹ΡˆΠ»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ спСцификации C# 3.0 ΠΈ Π±Π΅Ρ‚Π°-вСрсия C# 3.0, устанавливаСмая Π² Π²ΠΈΠ΄Π΅ дополнСния ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Visual Studio 2005 ΠΈ .NET 2.0. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ эта вСрсия языка вошла Π² Visual Studio 2008 ΠΈ .NET 3.5.

НовыС возмоТности Π² вСрсии 3.0

Π’ C# 3.0 появились ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ добавлСния ΠΊ языку:

  • ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова select, from, where, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ запросы ΠΈΠ· SQL, XML, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚. ΠΏ. (запрос, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² язык, Language Integrated Query, ΠΈΠ»ΠΈ LINQ)
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вмСстС с Π΅Π³ΠΎ свойствами:
Customer c = new Customer(); c.Name = "James"; c.Age=30;
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ
Customer c = new Customer { Name = "James", Age = 30 };
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ
listOfFoo.Where(x => x.size > 10);
  • Π”Π΅Ρ€Π΅Π²ΡŒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:
лямбда-выраТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, доступной для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π²ΠΎ врСмя выполнСния, Ρ‚Π΅ΠΌ самым позволяя Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ C#-выраТСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, выраТСния SQL).
  • Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ² локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: var x = "hello"; вмСсто string x = "hello";
  • БСзымянныС Ρ‚ΠΈΠΏΡ‹: var x = new { Name = "James" };
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова this ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ статичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
public static class StringExtensions
{
  public static int ToInt32(this string val)
  {
    return Int32.Parse(val);
  }
}
// ...
string s = "10";
int x = s.ToInt32();
  • АвтоматичСскиС свойства: компилятор сгСнСрируСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ (private) ΠΏΠΎΠ»Π΅ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ аксСссор ΠΈ ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ для ΠΊΠΎΠ΄Π° Π²ΠΈΠ΄Π°
public string Name { get; private set; }

C# 3.0 совмСстим с C# 2.0 ΠΏΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ MSIL-ΠΊΠΎΠ΄Ρƒ; ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² языкС β€” чисто синтаксичСскиС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° этапС компиляции. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… запросов LINQ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ бСзымянныС Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ Π² сочСтании с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π°Π΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ List.FindAll ΠΈ List.RemoveAll.

ВСрсия 4.0

ΠŸΡ€Π΅Π²ΡŒΡŽ C# 4.0 Π±Ρ‹Π»ΠΎ прСдставлСно Π² ΠΊΠΎΠ½Ρ†Π΅ 2008 Π³ΠΎΠ΄Π°, вмСстС с CTP-вСрсиСй Visual Studio 2010.

Visual Basic 10.0 ΠΈ C# 4.0 Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Π°ΠΏΡ€Π΅Π»Π΅ 2010 Π³ΠΎΠ΄Π°, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с выпуском Visual Studio 2010.

НовыС возмоТности Π² вСрсии 4.0[14]
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания, для использования:
    • с языками с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (Python, Ruby)
    • с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ
    • отраТСния (reflection)
    • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с измСняСмой структурой (DOM). ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово dynamic.
  • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
  • НовыС возмоТности COM interop
  • ΠšΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Π² ΠΊΠΎΠ΄Π΅ (Code Contracts)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);  // ДинамичСский Π²Ρ‹Π·ΠΎΠ²
public void SomeMethod(int x, int y = 5, int z = 7);  // ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Β«Hello, World!Β»

НиТС прСдставлСн ΠΊΠΎΠ΄ классичСской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Hello worldΒ» Π½Π° C# для консольного прилоТСния:

using System;
 
namespace Example
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!"); // Π’Ρ‹Π²ΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста Π² консоль
            Console.ReadKey(); // ОТиданиС наТатия клавиши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
        }
    }
}

ΠΈ ΠΊΠΎΠ΄ этой ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для прилоТСния Windows Forms:

using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        private void OnButtonClick(object sender, EventArgs e) // Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ lbl_hello Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
        {
            lbl_hello.Text = "Hello, World!";
        }
    }
}

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

БущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ C#:

  • РСализация C# Π² Π²ΠΈΠ΄Π΅ компилятора csc.exe Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² состав .NET Framework (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ .NET Micro Framework, .NET Compact Framework ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Silverlight ΠΈ Windows Phone 7).
  • Π’ составС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rotor (Shared Source Common Language Infrastructure) ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Mono Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ C# с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ DotGNU Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ компилятор C# с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
  • DotNetAnywhere[15] β€” ориСнтированная Π½Π° встраиваСмыС систСмы рСализация CLR, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ практичСски всю ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ C# 2.0.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  1. ↑ Β«ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ язык Π‘# унаслСдовал свой синтаксис ΠΎΡ‚ C++ ΠΈ Java…» (Π’Ρ€Π΅ΠΉ Нэш Β«C# 2010: ускорСнный курс для профСссионалов» (Β«Accelerated C# 2010Β») β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2010. β€” Π‘. 592. β€” ISBN 978-5-8459-1638-9; стр. 17)
  2. ↑ Β«Π―Π·Ρ‹ΠΊ C# … унаслСдовал ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связан с двумя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСмыми Π² ΠΌΠΈΡ€Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ языками β€” C ΠΈ C++, Π° Ρ‚Π°ΠΊΠΆΠ΅ с языком Java.Β», ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π»Π΅Π΅: «Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ C# ΠΈ Java Π±ΠΎΠ»Π΅Π΅ слоТная. Оба языка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ для создания пСрСносимого ΠΊΠΎΠ΄Π°, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° C ΠΈ C++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ… синтаксис ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль. Однако ΠΌΠ΅ΠΆΠ΄Ρƒ этими языками Π½Π΅Ρ‚ прямой связи, ΠΎΠ½ΠΈ большС ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π΄Π²ΠΎΡŽΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π±Ρ€Π°Ρ‚ΡŒΠ΅Π², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ.Β» (Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚ Β«C# ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ курс». β€” М.: ΠŸΠΈΡ‚Π΅Ρ€. 2003. β€” стр. 20).
  3. ↑ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚ ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ Π‘#. : ΠŸΠ΅Ρ€. с Π°Π½Π³Π». β€” М. : Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2004. β€” 752 с. : ΠΈΠ». β€” ΠŸΠ°Ρ€Π°Π». Ρ‚ΠΈΡ‚. Π°Π½Π³Π». ISBN 5-8459-0563-X (рус.) стр. 26-27.
  4. ↑ Kovacs, James C#/.NET History Lesson (September 7, 2007). Архивировано ΠΈΠ· пСрвоисточника 21 августа 2011. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 23 ΠΌΠ°Ρ€Ρ‚Π° 2011.
  5. ↑ Microsoft C# FAQ. Microsoft.(нСдоступная ссылка β€” история) ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 25 ΠΌΠ°Ρ€Ρ‚Π° 2008.(нСдоступная ссылка β€” история)
  6. ↑ C# Language Specification. β€” 4th. β€” ECMA International, 2006.
  7. ↑ Visual C#.net Standard (JPEG). Microsoft (September 4, 2003). Архивировано ΠΈΠ· пСрвоисточника 21 августа 2011. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 18 июня 2009.
  8. ↑ Standard ECMA-334 C# Language Specification, 4rd edition (June 2006)
  9. ↑ ISO/IEC 23270:2003, Information technology β€” C# Language Specification
  10. ↑ БпСцификация ΠΏΠΎ Microsoft C# 2.0 содСрТит описаниС лишь Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй вСрсии 2.0. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ вСрсии описаны Π² спСцификации 1.2, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅.
  11. ↑ Для вСрсий языка C# 3.0, 4.0 ΠΈ 5.0 ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ECMA ΠΈΠ»ΠΈ ISO/IEC спСцификаций.
  12. ↑ Differences Between C++ Templates and C# Generics (C# Programming Guide)
  13. ↑ MSDN News
  14. ↑ C# Future
  15. ↑ Dot Net Anywhere

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

  • Π”ΠΆΠΎΠ·Π΅Ρ„ Албахари, Π‘Π΅Π½ Албахари C# 5.0. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ. ПолноС описаниС языка = C# 5.0 in a Nutshell: The Definitive Reference. β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2013. β€” 1008 Ρ. β€” ISBN 978-5-8459-1819-2
  • Π­Π½Π΄Ρ€ΡŽ ВроСлсСн. Π―Π·Ρ‹ΠΊ программирования C# 2010 ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 4.0 = Pro C# 2010 and the .NET 4.0 Platform. β€” 5-Π΅ ΠΈΠ·Π΄. β€” М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2010. β€” Π‘. 1392. β€” ISBN 978-5-8459-1682-2
  • Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚. C# 4.0: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство = C# 4.0 The Complete Reference. β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2010. β€” Π‘. 1056. β€” ISBN 978-5-8459-1684-6
  • Π”ΠΆΠΎΠ½ Π‘ΠΊΠΈΡ‚. C#: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для профСссионалов, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ = C# in Depth, 2nd Edition. β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2011. β€” 544 Ρ. β€” ISBN 978-5-8459-1555-9
  • ΠšΡ€ΠΈΡΡ‚ΠΈΠ°Π½ НСйгСл, ΠšΠ°Ρ€Π»ΠΈ Уотсон ΠΈ Π΄Ρ€. Visual C# 2010: ΠΏΠΎΠ»Π½Ρ‹ΠΉ курс = Beginning Microsoft Visual C# 2010. β€” М.: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2010. β€” ISBN 978-5-8459-1699-0
  • ΠšΡ€ΠΈΡΡ‚ΠΈΠ°Π½ НСйгСл, Π‘ΠΈΠ»Π» ИвьСн, Π”ΠΆΠ΅ΠΉ Π“Π»ΠΈΠ½Π½, ΠšΠ°Ρ€Π»ΠΈ Уотсон, ΠœΠΎΡ€Π³Π°Π½ Π‘ΠΊΠΈΠ½Π½Π΅Ρ€. C# 4: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 4 для профСссионалов = Professional C# 4 and .NET 4. β€” М.: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2010. β€” Π‘. 1440. β€” ISBN 978-5-8459-1656-3

Бсылки

 ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ этого шаблона Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ISO
ΠŸΠ΅Ρ€Π΅Ρ‡Π½ΠΈ:  ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ стандартов ИБО β€’ ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ€ΠΎΠΌΠ°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ISO β€’ ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ стандартов IEC
ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:  ΠšΠ°Ρ‚Сгория:Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ISO β€’ ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ:ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ OSI
1
ΠΏΠΎ
9999
1 β€’ 2 β€’ 3 β€’ 4 β€’ 5 β€’ 6 β€’ 7 β€’ 9 β€’ 16 β€’ 31 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13) β€’ 128 β€’ 216 β€’ 217 β€’ 226 β€’ 228 β€’ 233 β€’ 259 β€’ 269 β€’ 296 β€’ 302 β€’ 306 β€’ 428 β€’ 639 (-1, -2, -3, -5, -6) β€’ 646 β€’ 690 β€’ 732 β€’ 764 β€’ 843 β€’ 898 β€’ 1000 β€’ 1004 β€’ 1007 β€’ 1073-1 β€’ 1413 β€’ 1538 β€’ 1745 β€’ 2014 β€’ 2015 β€’ 2022 β€’ 2108 β€’ 2145 β€’ 2146 β€’ 2281 β€’ 2709 β€’ 2711 β€’ 2788 β€’ 3029 β€’ 3103 β€’ 3166 (-1, -2, -3) β€’ 3297 β€’ 3307 β€’ 3602 β€’ 3864 β€’ 3901 β€’ 3977 β€’ 4031 β€’ 4157 β€’ 4217 β€’ 5218 β€’ 5775 β€’ 5776 β€’ 5964 β€’ 6166 β€’ 6344 β€’ 6346 β€’ 6425 β€’ 6429 β€’ 6438 β€’ 6523 β€’ 6709 β€’ 7001 β€’ 7002 β€’ 7098 β€’ 7185 β€’ 7388 β€’ 7498 β€’ 7736 β€’ 7810 β€’ 7811 β€’ 7812 β€’ 7813 β€’ 7816 β€’ 8000 β€’ 8217 β€’ 8571 β€’ 8583 β€’ 8601 β€’ 8632 β€’ 8652 β€’ 8691 β€’ 8807 β€’ 8820-5 β€’ 8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16) β€’ 8879 β€’ 9000 β€’ 9075 β€’ 9126 β€’ 9241 β€’ 9362 β€’ 9407 β€’ 9506 β€’ 9529 β€’ 9564 β€’ 9594 β€’ 9660 β€’ 9897 β€’ 9945 β€’ 9984 β€’ 9985 β€’ 9995
10000
ΠΏΠΎ
19999
10006 β€’ 10118-3 β€’ 10160 β€’ 10161 β€’ 10165 β€’ 10179 β€’ 10206 β€’ 10303 β€’ 10303-11 β€’ 10303-21 β€’ 10303-22 β€’ 10303-238 β€’ 10303-28 β€’ 10383 β€’ 10487 β€’ 10585 β€’ 10589 β€’ 10646 β€’ 10664 β€’ 10746 β€’ 10861 β€’ 10957 β€’ 10962 β€’ 10967 β€’ 11073 β€’ 11170 β€’ 11179 β€’ 11404 β€’ 11544 β€’ 11783 β€’ 11784 β€’ 11785 β€’ 11801 β€’ 11898 β€’ 11940 β€’ 11941 β€’ 11941 (TR) β€’ 11992 β€’ 12006 β€’ 12164 β€’ 12182:1998 β€’ 12207:1995 β€’ 12207:2008 β€’ 12234-2 β€’ 13211 (-1, -2) β€’ 13216 β€’ 13250 β€’ 13399 β€’ 13406-2 β€’ 13407 β€’ 13450 β€’ 13485 β€’ 13490 β€’ 13567 β€’ 13568 β€’ 13584 β€’ 13616 β€’ 14000 β€’ 14031 β€’ 14396 β€’ 14443 β€’ 14496-10 β€’ 14496-14 β€’ 14644 (-1, -2, -3, -4, -5, -6, -7, -8, -9) β€’ 14649 β€’ 14651 β€’ 14698 β€’ 14698-2 β€’ 14750 β€’ 14882 β€’ 14971 β€’ 15022 β€’ 15189 β€’ 15288 β€’ 15291 β€’ 15292 β€’ 15408 β€’ 15444 β€’ 15445 β€’ 15438 β€’ 15504 β€’ 15511 β€’ 15686 β€’ 15693 β€’ 15706 β€’ 15706-2 β€’ 15707 β€’ 15897 β€’ 15919 β€’ 15924 β€’ 15926 β€’ 15926 WIP β€’ 15930 β€’ 16023 β€’ 16262 β€’ 16750 β€’ 17024 β€’ 17025 β€’ 17369 β€’ 17799 β€’ 18000 β€’ 18004 β€’ 18014 β€’ 18245 β€’ 18629 β€’ 18916 β€’ 19005 β€’ 19011 β€’ 19092-1 β€’ 19092-2 β€’ 19114 β€’ 19115 β€’ 19439 β€’ 19501:2005 β€’ 19752 β€’ 19757 β€’ 19770 β€’ 19775-1 β€’ 19794-5
20000+20000 β€’ 20022 β€’ 21000 β€’ 21047 β€’ 21827:2002 β€’ 22000 β€’ 23008-2 β€’ 23270 β€’ 23360 β€’ 24613 β€’ 24707 β€’ 25178 β€’ 26000 β€’ 26300 β€’ 26324 β€’ 27000 series β€’ 27000 β€’ 27001 β€’ 27002 β€’ 27003 β€’ 27004 β€’ 27005 β€’ 27006 β€’ 27007 β€’ 27729 β€’ 27799 β€’ 29199-2 β€’ 29500 β€’ 31000 β€’ 32000 β€’ 38500 β€’ 42010 β€’ 50001 β€’ 80000
Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅: ВсС ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Β«ISOΒ»

Π¦ΠΈΠΊΠ» (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” ВикипСдия

Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Π¦ΠΈΠΊΠ». ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° While.

Π¦ΠΈΠΊΠ» β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ конструкции Π² высокоуровнСвых языках программирования, прСдназначСнная для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ исполнСния Π½Π°Π±ΠΎΡ€Π° инструкций. Π’Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ любая ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ исполняСмая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, организованная Π»ΡŽΠ±Ρ‹ΠΌ способом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°).

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, прСдназначСнная для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ исполнСния, называСтся Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°. Π•Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° называСтся ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ итСрация ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, называСтся условиСм Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ условиСм окончания Ρ†ΠΈΠΊΠ»Π° (Π»ΠΈΠ±ΠΎ условиСм продолТСния Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ интСрпрСтируСтся Π΅Π³ΠΎ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ β€” ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ нСобходимости Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ продолТСния Ρ†ΠΈΠΊΠ»Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, хранящая Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, называСтся счётчиком ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ просто счётчиком Ρ†ΠΈΠΊΠ»Π°. Π¦ΠΈΠΊΠ» Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ содСрТит счётчик, счётчик Π½Π΅ обязан Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ β€” условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… измСняСмых Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ внСшними условиями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, наступлСниСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), Π² послСднСм случаС счётчик ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

ИсполнСниС любого Ρ†ΠΈΠΊΠ»Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ условия Π²Ρ‹Ρ…ΠΎΠ΄Π°, исполнСниС Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков программирования прСдоставляСт срСдства для досрочного управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° нСзависимо ΠΎΡ‚ истинности условия Π²Ρ‹Ρ…ΠΎΠ΄Π° (Π² языкС Π‘ΠΈ β€” break) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (Π² языкС Π‘ΠΈ β€” continue).

БСзусловныС Ρ†ΠΈΠΊΠ»Ρ‹[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Иногда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹, Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ прСдусмотрСн Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ бСзусловными, ΠΈΠ»ΠΈ бСсконСчными. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… синтаксичСских срСдств для создания бСсконСчных Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²ΠΈΠ΄Ρƒ ΠΈΡ… нСтипичности, языки программирования Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚, поэтому Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкций, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для создания ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ условных) Ρ†ΠΈΠΊΠ»ΠΎΠ². Для обСспСчСния бСсконСчного повторСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π»ΠΈΠ±ΠΎ отсутствуСт (Ссли позволяСт синтаксис, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π΅ LOOP ... END LOOP языка Ада), Π»ΠΈΠ±ΠΎ замСняСтся константным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (while true do ... Π² ПаскалС). Π’ языкС Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» for(;;) с Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ сСкциями ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» while (1).

Π¦ΠΈΠΊΠ» с прСдусловиСм[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π¦ΠΈΠΊΠ» с прСдусловиСм β€” Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся, ΠΏΠΎΠΊΠ° истинно Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ условиС, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Π­Ρ‚ΠΎ условиС провСряСтся Π΄ΠΎ выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, поэтому Ρ‚Π΅Π»ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½ΠΈ Ρ€Π°Π·Ρƒ (Ссли условиС с самого Π½Π°Ρ‡Π°Π»Π° Π»ΠΎΠΆΠ½ΠΎ). Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… языков программирования рСализуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ while, ΠΎΡ‚ΡΡŽΠ΄Π° Π΅Π³ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β€” while-Ρ†ΠΈΠΊΠ». На языкС Pascal Ρ†ΠΈΠΊΠ» с прСдусловиСм ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

while <условиС> do
begin   
  <Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°> 
end;

На языкС Π‘ΠΈ:

while (<условиС>) {
   <Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°>
}

Π¦ΠΈΠΊΠ» с постусловиСм[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π¦ΠΈΠΊΠ» с постусловиСм β€” Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ условиС провСряСтся послС выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ всСгда выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’ языкС Паскаль этот Ρ†ΠΈΠΊΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ repeat..until; Π² Π‘ΠΈ β€” do…while.

На языкС Pascal Ρ†ΠΈΠΊΠ» с постусловиСм ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄::

repeat
    <Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°>
until <условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°>

На языкС Π‘ΠΈ:

do {
    <Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°>
} while (<условиС продолТСния Ρ†ΠΈΠΊΠ»Π°>)

Π’ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ΅ условия Ρ†ΠΈΠΊΠ»Π° с постусловиСм Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках Π΅ΡΡ‚ΡŒ различия. Π’ ПаскалС ΠΈ языках, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΎΡ‚ Π½Π΅Π³ΠΎ, условиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° трактуСтся ΠΊΠ°ΠΊ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° (Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° условиС истинно, Π² русской Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Ρ‘ Β«Ρ†ΠΈΠΊΠ» Π΄ΠΎΒ»), Π° Π² Π‘ΠΈ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… β€” ΠΊΠ°ΠΊ условиС продолТСния (Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΊΠ°Β»).

Π¦ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π¦ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ общая Ρ„ΠΎΡ€ΠΌΠ° условного Ρ†ΠΈΠΊΠ»Π°. БинтаксичСски Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» оформляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Ρ‘Ρ… конструкций: Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ½Ρ†Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π½Π°Ρ‡Π°Π»Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, конструкция ΠΊΠΎΠ½Ρ†Π° β€” Ρ‚ΠΎΡ‡ΠΊΡƒ, Π³Π΄Π΅ Ρ‚Π΅Π»ΠΎ заканчиваСтся. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» заканчиваСтся ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаётся Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° конструкциСй ΠΊΠΎΠ½Ρ†Π° Ρ†ΠΈΠΊΠ»Π°. ЕстСствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» выполнился Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ бСзусловно, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Ρ†ΠΈΠΊΠ»Π° ΠΎΡ‚ рассмотрСнных Π²Ρ‹ΡˆΠ΅ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, располоТСнная послС Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π°, выполняСтся всСгда (Π΄Π°ΠΆΠ΅ Ссли условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° истинно ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ), Π° Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, находящаяся послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π½Π΅ выполняСтся ΠΏΡ€ΠΈ послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π›Π΅Π³ΠΊΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ†ΠΈΠΊΠ» с прСдусловиСм (размСстив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°), ΠΈ Ρ†ΠΈΠΊΠ» с постусловиСм (размСстив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°).

Π§Π°ΡΡ‚ΡŒ языков программирования содСрТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ конструкции для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины. Π’Π°ΠΊ, Π² языкС Ада для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция LOOP ... END LOOP ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° EXIT ΠΈΠ»ΠΈ EXIT WHEN:

LOOP
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
  EXIT WHEN <условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°>;
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
  IF <условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°> THEN 
    EXIT; 
  END;
  ... Π§Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°
END LOOP:

Π—Π΄Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС количСство ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π‘Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ EXIT WHEN ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° провСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π° просто EXIT β€” ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° производится Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² слоТного условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π’ Ρ‚Π΅Ρ… языках, Π³Π΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… конструкций Π½Π΅ прСдусмотрСно, Ρ†ΠΈΠΊΠ» с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· сСрСдины ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смодСлирован с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого условного Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° (Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ break Π² Π‘ΠΈ, exit Π² Π’ΡƒΡ€Π±ΠΎ ПаскалС ΠΈ Ρ‚. ΠΏ.), Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° goto.

Π¦ΠΈΠΊΠ» со счётчиком (ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» для)[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π¦ΠΈΠΊΠ» со счётчиком β€” Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСкоторая пСрСмСнная измСняСт своё Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ шагом, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… языков программирования рСализуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся счётчик (Ρ‚Π°ΠΊ называСмая «пСрСмСнная Ρ†ΠΈΠΊΠ»Π°Β»), Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² (ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика) ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, шаг, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ измСняСтся счётчик. НапримСр, Π² языкС ΠžΠ±Π΅Ρ€ΠΎΠ½-2 Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

 FOR v := b TO e BY s DO
   ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
 END 

здСсь v β€” счётчик, b β€” Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика, e β€” Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика, s β€” шаг).

НСоднозначСн вопрос ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта пСрСмСнная использовалась ΠΊΠ°ΠΊ счётчик. НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Паскаль встрСтится конструкция Π²ΠΈΠ΄Π°:

i := 100;
for i := 0 to 9 do
begin
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
end;
k := i;

Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΈΡ‚ΠΎΠ³Π΅ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k: 9, 10, 100, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅? А Ссли Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ досрочно? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, увСличиваСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика послС послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π½Π΅ измСняСт Π»ΠΈ транслятор это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ вопрос: Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° счётчику Π±ΡƒΠ΄Π΅Ρ‚ явно присвоСно Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅? Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки программирования Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ вопросы ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ счётчика Ρ‡Ρ‘Ρ‚ΠΊΠΎ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ПаскалС, стандарт языка Π½Π΅ опрСдСляСт Π½ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния счётчика, Π½ΠΈ послСдствий Π΅Π³ΠΎ явного измСнСния Π² Ρ†ΠΈΠΊΠ»Π΅, Π½ΠΎ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ счётчик явно ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ПаскалС, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ эту Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… систСмах ΠΈ использовании Ρ€Π°Π·Π½Ρ‹Ρ… трансляторов.

Радикально Ρ€Π΅ΡˆΡ‘Π½ вопрос Π² языках Ада ΠΈ Kotlin: счётчик считаСтся описанным Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π°, ΠΈ Π²Π½Π΅ Π΅Π³ΠΎ просто Π½Π΅ сущСствуСт. Π”Π°ΠΆΠ΅ Ссли имя счётчика Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π² качСствС счётчика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная. Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊΡƒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ явно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ значСния, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ конструкция Π½Π° АдС:

i := 100;
for i in (0..9) loop
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
end loop;
k := i;

И Π½Π° ΠšΠΎΡ‚Π»ΠΈΠ½Π΅:

val i = 100;
for (i in 0..9){
    ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°
}
val k = i;

внСшнС аналогичная Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ Π½Π° ПаскалС, трактуСтся ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная i, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π²Π½Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ счётчику i, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаётся ΠΈ измСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. ПодобноС обособлСниС счётчика ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ бСзопасно: Π½Π΅ трСбуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС для Π½Π΅Π³ΠΎ ΠΈ минимальна Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ случайных ошибок, связанных со случайным Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если программисту трСбуСтся Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ» со счётчиком, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, сущСствуСт Π»ΠΈ пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Π²Ρ‹Π±Ρ€Π°Π» Π² качСствС счётчика, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ описаниС Π½ΠΎΠ²ΠΎΠ³ΠΎ счётчика Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ, Π½ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ «свободных» счётчиков. Он просто ΠΏΠΈΡˆΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счётчиком, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΈΠΌΡ‘Π½ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚.

Π¦ΠΈΠΊΠ» со счётчиком всСгда ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ условный Ρ†ΠΈΠΊΠ», ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ счётчику присваиваСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° условиСм Π²Ρ‹Ρ…ΠΎΠ΄Π° являСтся достиТСниС счётчиком ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ значСния; ΠΊ Ρ‚Π΅Π»Ρƒ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ этом добавляСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ измСнСния счётчика Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ шаг. Однако ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° со счётчиком ΠΌΠΎΠ³ΡƒΡ‚ эффСктивнСС Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ процСссорныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

Никлаус Π’ΠΈΡ€Ρ‚ ΠΎΠ΄Π½ΠΎ врСмя Π½Π°Π·Ρ‹Π²Π°Π» Ρ†ΠΈΠΊΠ» со счётчиком Β«ΠΌΠ°Ρ€Π³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΒ», утвСрТдая, Ρ‡Ρ‚ΠΎ такая конструкция являСтся излишнСй ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠ· синтаксиса языков программирования ΠΊΠ°ΠΊ нСсистСмная. Π’ соотвСтствии с этим прСдставлСниСм Π² языкС программирования ΠžΠ±Π΅Ρ€ΠΎΠ½ Ρ†ΠΈΠΊΠ»Π° со счётчиком Π½Π΅ Π±Ρ‹Π»ΠΎ. Однако Π² языкС ΠžΠ±Π΅Ρ€ΠΎΠ½-2, созданном Π’ΠΈΡ€Ρ‚ΠΎΠΌ ΠΈ ΠœΡ‘ΡΡΠ΅Π½Π±Ρ‘ΠΊΠΎΠΌ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠžΠ±Π΅Ρ€ΠΎΠ½Π°, Ρ†ΠΈΠΊΠ» со счётчиком FOR появился снова Π² интСрСсах практичСского удобства использования[1].

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΎΡ‚ Π½Π΅Π³ΠΎ, Ρ†ΠΈΠΊΠ» for, нСсмотря Π½Π° ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ†ΠΈΠΊΠ»Π° со счётчиком, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ с прСдусловиСм. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π‘ΠΈ конструкция Ρ†ΠΈΠΊΠ»Π°:

for (i = 0; i < 10; ++i)
{
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° 
}

фактичСски прСдставляСт собой Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи конструкции[2]:

i = 0;
while (i < 10)
{
  ... Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° 
  ++i;
}

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² конструкции for сначала ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, Π·Π°Ρ‚Π΅ΠΌ β€” условиС продолТСния ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, выполняСмая послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° нСкоторая опСрация (это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ счётчика; это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΠ° указатСля ΠΈΠ»ΠΈ какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ посторонняя опСрация). Для языков Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ просто: пСрСмСнная-счётчик Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ прСдсказуСмо ΠΈ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° сохраняСт своё послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

БовмСстный Ρ†ΠΈΠΊΠ»[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° являСтся Ρ†ΠΈΠΊΠ», Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ мноТСства, Π±Π΅Π· явного указания порядка пСрСчислСния этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ совмСстными (Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ просмотра) ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ запись инструкции Π²ΠΈΠ΄Π°: Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ X для всСх элСмСнтов, входящих Π²ΠΎ мноТСство MΒ». БовмСстный Ρ†ΠΈΠΊΠ», тСорСтичСски, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ опрСдСляСт, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС опСрация Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ элСмСнтам мноТСства, хотя ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ языки программирования, разумССтся, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ исполнСния Ρ†ΠΈΠΊΠ»Π° Π·Π° счёт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ доступа Π½Π΅ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ программистом, Π° Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎΠΌ порядкС. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ возмоТности ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ распараллСливаниС выполнСния совмСстного Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ опСрация ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выполняСтся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… модулях для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ логичСски ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° остаётся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

БовмСстныС Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования (C#, Eiffel, Java, JavaScript, Perl, Python, PHP, LISP, Tcl ΠΈ Π΄Ρ€.) β€” ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠΎ всСм элСмСнтам Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΠ»ΠΈ ссылка Π½Π° Π½Π΅Π³ΠΎ). Π’ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½:

C++:

for (type &item : set) //поддСрТиваСтся, начиная со стандарта C++11
{
    //использованиС item
}

C#:

foreach (type item in set) 
{
    //использованиС item
}

Delphi:

for item in [1..100] do
begin
  //ИспользованиС item (Π Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ»Π°ΡΡŒ Π² Delphi 2010) 
end;

Perl (строгий порядок Β«ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎ послСднСго»):

foreach (@set) 
{
    #использованиС $_
}
# ΠΈΠ»ΠΈ
for (@set) 
{
    #использованиС $_
}
# ΠΈΠ»ΠΈ
foreach $item (@set) 
{
    #использованиС $item
}

Eiffel:

across set as cursor loop
    -- использованиС cursor.item
end

Java:

for (type item : set) 
{
    //использованиС item
}

JavaScript:

for (txtProperty in objObject)
  {
  /*
  использованиС:
  objObject [txtProperty]
  */
  }

PHP:

foreach ($arr as $item) {
    /* использованиС $item*/
}
//ΠΈΠ»ΠΈ
foreach ($arr as $key=>$value) {
    /* использованиС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСкса $key ΠΈ Π΅Π³ΠΎ значСния $value*/
}

Visual Basic.NET:

For Each item As type In set
    'использованиС item
Next item

Windows PowerShell:

foreach ($item in $set) {
  # ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с $item
} 

ΠΈΠ»ΠΈ

$set | ForEach-Object {
  # ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с $_
}

Python

for item in iterator_instance:
    # использованиС item

МногиС языки программирования, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π² своём синтаксисС цикличСскиС конструкции, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ спСцифичСскиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ порядок Ρ€Π°Π±ΠΎΡ‚Ρ‹ этих конструкций: ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Досрочный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Команда досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° примСняСтся, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π΅Ρ‰Ρ‘ Π½Π΅ достигнуто. Π’Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° обнаруТиваСтся ошибка, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ дальнСйшая Ρ€Π°Π±ΠΎΡ‚Π° Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла.

Команда досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся EXIT ΠΈΠ»ΠΈ break, Π° Π΅Ρ‘ дСйствиС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° (goto) Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, нСпосрСдствСнно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° находится. Π’Π°ΠΊ, Π² языкС Π‘ΠΈ Π΄Π²Π° Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ:

// ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break
while(<условиС>) {
  ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  if (<ошибка>) break;
  ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
}
... ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

// Аналогичный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±Π΅Π· break
while(<условиС>) {
  ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  if (<ошибка>) goto break_label;
  ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 
}
break_label:
... ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях, Ссли Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° выполнится условиС <ошибка>, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Ρ‘Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Β«ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΏΠΎ сути, просто маскируСт бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ использованиС break ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ goto, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ break Ρ‡Ρ‘Ρ‚ΠΊΠΎ Π·Π°Π΄Π°Π½ΠΎ языком, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ опасно (Π½Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вСроятности ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΠΈ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, явный досрочный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² структурного программирования.

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

ΠŸΡ€ΠΎΠΏΡƒΡΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ примСняСтся, ΠΊΠΎΠ³Π΄Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. ΠŸΡ€ΠΈ этом сам Ρ†ΠΈΠΊΠ» ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½, условия продолТСния ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’ языкС Π‘ΠΈ ΠΈ Π΅Π³ΠΎ языках-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue Π² конструкции Ρ†ΠΈΠΊΠ»Π°. ДСйствиС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ бСзусловному ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° строку Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π° послСднСй Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. НапримСр, ΠΊΠΎΠ΄ Π½Π° Π‘ΠΈ, находящий сумму элСмСнтов массива ΠΈ сумму всСх ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов массива, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

int arr[ARRSIZE];
...
// Π‘ΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ всСх ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…
// элСмСнтов массива arr с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ continue.
int sum_all = 0;
int sum_pos = 0;
for (int i = 0 ; i < ARRSIZE; ++i)
{
    sum_all += arr[i];
    if (arr[i] <= 0) continue;
    sum_pos += arr[i];
}

// Аналогичный ΠΊΠΎΠ΄ c goto
int sum_all = 0;
int sum_pos = 0;
for (int i = 0 ; i < ARRSIZE; ++i)
{
    sum_all += arr[i];
    if (arr[i] <= 0) goto cont_label;
    sum_pos += arr[i];
cont_label:
}

Из Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ясно Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ continue: ΠΎΠ½ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π° послСднюю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, пропуская Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ суммирования, Ссли ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ элСмСнт массива Π½Π΅ удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² sum_pos накапливаСтся сумма лишь ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов массива.

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния структурного программирования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ продолТСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ смодСлировано чисто структурными срСдствами. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎ мнСнию ряда Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠΎΠ² программирования (Π² частности, ЭдсгСра ДСйкстры), сам Ρ„Π°ΠΊΡ‚ использования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ нСструктурных срСдств, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ классичСский бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ»ΠΈ любая ΠΈΠ· Π΅Π³ΠΎ спСциализированных Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ break ΠΈΠ»ΠΈ continue, являСтся ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ нСдостаточно ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ.

Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ часто являСтся записью ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ, Ρ€Π°Π½Π΅Π΅ сформулированного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСцСлСсообразно ΠΏΠΎ чисто тСхничСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° структурныС конструкции часто оказываСтся нСэффСктивной ΠΈΠ»ΠΈ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ. НапримСр, Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ break ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан Ρ‚Π°ΠΊ:

// Досрочный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π±Π΅Π· break
bool flag = false; // Ρ„Π»Π°Π³ досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ
while(<условиС> && !flag) {
  ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  if (<ошибка>) {
    flag = true;
  } else {
    ... ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  }
}
... ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π›Π΅Π³ΠΊΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ, Ρ€Π°Π·Π½ΠΈΡ†Π° лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² мСстС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ вмСсто нСпосрСдствСнного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° устанавливаСтся Ρ„Π»Π°Π³ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСтся ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ условии продолТСния Ρ†ΠΈΠΊΠ»Π°. Однако для ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ описаниС Ρ„Π»Π°Π³Π° ΠΈ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Β«Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅Β» Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ досрочном Π²Ρ‹Ρ…ΠΎΠ΄Π΅ принимаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Π° выполняСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ стала Π½ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΈ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Π½ΠΈ понятнСС.

НСсколько ΠΈΠ½Π°Ρ‡Π΅ обстоит Π΄Π΅Π»ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Она, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈ СстСствСнно замСняСтся Π½Π° условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. НапримСр, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ суммирования массива ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

int arr[ARRSIZE];
...
// Π‘ΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ всСх ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…
// элСмСнтов массива arr с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ continue
int sum_all = 0;
int sum_pos = 0;
for (int i = 0 ; i < ARRSIZE; ++i)
{
    sum_all += arr[i];
    if (arr[i] > 0) // УсловиС Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅!
    {
      sum_pos += arr[i];
    }
}

Как Π²ΠΈΠ΄ΠΈΠΌ, достаточно Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ провСряСмоС условиС Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π² условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° стала ΠΊΠΎΡ€ΠΎΡ‡Π΅ (Π·Π° счёт удалСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ) ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ (ΠΈΠ· ΠΊΠΎΠ΄Π° нСпосрСдствСнно Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ с условиСм (while-Ρ†ΠΈΠΊΠ»Π΅) ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: Ссли Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ это часто Π±Ρ‹Π²Π°Π΅Ρ‚, Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ измСнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ пропустит ΠΈ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚ΠΎΠΆΠ΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ (Π² зависимости ΠΎΡ‚ условия, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит пропуск) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊ, Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» for Π½Π° while, получится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

int arr[ARRSIZE];
...
int sum_all = 0;
int sum_pos = 0;
int i = 0;
while (i < ARRSIZE) // Π¦ΠΈΠΊΠ» внСшнС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ for ...
{
    sum_all += arr[i];
    if (arr[i] <= 0) continue;
    sum_pos += arr[i];
    ++i; // ... Π½ΠΎ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ continue 
         // ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° зациклится
}

НСсмотря Π½Π° свою ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языковыС конструкции, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пропуска ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ, особСнно, досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² соврСмСнных языках программирования.

БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ, Π² Ρ‚Π΅Π»ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π²Π»ΠΎΠΆΠ΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ†ΠΈΠΊΠ», Π² Ρ‚Π΅Π»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сущСствуСт Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ внСшним ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ», образуя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ограничиваСтся.

ПолноС число исполнСний Ρ‚Π΅Π»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ произвСдСния числа ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΈ всСх Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ². НапримСр, взяв Ρ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎ 10 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 10 исполнСний Ρ‚Π΅Π»Π° для внСшнСго Ρ†ΠΈΠΊΠ»Π°, 100 для Ρ†ΠΈΠΊΠ»Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня ΠΈ 1000 Π² самом Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅.

Одна ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ β€” организация досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π½ΠΈΡ…. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° (break Π² Π‘ΠΈ, exit Π² Π’ΡƒΡ€Π±ΠΎ ПаскалС, last Π² Perl ΠΈ Ρ‚. ΠΏ.), Π½ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, обСспСчиваСт Π²Ρ‹Ρ…ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΎΠ³ΠΎ уровня, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹Π·Π²Π°Π½. Π’Ρ‹Π·ΠΎΠ² Π΅Π³ΠΎ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, внСшний ΠΆΠ΅ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ, Π½ΠΎ ΠΎΠ½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ прСрывания Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… условиях, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅.

РСшСний ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² нСсколько.

  • ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° goto для Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, нСпосрСдствСнно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ критикуСтся сторонниками структурного программирования, ΠΊΠ°ΠΊ ΠΈ всС конструкции, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ использования goto. НСкоторыС языки программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠœΠΎΠ΄ΡƒΠ»Π°-2, просто Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, ΠΈ Π² Π½ΠΈΡ… подобная конструкция Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
  • ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ срСдства Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² случаС нСобходимости устанавливая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НСдостаток β€” услоТнСниС ΠΊΠΎΠ΄Π°, сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. ИдСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ досрочно, ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΈ для досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Ссли Ρ‚Π°ΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ Π² языкС программирования). Π’ языкС Π‘ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π° Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π½Π΅Ρ‘ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return. НСдостаток β€” Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π½Π΅ всСгда логичСски обосновано, ΠΈ Π½Π΅ всС языки ΠΈΠΌΠ΅ΡŽΡ‚ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ срСдства досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.
  • Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ имССтся сСйчас Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков высокого уровня. Π’ этом случаС Π² Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΉ ситуации ΠΊΠΎΠ΄ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π° Π±Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½ вСсь Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ. НСдостаток β€” рСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ. ΠŸΡ€Π°Π²Π΄Π°, Π² соврСмСнных условиях это Π½Π΅ особСнно Π²Π°ΠΆΠ½ΠΎ: практичСски потСря ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΡ‚ΠΎΠ»ΡŒ ΠΌΠ°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ лишь для ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • НаконСц, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ языковыС срСдства для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’Π°ΠΊ, Π² языкС Ада программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» (Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°) ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ, ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ досрочного Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ эту ΠΌΠ΅Ρ‚ΠΊΡƒ. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° ΠΈΠ· всСх Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π΄ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ[3]. Π―Π·Ρ‹ΠΊ PHP прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ число ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ break β€” Ρ‚Π°ΠΊ break 2 ΠΏΡ€Π΅Ρ€Π²Ρ‘Ρ‚ сам Ρ†ΠΈΠΊΠ» ΠΈ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌ, Π° break 1 эквивалСнтно простой записи ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ break[4].

Π¦ΠΈΠΊΠ»Ρ‹ с нСсколькими охраняСмыми вСтвями[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π¦ΠΈΠΊΠ» ДСйкстры[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ программирования извСстна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π°, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π°ΡΡΡ ΠΎΡ‚ «классичСских», Ρ„ΠΎΡ€ΠΌΠ° цикличСской конструкции, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«Ρ†ΠΈΠΊΠ» ДСйкстры», ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ЭдсгСра ДСйкстры, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΅Ρ‘ описавшСго. Π’ классичСском дСйкстровском описании Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 do
   P1 β†’ S1,
     …
   Pn β†’ Sn
 od

Π—Π΄Π΅ΡΡŒ do β€” ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° конструкции Ρ†ΠΈΠΊΠ»Π°, od β€” ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ конструкции Ρ†ΠΈΠΊΠ»Π°, Pi β€” i-Π΅ ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π΅ условиС (логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «истинно» ΠΈΠ»ΠΈ Β«Π»ΠΎΠΆΠ½ΠΎΒ»), Si β€” i-я охраняСмая ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π¦ΠΈΠΊΠ» состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ (охраняСмых Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ), каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдставляСт собой ΠΏΠ°Ρ€Ρƒ ΠΈΠ· ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π³ΠΎ условия (ΠΈΠ»ΠΈ, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Β«ΠΎΡ…Ρ€Π°Π½Ρ‹Β») ΠΈ охраняСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (понятно, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТной).

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ДСйкстры Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ происходит вычислСниС ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΡ… условий. Если хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… истинно, выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ охраняСмая ΠΊΠΎΠΌΠ°Π½Π΄Π°, послС Ρ‡Π΅Π³ΠΎ начинаСтся новая итСрация (Ссли истинны нСсколько ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΡ… условий, выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° охраняСмая ΠΊΠΎΠΌΠ°Π½Π΄Π°). Если всС ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ условия Π»ΠΎΠΆΠ½Ρ‹, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. НСтрудно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» ДСйкстры с ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΌ условиСм ΠΈ ΠΎΠ΄Π½ΠΎΠΉ охраняСмой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ прСдставляСт собой, ΠΏΠΎ сути, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» с прСдусловиСм (Ρ†ΠΈΠΊΠ» Β«ΠΏΠΎΠΊΠ°Β»).

Π₯отя Ρ†ΠΈΠΊΠ» ДСйкстры Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Ρ‘Π½ Π΅Ρ‰Ρ‘ Π² 1970-Ρ… Π³ΠΎΠ΄Π°Ρ…, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… конструкций для Π΅Π³ΠΎ создания Π² языках программирования Π½Π΅ содСрТится. ЕдинствСнным ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ стал Π½Π΅Π΄Π°Π²Π½ΠΎ созданный ΠžΠ±Π΅Ρ€ΠΎΠ½-07 β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, явно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» с нСсколькими охраняСмыми вСтвями. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ†ΠΈΠΊΠ» ДСйкстры ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π΅Π· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΉ смодСлирован с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… конструкций структурных языков программирования. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… способов Π½Π° языкС Ада:

loop
  if P1 then 
    S1;
    ...
  elsif Pn then 
    Sn;
  else
    exit;
  end if;
end loop;

Π—Π΄Π΅ΡΡŒ P1β€”Pn β€” ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ условия, Π° S1β€”Sn β€” ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ охраняСмыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π¦ΠΈΠΊΠ» ДСйкстры ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… спСцифичСских ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… цикличСских конструкций. НапримСр, этим Ρ†ΠΈΠΊΠ»ΠΎΠΌ СстСствСнно прСдставляСтся ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ β€” каТдая Π²Π΅Ρ‚Π²ΡŒ соотвСтствуСт ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, охраняСмыС условия строятся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π»Π°ΡΡŒ Π²Π΅Ρ‚Π²ΡŒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, Π° ΠΊΠΎΠ΄ охраняСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ обСспСчиваСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вычислСний Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ истинным ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π΅ условиС Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ).

Π¦ΠΈΠΊΠ» Β«ΠΏΠ°ΡƒΠΊΒ»[ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ | ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄]

Π›Π΅Π³ΠΊΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» ДСйкстры Π½Π΅ содСрТит явного условия продолТСния ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ всСми Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠ°ΠΌΠΈ программирования рассматриваСтся ΠΊΠ°ΠΊ Π±Π»Π°Π³ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° услоТнённая конструкция Ρ†ΠΈΠΊΠ»Π° ДСйкстры, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«Ρ†ΠΈΠΊΠ»-β€˜ΠΏΠ°ΡƒΠΊβ€™Β». Π’ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΎΠ½Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 do
   P1β†’S1,
     …
   Pn→Sn
 out
   Q1β†’T1,
     …
   Qn→Tn
 else
   E
 od

Π—Π΄Π΅ΡΡŒ послС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° out Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π²Π΅Ρ‚Π²ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, состоящиС ΠΈΠ· условий Π²Ρ‹Ρ…ΠΎΠ΄Π° Qi ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ti. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²Π΅Ρ‚Π²ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ else с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ E.

Π¦ΠΈΠΊΠ»-β€˜ΠΏΠ°ΡƒΠΊβ€™ выполняСтся Ρ‚Π°ΠΊ:

  • Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ условия. Если сущСствуСт истинноС ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π΅ условиС, выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ охраняСмая ΠΊΠΎΠΌΠ°Π½Π΄Π°.
  • Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ условия Π²Ρ‹Ρ…ΠΎΠ΄Π°. Если сущСствуСт истинноС условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°, выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° заканчиваСтся. Если всС условия Π²Ρ‹Ρ…ΠΎΠ΄Π° Π»ΠΎΠΆΠ½Ρ‹, начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΎ истинным хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΡ… условий.
  • Если Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ оказались Π»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ всС ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ условия, ΠΈ всС условия Π²Ρ‹Ρ…ΠΎΠ΄Π°, выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ E, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° прСрываСтся.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ†ΠΈΠΊΠ»Π°-β€˜ΠΏΠ°ΡƒΠΊΠ°β€™ позволяСт ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ строго ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ условия выполнСния Ρ†ΠΈΠΊΠ»Π°. Богласно тСорСтичСским полоТСниям, Π²Π΅Ρ‚Π²ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ прСкращСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° (всС Ρ‚Π°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ с явным условиСм), ΠΎΠ½Π° слуТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Ρ†ΠΈΠΊΠ» Π½Π°Ρ‡Π°Π» Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ лишь Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибки ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°.

Π₯отя явной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ синтаксиса для этого Ρ†ΠΈΠΊΠ»Π° Π½Π΅ сущСствуСт Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ языкС программирования, Ρ†ΠΈΠΊΠ»-β€˜ΠΏΠ°ΡƒΠΊβ€™, ΠΊΠ°ΠΊ ΠΈ Ρ†ΠΈΠΊΠ» ДСйкстры, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смодСлирован с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… структурных конструкций.

эквивалСнтными прСобразованиями исходного ΠΊΠΎΠ΄Π°
компилятором

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *