Retrieving an Element of an Array

From Rosetta Code
Revision as of 02:00, 1 September 2007 by rosettacode>Bp4Avl

kenia tour il secondo hanquoc gabriela toscano left outsida alone hcitarra lumidee et speedy hex fun6 impazzisco per te polisano look for book lydia pirelli lennox why king of consequences hajducci holiday inn republique paris gay immagini di incantesimo 1 harry potter4 lamma meteo toscana il santuario di delphy il peggio squillo m b lollipo hombres nudi karen dejo italiane iraq li sauli hevaenger kaoma s lambada il viaggio di un poeta istruzioni italiano pdf fujifilm s2pro hey ya outkast testo canzone i don t want hestor y valentino hotelsancandido israel kamak over the rainbow mp3 in tutti i mieie giorni raf lunar silver star la pecora nera la comtaminacion del ambiente l amico e di baldambembo la mia nemica amatissima itefonica le son qui tue la tratoria horse latitudes jor arroyo los brico midi kksjjs hilton paris i got that le pottane ho bisogno di te i d ont want you back isole tremiti alberghi luka tô nem ai gruppi hip hop la mia solitudine il jazz americano hool la felandina lucilla di allmusic installazione gratuita modello unico 200 i m the man who murdered love di xtc il destino cieco in shopenhauer la germania inno curva b napoli il quotidiano lion sleep tonight jetson xxx juliana paes playboy harlem notturno iscrizione legge sulla fecondazione assistita hacki v7 krmak papagaj haus luna nino porzio il diritto di famiglia la stampa di torino liliana tamberi hotel porta rossa firenze http www xray 2000 co uk hoobastark lasat jeux video com letra de la cancion duele el amor libertysurf i cloun heat is on immagini di angeli hearns il cartone animato del cane balto italiane prigioniere in iraq life for rent junior jack stupid lorena mc julietas venegas ju jitsu la vita di san francesco hard sesso cazzoni katia gf4 hotel olimpia htp www tettone it lilo e stitch gratis porno non pagante guida alla maturita il grande babumba midi guerra di spagna i will always love you whitney houston lord of the boards lupus tumido ingegneria meccanica i watussi lotto ritardi kaczmar ibs kelis rogers io te vurria vasa la vida que viendra lavoro casa lacrimi de iubire il buono ilbrutto ilcattivo juanes a dios le pido giochi gratis pocket pc ipsia monza lemony snicket leo vince hit the road jack lotta libera femminile la disciplina della terra julia tak na imie mam il dolore di ungaretti lasgo le olimpiadi lena biolcati l agnese va a morire renata vigano libero it gooblle lets outside alone iraq io saro con te di marco frisina il ballo del pio pio il pazzo linird skinird katamail com llucia knokin on heaven s door i like that di houston incendio karaokefiles incantesimo con walter nudo liberatoria per video leslie et j attends jfive modern time jornal de noticias il mondo insieme a te di max pezzali he s a pirate midi loredana bontempi hotels porto san giorgio jazda inserimento sito judaspriest iraq video su web mostra ostaggio usa d immagini puttane i belive i cen fly katesplayground is it s cos i m cool letizia grande fratello herlinda gomez kate sweetnam hanno ucciso i mesh landing gear http annunci tiscali it scheda annuncio il super uomo d annunzio lou bega ladies and gentlemen il coccodrillo come fa jhkj mandi indeo codec per xp ingatlah hari ini la mata del son junio down hit maia dance 2004 linea 77 66 diabulus in musica laura pausine immagini bonazzi italiano karaoka inno nazionale usa haiducii sito ufficiale like an angel li bero adsl la palomita liceodavinci keys cabotv hollywoodjesus com link iraq love at fisrt sight i believe my heart di duncan james

Task
Retrieving an Element of an Array
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the goal is to retrieve an element of an array.

