James Tam Records You will learn in this section of notes what is a record and how to use them in Pascal.

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

Introduction to Programming CSCE 110 Drawn from James Tam’s material.
Program CheckPass; var TestScore, ExamScore : integer; FinalScore : real; Status : string; begin write(‘Enter the Test score:’); readln(Testscore); write(‘Enter.
J. Michael Moore Text Files CSCE 110 From James Tam’s material.
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 Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.
James TamThe Bubble Sort in Pascal Sorting (Bubble) In this section of notes you will learn one technique for ordering a list.
James Tam Breaking Problems Down This section of notes shows you how to break down a large problem into smaller modules that are easier to implement and.
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 Pointers In this section of notes you will learn about another type of variable that stores addresses rather than data.
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 Sorting (Bubble) In this section of notes you will learn one technique for ordering a list.
James Tam Introduction To Defining New Types in Pascal In this section of notes you will learn about programmer-defined types.
James Tam Sorting (Bubble) In this section of notes you will learn one technique for ordering a list.
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 Introduction To Defining New Types in Pascal In this section of notes you how and why programmers can define new types.
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 Sorting (Bubble) In this section of notes you will learn one technique for ordering a list.
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.
James Tam Sorting (Bubble) In this section of notes you will learn one technique for ordering a list.
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.
J. Michael Moore Modules: Getting information out CPSC 110 Influenced by material developed by James Tam & Jennifer Welch.
James Tam program investors (input, output, investorList, updatedInvestorList); const MAXCLIENTS = 10; NAMELENGTH = 30; LENGTH = 30; type Client =
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 Linked Lists In this section of notes you will learn how to create and manage a dynamic list.
James Tam Linked Lists In this section of notes you will learn how to create and manage a dynamic list.
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.
J. Michael Moore Input and Output (IO) CSCE 110 Drawn from James Tam's material.
J. Michael Moore From James Tam’s material Multi-Dimensional Arrays CSCE 110.
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.
James Tam Breaking Problems Down This section of notes shows you how to break down a large problem into smaller modules that are easier to implement and.
J. Michael Moore From James Tam's material Records CSCE 110.
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 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 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 Introduction To Defining New Types in Pascal In this section of notes you how and why programmers can define new types.
J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
Link Lists In this section of notes you will learn how to create and manage a dynamic list. Link Lists in Pascal.
James Tam Introduction To Files In Pascal You will learn how to read from and write to text files 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 Pointers In this section of notes you will learn about another type of variable that stores addresses rather than data.
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.
James Tam Breaking Problems Down This section of notes shows you how to break down a large problem into smaller modules that are easier to implement and.
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 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.
James Tam Introduction To Files In Pascal In this section of notes you will learn how to read from and write to text files in Pascal.
J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
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.
Foundation Studies Course M.Montebello Records Foundation Studies Course.
Introduction to Pascal The Basics of Program writing.
Pascal Programming Today Chapter 11 1 Chapter 11.
James Tam Multi-Dimensional Arrays In Pascal In this section of notes you will learn about how and when to use multi- dimensional arrays.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 5, Lecture 2 (Tuesday)
History of Computing – Pascal
Pascal Prof. Steven A. Demurjian
Procedures Brent M. Dingle Texas A&M University
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 Records You will learn in this section of notes what is a record and how to use them in Pascal

James Tam Declaring Types Why bother? Creating your own type of variable Making a synonym for an existing type Syntax: Type Name(1) = Type for name (1); Name(2) = Type for name (2); : : : : Name(n) = Type for name (n);

James Tam Declaring Types (2) Example: Type World = array [1..20,1..20] of char; Var map : World; biosphere: World;

James Tam Declaring Types (3) Can be used to provide alternative names for existing types Example: type FloatingPoint = real; var gpa : FloatingPoint; income: real;

James Tam Declaring Types (3) Can be used to provide alternative names for existing types Example: type FloatingPoint = real; var gpa : FloatingPoint; income: real; Original type still usable

James Tam Declaring Types (4) Example: Type world = array [1..20,1..20] of char; Var map : world; biosphere: world; Declaring the type - defining what the type consists of Declaring variables of the new type

James Tam Where Type Declarations Fit Into Pascal Programs program name; (* Declarations *) const (* Declaration of constants) type (* Declaration of new types *) var (* Declaration of variables *) (* Declarations of functions & procedures – defining what they do *) begin end.

James Tam Types Of Variables Pascal Variables Simple (atomic) Aggregate (composite) integercharbooleanrealHomogenous (arrays) Heterogeneou s(records)

James Tam What Is A Record? Record Field Student Record Student I.D. First Name Last Tam Address, line 1 Address, line 2 Phone number : :

James Tam Declaring Records Syntax: Name = record name of field (1) : type of field (1); name of field (2) : type of field (2); name of field (3) : type of field (3); : : : : : : name of field (n) : type of field (n); end; (* Record declaration *)

James Tam Declaring Records (2) Example: StudentRecord = record studentIdentification : integer; firstName : array [1..20] of char; lastName : array [1..20] of char; initial : char; addressLineOne : array [1..20] of char; addressLineTwo : array [1..20] of char; phoneNumber : integer; end;

James Tam Declaring Variables That Are Records Syntax: name of variable : name of declared record; Example: jamesTam : studentRecord; bartSimpson : studentRecord;

James Tam Declaring Variables That Are Records Syntax: name of variable : name of declared record; Example: jamesTam : studentRecord; bartSimpson : studentRecord; jamesTam bartSimpson

James Tam Declaring Arrays Of Records Method: 1) Declare the record 2) Declare a type for the array of records The second step is essential in Pascal for passing the array as a parameter into functions and procedures!

