Низа (информатика): Разлика помеѓу преработките

[непроверена преработка][непроверена преработка]
Избришана содржина Додадена содржина
Креирана страница со: Во програмирањето, податоците од типот низа претставуваат сложен тип на податоци, сос...
 
Нема опис на уредувањето
Ред 31:
Значи, индексирањето се врши така што првин се наведува индексот на редот, па потоа индексот на елементот во тој ред што го бараме. Истото важи и за низите со поинакви димензии.
 
Во различни програмски јазици, а посебно во оние кои ја превзеле синтаксата од [[C (програмски јазик)|програмскиот јазик C]], низите се индексираат со користење на средни загради ( [] ). Така на пример, наместо M(1,3) како во горенаведениот пример, во C и во сродните јазици ќе пишуваме М[1][3], додека во Паскал М[1,3].
 
===Видови на низи===
Ред 37:
По видовите на индексите, низите обично ги делиме на прости и асоцијативни. Простите низи за индекси имаат цели броеви кои претставуваат редни броеви на елементите во низата или поднизата. Асоцијативните низи користат објекти од разни типови за индекси, но најчесто зборови. Така, за да индексираме некој елемент од асоцијативна низа, можеме да напишеме niza[“mama”] како би го добиле името на мајката, или niza[“director”] како би го добиле името или податоците на директорот.
 
Сите програмски јазици кои поддржуваат низи, поддржуваат и прости низи, но не сите и асоцијативни низи. Од оние кои ги поддржуваат асоцијативните низи, некои ги имаат вградени во самиот јазик([[PHP]]) а некои во посебни библиотеки([[C++]]).
 
==Податоци од типот низа во различни програмски јазици==
Ред 43:
===C===
 
