Computers and computer programs manipulate data: that is their reason for being. It makes sense, therefore, to wonder what characterizes “data.”

Computers are finite constructions, and so any given datum is itself
finite: there are a finite (although perhaps large) number of values
the datum can take on.
A floating point number might be, for example, a value with ten
significant digits and a two digit exponent.
An integer number might be, for example, a value between –32768 and
32767, inclusive.
A character might be, for example, any of a letter (such as
“a” or “A”), a digit (such as “0”
or “9”), a punctuation mark (such as “.” or
“-”), or a special character (such as “start of
heading” or “end of text”).
Data types such as these are generally provided by the computer or
language itself, and are called *atomic*, *primitive*,
or *fundamental* types.
Other types, built out of combinations of these fundamental types, are
called *aggregate* types.

The Casio FX-7400G defines only one type, a number with 15 significant
digits and two exponent digits.
This can hold values between 1×10^{-99} and
9.99999999999×10^{99} in absolute value, and zero.
Note that while the calculator carries 15 significant digits, 12
digits should be regarded as the limit of significance.
The calculator uses ranges of values of the last three digits to
determine whether a number should be treated as if it were a nearby
number with special properties.
For example, 1/3 has no exact finite decimal equivalent, and the
calculator computes this as 0.333333333333333 — the closest
approximation the calculator can hold.
Three times this is 0.999999999999999, but the calculator computes
the product as exactly 1: the calculator decides the answer
“intended” is 1.

The Casio CFX-9850G defines two types.
The first is a numeric type identical to the type defined by the
FX-7400G.
The second is a complex variant of that type.
Each complex number is *a*+*b***i**, where
*a* and *b* are values of the first numeric type, and
**i** is the square root of negative 1.
The 9850 in fact uses these complex numbers for almost all
computations.
The real numbers are used only for list and matrix elements.
However, that the calculator is usually manipulating complex numbers
is not apparent.
The only common operation on real numbers that typically can yield a
complex number is the square root operation.

The Visual Basic for Applications language has a number of fundamental types, of which the following are the most important for the purposes of this tutorial:

Type |
Description |
---|---|

Boolean |
A type capable of holding two values, False and True |

Double |
A numeric data type capable of holding values between
4.94065645841247×10 |

Long |
A numeric data type capable of holding integer values between –2147482648 and 2147483647, inclusive |

String |
A type capable of holding strings, that is, ordered sequences of characters of essentially arbitrary length |

VBA also has Byte, Currency, Decimal, Date, Integer, Single, fixed-length String, Variant, and Object as fundamental types. These are of critical importance in most applications, but are ignored here as we will not use them.

The JavaScript language defines three fundamental types, as follows:

Type |
Description |
---|---|

Boolean |
A type capable of holding two values, False and True |

Number |
A numeric data type capable of holding values between
4.94065645841247×10 |

String |
A type capable of holding strings, that is, ordered sequences of characters of essentially arbitrary length |

Although JavaScript defines these three types, variables cannot be restricted to holding objects of a single type, and JavaScript will generally convert values from one type to another at need. Thus, while these types exist, JavaScript is essentially untyped. JavaScript variables and expressions act similarly to variables and expressions of the Variant type of VBA.

All of JavaScript, Visual Basic for Applications, and the calculators define what are called aggregate types — values made up of other values. These will be covered in the section Data Structures I.

[ Previous page | Top of page | Next page ]

Copyright © 2001 Brian Hetrick

Page last updated 30 December 2001.

Tutorial

Building Blocks I

Data Types

Control Flow II

Basic I/O

Algorithms

A First Program

Answers

Modularization

Data Structures I

Recursion

Program Attributes

Building Blocks II

Algorithm Analysis

Structuring

Data Structures II

Abstract Types

Objects

Problem Analysis

Reference Card