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

ΠœΠ°ΡΡΠΈΠ²Ρ‹. 
Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

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

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ (это Π²Π°ΠΆΠ½ΠΎ!): ΠΎΡ‡Π΅Π½ΡŒ часто Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… студСнтов встрСчаСтся ошибка, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ массива ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: readln (a), writeln (a), Π³Π΄Π΅, Π° — это пСрСмСнная Ρ‚ΠΈΠΏΠ° массив. ΠŸΡ€ΠΈ этом ΠΈΡ… ΡƒΠ΄ΠΈΠ²Π»ΡΠ΅Ρ‚ сообщСниС компилятора, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ этого Ρ‚ΠΈΠΏΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя, Ссли… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ°ΡΡΠΈΠ²Ρ‹. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ РСспублики ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½

ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½ΡΠΊΠΈΠΉ Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎ ВСхнологичСский унивСрситСт

(ΠΊΠΎΠ»Π»Π΅Π΄ΠΆ)

ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, автоматизация ΠΈ Ρ‚СлСкоммуникация»

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’Π΅ΠΌΠ°: ΠœΠ°ΡΡΠΈΠ²Ρ‹. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°:<�ИБ> 3 курс Исмаилова А. Π‘.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π°: Π–Π΅Π»ΠΈΠ»ΠΎΠ²Π° К.А.

Алматы, 2010Π³

1.Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1)Π˜ΡΡ‚ΠΎΡ€ΠΈΡ создания языка Pascal

2)ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ языка

2.Основная Ρ‡Π°ΡΡ‚ΡŒ

1)Массив.

2)ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

3)Алгоритмы сортировки ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

4)ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… Pascal ΠΈ Basic

5)Массив Π² Π‘СйсикС

6)Массив Π² ΠŸΠ°ΡΠΊΠ°Π»Π΅

7)Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Паскаля — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

8)ОписаниС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

9)ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ дСйствия с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Паскаля

10)Π’Π²ΠΎΠ΄ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

11)Π’Ρ‹Π²ΠΎΠ΄ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля Π½Π° ΡΠΊΡ€Π°Π½

12)ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

13)ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массивов

14)Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΉ массив

15)БпСцифичСскиС Ρ‚ΠΈΠΏΡ‹ массивов

16)ДинамичСскиС массивы

17)Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы

3.Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

1)Основная

2) Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ

1)основная Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

2)Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ

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

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии послСдних 40 Π»Π΅Ρ‚. Π’ Ρ€Π°Π½Π½ΠΈΡ… языках программирования всС структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ нСбольшим количСством основных структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… этими языками. НапримСр, Π² Π²Π΅Ρ€ΡΠΈΡΡ… языка FORTRAN, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΡΠ·Ρ‹ΠΊΠ° FORTRAN 90, связныС списки ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг Π² ΡΡ‚ΠΎΡ€ΠΎΠ½Ρƒ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ, использованной Π² ΡΠ·Ρ‹ΠΊΠ΅ FORTRAN I, Π±Ρ‹Π» сдСлан Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ·Ρ‹ΠΊΠ΅ COBOL, позволившими программистам ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ дСсятичных чисСл ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ²ΡˆΠΈΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структурныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для прСдставлСния записСй, содСрТащих ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, появившиСся Π² ΠΊΠΎΠ½Ρ†Π΅ 1970;Ρ… Π³ΠΎΠ΄ΠΎΠ² Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ СстСствСнного обобщСния ΠΈΠ΄Π΅ΠΈ Ρ‚ΠΈΠΏΠΎΠ², опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π±Ρ‹Π»ΠΈ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½Ρ‹ Π² ΡΠ·Ρ‹ΠΊΠ΅ Ada 83. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ, лСТащая Π² ΠΎΡΠ½ΠΎΠ²Π΅ опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ программисту слСдуСт ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ класса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, опрСдСляСмых ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, язык Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ, фактичСски, абстракциями ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ довольно мощная концСпция, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° ΠΎΠ±Ρ‰ΠΈΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

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

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

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹

Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ язык программирования Π½Π΅ ΠΎΠ±Ρ…одится Π±Π΅Π· описанной структуры Π΄Π°Π½Π½Ρ‹Ρ….

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки программирования, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ описано Π½ΠΈΠΆΠ΅, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования массивов.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ создания языка Pascal

Pascal разрабатывался с 1968 ΠΏΠΎ 1970 Π³. ΠΠΈΠΊΠΎΠ»Π°ΡƒΡΠΎΠΌ Π’ΠΈΡ€Ρ‚ΠΎΠΌ. ЦСль Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык, Π»ΠΈΡˆΠ΅Π½Π½Ρ‹ΠΉ многочислСнных нСдостатков ALGOL. Pascal Π±Ρ‹Π» Π½Π°Π·Π²Π°Π½ Π² Ρ‡Π΅ΡΡ‚ΡŒ французского ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π‘Π»Π΅Π·Π° Паскаля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π² 1642 Π³. ΠΈΠ·ΠΎΠ±Ρ€Π΅Π» Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. Π‘ ΠΊΠΎΠ½Ρ†Π° 70-Ρ… Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° 80-Ρ… Π³Π³. этот язык Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π» срСди языков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС обучСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ; ΠΏΠΎΠ·ΠΆΠ΅ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π‘ ΠΈ C++, Π° Π·Π°Ρ‚Π΅ΠΌ Java.

ALGOL 60 Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ создания языка Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ описания, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ рСализация оказалась слоТной. Π’ Ρ‡Π°ΡΡ‚ности, оказалось достаточно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, хотя это довольно элСгантный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ. Π’ ΡΠ·Ρ‹ΠΊΠ΅ ALGOL 60 Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ зависят ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π° ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Помимо Ρ‚ΠΎΠ³ΠΎ, Π² 60-Ρ… Π³Π³. Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ практичСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π―Π·Ρ‹ΠΊΠΈ Ρ‚ΠΈΠΏΠ° FORTRAN Π±Ρ‹Π»ΠΈ популярны благодаря своСй эффСктивности ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, нСсмотря Π½Π° ΠΎΡ‚сутствиС элСгантности.

