# Chapter 6. Structured Data Types. Topics. Structured Data Types. Vectors and Arrays. Vectors. Vectors: subscripts

Size: px
Start display at page:

Download "Chapter 6. Structured Data Types. Topics. Structured Data Types. Vectors and Arrays. Vectors. Vectors: subscripts"

## Transcription

1 Topics Chapter 6 Structured Data Types Vectors Arrays Slices Associative Arrays Records Unions Lists Sets 2 Structured Data Types Virtually all languages have included some mechanisms for creating complex data objects: Formed using elementary data objects. Arrays, lists, and sets are ways to create homogeneous collection of objects. Records are a mechanism for creating nonhomogeneous collections of data objects. Vectors and Arrays Vectors and arrays are the most common types of data structures in programming languages. A vector is a data structure composed of a fixed number of components of the same type organized as a simple linear sequence. A component of a vector is selected by giving its subscript, an integer (or enumeration value) indicating the position of the component in the sequence. A vector is also called a one-dimensional array or linear array. 3 4 Vectors Vectors: subscripts The attributes of a vector are: 1. Number of components: usually indicated implicitly by giving a sequence of subscript ranges, one for each dimension. 2. Data type of each component, which is a single data type, because the components are all of the same type. 3. Subscript to be used to select each component: usually given as a range of integers, with the first integer designating the first component, and so on. Subscripts may be either a range of values as or an upper bound with an implied lower bound, as A(10). Examples: In Pascal, V: array [-5.. 5] of real; Defines a vector of 11 components, each a real number, where the components are selected by the subscripts, -5, -4, 5. In C, float a[10]; Defines a vector of 10 components with subscripts ranging from 0 to

2 Vectors: subscripts Subscript ranges need not begin at 1. Subscript ranges need not even be a subrange of integers; it may be any enumeration (or a subsequence of an enumeration) Example: In Pascal, type class = (Fresh, Soph, Junior, Senior); var ClassAverage: array [class] of real; Vectors: operations Subscripting: the operation that selects a component from a vector. It is usually written as the vector name followed by the subscript of the component to be selected. V[2] or ClassAverage[Soph] It may be a computed value (an expression that computes the subscript) V[I + 2] 7 8 Vectors: other operations Vectors: implementation Operations to create and destroy vectors. Assignment to components of a vector. Operations that perform arithmetic operations on pairs of vectors of the same size (i.e. addition of two vectors). Insertions and deletions of components are not allowed Only the value of a component may be modified. Storage and accessing of individual components are straightforward: Homogeneity of components The size and structure of each component is the same. Fixed size The number and position of each component of a vector are invariant through its lifetime. A sequential storage is appropriate Vectors: implementation Vectors: access function Descriptor Storage representation Vector LB UB Integer E Data type Lower subscript bound Upper subscript bound Data type of component Size of component A[LB] A[LB+1] A[UB] An access function is used to map array subscripts to addresses. can be addressed by skipping I-1 components. If E is the size of each component, then skip (I-1) x E memory locations. If LB is the lower bound on the subscript range, then the number of such components to skip is I-LB or (I-LB) x E memory locations

4 Fixed stack dynamic Arrays Stack dynamic Arrays Fixed stack-dynamic arrays are those in which Subscript ranges are statically bound. Allocation is done at declaration elaboration time (on the stack). Examples: Pascal locals, most Java locals, and C locals that are not static. Advantage is space efficiency Storage is allocated only while block in which array is declared is active. Using stack memory means the space can be reused when array lifetime ends. Disadvantage A stack-dynamic array is one in which Subscript ranges are dynamically bound Storage allocation is done at runtime Both remain fixed during the lifetime of the variable Advantage: flexibility - size need not be known until the array is about to be used Disadvantge: once created, array size is fixed. Example: Ada arrays can be stack dynamic: Get(List_Len); Declare List : array (1..List_Len) of Integer; Begin End; Size must be known Chapter at 6: compile Data Types time Heap dynamic Arrays Summary: Array Bindings Storage is allocated on the heap A heap-dynamic array is one in which Subscript range binding is dynamic Storage allocation is dynamic Examples: In APL, Perl and JavaScript, arrays grow and shrink as needed C and C++ allow heap-dynamic arrays using pointers In Java, all arrays are objects (heap dynamic) C# provides both heap-dynamic and fixed-heap dynamic Static Binding times for Array Fixed stack dynamic Stack dynamic Dynamic Runtime Subscript range Compile time Compile time Runtime but fixed thereafter Compile time Declaration elaboration time Runtime but fixed thereafter Runtime Storage Arrays: attributes Arrays: initialization Number of scripts FORTRAN I allowed up to three FORTRAN 77 allows up to seven Others languages have no limits. Other languages allow just one, but elements themselves can be arrays. Array Initialization Usually just a list of values that are put in the array in the order in which the array elements are stored in memory Examples of array initialization: 1. FORTRAN - uses the DATA statement, or put the values in /... / on the declaration Integer, Dimension (4) :: stuff = (/2, 4, 6, 8/) 2. Java, C and C++ - put the values in braces; can let the compiler count them e.g. int stuff [] = {2, 4, 6, 8}; 3. For strings (which are treated as arrays in C and C++), an alternate form of initialization is provided. char* names[] = {"Bob", "Mary", "Joe"};

