Everything from the 4 lessons of this topic on a few pages: the key idea of each lesson, the diagram to remember, the points to learn and the traps examiners set. Read it, cover it, test yourself.
A user-defined data type is one the programmer defines, derived from the built-in types, because the built-in types alone do not model the data in the problem. A non-composite type is defined without reference to other user types: an enumerated type lists every value it can take, in order, and a pointer type holds the memory address of a value of a stated type. A composite type groups other data types under one identifier: a record (fields of different types), a set (unordered, no duplicates, supports set operations such as membership) and a class, whose objects combine attributes with methods.
Score ← 40 stores 40 in the memory location called Score.MyPointer ← ^Score stores the address of Score in MyPointer, not the value 40.MyPointer^ ← MyPointer^ + 2 reads the value at that address (40), adds 2 and writes 42 back to the same location, which is Score.TYPE T = (A, B, C); pointer TYPE P = ^INTEGER.^X is the address of X; Ptr^ is the value at the address in Ptr.SET OF + DEFINE), class (CLASS ... ENDCLASS, NEW).Writing TYPE Season = ("Spring", "Summer", ...) loses the mark. Enumerated values are not strings, so they have no quotation marks.
A set is not an array: it has no index and no order, and adding a value that is already present changes nothing. Do not describe a set as "a list of values with positions".
File organisation is how records are arranged in a file. In a serial file records are stored in the order they arrive; in a sequential file they are stored in order of a key field; in a random file each record is stored at an address calculated from its key by a hashing algorithm. File access is how a record is reached: sequential access reads records one after another from the start (serial and sequential files), while direct access goes straight to the record (random files via the hash, sequential files via an index). When two keys hash to the same address there is a collision, handled by storing the record in the next free address or in an overflow area.
Serial and sequential are not the same. A serial file has no order; a sequential file is sorted on a key field. Say which key the file is ordered by to earn the mark.
After hashing, always compare the key of the record found with the key wanted. The record at the home address may belong to a different key that collided there.
A floating-point number is stored as mantissa × 2exponent. The mantissa holds the significant digits and the exponent says how many places the binary point moves. In 9618 both are in two's complement, and the binary point sits just after the first bit of the mantissa, so the mantissa's place values are −1, ½, ¼, 1/8 and so on. A positive exponent moves the point to the right (a bigger number); a negative exponent moves it to the left (a smaller number). With the same number of bits, floating point gives a far wider range than fixed point.
Do not treat the mantissa as a whole number. 01011000 is not 88: the point sits after the first bit, so it is 0.1011000 = 0.6875.
Negating a mantissa can leave it starting 11. For −4: 4 = 0.1 × 23, so 01000000 0011 negates to 11000000 0011, which is not normalised. Shift left once and reduce the exponent: the correct answer is 10000000 0010.
A floating-point number is normalised when the first two bits of the mantissa are different: a positive mantissa starts 0.1 and a negative one starts 1.0. To normalise, shift the mantissa left until this is true and subtract the number of places shifted from the exponent, so the value is unchanged. Normalisation gives the maximum precision for the number of mantissa bits and a unique representation for each number. For a fixed total, more mantissa bits give greater precision and more exponent bits give a greater range. Many denary fractions, such as 0.1, recur in binary and can only be stored as an approximation, causing rounding errors; a result too large for the exponent causes overflow, and one too close to zero causes underflow.
Shifting the mantissa without changing the exponent changes the number. Every left shift must take 1 off the exponent; state the new exponent in binary.
Overflow and underflow are about the size of the result, not about a negative number. Underflow means too close to zero, not "too negative".