Π’ 1965 Π³., Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π‘тСнфордском унивСрситСтС (Stanford University), Π’ΠΈΡ€Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½ΠΎΠ²ΡƒΡŽ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ALGOL 60 для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² сСрии IBM 360, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ вошло ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ язык, извСстный ΠΊΠ°ΠΊ ALGOLW, использовался Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… унивСрситСтах, Π½ΠΎ Π΅Π³ΠΎ рСализация ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»Π°ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ IBM 360. Для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΡ‚ΠΎΠΌ языкС трСбовался Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк, вСщСствСнных чисСл Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… слоТных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ALGOL W Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ систСмного языка программирования оказался малоэффСктивным.

Π’ 1968 Π³. Π’ΠΈΡ€Ρ‚ вСрнулся Π² Π¨Π²Π΅ΠΉΡ†Π°Ρ€ΠΈΡŽ ΠΈ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠΎΠΌ ALGOL W — языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ Π±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄. Для создания исходного компилятора Π±Ρ‹Π» использован Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ рСкурсивного спуска. Π­Ρ‚ΠΎΡ‚ компилятор выполнялся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Control Data. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстный Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π -ΠΊΠΎΠ΄Π°. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка Pascal сначала транслировал ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ со ΡΡ‚Π΅ΠΊΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ. Благодаря Ρ‚Π°ΠΊΠΎΠΉ своСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Pascal Π»Π΅Π³ΠΊΠΎ пСрСносился Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Pascal Π±Ρ‹Π» написан Π½Π° ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ языкС. ВсС, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму, — это ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π -ΠΊΠΎΠ΄Π°.Появившийся Π² 1970 Π³. Pascal Π½Π°Ρ‡Π°Π» Π·Π°Π²ΠΎΠ΅Π²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅. Π’ 1983 Π³. Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ амСриканский стандарт языка (IEEE 770/ ANSI X3.97), Π° Π²ΡΠΊΠΎΡ€Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ стандарт ISO (ISO 7185).

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ языка

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

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

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Ссли ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (Ссли ΠΈΡ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ сводится ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ управлСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ дСйствий Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡ‚рукциях структурного программирования: составных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Π²Ρ‹Π±ΠΎΡ€Π° (case), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Ρ… Π²ΠΈΠ΄Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°. Π’ Pascal имССтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ goto, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ практичСски всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. Π’Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ рСкурсивной структуры Π²Ρ‹Π·ΠΎΠ²Π°-Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Pascal ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π»ΠΎΡ‡Π½ΡƒΡŽ структуру, большая Ρ‡Π°ΡΡ‚ΡŒ структур управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для ссылок Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стандартныС статичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π° опрСдСлСния области видимости ΠΈ Ρ…арактСристику влоТСнности Π±Π»ΠΎΠΊΠ° Π² ΡΠ°ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

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

Из Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ стандартныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для управлСния рСсурсами памяти.

Π₯отя Pascal Π² Ρ†Π΅Π»ΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ язык, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свои нСдостатки, ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

1. Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ этого языка имССтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ самого языка ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. НапримСр, конструкция forward Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компиляция ΠΌΠΎΠ³Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄, — это слСдствиС прСдставлСний ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ достигаСтся максимальная ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ компиляции. Но ΡΡ‚ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²Π΅Ρ€Π½ΠΎ. НапримСр, компилятор PL/C для языка PL/I ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π» Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΈ Π²ΠΌΠ΅ΡΡ‚Π΅ с Ρ‚Π΅ΠΌ являлся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… эффСктивных срСди Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных компиляторов своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π°ΡΡ‚оящСС врСмя ΠΏΡ€ΠΈ использовании Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния.

2. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самой Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒΡŽ языка Pascal являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ массивы Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π° Π½Π΅ ΠΊΠ°ΠΊ агрСгация Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, array [1. .10] of Integer ΠΈ Π°Π³Π³Π°Ρƒ[1. .20] of integer ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой/Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массивы Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пСрСмноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†). Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ массивы символов, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ затрудняСт ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ΡΠ»ΡƒΡ‡Π°Π΅ строк Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

3. Бинтаксис опрСдСлСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² Pascal выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ begin Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ end. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ большоС количСство Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, оказываСтся (синтаксичСски) сильно ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚ ΠΌΠ΅ΡΡ‚Π° Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Ρ‚Π΅Π»Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Ρ‚руднСниям ΠΏΡ€ΠΈ создании Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Pascal.

4. ВозмоТности, прСдоставляСмыС языком, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пропуска Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° ΡΠ²Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ Pascal ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Pascal ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ var, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅. МногиС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты часами

рассматривали листинги ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΡ‚Π°Ρ€Π°ΡΡΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var.

5. Pascal Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компиляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставляла собой Π΅Π΄ΠΈΠ½Ρ‹ΠΉ процСсс, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π±Ρ‹Π»Π° прСдусмотрСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ, эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ:

Π±Ρ‹Π»ΠΎ принято соглашСниС, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ внСшниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ h Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘. Но Ρ‚акая нСстандартная рСализация ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСнСсСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Pascal Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

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