James Tam Declaring Arrays Of Records type StudentRecord = record studentIdentification : integer; firstName : array [1..20] of char; lastName : array [1..20] of char; initial : char; addressLineOne : array [1..20] of char; addressLineTwo : array [1..20] of char; phoneNumber : integer; end; StudentRecordList = array [ ] of StudentRecord; var universityOfCalgaryStudentRecords : StudentRecordList;

James Tam Declaring Arrays Of Records type StudentRecord = record studentIdentification : integer; firstName : array [1..20] of char; lastName : array [1..20] of char; initial : char; addressLineOne : array [1..20] of char; addressLineTwo : array [1..20] of char; phoneNumber : integer; end; StudentRecordList = array [ ] of StudentRecord; var universityOfCalgaryStudentRecords : StudentRecordList; Declaring Record Declaring a new type Declaring a new instance of type "StudentRecordList"

James Tam Passing Records And Arrays Of Records As Parameters Looks the same as passing in other types of variables Can be passed in as value or variable parameters Examples (function or procedure calls): displayStudent (jamesTam); initializeStudentRecords (universityOfCalgaryStudentRecords); Examples (function or procedure definition) procedure displayStudent (jamesTam :StudentRecord); begin end; (* Procedure displayStudent *) procedure initializeStudentRecords (var universityOfCalgaryStudentRecords : StudentRecordList); begin end; (* Procedure initializeStudentRecords *)

James Tam Returning Composite Types From Functions You cannot return composite types of variables (arrays and records) from functions. To have changes to these types of variables be retained after the function or procedure has ended they must be passed as variable parameters (example shown on previous slide)

James Tam Using Record Variables Indicate which variable you wish to use (by stating the name of the variable) e.g., type Person = Record name : array [1..8] of char; age : integer; height : real; weight : real; end; (* Declaration of Person *) begin jo, jack : Person;

James Tam Using Record Variables (2) (If applicable) indicate which field of the record that you wish to use. e.g., jo.name := 'joanne'; jo.age := 20; jo.height := 68.5; jo.weight := 110; Assignment Can be done on a field by field basis: e.g., jack.age = jo.age; Can be done for the whole record (if the records are the same type) e.g., jack := jo;