4D

  ` first element
$elem:=$array{1}

X86 assembly

Assembler: nasm

mov esi, array_offset
mov ebx, 2
mov eax, [esi ebx*4]

ActionScript

var arr:Array = new Array(1,2,3);
var myVar:Number = arr[1];
// the value of myVar is: 2

Ada

Array indexed by an enumerated type. Ada enumerated types are discrete non-numeric types.

type Days is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
type Daily_Counts is array(Days) of Natural;
This_week : Daily_Counts := (200, 212, 175 220, 201, 120, 0);
Monday_Sales : Natural;
Monday_Sales := This_Week(Mon); 

Monday_Sales is assigned 200

AppleScript

on getArrayValue(array, location)
    -- very important -- The list index starts at 1 not 0
    return item location in array
end getArrayValue

C

 int array_index(int array[], int index) {
   return array[index];
 }

C#

 int getArrayValue( int values[], int index ) {
   return values[index];
 }
 

C

 template<typename T>
 T array_index(T array[], size_t index) {
   return array[index];
 }

ColdFusion

<cfset arr = ArrayNew(1)>
<cfset arr[1] = "one">
<cfset arr[2] = "2">
<cfset arr[3] = 3>
<cfset var = arr[1]>

The value of var is "one"

ColdFusion Arrays are NOT zero-based, their index begins at 1

Common Lisp

  (defun array-value (array index)
    (aref array index))

Delphi/Object Pascal/Turbo Pascal/Standard Pascal

Array's in all the flavors of pascal can be of any valid base type, or user defined type ( which are all made up of base types ) and are multi-dimensional. With Delphi dynamic arrays were defined but had been used in pascal since its inseption.

A Static array defintion:

foo : array[1..10] of integer; { The base index is ONE }

The base index can be freely chosen:

foo: array[7 .. 16] of integer; { The base index is 7 }

Indeed, the "1 .. 10" resp. "7 .. 16" are actually types: they are integer subrange types. Arrays can also be indexed by enumeration types or enumeration subrange types:

type
 rainbowcolor = (red, orange, yellow, green, blue, violet);
var
 foo: array[rainbowcolor] of integer;
 bar: array[yellow .. blue] of integer;
 i: integer
begin
 i := foo[red]; { allowed indices are red, orange, yellow, green, blue, violet }
 i := bar[green]; { allowed indices are yellow, green, blue }
end;

A Dynamic Array type in Delphi:

foo : array of integer ; // The base index is ZERO

An "old school" dynamic array in the various flavors of pascal

foo : array[0..0] of integer;  // The base index is ZERO

A dynamic array in Extended Pascal:

type
 intarray(n: integer) = array[1 .. n] of integer; { base index 1 }
var
 foo: ^intarray;
begin
 new(foo, 10); { foo now has index 1 to 10 }
 i := foo[2];
 dispose(foo); { get rid of the array }
end;

In the case of the static array, the compiler generates the code to allocate the required memory to hold 10 integers.

In the Delphi style ---dynamic--- array you must set its length:

SetLength(foo,10);  // this array will no hold 10 integers

In the "old school" style of dynamic arrays, you created a point to the zero length declaration and then allocated memory to it with GetMem

pFoo : ^Foo ;
Foo  : array[0..0] of integer ;

All arrays are accessed the same way regardless of declaration method.

i : integer ;

i := foo[n] ;

where n is the array index who's base is either 1 or 0 depending on how it was declared.

Erlang

Erlang lists are 1-based which means that the index must be within the bounds (1 .. length(List)):

Value = lists:nth(Index, List).

Forth

Forth does not have special syntax for array access. Address arithmetic is used to access contiguous memory.

create array 1 , 2 , 3 , 4 ,
array 2 cells   @ .    \ 3

IDL

 ; this is allowed:
 result = arr(5) 
 ; but this is preferred:
 result = arr[5]

The form with square brackets is preferred as it unambiguously constitutes array access, while the version with round ones can conflict with a function call if there are both a function and an array with the same name arr.

Java

public Object getArrayElem(Object[] array, int pos) {
    return array[pos];
}

JavaScript

var element = array[index];

mIRC

Interpeter: mIRC Script Editor

Library: mArray Snippet

 alias readmyarray { echo -a $array_read(MyArray, 2, 3) }

Perl

Interpreter: Perl 5.8.8

$elem = $array[0];

PHP

$array = array('php', 'has', 'arrays');
// First element 
$elem  = $array[0];

Pop11

lvars ar = {1 two 'three'};
lvars elem;
;;; Access second element and assign to variable elem
ar(2) -> elem;

This example uses the simplest possible array (a vector). Pop11 has more general arrays, but in all cases access follows the same pattern, and look the same as procedure (function) call.

Python

Interpreter: Python 2.5

The item is an element in a list at a given index

 item = aList[index]

or

To use a list like a stack be it FIFO/LIFO

 aList.pop()  # Pop last item in a list
 aList.pop(0) # Pop first item in a list

Note: When using the pop() method, the element is removed from the list.

Ruby

 ary = ['Ruby','rules','big','time']
 #the first element
 element = ary[0]
 #or
 element = ary.first
 # => element = 'Ruby'
 #the last element
 element = ary[-1]
 #or
 element = ary.last
 # => element = 'time'
 #retrieving different values at once
 elements = ary.values_at(0,2,3)
 # => elements = ['Ruby','big','time']
 #select the first element of length 3
 element = ary.find{|el|el.length==3}
 # => element = "big"

Smalltalk

  "Retrieve second element of an array"
  index := 2
  element := anArray at: index

Tcl

All arrays in Tcl are associative. If "key" is the variable that holds the key of the element to be retrieved, then

 set result $array($key)

Toka

This retrieves the value 20 from the second item in the array:

 3 cells is-array table
 ( Populate the array )
 10 0 table put-element
 20 1 table put-element 
 30 2 table put-element
 
 table 1 get-element