N.Preetha/ME-I
 They are supported 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
Characters are another primitive 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
 Typical String Operations:
• 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
 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
 An ordinal type 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
 Enumeration types provide 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
 A subrange type 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
 Enumeration types are 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
 An array is 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
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
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
 Some languages limit 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
 Most languages have 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
 A rectangular array 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
 An associative array 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
N.Preetha/ME-I

Primitive data types

  • 1.
  • 2.
     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
  • 17.