Download presentation
Presentation is loading. Please wait.
Published byGrant Grant Modified over 9 years ago
1
Structured Data Types
2
Date Types We have seen various data types –Integer, Real, Character, Logical All these types define data values of different kinds –128, 4500, 1, 0 (Integer) –0.5E19, 28.0, 0.214141E2 (Real) –hari,maithoo,cs101, fortran (character strings) –.True.,.False. (logical) The Data types define, besides values, –operations, relations and intrinsic functions A summary given here - refer to books/manuals for details
3
Numerical Data Types Constants: 127, - 456, 12.76, 56.7 E 10, - 0.12E-23 Note: decimal points in mantissa but not in exponent no commas allowed 12,23,600 Operations: +,*,/,- Relations: >, =,<=,==,/= Intrinsic Functions: Real, Nint,Int, Abs, Mod, Exp,Log, Sign, Sin, Cos, Sinh,Cosh, …
4
Character Data Types Constants: ABabDf, Fortran, CS101 Note: capital and small letters distinguished Operations: //, (n:m) Relations: equality operators, ==, /= Other comparison operators:, >= ASCII encoding: 8 bit encoding of characters A is 65, B is 66, etc a is 97, b is 98 etc
5
Lexicographic Ordering Collating Sequence: order in which characters occur in ASCII set Relation over individual characters based upon the collating sequence order eg. A < E, Z < a, d < s How to compare strings? –Dictionary ordering (Lexicographic ordering) –eg. AAA < AAB, AAA < AAAA, AAAA < AB Intrinsic Functions: Trim, Len,
6
Logical Data Types Constants:.true.,.false. Operations:.not.,.and.,.or.,.equiv,.nequiv.
7
Structured Data All these data types (except character) are atomic –values are simple and non composite –scalar data types Many real life entities are organized (or structured) collections of simpler data values: –students, accounts, employees (records with constituent items) –pack of cards, tables, vectors, matrices –queues, stacks, graphs Referring to the constituent data values rather than the whole –results in loss of abstraction and clarity –cumbersome
8
Structured Data Types Modern PL enable design of rich set of structured data types to represent structured data They provide constructs using which complex and structured data types can be built from scalar types A PL provides –fixed primitive types for representation of simple data value –constructs for building organized collection from primitive types hence called user defined data types
9
Single Dimensional Arrays Array is one of the simplest and most often used structure Examples: Vectors, list of students ordered by roll numbers, array of cars in a parking lot Array data type is provided to represent such data Typical array values are: –(32, 45, 67, 100, 780) - integer array –(4.50, 345.0E10, 28.25E-12) - real array –(Fortran, Pascal, C, C++, ADA) - character array –(.true.,.false.,.true.,.false.,.false.,.true.,.true.) – logical array
10
Properties of Arrays All entries in an array are values of identical types The data values are of some type, called the base type An array can contain one or more number of entries Every entry is associated with an index By default, the index of the first entry is 1, that of second 2, etc The number of entries is called the size or length of the array Any entry can be accessed directly by indicating its index – hence called random access data structure Arrays are called single dimensional
11
Example Let MARKS be an array (32,24,49,20,0) –base type of MARKS is integer –size or length of the array is 5 –MARKS(5) is 0 while MARKS(2) is 24 Let Planets = (Venus, Earth, Mars, Saturn, Uranus, Neptune, Pluto) –base type is character –length is 7 –Planets(4) is Saturn
12
Array Declarations Program Variables can store array values like any other basic values Typical declarations: –Integer, Dimension(5) :: Marks –Character(len=8), Dimension(7):: Planets base type and length mentioned in declarations The index of these arrays, also called as subscripts, start from 1 and end in the number specified The subscripts can start anywhere and end anywhere; they should be specified then –Integer, Dimension(-8:10):: Students –specifies the subscripts of Students to range from -8 to 10
13
Array References Arrays can be referred in statements either as a whole or individually Individual array elements are like any other variable of the base type They can appear anywhere where the variables can appear, eg. –Students(2) = 5 –Marks(5) = Students(2) * 10 –Students(i) = Student(i+1) –Passed(j) =.TRUE. –Planets(k) = Jupiter –if (Students(i) > 0) then Type matching same as variables of the base type
14
Whole array references The whole array variable can also appear on both rhs and lhs, eg. –Planets = (/ Mars,Earth,Pluto,Neptune,Venus,Jupiter /) –Marks = Students These are whole array assignments; the types of both lhs and rhs should match Types of two array valued expressions match provided –they evaluate to arrays –of the same size and base type –subscript ranges may be different The same constant value can be assigned to all elements of an array –Passed =.FALSE. –All the array entries are assigned the value false; useful for initialization
15
Array Initialization Arrays can be initialized at declarations, eg. – integer, dimension(10) :: a = (/ 0,1,2,3,4,5,6,7,8,9 /) –initializes array a to (0,1,2,3,4,5,6,7,8,9) Implied do loop (Shorthand notation for loops) can be used for initialization, eg. –a = (/ (2*i, i=1,10) /) ! i must be declared before use –a= (/ (i,i, i = 1,10,2) /) a is 1,1,3,3,5,5,7,7,9,9
16
Reading/Writing of Arrays Arrays may be read or printed as a whole, eg. –read *, a –print *, a Values input/output on a single line Implied do loops may also be used, eg. –read *, (a(i), i = 1,n) –values of a(1) to a(n), read on one line
17
Array Sections Arrays can be referred as a whole, per entry or even in parts Parts of the arrays can be referred using sections, eg –Given an array Ex declared as follows integer dimension(100), Ex –Ex(8:89:2) - part of the array Ex(8),Ex(10),...,Ex(88) –Ex(10:50) - references Ex(10),Ex(11),...,Ex(50) –Ex(28::5) - refer to Ex(28),Ex(33),...,Ex(98) –Ex(28:2) - null array –Ex(1:100) - whole section, referred directly as Ex itself
18
Array Bounds Every array has bounds - lower and upper bounds The above array Ex has 1 as lower bound and 100 as upper bound Ex(i) is defined provided 1 <= i <= 100 Any reference to Ex(-25) or Ex(111) is illegal and may produce unknown results A reference is illegal or not can be detected,in general, at run- time only Ex(j) exceeds bound or not depends on value of j - not known at compile time Fortran compiler provides the option of detecting (at run-time) of array index exceeding bounds If this option is on, it inserts code, which can produce run-time errors If off, you have the responsibility for illegal references
19
Operations on Arrays Array assignments involve expressions involving whole arrays Operations are defined over arrays depending upon the base type Operations are `lifted' from the base type –arithmetic operations over real and integer arrays –logical operations over logical arrays Operations apply `point wise' to the array entries Arrays involved should be of the same size
20
Example integer, dimension(50) :: A, B integer, dimension(51:100) :: C read *, A, B ! reads 100 values (A followed by B) C = 2*A + B + 5 ! C(i) = 2*A(i) + B(50+i) + 5 operation is applied to corresponding elements in “parallel” similar to component wise vector addition other arithmetic operations (except **) applied similarly scalar operation performed on each element
21
Relational Operators whole array or array sections can be compared using relational operator As usual, type and size constraints need to respected Comparison to scalars also possible Example: integer, dimension(50) :: a, b logical, dimension(50) :: c c = (a a(1)) ! c(i) is.true. iff a(i) a(1), 1<=i <=50 similarly for other relational operators
22
Intrinsic Functions Many intrinsic functions available for arrays `Lifting' of Intrinsic functions of base type to arrays functions of integers and reals can be applied to integer or real arrays functions applied pointwise - to all elements separately –size(a): number of elements in array a –maxval(a) and minval(a) maximum and minimum value in integer or real array a
23
Intrinsic Functions (contd.) sum(a), product(a) –sum or product of elements of integer or real array a dot_product(a,b) –dot product of two vectors of same size Array operations and intrinsic functions makes program more readable More efficient also, as operations can be done in parallel
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.