Presentation is loading. Please wait.

Presentation is loading. Please wait.

James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.

Similar presentations


Presentation on theme: "James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays."— Presentation transcript:

1 James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.

2 James Tam When To Use Arrays Of Different Dimensions Determined by the data – the number of categories of information determines the no. of dimensions to use. Examples: (1D array) Tracking grades for a class Each cell contains the grade for a student i.e., grades[i] There is one dimension that specifies the student (2D array) Personal finances program One dimension of information specifies the financial category (cash in or cash out). The other dimension is used to specify the time One dimension (which student)

3 James Tam When To Use Arrays Of Different Dimensions (2) (2D array continued) Time Financial category JanuaryFebruaryMarch… Income -Rent -Food -Fun -Transport -Misc Net income

4 James Tam When To Use Arrays Of Different Dimensions (3) (2D array continued) Notice that each row is merely a 1D array (A 2D array is an array containing rows of 1D arrays) -Rent Net income Income -Food -Fun -Transport -Misc [1][2][3][4] [1] [2] [3] [4] [5] [6] [7]

5 James Tam When To Use Arrays Of Different Dimensions (4) (3D array – take the 2D array but allow for multiple people) The third dimension specifies whose finances are being tracked. Time (X) Financial category (Y) Person (Z)

6 James Tam When To Use Arrays Of Different Dimensions (5) -Misc Income -Rent -Food Net income -Transport -Fun March…FebruaryJanuary John’s finances Mary’s finances Bob’s finances

7 James Tam Declaring Multi-Dimensional Arrays Syntax: (Two dimensional arrays) Name : array [min..max, min..max] of type; (Three dimensional arrays) Name : array [min..max, min..max, min..max] of type; Example: johnFinances : array [1..7, 1..7] of real; cube : array[1..3, 1..4, 1..6] of char; RowsColumns

8 James Tam Accessing / Assigning Values To Elements Syntax: name [row][column] := name [row][column]; Example: finances [1][1] := 4500; writeln (finances[1][1]);

9 James Tam Example Program: Map Generator And Editor You can find the full program in Unix under: /home/231/examples/array/map.p program map (input, output); const MAXROWS = 10; MAXCOLUMNS = 10; var world : array[1..MAXROWS, 1..MAXCOLUMNS] of char; r, c : integer; randomValue : real; quitChoice : char; editChoice : char; rowToEdit : integer; columnToEdit : integer; charToChange : char;

10 James Tam Example Program: Map Generator And Editor (2) begin for c := 1 to MAXCOLUMNS do world[1][c] := '-'; for c := 1 to MAXCOLUMNS do world[MAXROWS][c] := '-'; for r := 1 to MAXROWS do world[r][1] := '|'; for r := 1 to MAXROWS do world[r][MAXCOLUMNS] := '|' ;

11 James Tam Example Program: Map Generator And Editor (3) for r := 2 to (MAXROWS-1) do begin for c:= 2 to (MAXCOLUMNS-1) do begin randomValue := Random; if (randomValue <= 0.05) then world [r][c] := '~' else if (randomValue <= 0.25) then world [r][c] := '^' else if (randomValue <= 0.30) then world [r][c] := 'C' else if (randomValue <= 0.40) then world [r][c] := 'T' else world [r][c] := ' '; end; (* inner for *) end; (* outer for *)

12 James Tam Example Program: Map Generator And Editor (4) repeat begin for r := 1 to MAXROWS do begin for c := 1 to MAXCOLUMNS do begin write(world[r][c]); end; (* inner for loop *) writeln; end; (* for loop - displays world *) writeln; write('Enter "Y" or "y" if you wish to edit the world or the return '); write('key otherwise: '); readln(editChoice);

13 James Tam Example Program: Map Generator And Editor (5) if (editChoice = 'Y') OR (editChoice = 'y') then begin writeln; write('Enter row (2 - 9) to edit: '); readln(rowToEdit); write('Enter column (2 - 9) to edit: '); readln(columnToEdit); if (rowToEdit (MAXROWS-1)) OR (columnToEdit < 2) OR (columnToEdit > (MAXCOLUMNS-1)) then begin writeln('Value for row or column must be in the range of 2 - 9') end;

14 James Tam Example Program: Map Generator And Editor (6) else begin writeln('What do wish to change this square to? Choices include:'); writeln('"~" for water'); writeln('"^" for trees'); writeln('"C" for a city'); writeln('"T" for a town'); writeln('" " (A space) for an open field'); write('Enter choice and hit return: '); readln(charToChange); world[rowToEdit][columnToEdit] := charToChange; end; (* else *) end; (* edit mode *) writeln('Type "Q" or "q" to quit, or return to continue: '); readln(quitChoice); end; (* repeat loop *) until (quitChoice = 'Q') OR (quitChoice = 'q');

15 James Tam Example Program: Map Generator And Editor (7) end.

16 James Tam Summary You now know about multi-dimensional arrays: What is the syntax for declaring and using arrays of multiple dimensions? What determines the number of dimensions that an array should have? Operations on 2D arrays: Initialization of elements Scanning selected parts of the array using loops


Download ppt "James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays."

Similar presentations


Ads by Google