Retrieving an Element of an Array

From Rosetta Code
Revision as of 09:35, 24 August 2007 by rosettacode>Bp4Avl

lamore senza volto baseball del pinguino taylor donna boyle, kay uvet american express strega di blair george clooney collection toner laser stampante toshiba media center ostelli londra mercedes 220 sw roberto bignoli gigabyte ga-k8ns trapano a percussione ford mustang 1973 acqua di bulgari samsung flat tarabusino io, caterina cronache di oggi lovely sara caporciano testi canzoni maroon5 contratto affitto capitulos sailor moon every changing keane rossignol 9s oversize isola sant antioco ricordati sempre mision imposible canzone mia ostaggi in russia berlingo usato airone snc ms works occ gays fotos climeg terri clark planet phunk forno incasso tangenziale hop acer n30 car zingaro barone lavvocato difensore warmia christchurch shopping henry kloss model two imprese decorazione tejidos bilancia neonato bagnetto viaggio whirlpool 8103 lettori dvd vhs samsung aquolina wafer digiland cupido tasso irs 3 anni debica frigo indispensa decoder ricevitore digitale sat print server d-link car registrations for sale mp3 creative zen micro 5gb exnovo danny ashe www jumping it l amore immaginato per non dimenticarti driver adapter cm18330 paloma picasso - minotaure televisore plasma 28 negozi original fans fiat abbigliamento digimon 02 cane trasportino per aereo prince of persia 2 la danse de zorba c 460 ragazza singola new beetle cabrio immagini di donne bellissime nude contratto di soggiorno maschere di lusso religione antica grecia lacie d2 250gb hifi mp3 dvd aspirapolvere robot electrolux motore occasioni in viaggio con papa black an p ati radeon 9600 se 128mb everhart netscape com kwekwe athlon socket 939 filmografia di alfred hitchcock concessionario auto milano easyshare z730 divisorio per animali accessori auto frigoriferi ariston classe a no frost atlante geografico mondadori obsesion karaoke gratis hotel ilga sailor moon avi pizzicato5 tannini milano malta la miss perde lo slip castres autoambulanza volo aereo catania santo domingo hosting provider gepy sapphire radeon x700 256mb pci-e lite dvd player 8 i giganti della giungla mail bomber auto stereo computer design giochi xxx www confitarma it cha cha cha forrest harvey revisione cambi radio pc hdmi 26 lettore divx con uscita usb ygoogle oakley xx black caricatore cd per autoradio pourquoi automatise t on darklight conflict diesel calzature sony t5 nera hamlet zelig usb volkswagen km o ufficio gorizia piazza affari serena gf nuda malmesteen healing garden macchina neve we love to love centerfold prenotazioni albergo toscana india song argo 12000 fratello sole sorella luna dolce sentire home divx wireless calendario inzaghi colin farrel telecamera nascosta tettone enormi eyes of ranger passeggino navetta carrozzine mondiale trial 2004 immagini fiumicino immagination catalogo accesori moto guzzi fujifilm finepix f 10 carte notti cerato gaetano grande e fauto volo hotel maldive primare a30 2 nx 4090 cuffie digital surround compil auto scoppio modellismo capannone vendita ieee1394 pcmcia ucds program albergo economici barcellona donna catania terranova real one player blue marine concessionario alfa romeo 156 los doce discipulos www studio92 com greco tufo vini e liquori cucurrucu paloma tommaso peter macnicol hbh 300 sony caslon, william benq e300 fiat bravo gt jtd range rover se milly dabbraccio www entel pcs cl yo tomo licor yo tomo cerveza y me gusta misure di sicurezza mv6imc canon hey attack wordsworth deumidificatore condizionatore tomtom mobile 5 nokia 9300 luciano pavarotti vincero favara

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