5 Arrays: initialization 3. Ada provides two mechanisms - List in the order in which they are stored. - Positions for the values can be specified. stuff : array (1..4) of Integer := (2,4,6,8); SCORE : array (1..14, 1..2) of Integer := (1 => (24, 10), 2 => (10, 7), 3 =>(12, 30), others => (0, 0)); 4. Pascal does not allow array initialization Arrays: implementation A matrix is implemented by considering it as a vector of vectors; a three-dimensional arrays is a vector whose elements are vectors, and so on. All subvectors must have the same number of elements of the same type. Matrix: Column of rows vs. row of columns Arrays: implementation Row-major order (column of rows) The array is first divided into a vector of subvectors for each element in the range of the first subscript, then each of these subvectors is subdivided into subvectors for each element in the range of the second subscript, and so on. Column-major order (single row of columns) Arrays: Row- vs. Column-major order Arrays: storage representation Arrays: implementation Storage representation follows directly from that for a vector. For a matrix, the data objects in the first row (assuming row -major order) followed by the data objects in the second row, and so on. Result: a single sequential block of memory containing all the components of the array in sequence. The descriptor is the same as that for the vector, except that an upper and lower bound for the subscript range of each dimension are needed. 29 Descriptor Storage representation VO LB 1 (= 1) UB 1 (= 3) LB 2 (= -1) UB 2 (= 1) E (= 1) Virtual Origin Lower bound on subscript 1 Upper bound on subscript 1 Lower bound on subscript 2 Upper bound on subscript 2 Size of component M[1,-1] M[1,0] M[1,1] M[2,-1] M[2,0] M[2,1] M[3,-1] M[3,0] M[3,1] First row Second row Third row 30 5

6 Arrays: accessing function The accessing function is similar to that for vectors: Determine the number of rows to skip over (I-LB 1 ) Multiply by the length of a row to get the location of the start of the I th row Find the location of the J th component in that row, as for a vector Arrays: accessing function If A is a matrix with M rows and N columns, the location of element A[I,J] is given by: A is stored in row-major order location(a[i,j]) = α + (I - LB 1 ) x S + (J - LB 2 ) x E where S = length of a row = (UB 2 - LB 2 + 1) x E A is stored in column-major order where location(a[i,j]) = α + (J - LB 2 ) x S + (I - LB 1 ) x E where S = length of a row = (UB 1 - LB 1 + 1) x E α = base address LB 1 = lower bound on first subscript LB 2, UB 2 = lower and upper bounds on the second subscript Arrays: Row-major access function Arrays: Column-major access function location(a[i,j]) = α + (I - LB 1 ) x S + (J - LB 2 ) x E S = (UB 2 - LB 2 + 1) x E location(a[i,j]) = α + (J - LB 2 ) x S + (I - LB 1 ) x E S = length of a row = (UB 1 - LB 1 + 1) x E Slices A slice is some substructure of an array Nothing more than a referencing mechanism A way of designating a part of the array Slices are only useful in languages for operations that can be done on a whole array. 1. In FORTRAN 90 INTEGER MAT (1:4, 1:4) MAT(1:4, 1) - the first column MAT(2, 1:4) - the second row 35 Example Slices in FORTRAN

7 Slices: examples 2. Ada - single-dimensioned arrays only LIST(4..10) 3. Java has something like slices for multidimensioned arrays int [][]array = array[1] - gets the second row PL/I was one of the earliest languages to implement slices. Associative Arrays An associative array is an unordered collection of data elements that are indexed by an equal number of values called keys The keys are stored in the structure Thus, element is a (key, value) pair Design Issues: 1. What is the form of references to elements? 2. Is the size static or dynamic? Associative Arrays Associative Arrays Structure and Operations in Perl Names begin with % %hi_temps = ("Monday" => 77, "Tuesday" => 79, "Wednesday" => 83); Alternative notation %hi_temps = ("Monday", 77, "Tuesday", 79, "Wednesday", 83); Structure and Operations in Perl Subscripting is done using braces and keys \$hi_temps{"wednesday"}; #returns the value 83 A new elements is added by \$hi_temps{"thursday"} = 91; Elements can be removed with delete delete \$hi_temps{"thursday"}; Records Records: attributes A data structure composed of a fixed number of components of different types. Vectors vs. Records 1. The components of records may be heterogeneous, of mixed data types, rather than homogeneous. 2. The components of records are named with symbolic names (identifiers) rather than indexed with subscripts. Records have 3 main attributes: 1. The number of components 2. The data type of each component 3. The selector used to name each component The components of a records are often called fields, and the component names then are field names. Records are sometimes called structures (as in C)