Массив — это мноТСство ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… элСмСнтов, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ всСгда ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС массив — это структурированный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, состоящий ΠΈΠ· Ρ„иксированного числа элСмСнтов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. НазваниС рСгулярный Ρ‚ΠΈΠΏ (ΠΈΠ»ΠΈ ряды) массивы ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ (логичСски ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅) элСмСнты, упорядочСнныС (ΡƒΡ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅) ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ элСмСнтов массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎ сущСствованиС массивов записСй, массивов ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, массивов строк, массивов ΠΈ Ρ‚. Π΄.Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ структурированныС. Π’ΠΈΠΏ элСмСнтов массива называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ языка Паскаль являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ число элСмСнтов массива фиксируСтся ΠΏΡ€ΠΈ описании ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ‚ся. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ массив, упорядочСны Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту соотвСтствуСт ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² (индСксов), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ мСстополоТСниС Π² ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ индСксирования элСмСнтов массива. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой выраТСния любого скалярного Ρ‚ΠΈΠΏΠ° (Ρ‡Π°Ρ‰Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ), ΠΊΡ€ΠΎΠΌΠ΅ вСщСствСнного. Π’ΠΈΠΏ индСкса опрСдСляСт Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСкса. Для описания массива ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ словосочСтаниС array of (массив ΠΈΠ·).

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

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Алгоритмы сортировки ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых процСссов соврСмСнной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ называСтся распрСдСлСниС элСмСнтов массива Π² ΡΠΎΠΎΡ‚вСтствии с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ. НапримСр, сортировка массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π΅Π³ΠΎ элСмСнтов. ОбмСнная сортировка (ΠΌΠ΅Ρ‚ΠΎΠ΄ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°»). Алгоритм начинаСтся со ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ 1-Π³ΠΎ ΠΈ 2-Π³ΠΎ элСмСнтов массива.

Если 2-ΠΉ элСмСнт мСньшС 1-Π³ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. Π­Ρ‚ΠΎΡ‚ процСсс повторяСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ сосСдних элСмСнтов массива, ΠΏΠΎΠΊΠ° всС N ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹. Π—Π° ΠΎΠ΄ΠΈΠ½ «ΠΏΡ€ΠΎΡ…ΠΎΠ΄» массива самый большой элСмСнт встанСт Π½Π° ΡΡ‚Π°Ρ€ΡˆΠ΅Π΅ (N-Π΅) мСсто. Π”Π°Π»Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ повторяСтся, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅» ΠΏΠ΅Ρ€Π²Ρ‹Π΅ (N-p) элСмСнтов ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ со ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΌΠΈ сосСдями. Если Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ «ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅» пСрСстановок Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, самыС «Π»Π΅Π³ΠΊΠΈΠ΅» элСмСнты Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ исполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° постСпСнно «Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚» .

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставками. Π’Π½Π°Ρ‡Π°Π»Π΅ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнта массива. Они ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ упорядочСнноС мноТСство S. Π”Π°Π»Π΅Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС бСрСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ элСмСнт ΠΈ Π²ΡΡ‚авляСтся Π² ΡƒΠΆΠ΅ упорядочСнноС мноТСство S Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ слСва ΠΎΡ‚ Π½Π΅Π³ΠΎ всС элСмСнты Π±Ρ‹Π»ΠΈ Π½Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅, Π° ΡΠΏΡ€Π°Π²Π° Π½Π΅ ΠΌΠ΅Π½ΡŒΡˆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ. ΠœΠ΅ΡΡ‚ΠΎ для вставки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΠ΅ мноТСство S ΠΈΡ‰Π΅Ρ‚ся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ дСлСния ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ. Алгоритм сортировки Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° элСмСнт, стоящий Π½Π° N-ΠΌ мСстС, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½. (ИмСнно Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠΈ Π² Π±Ρ€ΠΈΠ΄ΠΆ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ свои ΠΊΠ°Ρ€Ρ‚Ρ‹).

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ. Находится наибольший элСмСнт Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ· N ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Ρ€) ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ‚ся мСстами с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ, стоящим Π½Π° N-ΠΌ мСстС, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ N<>p. Из ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ (N-1) элСмСнтов снова выдСляСтся наибольший ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ‚ся мСстами с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ, стоящим Π½Π° (N-1)-ΠΌ мСстС ΠΈ Ρ‚. Π΄. Алгоритм Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° элСмСнты, стоящиС Π½Π° 1-ΠΌ ΠΈ 2-ΠΌ мСстах Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π±ΡƒΠ΄ΡƒΡ‚ упорядочСны (для этого понадобится N-1 «ΠΏΡ€ΠΎΡ…ΠΎΠ΄» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°). Аналогично Π΄Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΊ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ элСмСнтам.

ДСйствия Π½Π°Π΄ массивами

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ массива Π±Π΅Π· указания индСкса Π²ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. Массив ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вопСрациях ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ «Ρ€Π°Π²Π½ΠΎ», «Π½Π΅ Ρ€Π°Π²Π½ΠΎ» ΠΈ Π²ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ присваивания. ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ вэтих дСйствиях, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΏΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅, Ρ‚. Π΅. ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ индСксов ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². НапримСр, Ссли массивы, А ΠΈ Π’описаны ΠΊΠ°ΠΊ var А, Π’: array[1.20] of real;Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΌ допустимых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ даст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ А=Π’True, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива, А Ρ€Π°Π²Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ элСмСнта массива ВА<>Π’True, Ссли хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива, А Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта массива Π’А:=Π’ всС значСния элСмСнтов массива Π’ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам массива А. ЗначСния элСмСнтов массива Π’ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹.

ДСйствия Π½Π°Π΄ элСмСнтами массива ПослС объявлСния массива ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ элСмСнт ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (имя) массива ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ элСмСнта Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. НапримСр, запись Mas[2], VectorZ[10] позволяСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту массива Mas ΠΈ Π΄Π΅ΡΡΡ‚ΠΎΠΌΡƒ элСмСнту массива VectorZ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° индСкса, с n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом — n ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². НапримСр, запись MatrU[4,4] Π΄Π΅Π»Π°Π΅Ρ‚ доступным для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, находящСгося Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ строкС Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ столбца массива MatrU. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ элСмСнты массива Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ индСксированными ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. НапримСр, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… for, while, repeat, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Read, Readln, Write,

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… Pascal ΠΈ Basic

