Records
Different types under one name
- AS topic 10.1 asks you to define a record: one identifier holding fields of different types.
TYPE…ENDTYPEnames the record and declares each field.- This is not an A2 class. There are no methods here.
TYPE Student
DECLARE Name : STRING
DECLARE Mark : INTEGER
ENDTYPE
DECLARE StudentData : Student
StudentData.Name ← "Ada"
StudentData.Mark ← 91
OUTPUT StudentData.Name & " " & NUM_TO_STR(StudentData.Mark)
A field is read with a dot
StudentData.Nameis theNamefield ofStudentData.- You may copy a whole record:
Pupil2 ← Pupil1copies every field. - An array of records uses one index, then the field:
Form[1].Mark.
TYPE Student
DECLARE Name : STRING
DECLARE Mark : INTEGER
ENDTYPE
DECLARE Form : ARRAY[1:2] OF Student
Form[1].Name ← "Ada"
Form[1].Mark ← 91
Form[2].Name ← "Bo"
Form[2].Mark ← 80
OUTPUT Form[2].Name
Watch out
- Declare the
TYPEbefore youDECLAREa variable of that type. - Enumerated types and pointers are A2 (topic 13.1). They are not in this AS course.
Common mistakes
- Each field has its own
DECLAREinside theTYPE. ENDTYPEcloses the definition. Forgetting it leaves the type unfinished.
Now you try
- Define a record, store two fields, and output them.
Independent transfer
The final task has no supplied algorithm. Plan its inputs, processing and outputs, then solve it before opening support. Check more than the sample case.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Define a Student record with Name and Mark. Store Ada and 91, and output Ada 91.
Click Run to see the output here.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
An array Form of two students is partly filled below. Store Bo as the second name and output it.
Click Run to see the output here.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
The array Form of two students is filled in below. Add up Form[1].Mark and Form[2].Mark with a FOR loop and output the total (171).
Click Run to see the output here.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Define TYPE Book with Title : STRING and Copies : INTEGER. Read two books into an array. Output the title of the book with fewer copies; on a tie choose the first.
Click Run to see the output here.