Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/bg: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-[[Basic Pascal Tutorial/Chapter 5/Subranges/bg|◄]] | [[Basic Pascal Tutorial/Contents/bg|▲]] | [[Basic Pascal Tutorial/Chapter 5/Multidimensional arrays/bg|►]]
2----|---|---
3-
41## 5C - Едноразмерни масиви
52
6-_(author: Tao Yue, state: unchanged)_
3+*(author: Tao Yue, state: unchanged)*
74
8-Да предположим, че искате да прочетете 5000 цели числа и да направите нещо с тях. Как бихте съхранявали числата?
5+Да предположим, че искате да прочетете 5000 цели числа и да направите нещо с тях. Как бихте съхранявали числата?
96
10-Може да използвате 5000 променливи, получавайки нещо като:
11-```
12-aa, ab, ac, ad, ... aaa, aab, ... aba, ...
13-```
7+Може да използвате 5000 променливи, получавайки нещо като:
148
15-Но това би станало досадно (след като декларирате тези променливи, трябва да прочетете стойности във всяка от тези променливи).
9+`aa, ab, ac, ad, ... aaa, aab, ... aba, ...`
1610
17-Един масив съдържа няколко места за съхранение, всички от един и същи тип. Вие се отнасяте към всяко отделно място за съхранение с името на масива и с допълнителен индекс. Дефиницията на типа е:
18-```
11+Но това би станало досадно (след като декларирате тези променливи, трябва да прочетете стойности във всяка от тези променливи).
12+
13+Един масив съдържа няколко места за съхранение, всички от един и същи тип. Вие се отнасяте към всяко отделно място за съхранение с името на масива и с допълнителен индекс. Дефиницията на типа е:
14+
15+``` pascal
1916type
20- typename = array [enumerated_type] of data_type;
17+ typename = array [enumerated_type] of data_type;
2118```
2219
23-Типът данни _data_type_ може да е всякакъв, в това число и друг масив. За _enumerated_type_ се записва изброим тип, може директно да се зададе в квадратните скоби или да се изпише името на вече дефиниран тип. С други думи:
24-```
20+Типът данни *data_type* може да е всякакъв, в това число и друг масив. За *enumerated_type* се записва изброим тип, може директно да се зададе в квадратните скоби или да се изпише името на вече дефиниран тип. С други думи:
21+
22+``` pascal
2523type
26- enum_type = 1..50;
27- arraytype = array [enum_type] of integer;
24+ enum_type = 1..50;
25+ arraytype = array [enum_type] of integer;
2826```
2927
30-е същото като:
31-```
28+е същото като:
29+
30+``` pascal
3231type
33- arraytype = array [1..50] of integer;
32+ arraytype = array [1..50] of integer;
3433```
3534
36-Бележка: Ето как низовете всъщност се управляват вътрешно - като масиви. Преди съвременните компилатори на Pascal да добавят собствена поддръжка за низове, програмиста е трябвало сам да се справя с това, като декларира:
37-```
35+Бележка: Ето как низовете всъщност се управляват вътрешно - като масиви. Преди съвременните компилатори на Pascal да добавят собствена поддръжка за низове, програмиста е трябвало сам да се справя с това, като декларира:
36+
37+``` pascal
3838type
39- String = packed array [0..255] of char;
39+ String = packed array [0..255] of char;
4040```
4141
42-след което да използва някакъв вид символ, за да укаже края на низа. В повечето случаи това е т.н. символ _null_ (числото 0 или ord(0)). Служебната дума _packed_ означава, че масива трябва да се уплътни по такъв начин, че да заема най-малко място в паметта.
42+след което да използва някакъв вид символ, за да укаже края на низа. В повечето случаи това е т.н. символ *null* (числото 0 или ord(0)). Служебната дума *packed* означава, че масива трябва да се уплътни по такъв начин, че да заема най-малко място в паметта.
4343
44-Масивите от символи често се наричат _буфери_. Грешки в обработката на тези буфери в езиците C и C++ могат да доведат до препълването им. Препълване се получава, когато се опитаме да поставим символен низ с дължина 200 в буфер с дължина само от 150 символа. Ако в паметта след буфера е разположена част от кода на програмата, тогава нападателят току-що е успял да инжектира произволен код във вашата система. По този начин работи известния червей Slammer, който вилня в Интернет в продължение на няколко дни. Опитайте го в Pascal и вижте какво ще се случи.
44+Масивите от символи често се наричат *буфери*. Грешки в обработката на тези буфери в езиците C и C++ могат да доведат до препълването им. Препълване се получава, когато се опитаме да поставим символен низ с дължина 200 в буфер с дължина само от 150 символа. Ако в паметта след буфера е разположена част от кода на програмата, тогава нападателят току-що е успял да инжектира произволен код във вашата система. По този начин работи известния червей Slammer, който вилня в Интернет в продължение на няколко дни. Опитайте го в Pascal и вижте какво ще се случи.
4545
46-Масивите са полезни когато искате да съхранявате големи количества данни и да ги използвате по-късно в програмата. Те работят изключително удачно с цикли _for_ защото управляващата променлива на цикъла може да се използва и като индекс в масива. Ако предположим следните дефиниции:
47-```
46+Масивите са полезни когато искате да съхранявате големи количества данни и да ги използвате по-късно в програмата. Те работят изключително удачно с цикли *for* защото управляващата променлива на цикъла може да се използва и като индекс в масива. Ако предположим следните дефиниции:
47+
48+``` pascal
4849type
49- arraytype = array[1..50] of integer;
50-
51- var
52- myarray : arraytype;
50+ arraytype = array[1..50] of integer;
51+
52+var
53+ myarray : arraytype;
5354```
5455
55-тогава за да прочетете 50 числа може да използвате следния _for_ цикъл:
56-```
56+тогава за да прочетете 50 числа може да използвате следния *for* цикъл:
57+
58+``` pascal
5759for count := 1 to 50 do
58- read (myarray[count]);
60+ read (myarray[count]);
5961```
6062
61-Квадратните скоби `[ ]` ограждат индекса когато се обръщаме към определен елемент от масива.
62-```
63+Квадратните скоби `[ ]` ограждат индекса когато се обръщаме към определен елемент от масива.
64+
65+``` pascal
6366myarray[5] := 6;
6467```
6568
66-[[Basic Pascal Tutorial/Chapter 5/Subranges/bg|◄]] | [[Basic Pascal Tutorial/Contents/bg|▲]] | [[Basic Pascal Tutorial/Chapter 5/Multidimensional arrays/bg|►]]
67----|---|---
68-
6969---
70-*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/bg", as the Internet Archive kept it on 2025-03-15. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
70+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/bg", as it stood on 2023-01-03 after a change by Alpinistbg, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history