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

Slides:



Advertisements
Similar presentations
James Tam Linked Lists in Pascal Linked Lists In this section of notes you will learn how to create and manage a dynamic list.
Advertisements

E.g.9 For to do loop for i:=1 to 10 do writeln(i); While do loop i:=1;
Two-Dimensional Arrays Chapter What is a two-dimensional array? A two-dimensional array has “rows” and “columns,” and can be thought of as a series.
Looping while … do …. Condition Process 2 Process 1 Y Repeated Loop.
1 JavaScript: Control Structures II. 2 whileCounter.html 1 2
1 Arrays in JavaScript Name of array (Note that all elements of this array have the same name, c ) Position number of the element within array c c[6] c[0]
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
James Tam Records You will learn in this section of notes how to create a new, composite type, that can be composed of different types of elements.
James Tam Repetition In Pascal In this section of notes you will learn how to have a section of code repeated without duplicating the code.
James Tam Breaking Problems Down This section of notes shows you how to break down a large programming problem into smaller modules that are easier to.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
James Tam Introduction To Files In Pascal In this section of notes you will learn how to read from and write to files in Pascal.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type arrays.
James Tam Arrays In this section of notes you will be introduced to a composite type where all elements must be of the same type (homogeneous): arrays.
James Tam Repetition In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate the code.
James Tam Introduction To Files In Pascal In this section of notes you will learn how to read from and write to files in your Pascal programs.
James Tam Records You will learn in this section of notes how to create a new, composite type, that can be composed of different types of elements.
James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.
J. Michael Moore From James Tam’s material Multi-Dimensional Arrays CSCE 110.
J. Michael Moore Other Control Structures CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
James Tam Records You will learn in this section of notes how to create a new, composite type, that can be composed of different types of elements.
J. Michael Moore Arrays CSCE 110 From James Tam’s material.
James Tam Loops In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate the code.
James Tam Records You will learn in this section of notes how to create a new, composite type, that can be composed of different types of elements.
James Tam Getting Started With Pascal Programming What is the basic structure of a Pascal Program Variables in Pascal Performing input and output with.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
James Tam Breaking Problems Down This section of notes shows you how to break down a large programming problem into smaller modules that are easier to.
James Tam Loops In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate the code.
J. Michael Moore From James Tam’s material Multi-Dimensional Arrays CSCE 110.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 8 Multidimensional.
James Tam Loops In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate your code.
James Tam Arrays / Lists In this section of notes you will be introduced to new type of variable that consists of other types.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
CS 106 Introduction to Computer Science I 02 / 22 / 2008 Instructor: Michael Eckmann.
Getting Started With Pascal Programming
J. Michael Moore From James Tam's material Records CSCE 110.
J. Michael Moore Other Control Structures CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
James Tam Loops In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate the code.
James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.
James Tam Records You will learn in this section of notes how to create a new, composite type, that can be composed of different types of elements.
Link Lists In this section of notes you will learn how to create and manage a dynamic list. Link Lists in Pascal.
J. Michael Moore Arrays CSCE 110. J. Michael Moore Typical (although simplified) Problem Write a program that will track student grades in a class. The.
James Tam Records You will learn in this section of notes what is a record and how to use them in Pascal.
Input and Output (IO) CSCE 110 Drawn from James Tam's material.
James Tam Pointers In this section of notes you will learn about a third type of variable that stores addresses rather than data.
Arrays (Part II). Two- and Multidimensional Arrays Two-dimensional array: collection of a fixed number of components (of the same type) arranged in two.
James Tam Lists In this section of notes you will be introduced to new type of variable that consists of other types.
James Tam Pointers In this section of notes you will learn about another type of variable that stores addresses rather than data.
Processing Arrays Lesson 8 McManusCOP Overview One-Dimensional Arrays –Entering Data into an Array –Printing an Array –Accumulating the elements.
ARRAYS 1.Basic Ideas 2.The Array Type 3.Processing Arrays 4.Parallel Arrays 5.Two-dimensional Array 6.Arrays as Parameters.
© Copyright 2013 by Pearson Education, Inc. All Rights Reserved. 1 Chapter 8 Multidimensional Arrays.
1 Objectives ❏ To understand the basic concepts and uses of arrays ❏ To be able to define C arrays ❏ To be able to pass arrays and array elements to functions.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 10.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Processing Arrays Lesson 9 McManusCOP Overview One-Dimensional Arrays –Entering Data into an Array –Printing an Array –Accumulating the elements.
Arrays. The array data structure Array is a collection of elements, that have the same data type Integers (int) Floating point numbers (float, double)
James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.
Lec 13 Oct 21, 02. Array Initialization in the declaration statement ► int temp[5] = {98, 87, 92, 79,85}; ► char codes[6] = { ‘s’, ’a’, ‘m’, ‘p’, ‘l’,
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Student Grades Application Introducing Two-Dimensional Arrays and RadioButton.
Computer Programming for Engineers
CSCI 130 More on Arrays. Multi-dimensional Arrays Multi - Dimensional arrays: –have more than one subscript –can be directly initialized –can be initialized.
Multi-dimensional Array 1 Multi-dimensional array refers to an array with more than one index. It is a logical representation. On physical storage, the.
MULTI-DIMENSIONAL ARRAYS 1. Multi-dimensional Arrays The types of arrays discussed so far are all linear arrays. That is, they all dealt with a single.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 6 Multidimensional.
VISUAL C++ PROGRAMMING: CONCEPTS AND PROJECTS Chapter 7A Arrays (Concepts)
Loops In Pascal In this section of notes you will learn how to rerun parts of your program without having to duplicate the code. Repetition in Pascal:
Multi-dimensional Array
Arrays In this section of notes you will be introduced to a homogeneous composite type, one-dimensional arrays One-dimensional arrays in Pascal.
Arrays In this section of notes you will be introduced to a composite type where all elements must be of the same type (homogeneous): arrays Homogeneous.
Presentation transcript:

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

James Tam When To Use Arrays Of Different Dimensions Determined by the data – the number of categories of information determines the number 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)

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

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] Columns Rows

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)

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

