Arrays and records Programming Language Design and Implementation

Slides:



Advertisements
Similar presentations
PZ04B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ04B - Arrays and records Programming Language Design.
Advertisements

Chapter 7:: Data Types Programming Language Pragmatics
Elementary Data Types Prof. Alamdeep Singh. Scalar Data Types Scalar data types represent a single object, i.e. only one value can be derived. In general,
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
Chapter Four Data Types Pratt 2 Data Objects A run-time grouping of one or more pieces of data in a virtual machine a container for data it can be –system.
Chapter 6 Structured Data Types Arrays Records. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Definitions data type –collection of data objects.
CS-240 Data Structures in C Arrays Dick Steflik. Abstract Data Type A collection of pairs where index is an ordered set of integers and are values of.
ISBN Chapter 6 Data Types: Structured types.
G. Levine Chapter 6 Chapter 6 Encapsulation –Why do we want encapsulation? Programmer friendliness- programmer need not know about these details –Easier.
Arrays. 2 The array data structure An array is an indexed sequence of components Typically, the array occupies sequential storage locations The length.
Elementary Data Types Scalar Data Types Numerical Data Types Other
PZ04A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ04A - Scalar and composite data Programming Language.
Structured Data Types and Encapsulation Mechanisms to create new data types: –Structured data Homogeneous: arrays, lists, sets, Non-homogeneous: records.
Arrays. The array data structure An array is an indexed sequence of components –Typically, the array occupies sequential storage locations –The length.
Arrays. 2 The array data structure An array is an indexed sequence of components Typically, the array occupies sequential storage locations The length.
PZ05B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ05B - Type equality Programming Language Design and.
Introduction of Arrays. Arrays Array form an important part of almost all programming language. It provides a powerful feature and can be used as such.
Chapter 8 Arrays and Strings
Chapter 6 Structured Data Types Arrays Records. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Definitions data type –collection of data objects.
Structured Data Types. Date Types We have seen various data types –Integer, Real, Character, Logical All these types define data values of different kinds.
C o n f i d e n t i a l Developed By Nitendra NextHome Subject Name: Data Structure Using C Title: Overview of Data Structure.
MT311 Java Application Programming and Programming Languages Li Tak Sing ( 李德成 )
1 Programming Languages Implementation of Data Structures Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM.
1 CS 2104 Prog. Lang. Concepts Lecture 3 Dr. Abhik Roychoudhury School of Computing.
Data Structures Winter What is a Data Structure? A data structure is a method of organizing data. The study of data structures is particularly important.
Introduction to Data Structures. Definition Data structure is representation of the logical relationship existing between individual elements of data.
Runtime Environments Compiler Construction Chapter 7.
Arrays. Arrays as ADTs An array is an Abstract Data Type –The array type has a set of values The values are all the possible arrays –The array type has.
1 Languages and Compilers (SProg og Oversættere) Bent Thomsen Department of Computer Science Aalborg University With acknowledgement to Elsa Gunter who’s.
Chapter 8 Arrays and Strings
Algorithm and Programming Array Dr. Ir. Riri Fitri Sari MM MSc International Class Electrical Engineering Dept University of Indonesia 15 March 2009.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
Data Structure & File Systems Hun Myoung Park, Ph.D., Public Management and Policy Analysis Program Graduate School of International Relations International.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
Basic Semantics Associating meaning with language entities.
CPSC 252 Concrete Data Types Page 1 Overview of Concrete Data Types There are two kinds of data types: Simple (or atomic) – represents a single data item.
ISBN 0-321— Chapter 6 Structured Data Types Arrays Associated Arrays Records Unions.
PZ06C Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ06C - Polymorphism Programming Language Design and.
Polymorphism Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 7.3.
ISBN Chapter 6 Structured Data Types Array Types Associative Arrays Record Types Union Types.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
REEM ALMOTIRI Information Technology Department Majmaah University.
PZ09A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ09A - Activation records Programming Language Design.
1 Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Arrays. Arrays as ADTs An array is an Abstract Data Type –The array type has a set of values The values are all the possible arrays –The array type has.
INTRODUCTION OF ARRAY. Topics To Be Discussed………………………. Introduction Types of array One Dimensional Array Internal representation of one-dimensional array.
Two dimensional arrays A two dimensional m x n array A is a collection of m. n elements such that each element is specified by a pair of integers (such.
CHAPTER 4 VARIABLES & BINDING SUNG-DONG KIM DEPT. OF COMPUTER ENGINEERING, HANSUNG UNIVERSITY.
1 Scalar and composite data Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Scalar and composite data Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Chapter 9: Data types and data structures OCR Computing for A Level © Hodder Education 2009.
Arrays An array is a sequence of objects all of which have the same type. The objects are called the elements of the array and are numbered consecutively.
CSI 3125, Data Types, page 1 Data types Outline Primitive data types Structured data types Strings Enumerated types Arrays Records Pointers Reading assignment.
Data Types Chapter 6: Data Types Lectures # 11. Topics Introduction Primitive Data Types Character String Types Array Types Associative Arrays Record.
Data Types In Text: Chapter 6.
Chapter 6 – Data Types CSCE 343.
Type Checking Generalizes the concept of operands and operators to include subprograms and assignments Type checking is the activity of ensuring that the.
PZ06C - Polymorphism Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 7.3 PZ06C.
PZ09A - Activation records
Arrays.
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Course Overview PART I: overview material PART II: inside a compiler
Chapter 6 Part 1.
Arrays and records Programming Language Design and Implementation
Arrays and records Programming Language Design and Implementation
Arrays and records Programming Language Design and Implementation
Arrays and records Programming Language Design and Implementation
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Presentation transcript:

Arrays and records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 6.1

Structured Data Objects Data structure (structured data objects) - An aggregate of other data objects (component) Specification of Data Structure Types - Number of components ::: fixed size, variable size - Variable size ::: insertion and deletion of components Fixed size ::: arrays, records, Variable size ::: stacks, lists, sets, tables, files - Type of each component Homogenous, heterogeneous - Names to be used to select components - Maximum number of components - Organization of the components Simple linear sequence of components (vector) Multi-dimensional … a vector of vectors (C), a separate type Arrays and records

Operation on Data Structures Components selection operations Random selection, Sequential selection Whole data structure operations SNOBOL, APL Insertion and deletion of components Storage management and storage representation Creation and destruction of data structure Storage management Arrays and records

Storage Representation and Implementation Sequential representation Base-address-plus-offset linked list representation Descriptor (dope vector) of a vector Data type Lower and upper subscript bounds Data type of components Size of components Storage representation for components virtual origin  base address of a vector (array) Arrays and records

Array accessing An array is an ordered sequence of identical objects. The ordering is determined by a scalar data object (usually integer or enumeration data). This value is called the subscript or index, and written as A[I] for array A and subscript I. Multidimensional arrays have more than one subscript. A 2-dimensional array can be modeled as the boxes on a rectangular grid. The L-value for array element A[I,J]is given by the accessing formula on the next slide Arrays and records

Arrays and records

Array accessing (continued) Rewriting access equation: L-value(A[I,J]) =  - d1*L1 - d2*L2 +I*d1 + J*d2 Set I = 0; J= 0; L-value(A[0,0]) =  - d1*L1 - d2*L2 +0*d1 + 0*d2 L-value(A[0,0]) =  - d1*L1 - d2*L2, which is a constant. Call this constant the virtual origin (VO); It represents the address of the 0th element of the array. L-value(A[I,J]) = VO +I*d1 + J*d2 To access an array element, typically use a dope vector: Arrays and records

Array accessing summary To create arrays: 1. Allocate total storage beginning at : (U2-L2+1)*(U1-L1+1)*eltsize 2. d2 = eltsize 3. d1 = (U2-L2+1)*d2 4. VO =  - L1*d1 - L2*d2 5. To access A[I,J]: Lvalue(A[I,J]) = VO + I*d1 + J*d2 This works for 1, 2 or more dimensions. May not require runtime dope vector if all values are known at compile time. (e.g., in Pascal, d1, d2, and VO can be computed by compiler.) Next slide: Storage representation for 2-dimensional array. Arrays and records

Arrays and records

Array example Given following array: var A: array [7..12, 14..16] of real; Give dope vector if array stored beginning at location 500. d2 = 4 (real data) d1 = (16-14+1) * 4 = 3 * 4 = 12 VO = 500 - 7 * 12 - 14 * 4 = 500 - 84 - 56 = 360 L-value(A[I,J]) = 360 + 12* I + 4* J 1. VO can be a positive or negative value, and can have an address that is before, within, or after the actual storage for the array: 2. In C, VO =  since bounds start at 0. Example: char A[25] L-value(A[I]) = VO + (I-L1) * d1 =  + I * 1 =  + I Arrays and records

Indexing Methods Column Major FORTRAN Low major C, Pascal, … Arrays and records

Slices Arrays and records

Create new dope vector that accesses original data Array slices Given array : A[L1:U1, L2:U2]: Give d1, d2, and VO for vector: Dope vector A[I,*] = B[L2:U2] VO = L-value(A[I,L2]) - d2*L2 M1 = eltsize = d2 Dope vector A[*,J] = B[L1:U1] VO = L-value(A[L1,J]) - d1*L1 M1 = rowsize = d1 Create new dope vector that accesses original data Arrays and records

More on slices Diagonal slices: VO = L-value(A[L1,L2]) - d1*L1 - d2*L2 M1 = d1 + d2 Other possibilities: Arrays and records

Associative arrays Access information by name without having a predefined ordering or enumeration: Example: Names and grades for students in a class: NAME[I] = name of Ith student GRADE[I] = Grade for Ith student Associative array: Use Name as index: CLASS[name] will be grade. Problem: Do not know enumeration before obtaining data so dope vector method of accessing will not work. Implemented in Perl and in SNOBOL4 (as a table) Arrays and records

Perl example %ClassList = (“Michelle”, `A', “Doris”, `B', “Michael”, `D'); # % operator makes an associative array $ClassList{‘Michelle’} has the value ‘A’ @y = %ClassList # Converts ClassList to an enumeration # array with index 0..5 $I= 0 $y[$I] = Doris $I= 1 $y[$I] = B $I= 2 $y[$I] = Michael $I= 3 $y[$I] = D $I= 4 $y[$I] = Michelle $I= 5 $y[$I] = A Arrays and records

Structs in C Representation: a sequence of objects: record { A: object; B: object; C: object } Arrays and records

Union types typedef union { int X; float Y; char Z[4];} B; B P; Similar to records, except all have overlapping (same) L-value. But problems can occur. What happens below? P.X = 142; printf(“%O\n”, P.Z[3]) All 3 data objects have same L-value and occupy same storage. No enforcement of type checking.  Poor language design Arrays and records

Variant records type PayType=(Salaried, Hourly); var Employee:record ID: integer; Dept: array[1..3] of char; Age: integer; case PayClass: PayType of Salaried:(MonthlyRate:real; StartDate:integer); Hourly:(HourRate:real; Reg:integer; Overtime:integer) end Arrays and records

Variant records (continued) Tagged union type - Pascal variant records type whichtype = (inttype, realtype, chartype); type uniontype = record case V: whichtype of inttype: (X: integer); realtype: (Y: real); chartype: (Z: char4); Assumes string of length 4 end But can still subvert tagging: var P: uniontype P.V = inttype; P.X = 142; P.V = chartype; What is P.V value now? Arrays and records

Lists, Sets Not fixed, not homogenous Lisp의 자료구조 설명 car, cdr, cons Stacks, queues, trees, directed graphs, property list Property lists (table, description list) Property name (attribute) – property value (value) Sets Elements: membership, insertion. deletion Sets: union. intersection, difference Implementation ::: Hashing  elements에 대한 operations은 쉬우나, set 간의 연산은 어려움 Arrays and records