Π‘ ΠΏΠΎΠ½ΡΡ‚ΠΈΠ΅ΠΌ «ΠΌΠ°ΡΡΠΈΠ²» приходится ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСских ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ совокупностСй большого количСства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Массив Π² Π‘СйсикС. ΠžΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ массив DIM A (N) — это Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ < N > свободных ячССк Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π­Π’Πœ для массива с ΠΈΠΌΠ΅Π½Π΅ΠΌ А. Если описаниС массива отсутствуСт, Ρ‚ΠΎ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив выдСляСтся 10 ячССк памяти. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ описываСтся ΠΊΠ°ΠΊ А (I), Π³Π΄Π΅, А — имя массива, IΠ½ΠΎΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ индСкс массива (0<=I<= N, Π½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ичСски употрСбляСтся 1<=I<=N) A (I) — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива.

Массив Π² ΠŸΠ°ΡΠΊΠ°Π»Π΅. <�имя массива>:= array <�количСство элСмСнтов> of <οΏ½Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ>; ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ описываСтся ΠΊΠ°ΠΊ А[I], Π³Π΄Π΅, А — имя массива, I — Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ индСкс массива (0<=I<=N, Π½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ичСски употрСбляСтся 1<=I<=N) A[I] - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива.

Writeln; ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ значСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… Ρ‚ΠΈΠΏΡƒ.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Паскаля — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

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

Рассмотрим Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Паскаля Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 3*3, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΈ строки, Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΏΠΎ Ρ‚Ρ€ΠΈ элСмСнта:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½ΠΎΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Ρƒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов, Π½ΠΎ ΡΠ΅ΠΉΡ‡Π°Ρ Π½ΠΎΠΌΠ΅Ρ€ ΡƒΠΆΠ΅ состоит ΠΈΠ· Π΄Π²ΡƒΡ… чисСл — Π½ΠΎΠΌΠ΅Ρ€Π° строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится элСмСнт, ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° столбца. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎΠΌΠ΅Ρ€ элСмСнта опрСдСляСтся пСрСсСчСниСм строки ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Π°. НапримСр, a 21 — это элСмСнт, стоящий Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ столбцС.

ОписаниС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля.

БущСствуСт нСсколько способов объявлСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля.

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ, Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ ΡΠ°ΠΌΠΈ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ массивами. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ описаниС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

Type

Vector = array [1.5] of <Ρ‚ΠΈΠΏ_элСмСнтов>;

Matrix= array [1.10] of vector;

Var m: matrix;

ΠœΡ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΠ»ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Паскаля m, состоящий ΠΈΠ· 10 строк, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 5 столбцов. ΠŸΡ€ΠΈ этом ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ iΠΉ ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ m [ i ], Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ jΠΌΡƒ элСмСнту Π²Π½ΡƒΡ‚Ρ€ΠΈ iΠΉ ΡΡ‚Ρ€ΠΎΠΊΠΈ — m [ i, j ].

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Паскаля ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС:

Type

Matrix= array [1.5] of array [1.10] of < Ρ‚ΠΈΠΏ элСмСнтов >;

ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅:

type

matrix = array [1.5, 1.10] of <οΏ½Ρ‚ΠΈΠΏ элСмСнтов>;

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄: M [ i, j ]. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт, располоТСнный Π² iΠΉ ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΈ jΠΌ ΡΡ‚ΠΎΠ»Π±Ρ†Π΅. Π’ΡƒΡ‚ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ строки со ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌΠΈ, Π° Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ снова ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту. НапримСр, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ M [10, 5] ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ дСйствия с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Паскаля

ВсС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сказано ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… дСйствиях с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами, справСдливо ΠΈ Π΄Π»Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. ЕдинствСнноС дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ — это присваиваниС. Π’. Π΅., Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρƒ Π½Π°Ρ описаны Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

type

matrix= array [1.5, 1.10] of integer;

var

a, b: matrix ;

Ρ‚ΠΎ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ a Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ b (a := b). ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ поэлСмСнтно, ΠΏΡ€ΠΈ этом Π½Π°Π΄ элСмСнтами ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС допустимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов массива. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли массив состоит ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ρ‚ΠΎ Π½Π°Π΄ Π΅Π³ΠΎ элСмСнтами ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ссли ΠΆΠ΅ массив состоит ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Ρ‚ΠΎ ΠΊ Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ.

Π’Π²ΠΎΠ΄ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

Для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ Ρ†ΠΈΠΊΠ» for, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ измСняли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса с 1-Π³ΠΎ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ. Но ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС Паскаля опрСдСляСтся двумя индСксами: Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ строки ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ столбца.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки с 1-ΠΉ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ элСмСнты столбцов с 1-Π³ΠΎ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ. Π—Π½Π°Ρ‡ΠΈΡ‚, Π½Π°ΠΌ потрСбуСтся Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° for, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

type

matrix= array [1.5, 1.10] of integer;

var

a,: matrix;

i, j: integer; { индСксы массива }

begin

for i :=1 to 5 do {Ρ†ΠΈΠΊΠ» для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх строк}

for j :=1 to 10 do {ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх элСмСнтов строки ΠΏΠΎ ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌ}

readln (a [ i, j ]); {Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ элСмСнта, стоящСго Π² iΠΉ ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΈ jΠΌ ΡΡ‚ΠΎΠ»Π±Ρ†Π΅}

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Паскаля ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚. Π΅. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ random (N), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТСния. Бпособ заполнСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля выбираСтся Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ Π² Π»ΡŽΠ±ΠΎΠΌ случаС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ столбцС.

Π’Ρ‹Π²ΠΎΠ΄ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля Π½Π° ΡΠΊΡ€Π°Π½

Π’Ρ‹Π²ΠΎΠ΄ элСмСнтов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля Ρ‚Π°ΠΊΠΆΠ΅ осущСствляСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ элСмСнты ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца. ΠŸΡ€ΠΈ этом Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты, стоящиС Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»ΠΈΡΡŒ рядом, Ρ‚. Π΅. Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ, Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ столбца Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий (рассмотрим Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для массива, описанного Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅):

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

for i :=1 to 5 do {Ρ†ΠΈΠΊΠ» для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх строк}

begin

for j :=1 to 10 do {ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх элСмСнтов строки ΠΏΠΎ ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌ}