James Tam Declaring Multi-Dimensional Arrays Format: (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

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

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

James Tam Example Program: Map Generator And Editor (Non-Modular Version 2) 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] := '|';

James Tam Example Program: Map Generator And Editor (Non-Modular Version 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 *)

James Tam Example Program: Map Generator And Editor (Non-Modular Version 4) repeat begin (* Display world *) for r := 1 to MAXROWS do begin for c := 1 to MAXCOLUMNS do begin write(world[r][c]); end; writeln; end; (* for loop - displays world *)

James Tam Example Program: Map Generator And Editor (Non-Modular Version 5) writeln; write('Enter "Y" or "y" if you wish to edit the world or the return '); write('key otherwise: '); readln(editChoice); 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 (MAXCOLUMNS- 1)) then writeln('Value for row must be in the range of 2 - 9')

James Tam Example Program: Map Generator And Editor (Non-Modular Version 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; (* if edit mode chosen. *)

James Tam Example Program: Map Generator And Editor (Non-Modular Version 7) write('Type "Q" or "q" to quit, or return to continue: '); readln(quitChoice); end; (* repeat loop *) until (quitChoice = 'Q') OR (quitChoice = 'q'); end. (* End of main program *)

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; type Level = array[1..MAXROWS, 1..MAXCOLUMNS] of char;

James Tam Example Program: Map Generator And Editor (2) procedure makeBorder (var world: Level); var r, c: integer; 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] := '|'; end;

James Tam Example Program: Map Generator And Editor (3) procedure populate (var world: Level); var r, c : integer; randomValue : real; begin for r := 2 to (MAXROWS-1) do begin for c:= 2 to (MAXCOLUMNS-1) do begin randomValue := random;

James Tam Example Program: Map Generator And Editor (4) 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 *) end; (* procedure populate *)

James Tam Example Program: Map Generator And Editor (5) procedure displayWorld (world: Level); var r, c: integer; begin (* Display world *) for r := 1 to MAXROWS do begin for c := 1 to MAXCOLUMNS do begin write(world[r][c]); end; writeln; end; (* for loop - displays world *) end;

James Tam Example Program: Map Generator And Editor (6) procedure editWorld (var world : Level); var editChoice, charToChange : char; rowToEdit, ColumnToEdit : integer; begin writeln; write('Enter ''Y'' or ''y'' if you wish to edit the world or the return '); write('key otherwise: '); readln(editChoice);

James Tam Example Program: Map Generator And Editor (7) 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);

James Tam Example Program: Map Generator And Editor (8) if (rowToEdit (MAXROWS-1)) OR (columnToEdit (MAXCOLUMNS-1)) then writeln('Value for row must be in the range of 2 - 9') 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; (* if edit mode chosen. *) end; (* Procedure editWorld *)

James Tam Example Program: Map Generator And Editor (9) begin (* Start of main program *) var world : Level; var quitChoice : char; makeBorder(world); populate(world); (* A loop that displays the world and allows the user to edit it. *) repeat begin displayWorld(world); editWorld(world); write('Type ''Q'' or ''q'' to quit, or return to continue: '); readln(quitChoice); end; (* repeat loop *) until (quitChoice = 'Q') OR (quitChoice = 'q'); end. (* End of main program *)

James Tam You Should Now Know The number of dimensions that should be set for an array How to declare arrays of multiple dimensions How to access and assign values to different parts (elements, rows etc.) of multi-dimensional arrays How to scan selected parts of the array using loops