8 Records: definition syntax 1. COBOL uses level numbers to show nested records 01 EMPLOYEE-RECORD 02 EMPLOYEE-NAME 05 FIRST PICTURE IS X(20). 05 MIDDLE PICTURE IS X(10). 05 LAST PICTURE IS X(20). 02 HOURLY-RATE PICTURE IS 99V99 Records: definition syntax 2. Other languages use recursive definitions type Employee_Name_Type is record end record; First : String(1..20); Middle: String (1..10); Last : String (1..20); type Employee_Record_Type is record Employee_Name: Employee_Name_Type; end record; Hourly_Rate: Float; Employee_record: Employee_Record_Type; Record Field References Records 1. COBOL field_name OF record_name_1 OF... OF record_name_n Example: MIDDLE OF EMPLOYEE-NAME OF EMPLOYEE-RECORD 2. Others (dot notation) record_name_1.record_name_2.... record_name_n.field_name Example: Fully qualified references must include all record names Elliptical references allow leaving out record names as long as the reference is unambiguous (Cobol only) Pascal and Modula-2 provide a with clause to abbreviate references Employee_Record.Employee_Name.Middle Records: operations Records: initialization Assignment Pascal, Ada, and C++ allow it if the types are identical. Initialization Allowed in Ada, using an aggregate. Comparison In Ada, = and /=; one operand can be an aggregate Move Corresponding In COBOL: it moves all fields in the source record to fields with the same names in the destination record. Define & initialize with list of variables Define & initialize using the dot operator (structure member operator) struct student s1 = {"Ted","Tanaka", 22, 2.22}; struct student s2; strcpy(s.first, "Sally"); s.last="suzuki"; s.age = 33; s.gpa = 3.33;

9 Records: implementation Records: descriptors The storage representation for a record consists of a single sequential block of memory in which the components are stored in sequence. Individual components may need descriptors to indicate their data type and other attributes. No runtime descriptor for the record is required Unions Unions: examples A union is a type whose variables are allowed to store different type values at different times during execution Design Issues for unions: 1. What kind of type checking, if any, must be done? 2. Should unions be integrated with records? 1. FORTRAN - with EQUIVALENCE EQUIVALENCE (A, B, C, D), (X(1), Y(1)) Free Unions: No tag variable is required. No type checking C/C++ have free unions 2. Pascal: variant records Contain one or more components that are common to all variants. Each variant has several other components with names and data types that are unique to each variant Unions: examples Unions: type checking issues type PayType = (Salaried, Hourly); var Employee: record ID: integer; Dept: array [1..3] of char; Age: integer; case PayClass: PayType of end Salaried: (MontlyRate: real; StartDate: integer): Hourly: (HourRate: real; Reg: integer; Overtime: integer) The component PayClass is called the tag (Pascal) or discriminant (Ada) because it serves to indicate which variant of the record exists at a given point during program execution. System must check value of flag before each variable access Employee. PayClass := Salaried; Employee. MontlyRate := ; print(employee.overtime); Still not good enough! Employee. PayClass := Salaried; Employee. MontlyRate := ; Employee. StartDate := 626; Employee. PayClass := Hourly; print(employee.overtime); -- error -- this should be an error

10 Unions: selection operation Selection operation: same as that for an ordinary record. For ordinary records: each component exists throughout the lifetime of the record. For variant records/unions: the component may exist at one point during execution (when the tag component has a particular value), may later cease of exist (when the value of the tag changes to indicate a different variant), and later may reappear (if the tag changes back to its original value). Ada Union Types Similar to Pascal, except No free union Tag must be specified with union declaration When tag is changed, all appropriate fileds must be set too. Employee.PayClass:= Hourly; Employee.HourRate := 8.75; Employee.Reg := 8; Employee.Overtime := 2; Ada union types are safe Ada systems required to check the tag of all references to variants Unions: type checking Unions: implementation Problem with Pascal s design Type checking is ineffective. User can create inconsistent unions (because the tag can be individually assigned) Also, the tag is optional (free union). Ada discriminant union Tag must be present All assignments to the union must include the tag value tag cannot be assigned by itself. It is impossible for the user to create an inconsistent union. 57 During translation, the amount of storage required for the components of each variant is determined Storage is allocated in the record for the largest possible variant. Each variant describes a different layout for the block in terms of number and types of components. During execution, no special descriptor is needed for a variant record because the tag component is considered just another component of the record. 58 Unions: storage representation Unions: storage representation ID Dept Age PayClass MontlyRate HourRate StartDate Reg Overtime Storage if PayClass = Salaried Storage if PayClass = Hourly