write (a [ i, j ]: 4); {ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ элСмСнтов, стоящих Π² iΠΉ ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ экранной строкС, ΠΏΡ€ΠΈ этом для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта отводится 4 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ}

writeln; {ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅, Π½ΡƒΠΆΠ½ΠΎ пСрСвСсти курсор Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π½ΠΎΠ²ΠΎΠΉ экранной строки}

end ;

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ (это Π²Π°ΠΆΠ½ΠΎ!): ΠΎΡ‡Π΅Π½ΡŒ часто Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… студСнтов встрСчаСтся ошибка, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ массива ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: readln (a), writeln (a), Π³Π΄Π΅, Π° — это пСрСмСнная Ρ‚ΠΈΠΏΠ° массив. ΠŸΡ€ΠΈ этом ΠΈΡ… ΡƒΠ΄ΠΈΠ²Π»ΡΠ΅Ρ‚ сообщСниС компилятора, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ этого Ρ‚ΠΈΠΏΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя, Ссли прСдставитС N ΠΊΡ€ΡƒΠΆΠ΅ΠΊ, стоящих Π² Ρ€ΡΠ΄, Π° Ρƒ Π²Π°Ρ Π² Ρ€ΡƒΠΊΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π°ΠΉΠ½ΠΈΠΊ с Π²ΠΎΠ΄ΠΎΠΉ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «Π½Π°Π»Π΅ΠΉ Π²ΠΎΠ΄Ρƒ» Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сразу всС ΠΊΡ€ΡƒΠΆΠΊΠΈ? Как Π±Ρ‹ Π²Ρ‹ Π½ΠΈ ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ, Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΡ€ΡƒΠΆΠΊΡƒ придСтся Π½Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ элСмСнтов массива Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎ, Ρ‚.ΠΊ. Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π­Π’Πœ элСмСнты массива Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ячСйках.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ абстрактного массива Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ физичСски Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, согласно описанию. ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ количСство Π±Π°ΠΉΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ. НапримСр, Ссли массив состоит ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° integer, Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎ Π΄Π²Π° Π±Π°ΠΉΡ‚Π°. А Π²Π΅ΡΡŒ массив Π·Π°ΠΉΠΌΠ΅Ρ‚ S2 Π±Π°ΠΉΡ‚Π°, Π³Π΄Π΅ S — количСство элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.

А ΡΠΊΠΎΠ»ΡŒΠΊΠΎ мСста Π·Π°ΠΉΠΌΠ΅Ρ‚ массив, состоящий ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Ρ‚. Π΅. ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ: S i^S j, Π³Π΄Π΅ S i — количСство строк, Π° S j — количСство элСмСнтов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС. НапримСр, для массива Ρ‚ΠΈΠΏΠ°

Matrix = array [1.3, 1.2] of integer ;

потрСбуСтся 12 Π±Π°ΠΉΡ‚ памяти.

Как Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ элСмСнты этого массива? Рассмотрим схСму размСщСния массива M Ρ‚ΠΈΠΏΠ° matrix Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ.

Под ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт M [i, j] Ρ‚ΠΈΠΏΠ° integer выдСляСтся Π΄Π²Π΅ ячСйки памяти. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ осущСствляСтся «ΡΠ½ΠΈΠ·Ρƒ Π²Π²Π΅Ρ€Ρ…». Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ измСнСния индСкса, Ρ‡Ρ‚ΠΎ соотвСтствуСт схСмС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²: сначала размСщаСтся пСрвая строка, Π·Π°Ρ‚Π΅ΠΌ вторая, Ρ‚Ρ€Π΅Ρ‚ΡŒΡ… Π’Π½ΡƒΡ‚Ρ€ΠΈ строки ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ ΠΈΠ΄ΡƒΡ‚ элСмСнты: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚. Π΄.

Как ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, доступ ΠΊ Π»ΡŽΠ±ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли извСстСн адрСс ячСйки памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится пСрСмСнная. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ устанавливаСтся Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π°Π΄Ρ€Π΅ΡΠΎΠΌ ячСйки. Но Π΅ΡΠ»ΠΈ ΠΌΡ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ массив, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Π·Π½Π°Π΅Ρ‚» адрСс Π½Π°Ρ‡Π°Π»Π° массива, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΅Π³ΠΎ элСмСнта. Как ΠΆΠ΅ происходит доступ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ элСмСнтам массива?

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ доступС ΠΊ ΡΡ‡Π΅ΠΉΠΊΠ΅ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится элСмСнт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, систСма вычисляСт Π΅Π΅ Π°Π΄Ρ€Π΅Ρ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

Addr + Size Elem * Cols *(I -1)+ Size Elem *(J -1),

Π³Π΄Π΅ Addr — фактичСский Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ массив располагаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ; I, J — индСксы элСмСнта Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС; SizeElem — Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта массива (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π²Π° Π±Π°ΠΉΡ‚Π° для элСмСнтов Ρ‚ΠΈΠΏΠ° integer); Cols — количСство элСмСнтов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ SizeElem * Cols *(I -1)+ SizeElem *(J -1) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ смСщСниСм ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Паскаля

Π—Π°Π΄Π°Ρ‡Π°: Найти ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

