Vektor (databehandling)
I programmering kaldes et sammenhængende lagerområde , der indeholder en række elementer af samme type, elementerne i matrixen matrix,formation,vektor, [ 2 ] Fra et logisk synspunkt kan en matrix ses som et sæt elementer arrangeret i en række (eller rækker og kolonner, hvis den havde to dimensioner).
I princippet kan alle arrays anses for at være af én dimension, hoveddimensionen, men elementerne i den række kan i sig selv være arrays (en proces, der kan være rekursiv ), hvilket giver os mulighed for at tale om eksistensen af arrays multidimensionelle, selvom de letteste at forestille sig er dem af en, to og tre dimensioner.
Disse datastrukturer er velegnede til situationer, hvor dataadgangen er tilfældig og uforudsigelig. På den anden side, hvis elementerne kan bestilles og sekventiel adgang skal bruges, ville det være mere hensigtsmæssigt at bruge en liste , da denne struktur nemt kan ændre størrelse under afviklingen af et program, hvor sidstnævnte er en dynamisk struktur (da den ikke har en defineret størrelse).
Indekser
Hver vektor består af et vist antal elementer, hvilket gør den til en statisk struktur. Hvert element refereres af den position, det indtager i vektoren. Disse positioner kaldes indeks og er altid korrelative. Der er tre måder at indeksere elementerne i et array på:
- Basis-nul (0) : i denne tilstand vil det første element i vektoren være dens nul-komponent ('0'), det vil sige, den vil have indekset '0'. Følgelig, hvis vektoren har 'n' komponenter, vil det sidste element have værdien 'n-1' som sit indeks. C-sproget og Java -sproget er et typisk eksempel, der bruger denne indekseringstilstand, da værdien 0 i pointer-aritmetik svarer til en nul offset af pointeren. På denne måde er det muligt at pege på det første element i vektoren ved at tilføje værdien af pointeren og offset 0.
- Base-one (1) : I denne form for indeksering har det første element i arrayet indeks '1', og det sidste element har indeks 'n' (for et array af 'n'-komponenter). Lua er et eksempel på et sprog, der bruger denne type indeksering.
- Base-n (n) : dette er en alsidig måde at indeksere på, hvor indekset for det første element kan vælges frit, i nogle programmeringssprog er det tilladt, at indeksene kan være negative og endda af enhver skalar type (også strenge af tegn).
Notation
Repræsentationen af et element i en vektor udføres normalt ved hjælp af vektoridentifikationen efterfulgt af indekset mellem firkantede parenteser, parenteser eller parenteser:
| Notation | eksempler |
|---|---|
| vektor[ indeks_1 , indeks_2 ..., indeks_N ] | Lua , Perl osv |
| vektor[ indeks_0 ][ indeks_1 ]...[ indeks_N-1 ] | C , C++ , PHP , Java osv |
| vektor( indeks_1 , indeks_2 ..., indeks_N ) | Basic , MATLAB |
Selvom de mange gange er i pseudokode og i matematikbøger, er de repræsenteret som bogstaver ledsaget af et numerisk underskrift, der angiver den position, du vil have adgang til. For eksempel for en vektor " A ":
Adgangsform
Måden at få adgang til elementerne i arrayet er direkte ; dette betyder, at det ønskede element er hentet fra dets indeks, og du behøver ikke at gå på udkig efter det element for element (i tilfælde af en liste, for at nå f.eks. det tredje element, skal du få adgang til foregående to eller gem en markør eller pointer , der giver hurtig adgang til det element).
For at arbejde med vektorer mange gange er det nødvendigt at krydse dem. Dette gøres ved hjælp af løkker . Følgende kilde skrevet på C-sproget viser en typisk algoritme til at krydse en vektor ' ' og anvende en funktion ' ' til hver af vektorens komponenter:
int i = 0 ;
int længde = 99 ; // længden af vektoren Eks. 99 int V [ længde ];
while ( i < længde ) //Eks. med While {
//En eller anden operation udføres på vektoren i den i-te position
f ( V [ i ] );
//Forøg indekset for næste trin
i = i + 1 ; // Kunne også skrives som i++; eller i+= 1; }
Dynamiske og statiske vektorer
Typisk har en vektor en fast mængde hukommelse allokeret til sig, selvom afhængigt af vektortypen og programmeringssproget kan en vektor have en variabel mængde data. I dette tilfælde kaldes de dynamiske vektorer , i modsætning til vektorer med en fast mængde hukommelse tildelt dem kaldes statiske vektorer . [ 3 ]
Brugen af dynamiske vektorer kræver korrekt dynamisk hukommelsesstyring . En forkert brug af dynamiske vektorer, eller bedre sagt, en dårlig håndtering af dynamisk hukommelse, kan føre til en hukommelseslækage . Ved brug af dynamiske vektorer vil det altid være nødvendigt at frigøre den anvendte hukommelse, når den ikke længere skal bruges.
Mere moderne sprog og sprog på højere niveau har en mekanisme kaldet en garbage collector (som det er tilfældet med Java ), der gør det muligt for programmet at beslutte, om det skal frigøre plads baseret på, om det vil blive brugt i det fremtidige .-objekt.
Eksempler i C
int main ( ugyldig )
{
int i , v [ 5 ]; // v[5] er en 5-komponent vektor (nul-baseret indeksering)
for ( i = 0 ; i < 5 ; i ++ )
{
v [ i ] = 0 ; // Vi tildeler en værdi printf ( "%d \n " , v [ i ]);
printf ( " \n " ); // Opret en ny linje }
returnere 0 ;
}
Som vektorens identifikator, en konstant pointer, der indeholder adressen på begyndelsen af vektoren (vektor[0], første element)
int main ( ugyldig )
{
int i , v [ 5 ]; // v[5] er en 5-komponent vektor (nul-baseret indeksering)
for ( i = 0 ; i < 5 ; i ++ )
{
* ( v + i ) = 0 ; // Tildel en værdi ved adressen (vektor + ((indeks * størrelse på (int) antal bytes offset fra base.) printf ( "%d \n " , * ( v + i ));
printf ( " \n " ); // Opret en ny linje }
returnere 0 ;
}
- Erklæring i C++ af en STL-vektor:
#inkluder <vektor>
vektor < int > v ; // Hvis det ikke er angivet, er startstørrelsen 0
for ( int i = 0 ; i < 5 ; i ++ )
{
v . push_back ( 2 * i ); // indsæt et element i slutningen af arrayet }
Ovenstående eksempel er lavet til C++ sproget. I C, for at skabe dynamiske arrays, skal du bruge malloc- og realloc- instruktionerne til at reservere hukommelse dynamisk (se bibliotek stdlib.h ), og den gratis funktion til at frigive den brugte hukommelse.
Resultat:
| 0 | 1 | to | 3 | 4 |
|---|---|---|---|---|
| 0 | to | 4 | 6 | 8 |
Resultatet af begge eksempler er den samme vektor.
Multidimensionelle vektorer
I Basic , Java og andre sprog er det muligt at erklære multidimensionelle arrays ved at forstå dem som en vektor af x-dimension. I disse tilfælde er antallet af elementer i vektoren det resulterende produkt af hver dimension.
For eksempel har vektoren v(4,1) 10 elementer og beregnes som følger: (0-4) * (0-1). Elementerne i den første dimension af vektoren indeholder 5 elementer, der spænder fra '0' til '4', og den 2. dimension har 2 elementer, der spænder fra '0' til '1'. Elementerne vil blive tilgået som følger:
- element 1: (0,0)
- element 2: (0,1)
- punkt 3: (1.0)
- ...
- element 8: (3.1)
- punkt 9: (4.0)
- punkt 10: (4.1)
Se også
Referencer
- ↑ Antonio Vaquero, pioneren, der oversatte databehandling: "Jeg er ligeglad med, om de siger 'computer', men ikke om de siger computer" , eldiario.es , 27. november 2015.
- ↑ Douglas Bell, Java for Students (2003). Mike Parr (3 udgave). Pearson uddannelse. s. 162. ISBN 0-13-032377-2 .
- ^ Eck, David J. (2010). Introduktion til programmering med Java . s. 340.