James Tam Using Record Variables (3) Input and output via read/readln and write/writeln Must be done on a field by field basis e.g., write('Enter age for Jack : '); readln(jack.age); writeln('Jack is ', jack.age, ' years old);

James Tam A Shortcut For Referencing All The Fields Of A Record: With-do Allows you to refer to the fields of a record without having to constantly refer to the name of the record variable. Syntax: with name do body Example: with jack do begin writeln('Jack's stats'); writeln('Age: ', age); writeln('Height :', height); writeln('Weight :', weight); end; (* With do for jack *)

James Tam Putting This All Together You can find a version of this program in Unix under: /home/231/examples/records/person.p program person (input, output, peopleValues); const NAMELENGTH = 16; NOPEOPLE = 4; type Person = Record name : array [1..NAMELENGTH] of char; age : integer; height : real; weight : real; end; (* Declaration of Person *) People = array [1..NOPEOPLE] of Person; var peopleValues : text;

James Tam Putting This All Together (2) procedure manuallyInitializeCalgaryPeople (var calgaryPeople : People ); var i : integer; begin for i := 1 to NOPEOPLE do begin with calgaryPeople[i] do begin write('Enter name of person: '); readln(name); write('Enter age of person in whole years: '); readln(age); write('Enter the height of the person in inches: '); readln(height); write('Enter the weight of the person in pounds: '); readln(weight); writeln; end; (* With-do *) end; (* Initialization for-loop *) end; (* Procedure manuallyInitializeCalgaryPeople *)

James Tam Putting This All Together (3) procedure defaultInitializeCalgaryPeople (var calgaryPeople : People); var i : integer; begin reset(peopleValues); writeln('Reading initial values from file "peopleValues"'); for i := 1 to NOPEOPLE do begin with calgaryPeople[i] do begin readln(peopleValues,name); readln(peopleValues,age); readln(peopleValues,height); readln(peopleValues,weight); readln(peopleValues); end; (* With-do *) end; (* Initialization for-loop *) close(peopleValues); end; (* Procedure defaultInitializeCalgaryPeople *)

James Tam Putting It All Together (4) procedure displayCalgaryPeople (calgaryPeople : People); var i : integer; begin writeln; for i := 1 to NOPEOPLE do begin with calgaryPeople[i] do begin writeln; writeln('Name: ', name); writeln('Age: ', age); writeln('Height: ', height:0:2); writeln('Weight: ', weight:0:2); end; (* With-do *) end; (* Display for-loop *) writeln; end;

James Tam Putting It All Together (5) begin var calgaryPeople : People; var initializationMethod : integer; writeln; writeln('Select method to set starting values for the people'); writeln('Enter "1" to read the values in from a file'); writeln('Enter "2" to manually enter in the values yourself'); write('Enter your choice: '); readln(initializationMethod); writeln; case (initializationMethod) of 1 : begin defaultInitializeCalgaryPeople(calgaryPeople); displayCalgaryPeople(calgaryPeople); end; 2 : begin manuallyInitializeCalgaryPeople(calgaryPeople); displayCalgaryPeople(calgaryPeople); end;

James Tam Putting It All Together (6) begin var calgaryPeople : People; var initializationMethod : integer; writeln; writeln('Select method to set starting values for the people'); writeln('Enter "1" to read the values in from a file'); writeln('Enter "2" to manually enter in the values yourself'); write('Enter your choice: '); readln(initializationMethod); writeln; case (initializationMethod) of 1 : begin defaultInitializeCalgaryPeople(calgaryPeople); displayCalgaryPeople(calgaryPeople); end; 2 : begin manuallyInitializeCalgaryPeople(calgaryPeople); displayCalgaryPeople(calgaryPeople); end;

James Tam Putting It All Together (6) otherwise begin writeln('Your choice was not one of the available options.'); writeln('Restart program and select again.'); end; (* otherwise *) end; (* case *) writeln; end.

James Tam Summary How and why to declare new types in Pascal What is a record How do you declare a record How do you declare variables that are records Using records (accessing and assigning values) Arrays of records Records and arrays as parameters