РСшСниС:

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, состоящая, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… элСмСнтов; P — ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ 0; I, J — индСксы массива; N, M — количСство строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ² Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Π’Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ N, M — ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ Π²Π²Π΅Π΄Π΅ΠΌ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹; ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° — Π²Π²ΠΎΠ΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ осущСствим случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚. Π΅. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ random (). Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ P (ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π½Π° ΡΠΊΡ€Π°Π½, для этого ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π₯ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ:

обсудим сначала Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΎΠ±Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅:

Π²Π²Π΅Π΄Π΅ΠΌ значСния N ΠΈ M; Π’Π²Π΅Π΄Π΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Паскаля, для этого обращаСмся ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ vvod (a), Π³Π΄Π΅, Π° — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°; НапСчатаСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, для этого обращаСмся ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ print (a); ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ P =1; Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС строки I ΠΎΡ‚ 1-ΠΉ Π΄ΠΎ NΠΉ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС столбцы J ΠΎΡ‚ 1-Π³ΠΎ Π΄ΠΎ MΠ³ΠΎ, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ условиС: Ссли a ij? 0, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ P Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ a ij (P = P * a ij); Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡ€Π°Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ произвСдСния Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ — P ;

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ….

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ (это Π²Π°ΠΆΠ½ΠΎ!) ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любая пСрСмСнная ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ массива Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΈΠΏ Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ описан Π·Π°Ρ€Π°Π½Π΅Π΅. НапримСр :

Type

Matrix=array [1.10, 1.10] of integer;

procedure primer (a: matrix);

ВСрнСмся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ Π½Π°ΡˆΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ называСтся vvod, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ являСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅.

Π’ΠΎΠ³Π΄Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ нашСй ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Procedure vvod (var m: matrix);

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-счСтчики, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, k ΠΈ h. Алгоритм заполнСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΡƒΠΆΠ΅ обсуТдался, поэтому Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½ называСтся print, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ являСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, Π½ΠΎ Π² ΡΡ‚ΠΎΠΌ случаС ΠΎΠ½Π° являСтся Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, пСрСдаСтся ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Procedure print (m: matrix);

И Π²Π½ΠΎΠ²ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ счСтчики, ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅ — k ΠΈ h. Алгоритм Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½ Π±Ρ‹Π» описан Π²Ρ‹ΡˆΠ΅, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ этим описаниСм.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Паскаля

Program proizvedenie;

Type

Matrix=array [1.10, 1.10] of integer;

Var

A: matrix;

N, m, i, j: byte;

P: integer;

Procedure vvod (var m: matrix);

Var k, h: byte ;

Begin

For i :=1 to n do {пСрСмСнная n Π΄Π»Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ являСтся глобальной, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ «ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΠΉ"}

For j :=1 to m do {пСрСмСнная m Π΄Π»Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ являСтся глобальной, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ «ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΠΉ"}

M[i, j]: = random (10);

End;

Procedure print (m: matrix);

Var k, h: byte;

Begin

For i:=1 to n do

begin

For j:=1 to m do

Write (M[i, j]: 4);

Writeln;

end ;

End ;

Begin {Π½Π°Ρ‡Π°Π»ΠΎ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹}

Writeln (`Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:');

Readln (N, M);

Vvod (a);

Print (a);

P:=1;

For i:=1 to N do

For j:=1 to M do

If a[i, j]<>0 then p:=p*a[i, j];

Writeln (p);

End .

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массивов

Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π‘И ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ сущСствуСт тСсная связь. НапримСр, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив Π² Π²ΠΈΠ΄Π΅ int array[25], Ρ‚ΠΎ ΡΡ‚ΠΈΠΌ опрСдСляСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ пяти элСмСнтов массива, Π½ΠΎ ΠΈ Π΄Π»Ρ указатСля с ΠΈΠΌΠ΅Π½Π΅ΠΌ array, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π²Π½ΠΎ адрСсу ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎ ΡΡ‡Π΅Ρ‚Ρƒ (Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ) элСмСнта массива, Ρ‚. Π΅. сам массив остаСтся бСзымянным, Π° Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ array. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса языка ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ arrey являСтся константой, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ…, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСльзя.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ имя массива являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ допустимо, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠ΅ присваиваниС:

int array[25];

int *ptr;

ptr=array;

Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ptr устанавливаСтся Π½Π° Π°Π΄Ρ€Π΅Ρ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта масcΠΈΠ²Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ присваиваниС ptr=arrey ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ptr=&arrey[0].

Для доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива сущСствуСт Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способа. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ связан с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… индСксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, array[16]=3 ΠΈΠ»ΠΈ array[i+2]=7. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС доступа Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° выраТСния, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки. Одно ΠΈΠ· ΡΡ‚ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ — Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ записи этих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой, Π½ΠΎ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках записываСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ записи array[16] ΠΈ 16[array] Π±ΡƒΠ΄ΡƒΡ‚ эквивалСнтными ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ элСмСнт массива с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΡŒ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ константой, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ массив, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ. Π’ Ρ‡Π°ΡΡ‚ности послС выполнСния присваивания ptr=array доступ ΠΊ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠΌΡƒ элСмСнту массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля ptr Π² Ρ„ΠΎΡ€ΠΌΠ΅ ptr[16] ΠΈΠ»ΠΈ 16[ptr].

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива связан с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ адрСсных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ разадрСсации Π² Ρ„ΠΎΡ€ΠΌΠ΅ *(array+16)=3 ΠΈΠ»ΠΈ *(array+i+2)=7. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС доступа адрСсноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎΠ΅ адрСсу ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ элСмСнта массива Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записано Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами *(array+16) ΠΈΠ»ΠΈ *(16+array).

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ приводится ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ, Ρ‚. Π΅. индСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ прСобразуСтся ΠΊ Π°Π΄Ρ€Π΅ΡΠ½ΠΎΠΌΡƒ.

Для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² array[16] ΠΈ 16[array] ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² *(array+16).

Для доступа ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту массива (Ρ‚.Π΅. ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ индСксом) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ просто Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля array ΠΈΠ»ΠΈ ptr. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ· ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΉ

*array = 2;

array[0] = 2;

*(array+0) = 2;

*ptr = 2;

ptr[0] = 2;

*(ptr+0) = 2;

присваиваСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2, Π½ΠΎ Π±Ρ‹ΡΡ‚Ρ€Π΅Π΅ всСго выполнятся присваивания *array=2 ΠΈ *ptr=2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½ΠΈΡ… Π½Π΅ Ρ‚рСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² ΡΠ·Ρ‹ΠΊΠ΅ БИ — это массивы массивов, Ρ‚. Π΅. Ρ‚Π°ΠΊΠΈΠ΅ массивы, элСмСнтами ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы. ΠŸΡ€ΠΈ объявлСнии Ρ‚Π°ΠΊΠΈΡ… массивов Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° создаСтся нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ объявлСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива int arr2[4][3] Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ выдСляСтся участок для хранСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ arr, которая являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Для этого массива ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΎΠΆΠ΅ выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ содСрТит адрСс массива ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов Ρ‚ΠΈΠΏΠ° int, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° выдСляСтся Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ участка для хранСния Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… массивов чисСл Ρ‚ΠΈΠΏΠ° int, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов. Π’Π°ΠΊΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΡ…Π΅ΠΌΠ΅ Π½Π° arr

РаспрСдСлСниС памяти для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

arr[0] Π°

arr[0][0]

arr[0][1]

arr[0][2]

arr[1] Π°

arr[1][0]

arr[1][1]

arr[1][2]

arr[2] Π°

arr[2][0]

arr[2][2]

arr[2][1]

arr[3] Π°

arr[3][0]

arr[3][1]

arr[3][2]

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, объявлСниС arr2[4][3] ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ arr, бСзымянный массив ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½Ρ‹ΠΉ массив ΠΈΠ· Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚ΠΈ чисСл Ρ‚ΠΈΠΏΠ° int. Для доступа ΠΊ Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½Ρ‹ΠΌ массивам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ адрСсныС выраТСния с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ arr. Доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ осущСствляСтся с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСксного выраТСния Π² Ρ„ΠΎΡ€ΠΌΠ΅ arr2[2] ΠΈΠ»ΠΈ *(arr2+2). Для доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива чисСл Ρ‚ΠΈΠΏΠ° int Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° индСксных выраТСния Π² Ρ„ΠΎΡ€ΠΌΠ΅ arr2[1][2] ΠΈΠ»ΠΈ эквивалСнтных Π΅ΠΉ *(*(arr2+1)+2) ΠΈ (*(arr2+1))[2]. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса языка Π‘И ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ arr ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ arr[0], arr[1], arr[2], arr[3] ΡΠ²Π»ΡΡŽΡ‚ΡΡ константами ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива происходит Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ float arr3[3][4][5] ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΡ€ΠΎΠΌΠ΅ самого Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΈΠ· ΡˆΠ΅ΡΡ‚идСсяти чисСл Ρ‚ΠΈΠΏΠ° float массив ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ float, массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° float, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² массивов ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° float.

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

НапримСр, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ arr2[1][2] ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля ptr2, объявлСнного Π² Ρ„ΠΎΡ€ΠΌΠ΅ int *ptr2=arr2[0] ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ptr2[1*4+2] (здСсь 1 ΠΈ 2 это индСксы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ элСмСнта, Π° 4 это число элСмСнтов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ptr2[6]. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ внСшнС ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ arr2[6] Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ указатСля с ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 6 Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚.

Для обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ arr3[2][3][4] ΠΈΠ· Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½o ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, описанный ΠΊΠ°ΠΊ float *ptr3=arr3[0][0] с ΠΎΠ΄Π½ΠΈΠΌ индСксным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ptr3[3*2+4*3+4] ΠΈΠ»ΠΈ ptr3[22].

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

struct INDEX { int i,

int j,

int k } min_index ;

struct INDEX * find_min (int *ptr1, int l, int m int n)

{ int min, i, j, k, ind;

min=*ptr1;

min_index.i=min_index.j=min_index.k=0;

for (i=0; i*(ptr1+ind)

{ min=*(ptr1+ind);

min_index.i=i;

min_index.j=j;

min_index.k=k;

}

}

return &min_index;

}

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΡƒΠΊΠ°Π·Π°Ρ‚Слями

Над указатСлями ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ++ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля увСличиваСтся ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ‚ΠΈΠΏΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

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

int *ptr, a[10];

ptr=&a[5];

ptr++; /* Ρ€Π°Π²Π½ΠΎ адрСсу элСмСнта a[6] */

ptr—; /* Ρ€Π°Π²Π½ΠΎ адрСсу элСмСнта a[5] */

Π’ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… опСрациях слоТСния ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚ания ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΈΠΏΠ° int. ΠŸΡ€ΠΈ этом Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π° Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число элСмСнтов большС ΠΈΠ»ΠΈ мСньшС исходного.

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

int *ptr1, *ptr2, a[10];

int i=2;

ptr1=a+(i+4); /* Ρ€Π°Π²Π½ΠΎ адрСсу элСмСнта a[6] */

ptr2=ptr1-i; /* Ρ€Π°Π²Π½ΠΎ адрСсу элСмСнта a[4] */

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

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

int *ptr1, *ptr2, a[10];

int i;

ptr1=a+4;

ptr2=a+9;

i=ptr1-ptr2; /* Ρ€Π°Π²Π½ΠΎ 5 */

i=ptr2-ptr1; /* Ρ€Π°Π²Π½ΠΎ -5 */

ЗначСния Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡΡ… ==, ≠, <, <=, >, >= ΠΏΡ€ΠΈ этом значСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ просто ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния Ρ€Π°Π²Π΅Π½ 0 (лоТь) ΠΈΠ»ΠΈ 1 (истина).

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

int *ptr1, *ptr2, a[10];

ptr1=a+5;

ptr2=a+7;

if (prt1>ptr2) a[3]=4;

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ptr1 мСньшС значСния ptr2 ΠΈ ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ a[3]=4 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π‘И элСмСнты массивов ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ, ΠΈ, Π² Ρ‡Π°ΡΡ‚ности, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ указатСлями Π½Π° Π»ΡŽΠ±ΠΎΠΉ Ρ‚ΠΈΠΏ. Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

int a[]={10,11,12,13,14,};

int *p[]={a, a+1, a+2, a+2, a+3, a+4};

int **pp=p;

ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, прСдставлСнныС Π½Π° ΡΡ…Π΅ΠΌΠ΅

pp pΠ°. ... .

Π² Π² Π² Π² Π²

aΠ° 11 12 13 14 15

Π‘Ρ…Π΅ΠΌΠ° размСщСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ объявлСнии.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ pp-p ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ссылки pp ΠΈ p Ρ€Π°Π²Π½Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, связанного с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ p (Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ p[0]).

ПослС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ pp+=2 схСма измСнится ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ

pp pΠ°. .. .

Π² Π² Π² Π² Π²

aΠ° 10 11 12 13 14

Π‘Ρ…Π΅ΠΌΠ° размСщСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ pp+=2.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния вычитания pp-p Π±ΡƒΠ΄Π΅Ρ‚ 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pp Π΅ΡΡ‚ΡŒ адрСс Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ элСмСнта массива p. Бсылка *pp-a Ρ‚ΠΎΠΆΠ΅ Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ *pp Π΅ΡΡ‚ΡŒ адрСс Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ элСмСнта массива a, Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ a Π΅ΡΡ‚ΡŒ адрСс Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта массива a. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ссылки **pp ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 12 — это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ элСмСнта массива a. Бсылка *pp++ даст Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ элСмСнта массива p Ρ‚. Π΅. адрСс Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ элСмСнта массива.

Если ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ pp=p, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ *++pp это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива a (Ρ‚.Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 11), опСрация ++*pp ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ содСрТимоС указатСля p[0], Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡΡ‚Π°Π½Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ адрСса элСмСнта a[1].

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ обращСния Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ. НапримСр ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ *(++(*pp)) ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: *pp Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта массива p[0], Π΄Π°Π»Π΅Π΅ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ инкрСмСнируСтся ++(*p) Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p[0] станСт Ρ€Π°Π²Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ адрСса элСмСнта a[1], ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ дСйствиС это Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° значСния ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ адрСсу, Ρ‚. Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 11.

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±Ρ‹Π» использован ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Слями. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ прСдставлСнныС Π½Π° ΡΡ…Π΅ΠΌΠ΅

int a[3][3]={ { 11,12,13 },

{ 21,22,23 },

{ 31,32,33 } };

int *pa[3]={ a, a[1], a[2] };

int *p=a[0];

Π‘Ρ…Π΅ΠΌΠ° размСщСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Богласно этой схСмС доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ a[0][0] ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Слям a, p, pa ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ссылок: a[0][0], *a, **a[0], *p, **pa, *p[0].

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ строк символов. ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ схСмой прСдставлСнной:

char *c[]={ «abs», «d», «yes», «no» };

char **cp[]={ c+3, c+2, c+1, c };

char ***cpp=cp;

Π‘Ρ…Π΅ΠΌΠ° размСщСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ.

ДинамичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ массивов

ΠŸΡ€ΠΈ динамичСском распрСдСлСнии памяти для массивов слСдуСт ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ calloc. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив a[10] ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° float ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

float *a;

a=(float*)(calloc (10,sizeof (float));

Для создания Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π²Π½Π°Ρ‡Π°Π»Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠŸΡƒΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив a[n][m], это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

#include

main ()

{ double **a;

int n, m, i;

scanf («%d %d» ,&n,&m);

a=(double **)calloc (m, sizeof (double *));

for (i=0; i<=m; i++)

a[i]=(double *)calloc (n, sizeof (double));

.. .. .. .. ... .

}

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π΄Π»Ρ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n, m, l. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ для дальнСйшСго выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ°ΠΌΡΡ‚ΡŒ слСдуСт ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ free.

#include

main ()

{ long ***a;

int n, m, l, i, j;

scanf («%d %d %d» ,&n,&m,&l);

/* ———— распрСдСлСниС памяти ———— */

a=(long ***)calloc (m, sizeof (long **));

for (i=0; i<=m; i++)

{ a[i]=(long **)calloc (n, sizeof (long *));

for (j=0; i<=l; j++)

a[i][j]=(long *)calloc (l, sizeof (long));

}

.. .. .. .. ... .

/* ————- освобоТдСниС памяти —————*/

for (i=0; i<=m; i++)

{ for (j=0; j<=l; j++)

free (a[i][j]);

free (a[i]);

}

free (a);

}

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

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

#include

main ()

{ int vvod (double ***, long **);

double **a; /* ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для массива a[n][m] */

long *b; /* ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для массива b[n] */

vvod (&a,&b);

. /* Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ vvod ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ адрСса ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, */

. /* Π° Π½Π΅ ΠΈΡ… значСния */

.

}

int vvod (double ***a, long **b)

{ int n, m, i, j;

scanf («%d %d «,&n,&m);

*a=(double **)calloc (n, sizeof (double *));

*b=(long *)calloc (n, sizeof (long));

for (i=0; i<=n; i++)

*a[i]=(double *)calloc (m, sizeof (double));

}

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ массива. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдвинут Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ индСкс ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ Π½ΡƒΠ»Ρ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

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

#include

int main ()

{ float *q, **b;

int i, j, k, n, m;

scanf («%d %d» ,&n,&m);

q=(float *)calloc (m, sizeof (float));

/* сСйчас ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ q ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ массива */

q[0]=22.3;

q-=5;

/* Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 5, */

/* Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ элСмСнт индСкс n-5 */

q[5]=1.5;

/* сдвиг индСкса Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ */

/* массива Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ся Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт */

q[6]=2.5; /* - это Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт */

q[7]=3.5; /* - это Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт */

q+=5;

/* Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт вновь ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, */

/* Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ элСмСнтов q[0], q[1], q[2] Ρ€Π°Π²Π½Ρ‹ */

/* соотвСтствСнно 1.5, 2.5, 3.5 */

q+=2;

/* Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс -2, */

/* ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ -1, Π·Π°Ρ‚Π΅ΠΌ 0 ΠΈ Ρ‚. Π΄. ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ */

q[-2]=8.2;

q[-1]=4.5;

q-=2;

/* Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ, Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… */

/* элСмСнта массива q[0], q[1], q[2], ΠΈΠΌΠ΅ΡŽΡ‚ */

/* значСния 8.2, 4.5, 3.5 */

q—;

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