Во [[C (програмски јазик)|програмскиот јазик C]], податоците од типот низа се имплементираат преку покажувачите. Оттука доаѓа и посебната синтакса која [[C (програмски јазик)|C ја користи за податоците од типот низа, која е различна од останатите програмски јазици.
 
Програмскиот јазик [[C (програмски јазик|C]] не поддржува асоцијативни низи, туку само прости низи, каде индексот на првиот елемент е 0, што значи дека ако низата има димензија n, тогаш индексот на последниот елемент ќе биде n-1. Исто така, кај матрицата, горниот лев елемент (првиот елемент) ќе има индекс (0,0), додека долниот десен (последниот елемент) ќе има индекс (m-1,n-1).
 
Во [[C (програмски јазик)|програмскиот јазик C]], низите можат да се формираат на статички и динамички начин.
Под статичко формирање подразбираме декларација на низа со фиксни димензии кои не можат да се променат до крајот на постоењето на променливата. Програмата сама ќе се погрижи за пронаоѓање на мемориски простор кој ќе одговара на низата, како и за негово ослободување по престанокот на постоењето на променливата. Статичките низи се декларираат на следниот начин:
 
Ред 89:
</source>
|}
Динамичко алоцираните низи за време на работата на програмата можат да се избришат како би се алоцирала низа со поголеми или помали димензии. Поради тоа што во [[C (програмски јазик)|C]] е задолжително декларирањето на променливите на почетокот на блокот, статичките низи мора да имаат должина која е однапред позната. За разлика од нив, динамички алоцираните низи не мораат да се декларираат, туку само покажувачот мора да се декларира на почетокот на блокот, а функцијата за алоцирање може да се повика во било кој момент, кога ќе знаеме колкава должина на низата ни е потребна.
До елементите на низата пристапуваме со слична синтакса како и кај декларирањето на статичката низа, со користење на операторот средни загради:
 
Ред 114:
===C++===
 
[[C++]] користи иста синтакса како и [[C (програмски јазик)|C]] за декларирање на статички низи. Меѓутоа, за декларирање на алоцирана низа, во [[C++]] е воведен нов резервиран збор new кој се користи и за низи, исто така со употреба на средни загради:
 
{| class="wikitable" border="1"
Ред 124:
</source>
|}
Покрај поддршката за обични низи, [[C++ Стандардна Библиотека|C++ стандардната библиотека]] воведува библиотека за работа со мапи, кои претстауваат еден вид на асоцијативни низи.
 
===Паскал===
 
Во Паскал [[Паскал (програмски јазик)|Паскал]], низите се вграден тип на променлива која се декларира со користење на специјален резервиран збор и синтакса и физички немаат никаква врска со покажувачите.
 
Во Паскал, како прв елемент на низата се подразбира 1, но може да биде и било кој друг број кој се дефинира при декларирањето заедно со димензијата на низата.
 
[[Паскал (програмски јазик)|Паскал]] ги користи резервираните зборови array и of за декларирањето на низа:
 
{| class="wikitable" border="1"
Ред 142:
Се разбира дека останатите променливи и низи мораат да бидат декларирани во блокот за декларација var.
 
Индексирањето на елементите се врши со употреба на средни загради, но е различно од [[C (програмски јазик)|C]] за повеќедимензионалните низи:
 
{| class="wikitable" border="1"
Ред 154:
===PHP===
 
[[PHP]] има посебно развијана поддршка за низите, како за асоцијативните, така и за обичните. Тие исто така претставуваат дел од самиот јазик како и во [[Паскал (програмски јазик)|Паскал]]. За разлика од мапите во [[C++]], [[PHP]] не поддржува класите да бидат индекси од елементите од елементите на низата, туку само цели броеви или зборови.
 
Како и сите останати типови на променливи во [[PHP]], ниту низите не треба да се декларираат, туку само да се иницијализираат со користењето на резервираниот збор array:
 
{| class="wikitable" border="1"
Ред 164:
</source>
|}
[[PHP]] всушност не ги разликува простите од асоцијативните низи и користи ист резервиран збор array за нив. Асоцијативните низи можат да се креираат на два начини:
 
* Со користење на специјална синтакса при иницијализацијата на низата. Под оваа синтакса се подразбира употреба на операторот =>, така што за секој елемент при иницијализацијата се става неговиот индекс, потоа наведениот оператор, а потоа вредноста на елементот.
Ред 191:
</source>
|}
[[PHP]] има и контролна структура foreach која служи само за низи. Таа поминува преку секој елемент на низата и извршува одредена работа.
 
Во [[PHP]] елементите на низата можат да бидат од различен тип, за разлика од [[C (програмски јазик)|C]], [[C++]] и [[Паскал (програмски јазик)|Паскал]] каде елементите на низата мора да бидат од ист тип, што е одредено и со самата синтакса за декларација на типот. Но ова е слично со однесувањето на други скриптни јазици како што се [[ЈаваСкрипт|Javascript]], [[Pearl]] и други.
 
===Javascript===
 
[[Javascript]] ги гледа низите како објекти вградени во класата Array. Како такви, низите имаат свои методи, атрибути, врз нив се применува операторот delete, а се креираат со повикување на конструкторо за класата Array, операторот new:
 
{| class="wikitable" border="1"
Ред 209:
</source>
|}
[[ЈаваСкрипт|Javascript]] не поддржува асоцијативни низи, но операторот средни загради некогаш се користат на начин за да изгледа како да ги поддржува. Така, во [[ЈаваСкрипт|Javascript]] синтаксата Objekt.atribut е еквивалентна со Objekt["atribut"]. Оваа синтакса понекогаш се користи за генерирање на имињата на атрибутите на објект од некоја класа, но не претставува асоцијативна низа.
 
==Примена==
Ред 224:
Најсродна структура на податоци е динамичката листа. Во различни програмски јазици таа се имплементира на различни начини, но основна слична со низата е нејзината линеарност. Во некои скриптни јазици обичните низи се имплементираат преку динамичката листа, како би немале ограничен капацитет.
 
Асоцијативните низи во повеќето јазици се имплементираат преку бинарното стебло бидејќи тоа има брз [[алгоритам]] за пребарување, што е неопходно за пребарување на елемент со одреден индекс.
<source lang="cpp">
</source>