11 Union: evaluation Useful Potentially unsafe in most languages Ada, Algol 68 provide safe versions Pointers: problems 1. Dangling pointers (dangerous) A pointer points to a heap-dynamic variable that has been deallocated Creating one (with explicit deallocation): a. Allocate a heap-dynamic variable and set a pointer to point at it b. Set a second pointer to the value of the first pointer c. Deallocate the heap-dynamic variable, using the first pointer Pointers: problems Pointers: problems Dangling pointers int *p, *q; p = (int*)malloc(sizeof(int* 5); q = p; free (p); 2. Lost Heap-Dynamic Variables ( wasteful) A heap-dynamic variable that is no longer referenced by any program pointer Creating one: a. Pointer p1 is set to point to a newly created heapdynamic variable b. p1 is later set to point to another newly created heapdynamic variable The process of losing heap-dynamic variables is called memory leakage Lost heap-dynamic variables (garbage) p = (int*)malloc(5*sizeof(int)); p = new int(20); The process of losing heap-dynamic variables is called memory leakage. (cannot free the first chunk of memory) Pointers: examples Pointers: examples C and C++ pointers Used for dynamic storage management and addressing Explicit dereferencing (*) and address-of operator (&) Can do pointer arithmetic float arr[100]; float *p = arr; *(p+5) arr[5] p[5] *(p+i) arr[i] p[i] void* can point to any data type but cannot be dereferenced C++ reference types Constant pointers that are implicitly dereferenced: float x = 1.0; float &y = x; y = 2.2; sets x to 2.2 Used for reference parameters: Advantages of both pass-by-reference and passby-value

12 Pointers: examples Java - Only references (no pointers) No pointer arithmetic Can only point at objects (which are all on the heap) No explicit deallocator (garbage collection is used) Means there can be no dangling references Dereferencing is always implicit Lists A data structure composed of an ordered sequence of data structures. List are similar to vectors in that they consist of an ordered sequence of objects. Lists vs. Vectors 1. Lists are rarely of fixed length. Lists are often used to represent arbitrary data structures, and typically lists grow and shrink during program execution. 2. Lists are rarely homogeneous. The data type of each member of a list may differ from its neighbour. 3. Languages that use lists typically declares such data implicitly without explicit attributes for list members Variations on Lists Variations on Lists Stacks and queues A stack is a list in which component selection, insertion, and deletion are restricted to one end. A queue is a list in which component selection and deletion are restricted to one end and insertion is restricted to the other end. Both sequential and linked storage representations for stacks and queues are common. Trees A list in which the components may be lists as well as elementary data objects, provided that each list is only a component of at most one other list. Directed graphs A data structure in which the components may be linked together using arbitrary linkage patterns (rather than just linear sequences of components) Variations on Lists Sets Property lists A record with a varying number of components, if the number of components may vary without restriction The component names (property names) and their values (property values) must be stored. A common representation is an ordinary linked list with the property names and their values alternating in a single long sequence. A set is a data object containing an unordered collection of distinct values. Basic operations on sets: 1. Membership. 2. Insertion and deletion of single values. 3. Union of sets 4. Intersection of sets 5. Difference of sets

13 Programming Language Problem Find the right mechanisms to allow the programmer to create and manipulate object appropriate to the problem at hand. Language design: simplicity, efficiency, generality, etc. A PL is strongly typed if all type checking can be done at compile time. A PL is type complete if all objects in the language have equal status. In some languages objects of certain types are restricted

### Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types

Chapter 6 Topics WEEK E FOUR Data Types Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference

### Data Types. Outline. In Text: Chapter 6. What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers 5-1. Chapter 6: Data Types 2

Data Types In Text: Chapter 6 1 Outline What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers Chapter 6: Data Types 2 5-1 Data Types Two components: Set of objects in the type (domain

### Data Types In Text: Ch C apter 6 1

Data Types In Text: Chapter 6 1 Outline What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers 2 Data Types Two components: Set of objects in the type (domain of values) Set of applicable

### CSE 452: Programming Languages. Where are we? Types: Intuitive Perspective. Data Types. High-level Programming Languages.

CSE 452: Programming Languages Data Types Where are we? Machine Language High-level Programming Languages Assembly Language Logic Object Oriented Imperative Functional You are here Concepts specification

### Chapter 6. Data Types ISBN

Chapter 6 Data Types ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer

### Chapter 6. Data Types

Chapter 6 Data Types Introduction A data type defines a collection of data objects and a set of predefined operations on those objects A descriptor is the collection of the attributes of a variable Copyright

### Chapter 6. Data Types ISBN

Chapter 6 Data Types ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer

### Chapter 6 part 1. Data Types. (updated based on 11th edition) ISBN

Chapter 6 part 1 Data Types (updated based on 11th edition) ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative

### Array Initialization. Rectangular and Jagged Arrays. Arrays Operations. ICOM 4036 Programming Languages. Data Types

ICOM 4036 Programming Languages Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference Types Data Types This

### Organization of Programming Languages CS320/520N. Lecture 06. Razvan C. Bunescu School of Electrical Engineering and Computer Science

Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Data Types A data type defines a collection of data objects and

### CPSC 3740 Programming Languages University of Lethbridge. Data Types

Data Types A data type defines a collection of data values and a set of predefined operations on those values Some languages allow user to define additional types Useful for error detection through type

### A data type defines a collection of data objects and a set of predefined operations on those objects

Data Types Introduction A data type defines a collection of data objects and a set of predefined operations on those objects Language selection criterion who well does supported data types match problem

### Organization of Programming Languages CS3200 / 5200N. Lecture 06

Organization of Programming Languages CS3200 / 5200N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Data Types A data type defines a collection of data objects

### COSC252: Programming Languages: Basic Semantics: Data Types. Jeremy Bolton, PhD Asst Teaching Professor

COSC252: Programming Languages: Basic Semantics: Data Types Jeremy Bolton, PhD Asst Teaching Professor Copyright 2015 Pearson. All rights reserved. Common Types and Design Concerns Primitive Data Types

### Data Types. Data Types. Introduction. Data Types. Data Types. Data Types. Introduction

Introduction Primitive Composite Structured Abstract Introduction Introduction Data Type is a Collection of Data Objects Possible r-values for a memory cell Set of operations on those objects Descriptor

### Software II: Principles of Programming Languages

Software II: Principles of Programming Languages Lecture 6 Data Types Some Basic Definitions A data type defines a collection of data objects and a set of predefined operations on those objects A descriptor

### Chapter 6. Data Types. *modified by Stephanie Schwartz ISBN

Chapter 6 Data Types *modified by Stephanie Schwartz ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types Enumeration Types Array Types Associative Arrays Record

### CS 230 Programming Languages

CS 230 Programming Languages 11 / 20 / 2015 Instructor: Michael Eckmann Questions/comments? Chapter 6 Arrays Pointers Today s Topics We all know what arrays are. Design issues Legal types for subscripts

### Record Types. A record is a possibly heterogeneous aggregate of data elements in which the individual elements are identified by names Design issues:

Record Types A record is a possibly heterogeneous aggregate of data elements in which the individual elements are identified by names Design issues: o What is the syntactic form of references to the field?

### Chapter 6. Data Types ISBN

Chapter 6 Data Types ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types Enumeration Types Array Types Associative Arrays Record Types Tuple Types List Types Union

### For each of the following variables named x, specify whether they are static, stack-dynamic, or heapdynamic:

For each of the following variables named x, specify whether they are static, stack-dynamic, or heapdynamic: a) in C++: int* x = new(int); b) in Java: class book { protected string title; book(string x)

### Introduction. Primitive Data Types: Integer. Primitive Data Types. ICOM 4036 Programming Languages

ICOM 4036 Programming Languages Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference Types Data Types This

### Chapter 5. Names, Bindings, and Scopes

Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative

### Concepts of Programming Languages (750321)

(750321) A-PDF MERGER DEMO A module For students in Departments CS, CIS, SE, ACS Faculty of IT / Philadelphia University Second Semester 2006/2007 1 (750321) Lecturer: Dr. Nadia Y. Yousif Email: nyaaqob@philadelphia.edu.jo

### Types. What is a type?

Types What is a type? Type checking Type conversion Aggregates: strings, arrays, structures Enumeration types Subtypes Types, CS314 Fall 01 BGRyder 1 What is a type? A set of values and the valid operations

### Data Types (cont.) Subset. subtype in Ada. Powerset. set of in Pascal. implementations. CSE 3302 Programming Languages 10/1/2007

CSE 3302 Programming Languages Data Types (cont.) Chengkai Li Fall 2007 Subset U = { v v satisfies certain conditions and v V} Ada subtype Example 1 type Digit_Type is range 0..9; subtype IntDigit_Type

### Chapter 5 Names, Binding, Type Checking and Scopes

Chapter 5 Names, Binding, Type Checking and Scopes Names - We discuss all user-defined names here - Design issues for names: -Maximum length? - Are connector characters allowed? - Are names case sensitive?

SE352b Software Engineering Design Tools W3: Programming Paradigms Feb. 3, 2005 SE352b, ECE,UWO, Hamada Ghenniwa SE352b: Roadmap CASE Tools: Introduction System Programming Tools Programming Paradigms

### 22c:111 Programming Language Concepts. Fall Types I

22c:111 Programming Language Concepts Fall 2008 Types I Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli. These notes were originally developed by Allen Tucker, Robert Noonan and modified

### Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes 長庚大學資訊工程學系 陳仁暉 助理教授 Tel: (03) 211-8800 Ext: 5990 E-mail: jhchen@mail.cgu.edu.tw URL: http://www.csie.cgu.edu.tw/jhchen All rights reserved. No part

### CSCI312 Principles of Programming Languages!

CSCI312 Principles of Programming Languages! Chapter 5 Types Xu Liu! ! 5.1!Type Errors! 5.2!Static and Dynamic Typing! 5.3!Basic Types! 5.4!NonBasic Types! 5.5!Recursive Data Types! 5.6!Functions as Types!

### Data Types. Every program uses data, either explicitly or implicitly to arrive at a result.

Every program uses data, either explicitly or implicitly to arrive at a result. Data in a program is collected into data structures, and is manipulated by algorithms. Algorithms + Data Structures = Programs

### Chapter 8 :: Composite Types

Chapter 8 :: Composite Types Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter08_Composite_Types_4e - Tue November 21, 2017 Records (Structures) and Variants

### Programming Languages, Summary CSC419; Odelia Schwartz

Programming Languages, Summary CSC419; Odelia Schwartz Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design

### Types II. Hwansoo Han

Types II Hwansoo Han Arrays Most common and important composite data types Homogeneous elements, unlike records Fortran77 requires element type be scalar Elements can be any type (Fortran90, etc.) A mapping

### Question No: 1 ( Marks: 1 ) - Please choose one One difference LISP and PROLOG is. AI Puzzle Game All f the given

MUHAMMAD FAISAL MIT 4 th Semester Al-Barq Campus (VGJW01) Gujranwala faisalgrw123@gmail.com MEGA File Solved MCQ s For Final TERM EXAMS CS508- Modern Programming Languages Question No: 1 ( Marks: 1 ) -

### TYPES, VALUES AND DECLARATIONS

COSC 2P90 TYPES, VALUES AND DECLARATIONS (c) S. Thompson, M. Winters 1 Names, References, Values & Types data items have a value and a type type determines set of operations variables Have an identifier

### CS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline

CS 0 Lecture 8 Chapter 5 Louden Outline The symbol table Static scoping vs dynamic scoping Symbol table Dictionary associates names to attributes In general: hash tables, tree and lists (assignment ) can

### Attributes, Bindings, and Semantic Functions Declarations, Blocks, Scope, and the Symbol Table Name Resolution and Overloading Allocation, Lifetimes,

Chapter 5 Basic Semantics Attributes, Bindings, and Semantic Functions Declarations, Blocks, Scope, and the Symbol Table Name Resolution and Overloading Allocation, Lifetimes, and the Environment Variables

### G Programming Languages - Fall 2012

G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level

### CS 430 Spring Mike Lam, Professor. Data Types and Type Checking

CS 430 Spring 2015 Mike Lam, Professor Data Types and Type Checking Type Systems Type system Rules about valid types, type compatibility, and how data values can be used Benefits of a robust type system

### COS 140: Foundations of Computer Science

COS 140: Foundations of Computer Science Variables and Primitive Data Types Fall 2017 Introduction 3 What is a variable?......................................................... 3 Variable attributes..........................................................

### HANDLING NONLOCAL REFERENCES

SYMBOL TABLE A symbol table is a data structure kept by a translator that allows it to keep track of each declared name and its binding. Assume for now that each name is unique within its local scope.

### G Programming Languages - Fall 2012

G22.2110-003 Programming Languages - Fall 2012 Lecture 6 Thomas Wies New York University Review Last week Functional Languages Lambda Calculus Scheme Outline Types Sources: PLP, ch. 7 Types What is a type?

### Chapter 6 Data Types 1

Chapter 6 Data Types 1 6.1 Introduction A data type defines a collection of data values and a set of predefined operations on those values. In pre-90 Fortrans, linked lists and binary trees were implemented

### Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

### Programming Languages

Programming Languages Types CSCI-GA.2110-001 Summer 2011 What is a type? A type consists of a set of values The compiler/interpreter defines a mapping of these values onto the underlying hardware. 2 /

### G Programming Languages Spring 2010 Lecture 6. Robert Grimm, New York University

G22.2110-001 Programming Languages Spring 2010 Lecture 6 Robert Grimm, New York University 1 Review Last week Function Languages Lambda Calculus SCHEME review 2 Outline Promises, promises, promises Types,

### Imperative Programming

Naming, scoping, binding, etc. Instructor: Dr. B. Cheng Fall 2004 1 Imperative Programming The central feature of imperative languages are variables Variables are abstractions for memory cells in a Von

### Programming Languages

Programming Languages Tevfik Koşar Lecture - XVIII March 23 rd, 2006 1 Roadmap Arrays Pointers Lists Files and I/O 2 1 Arrays Two layout strategies for arrays Contiguous elements Row pointers Row pointers

### Final-Term Papers Solved MCQS with Reference

Solved MCQ(S) From FinalTerm Papers BY Arslan Jan 14, 2018 V-U For Updated Files Visit Our Site : Www.VirtualUstaad.blogspot.com Updated. Final-Term Papers Solved MCQS with Reference 1. The syntax of PHP

### Programming Languages

Programming Languages Types CSCI-GA.2110-003 Fall 2011 What is a type? An interpretation of numbers Consists of a set of values The compiler/interpreter defines a mapping of these values onto the underlying

### CSC 533: Organization of Programming Languages. Spring 2005

CSC 533: Organization of Programming Languages Spring 2005 Language features and issues variables & bindings data types primitive complex/structured expressions & assignments control structures subprograms

### 9/7/17. Outline. Name, Scope and Binding. Names. Introduction. Names (continued) Names (continued) In Text: Chapter 5

Outline Name, Scope and Binding In Text: Chapter 5 Names Variable Binding Type bindings, type conversion Storage bindings and lifetime Scope Lifetime vs. Scope Referencing Environments N. Meng, S. Arthur

### Programming Methodology

Spring 2009 Variables 2 Topics Components of a variable Name Assignment l value and r value Scope & Life time Arrays Constant variables Programming language constructs 3 types statements blocks procedures/functions

### 6. Pointers, Structs, and Arrays. March 14 & 15, 2011

March 14 & 15, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung

### COS 140: Foundations of Computer Science

COS 140: Foundations of Variables and Primitive Data Types Fall 2017 Copyright c 2002 2017 UMaine School of Computing and Information S 1 / 29 Homework Reading: Chapter 16 Homework: Exercises at end of

### CS321 Languages and Compiler Design I Winter 2012 Lecture 13

STATIC SEMANTICS Static Semantics are those aspects of a program s meaning that can be studied at at compile time (i.e., without running the program). Contrasts with Dynamic Semantics, which describe how

### 6. Pointers, Structs, and Arrays. 1. Juli 2011

1. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 50 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung

### Fundamentals of Programming Languages. Data Types Lecture 07 sl. dr. ing. Ciprian-Bogdan Chirila

Fundamentals of Programming Languages Data Types Lecture 07 sl. dr. ing. Ciprian-Bogdan Chirila Predefined types Programmer defined types Scalar types Structured data types Cartesian product Finite projection

### Storage. Outline. Variables and updating. Copy vs. Ref semantics Lifetime. Dangling References Garbage collection

Storage 1 Variables and updating Outline Copy vs. Ref semantics Lifetime Local and global variables Heap variables Persistent variables Dangling References Garbage collection 2 Variables and Updating Variable:

### MIDTERM EXAMINATION - CS130 - Spring 2003

MIDTERM EXAMINATION - CS130 - Spring 2003 Your full name: Your UCSD ID number: This exam is closed book and closed notes Total number of points in this exam: 120 + 10 extra credit This exam counts for

### CPS 506 Comparative Programming Languages. Programming Language

CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support

### Names, Bindings, Scopes

Names, Bindings, Scopes Variables In imperative l Language: abstractions of von Neumann machine Variables: abstraction of memory cell or cells Sometimes close to machine (e.g., integers), sometimes not

### Review of the C Programming Language

Review of the C Programming Language Prof. James L. Frankel Harvard University Version of 11:55 AM 22-Apr-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Reference Manual for the

### Data Types. CSE 307 Principles of Programming Languages Stony Brook University

Data Types CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Data Types We all have developed an intuitive notion of what types are; what's behind

### CS558 Programming Languages

CS558 Programming Languages Fall 2016 Lecture 3a Andrew Tolmach Portland State University 1994-2016 Formal Semantics Goal: rigorous and unambiguous definition in terms of a wellunderstood formalism (e.g.

### Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE

### Note 3. Types. Yunheung Paek. Associate Professor Software Optimizations and Restructuring Lab. Seoul National University

Note 3 Types Yunheung Paek Associate Professor Software Optimizations and Restructuring Lab. Seoul National University Topics Definition of a type Kinds of types Issues on types Type checking Type conversion

### Lecture Notes on Programming Languages

Lecture Notes on Programming Languages 37 Lecture 04: Data Types and Variables All programming languages provide data types. A data type describes a set of data values and a set of predefined operations

### CS321 Languages and Compiler Design I. Fall 2013 Week 8: Types Andrew Tolmach Portland State University

CS321 Languages and Compiler Design I Fall 2013 Week 8: Types Andrew Tolmach Portland State University 1 THE TYPE ZOO int x = 17 Z[1023] := 99; double e = 2.81828 type emp = {name: string, age: int} class

### Control Structures. Outline. In Text: Chapter 8. Control structures Selection. Iteration. Gotos Guarded statements. One-way Two-way Multi-way

Control Structures In Text: Chapter 8 1 Control structures Selection One-way Two-way Multi-way Iteration Counter-controlled Logically-controlled Gotos Guarded statements Outline Chapter 8: Control Structures

### Chapter 7. - FORTRAN I control statements were based directly on IBM 704 hardware

Levels of Control Flow: 1. Within expressions 2. Among program units 3. Among program statements Evolution: - FORTRAN I control statements were based directly on IBM 704 hardware - Much research and argument

### Lecture 13: Complex Types and Garbage Collection

Lecture 13: Complex Types and Garbage Collection COMP 524 Programming Language Concepts Stephen Olivier March 17, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts

### The SPL Programming Language Reference Manual

The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming

### The New C Standard (Excerpted material)

The New C Standard (Excerpted material) An Economic and Cultural Derek M. Jones derek@knosof.co.uk Copyright 2002-2008 Derek M. Jones. All rights reserved. 1566 6.7.5.2 Array declarators 6.7.5.2 Array

### Fundamentals of Programming Languages

Fundamentals of Programming Languages 1. DEFINITIONS... 2 2. BUILT-IN TYPES AND PRIMITIVE TYPES... 3 TYPE COMPATIBILITY... 9 GENERIC TYPES... 14 MONOMORPHIC VERSUS POLYMORPHIC... 16 TYPE IMPLEMENTATION

### Implementing Subprograms

Implementing Subprograms 1 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables Nested Subprograms Blocks Implementing

### In Java we have the keyword null, which is the value of an uninitialized reference type

+ More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are

### Other Features of Procedures

Other Features of Procedures overloading multiple procedures with same name must differ in signature result type part of signature? overriding same signature may still be able to access original method

### The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

### Informatica 3 Syntax and Semantics

Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines

### Name, Scope, and Binding. Outline [1]

Name, Scope, and Binding In Text: Chapter 3 Outline [1] Variable Binding Storage bindings and lifetime Type bindings Type Checking Scope Lifetime vs. Scope Referencing Environments N. Meng, S. Arthur 2

### Type Bindings. Static Type Binding

Type Bindings Two key issues in binding (or associating) a type to an identifier: How is type binding specified? When does the type binding take place? N. Meng, S. Arthur 1 Static Type Binding An explicit

### Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48

### Arrays. Returning arrays Pointers Dynamic arrays Smart pointers Vectors

Arrays Returning arrays Pointers Dynamic arrays Smart pointers Vectors To declare an array specify the type, its name, and its size in []s int arr1[10]; //or int arr2[] = {1,2,3,4,5,6,7,8}; arr2 has 8

### Subprograms. Bilkent University. CS315 Programming Languages Pinar Duygulu

1 Subprograms CS 315 Programming Languages Pinar Duygulu Bilkent University Introduction 2 Two fundamental abstraction facilities Process abstraction Emphasized from early days Data abstraction Emphasized

### UNIT 3

UNIT 3 Presentation Outline Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment

### Short Notes of CS201

#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

### Chapter 9 Subprograms

Chapter 9 Subprograms We now explore the design of subprograms, including parameter-passing methods, local referencing environment, overloaded subprograms, generic subprograms, and the aliasing and problematic

### Lecture 12: Data Types (and Some Leftover ML)

Lecture 12: Data Types (and Some Leftover ML) COMP 524 Programming Language Concepts Stephen Olivier March 3, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts Goals

### CS558 Programming Languages

CS558 Programming Languages Winter 2017 Lecture 4a Andrew Tolmach Portland State University 1994-2017 Semantics and Erroneous Programs Important part of language specification is distinguishing valid from

### Programming Languages

Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes

### CS558 Programming Languages

CS558 Programming Languages Fall 2017 Lecture 3a Andrew Tolmach Portland State University 1994-2017 Binding, Scope, Storage Part of being a high-level language is letting the programmer name things: variables

### Review of the C Programming Language for Principles of Operating Systems

Review of the C Programming Language for Principles of Operating Systems Prof. James L. Frankel Harvard University Version of 7:26 PM 4-Sep-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights

### Compiler Construction

Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Recap: Static Data Structures Outline of Lecture 18 Recap: