The document discusses various primitive data types including integer, floating point, decimal, boolean, and character. It describes the evolution of character encoding from EBCDIC to ASCII to Unicode. It also covers string operations and different implementations of strings in languages. The document discusses ordinal types like enumeration and subrange. It provides details about array types including static, dynamic, and associative arrays. It compares array implementations across languages.
Primitive data types include integers, floating points, decimals, boolean, and characters, with examples and usage across different programming languages.
Ordinal types associate values with positive integers, including enumeration and subrange types for better readability and logic control in programming.
Arrays are homogeneous data aggregates, with types of indexes varying by language. Static, dynamic, and heap-dynamic arrays are explained.
Arrays can have multiple dimensions; types include rectangular and jagged arrays. Slices refer to substructures of arrays.
Associative arrays are indexed by keys, allowing non-integer indexing. Supported in various languages like Python, Ruby, and Java.
They aresupported directly in the hardware of the machine and not
defined in terms of other types.
Data types that are not defined in terms of other types are called primitive
data types.
◦ Integer: Short Int, Integer, Long Int (etc.)
◦ Floating Point: Real, Double Precision
Stored in 3 parts, sign bit, exponent and mantissa
◦ Decimal: BCD (1 digit per 1/2 byte)
Used in business languages with a set decimal for dollars and cents
◦ Boolean: (TRUE/FALSE, 1/0, T/NIL)
◦ Character: Using EBCDIC, ASCII, UNICODE, etc.
N.Preetha/ME-I
3.
Characters are anotherprimitive data type which map
easily into integers.
We’ve evolved through several basic encodings for
characters:
◦ 50s – 70s: EBCDIC (Extended Binary Coded Decimal Interchange
Code) -- Used five bits to represent characters
◦ 60s – 00s: ASCII (American Standard Code for Information Interchange)
-- Uses seven bits to represent 128 possible “characters”
◦ 90s – 00s - : Unicode -- Uses 16 bits to represent ~64K different
characters. Needed as computers become less Eurocentric to represent
the full range of non-roman alphabets and pictographs.
N.Preetha/ME-I
4.
Typical StringOperations:
• Assignment
• Comparison (=, >, etc.)
• Catenation
• Substring reference
• Pattern matching
• In Pascal, C/C++, Ada, strings are not primitives but can
“act” as primitives if specified as “packed” arrays (i.e.
direct assignment, <, =, > comparisons, etc...).
• In Java, strings are objects and have methods to support
string operations (e.g. length, <, >).
N.Preetha/ME-I
5.
Static -FORTRAN 77, Ada, COBOL
Limited Dynamic Length - C and C++ actual
length is indicated by a null character
Dynamic - SNOBOL4, Perl
N.Preetha/ME-I
6.
An ordinaltype is one in which the range of
possible values can be easily associated with the
set of positive integers.
Two types :
› Enumeration
› Subrange
N.Preetha/ME-I
7.
Enumeration typesprovide a way of defining and
grouping collections of named constants, which are
called enumeration constants.
Can be used in For-loops, case statements, etc.
Operations on ordinals in Pascal, for example,
include PRED, SUCC, ORD.
Mainly used for abstraction/readability.
N.Preetha/ME-I
8.
A subrangetype is a contiguous subsequence of an
ordinal type.
For example, 12..14 is a subrange of integer type.
Available in C/C++, Ada, Pascal, Modula-2
Example : In Ada
type Days is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
Subtype Weekdays is Days range Mon..Fri;
N.Preetha/ME-I
9.
Enumeration typesare usually implemented as
integers without restrictions on ranges of values
and operations.
Subrange types are implemented in exactly the
same way as their parent types.
N.Preetha/ME-I
10.
An arrayis a homogeneous aggregate of data
elements in which an individual element is
identified by its position in the aggregate, relative
to the first element.
An index maps into the array to find the specific
element desired
array_name(subscript_value_list) → element
Two types in an array definition
› type of value being stored in array cells
› type of index used
N.Preetha/ME-I
11.
Subscript Types:
FORTRAN,C - int only
Pascal - any ordinal type (int, boolean, char,
enum)
Ada - int or enum (includes boolean and char)
Java - integer types only
N.Preetha/ME-I
12.
1. Static -range of subscripts and storage bindings
are static
e.g. FORTRAN 77
Advantage: execution efficiency (no allocation or deallocation)
2. Fixed stack dynamic - range of subscripts is statically
bound, but storage is bound at elaboration time.
e.g. Pascal locals and C locals that are not static
Advantage: space efficiency
3. Stack-dynamic - range and storage are dynamic
Advantage: flexibility - size need not be known until the array
is about to be used
4. Heap-dynamic - subscript range and storage bindings are
dynamic and not fixed e.g. (FORTRAN 90)
N.Preetha/ME-I
13.
Some languageslimit the number of dimensions that an
array can have
FORTRAN I - limited to 3 dimensions
FORTRAN IV and onward - up to 7 dimensions
C/C++, Java - limited to 1 but arrays can be nested (i.e.
array element is an array) allowing for any number of
dimensions
Most other languages have no restrictions.
N.Preetha/ME-I
14.
Most languageshave direct assignment of one array to another
(A := B) if both arrays are equivalent.
FORTRAN: Allows array addition A+B
Ada: Array concatenation A&B
FORTRAN 90: library of Array ops including matrix
multiplication, transpose
N.Preetha/ME-I
15.
A rectangulararray is a multidimensional array in
which all of the rows have the same number of
elements and all of the columns have the same
number of elements.
A jagged array is one in which the lengths of the
rows need not be the same.
SLICES - A slice of an array is some substructure of
that array.
› It is a mechanism for referencing part of an array as a unit.
N.Preetha/ME-I
16.
An associativearray is an unordered collection
of data elements that are indexed by an equal
number of values called keys.
Associative arrays have an index that is not
necessarily an integer.
Associative arrays are also supported directly by
Python, Ruby, and by the standard class libraries
of Java, C++, C#, and F#.
In Perl, associative arrays are called hashes.
N.Preetha/ME-I