Pascal Programming/Arrays

Lists, or Arrays are types in Pascal that can be used to store multiple data using one variable.

Static Size ArraysEdit

These lists are defined in syntax of:

type MyArray1 = array[0..100] of integer;
 
type MyArray2 = array[0..5] of array[0..10] of char;
 {or}
type MyArray2 = array[0..5,0..10] of char;

Examples of this would be having a list of different types or records.

type my_list_of_names = array[0..7] of string;
 
var the_list: my_list_of_names;
 
begin
  the_list[5] := 'John';
  the_list[0] := 'Newbie';
end;

This would create an array of ['Newbie','','','','','John','','']. We can access these variables the same way as we have set them:

begin
  writeln('Name 0: ', the_list[0]);
  writeln('Name 5: ', the_list[5]);
end;


The following example shows an array with indices of chars.

var
  a: array['A'..'Z'] of integer;
  s: string;
  i: byte;
 
begin
  readln(s); {reads the string}
  for i := 1 to length(s) do {executes the code for each letter in the string}
    if upcase(s[i]) in['A'..'Z'] then
      inc( a[upcase(s[i])] );
    {counts the number the times a letter is counted. the case doesn't count}
  writeln('The number of times the letter A appears in the string is ',a['A']);
  {returns 5 if the string is 'Abracadabra'} 
end.

Dynamic ArraysEdit

Lists also can contain unlimited number of items, depending on the amount of computer memory. This is acheived by dynamic arrays, which appeared with Delphi (not available with Turbo Pascal). To declare a dynamic array, simply declare an array without bounds :

var a: array of <element_type>;

Then, define the size at any moment with the function SetLength

SetLength( a, <New_Length> );

The indices of the array will from 0 to length(a)-1.

You can get the current length with the Length function, as for String type. To go through the array, you can write for example :

var
  i: integer;
  a: array of integer;
 
begin
  randomize;
  setlength(a, 10); { a will contain 10 random numbers }
  for i := 0 to length(a)-1 do
    a[i] := random(10)+1;
end;

The memory is freed automatically when the array is not used anymore, but you can free it before by assigning nil value to the variable which is the same as defining a length of 0.

Last modified on 24 February 2012, at 17:30