Iterator Pattern. CSIE Department, NTUT Chien-Hung Liu. Provide a way to access the elements of an aggregate object sequentially
|
|
|
- Scott Johnston
- 9 years ago
- Views:
Transcription
1 Iterator Pattern CSIE Department, NTUT Chien-Hung Liu Iterator: Intent Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation Also known as Cursor 1
2 Iterator: Motivation (1) An aggregate object such as a list should give you a way to access its elements without exposing its internal structure might want to traverse the list in different ways, depending on what you want to accomplish don't want to bloat the List interface with operations for different traversals might also need to have more than one traversal pending on the same list Iterator: Motivation (1-1) C++ STL Example list<int> l; // vector<int> l; l.push_back(1); l.push_back(2); list<int>::iterator i; // vector <int>::iterator i for (i = l.begin(); i!= l.end(); i++) cout << *i << endl; list<int>::reverse_iterator ri; // vector<int> for (ri = l.rbegin(); ri!= l.rend(); ri++) cout << *ri << endl; 2
3 Iterator: Motivation (2) The key idea is to take the responsibility for access and traversal out of the list object and put it into an iterator object copyright by Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, 1995 Iterator: Motivation (3) Separating the traversal mechanism from the List object lets us define iterators for different traversal policies without enumerating them in the List interface. E.g., FilteringListIterator Notice that the client must know that it is a list that's traversed the client commits to a particular aggregate structure It would be better if we could change the aggregate class without changing client code by generalizing the iterator concept to support polymorphic iteration 3
4 Iterator: Motivation (4) Abstract List Abstract Iterator With AbstractList and abstract iterator, iteration mechanism becomes independent of concrete aggregate classes copyright by Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, 1995 Iterator: Motivation (5) How to create the iterator? How to write code that's independent of the concrete List subclasses? Make the list objects responsible for creating their corresponding iterator requires an operation like CreateIterator through which clients request an iterator object CreateIterator is an example of a factory method The Factory Method approach give rise to two class hierarchies, one for lists and another for iterators 4
5 Iterator: Applicability To access an aggregate object's contents without exposing its internal representation To support multiple traversals of aggregate objects To provide a uniform interface for traversing different aggregate structures That is, to support polymorphic iteration Iterator: Structure copyright by Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley,
6 Iterator: Participants Iterator defines an interface for accessing and traversing elements. ConcreteIterator implements the Iterator interface. keeps track of the current position in the traversal of the aggregate. Aggregate defines an interface for creating an Iterator object. ConcreteAggregate implements the Iterator creation interface to return an instance of the proper ConcreteIterator. Iterator: Collaboration A ConcreteIterator keeps track of the current object in the aggregate and can compute the succeeding object in the traversal. 6
7 Iterator: Consequences It supports variations in the traversal of an aggregate E.g., Code generation may traverse the parse tree inorder or preorder. Iterators make it easy to change the traversal algorithm You can also define Iterator subclasses to support new traversals Iterators simplify the Aggregate interface Iterator's traversal interface obviates the need for a similar interface in Aggregate More than one traversal can be pending on an aggregate An iterator keeps track of its own traversal state Iterator: Implementation (1) Iterator has many implementation variants and alternatives. The trade-offs often depend on the control structures your language provides. Who controls the iteration? External iterator (or active iterators) when the client controls the iteration the role of the client clients that use an external iterator must advance the traversal and request the next element explicitly from the iterator more flexible than internal iterators easy to compare two collections for equality 7
8 Iterator: Implementation (2) Internal iterator (or passive iterators) the iterator controls the iteration the client hands an internal iterator an operation to perform, and the iterator applies that operation to every element in the aggregate easier to use, because they define the iteration logic for you Iterator: Implementation (3) Who defines the traversal algorithm? (1) The iterator is responsible to define the traversal algorithm easy to use different iteration algorithms on the same aggregate also be easier to reuse the same algorithm on different aggregates (2) Aggregate define the traversal algorithm and use the iterator to store just the state of the iteration this kind of iterator is called a cursor since it merely points to the current position in the aggregate the traversal algorithm can access the private variables of the aggregate 8
9 Iterator: Implementation (4) How robust is the iterator? A robust iterator ensures that insertions and removals won't interfere with traversal it does traversal without copying the aggregate Many ways to implement robust iterators. Most rely on registering the iterator with the aggregate On insertion or removal the aggregate either adjusts the internal state of iterators, or it maintains information internally to ensure proper traversal Iterator: Implementation (4-1) How robust is the iterator? C++ STL exampe for (i = l.begin(); i!= l.end(); i++) if (*i == 5) { l.erase(i); break; l.remove(5); break is necessary (i.e., the loop can not continue) You do not need a loop to remove an element from a list 9
10 Iterator: Implementation (5) Additional Iterator operations The minimal interface to Iterator consists of the operations First, Next, IsDone, and CurrentItem Some additional operations might prove useful. E.g., ordered aggregates can have a Previous operation that positions the iterator to the previous element. A SkipTo operation is useful for sorted or indexed collections. SkipTo positions the iterator to an object matching specific criteria Iterator: Implementation (6) Using polymorphic iterators in C++ Polymorphic iterators have their cost require the iterator object to be allocated dynamically by a factory method should be used only when there's a need for polymorphism Otherwise use concrete iterators (allocated on the stack) Another drawback: the client is responsible for deleting them We can use a stack-allocated proxy (i.e., Proxy pattern) as a stand-in for the real iterator. (resource allocation is initialization) The proxy deletes the iterator in its destructor. Thus when the proxy goes out of scope, the real iterator will get deallocated along with it The proxy ensures proper cleanup, even in the face of exceptions 10
11 Iterator: Implementation (7) Iterators may have privileged access An iterator can be viewed as an extension of the aggregate that created it The iterator and the aggregate are tightly coupled We can express this close relationship in C++ by making the iterator a friend of its aggregate Iterator: Implementation (8) Iterators for composites External iterators can be difficult to implement over recursive aggregate structures like those in the Composite pattern because a position in the structure may span many levels of nested aggregates has to store a path through the Composite to keep track of the current object Sometimes it's easier just to use an internal iterator It can record the current position simply by calling itself recursively, thereby storing the path implicitly in the call stack If the nodes in a Composite have an interface for moving from a node to its siblings, parents, and children, then a cursor-based iterator may offer a better alternative. Composites often need to be traversed in more than one way. E.g., Preorder, postorder, inorder, and breadth-first traversals support each kind of traversal with a different class of iterator 11
12 Iterator: Implementation (9) Null iterators A NullIterator is a degenerate iterator that's helpful for handling boundary conditions By definition, a NullIterator is always done with traversal; that is, its IsDone operation always evaluates to true NullIterator can make traversing tree-structured aggregates (like Composites) easier. That lets us implement traversal over the entire structure in a uniform way At each point in the traversal, we ask the current element for an iterator for its children. Aggregate elements return a concrete iterator as usual. But leaf elements return an instance of NullIterator. Iterator: Sample Code (1) List and Iterator interfaces class List { public: List(long size = DEFAULT_LIST_CAPACITY); long Count() const; Item& Get(long index) const; //... ; class Iterator { public: virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() const = 0; virtual Item CurrentItem() const = 0; protected: Iterator(); ; 12
13 Iterator: Sample Code (2) class ListIterator : public Iterator<Item> { public: ListIterator(const List<Item>* alist); virtual void First(); virtual void Next(); virtual bool IsDone() const; virtual Item CurrentItem() const; private: const List<Item>* _list; long _current; ; Iterator subclass implementations Iterator: Sample Code (3) ListIterator<Item>::ListIterator ( const List<Item>* alist ) : _list(alist), _current(0) { void ListIterator<Item>::First () { _current = 0; void ListIterator<Item>::Next () { _current++; bool ListIterator<Item>::IsDone () const { return _current >= _list->count(); Item ListIterator<Item>::CurrentItem () const { if (IsDone()) { throw IteratorOutOfBounds; return _list->get(_current); implementation First Next IsDone CurrentItem 13
14 Iterator: Sample Code (4) Using the iterators void PrintEmployees (Iterator<Employee*>& i) { for (i.first();!i.isdone(); i.next()) { i.currentitem()->print(); List<Employee*>* employees; //... ListIterator<Employee*> forward(employees); ReverseListIterator<Employee*> backward(employees); PrintEmployees(forward); PrintEmployees(backward); Iterator: Sample Code (5) SkipList<Employee*>* employees; //... SkipList is a subclass of List SkipListIterator<Employee*> iterator(employees); PrintEmployees(iterator); Avoiding commitment to a specific list implementation class AbstractList { public: virtual Iterator<Item>* CreateIterator() const = 0; //... ; Iterator<Item>* List<Item>::CreateIterator () const { return new ListIterator<Item>(this); // we know only that we have an AbstractList AbstractList<Employee*>* employees; //... Iterator<Employee*>* iterator = employees->createiterator(); PrintEmployees(*iterator); delete iterator; 14
15 Iterator: Sample Code (6) Making sure iterators get deleted class IteratorPtr { public: IteratorPtr(Iterator<Item>* i): _i(i) { ~IteratorPtr() { delete _i; Iterator<Item>* operator->() { return _i; Iterator<Item>& operator*() { return *_i; private: // disallow copy and assignment to avoid // multiple deletions of _i: IteratorPtr(const IteratorPtr&); IteratorPtr& operator=(const IteratorPtr&); private: Iterator<Item>* _i; ; acts as a proxy IteratorPtr can be treated just like a pointer to an iterator AbstractList<Employee*>* employees; //... Allocated in stack IteratorPtr<Employee*> iterator(employees->createiterator()); PrintEmployees(*iterator); Iterator: Sample Code (7) How to parameterize the iterator with the operation we want to perform on each element Pass in a pointer to a function (global or static) the iterator calls the operation passed to it at each iteration Rely on subclassing (of each traversal) the iterator calls an operation that a subclass overrides An internal ListIterator class ListTraverser { public: ListTraverser(List<Item>* alist); bool Traverse(); protected: virtual bool ProcessItem(const Item&) = 0; private: ListIterator<Item> _iterator; ; 15
16 Iterator: Sample Code (8) ListTraverser<Item>::ListTraverser ( List<Item>* alist ) : _iterator(alist) { bool ListTraverser<Item>::Traverse () { bool result = false; for ( _iterator.first();!_iterator.isdone(); _iterator.next() ) { result = ProcessItem(_iterator.CurrentItem()); if (result == false) { break; return result; Iterator: Sample Code (9) class PrintNEmployees : public ListTraverser<Employee*> { public: PrintNEmployees(List<Employee*>* alist, int n) : ListTraverser<Employee*>(aList), _total(n), _count(0) { protected: bool ProcessItem(Employee* const&); private: int _total; int _count; ; bool PrintNEmployees::ProcessItem (Employee* const& e) { _count++; e->print(); return _count < _total; List<Employee*>* employees; //... PrintNEmployees pa(employees, 10); pa.traverse(); The client doesn't specify the iteration loop. The entire iteration logic can be reused 16
17 Iterator: Sample Code (10) ListIterator<Employee*> i(employees); int count = 0; for (i.first();!i.isdone(); i.next()) { count++; i.currentitem()->print(); if (count >= 10) { break; class FilteringListTraverser { public: FilteringListTraverser(List<Item>* alist); bool Traverse(); protected: virtual bool ProcessItem(const Item&) = 0; virtual bool TestItem(const Item&) = 0; private: ListIterator<Item> _iterator; ; Using External Iterator Internal iterators can encapsulate different kinds of iteration Iterator: Sample Code (11) void FilteringListTraverser<Item>::Traverse () { bool result = false; for ( _iterator.first();!_iterator.isdone(); _iterator.next() ) { if (TestItem(_iterator.CurrentItem())) { result = ProcessItem(_iterator.CurrentItem()); if (result == false) { break; return result; Subclasses override TestItem to specify the test 17
18 Iterator: Related patterns Composite Iterators are often applied to recursive structures such as Composites Factory Method Polymorphic iterators rely on factory methods to instantiate the appropriate Iterator Memento is often used in conjunction with the Iterator pattern. An iterator can use a memento to capture the state of an iteration. The iterator stores the memento internally 18
Iterators. Provides a way to access elements of an aggregate object sequentially without exposing its underlying representation.
Iterators Provides a way to access elements of an aggregate object sequentially without exposing its underlying representation when to use it - to access an aggregate object's contents without exposing
Binary Search Trees (BST)
Binary Search Trees (BST) 1. Hierarchical data structure with a single reference to node 2. Each node has at most two child nodes (a left and a right child) 3. Nodes are organized by the Binary Search
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
JAVA COLLECTIONS FRAMEWORK
http://www.tutorialspoint.com/java/java_collections.htm JAVA COLLECTIONS FRAMEWORK Copyright tutorialspoint.com Prior to Java 2, Java provided ad hoc classes such as Dictionary, Vector, Stack, and Properties
DATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
Ordered Lists and Binary Trees
Data Structures and Algorithms Ordered Lists and Binary Trees Chris Brooks Department of Computer Science University of San Francisco Department of Computer Science University of San Francisco p.1/62 6-0:
CSI33 Data Structures
Outline Department of Mathematics and Computer Science Bronx Community College November 25, 2015 Outline Outline 1 Chapter 12: C++ Templates Outline Chapter 12: C++ Templates 1 Chapter 12: C++ Templates
Data Structures, Practice Homework 3, with Solutions (not to be handed in)
Data Structures, Practice Homework 3, with Solutions (not to be handed in) 1. Carrano, 4th edition, Chapter 9, Exercise 1: What is the order of each of the following tasks in the worst case? (a) Computing
CMSC 132: Object-Oriented Programming II. Design Patterns I. Department of Computer Science University of Maryland, College Park
CMSC 132: Object-Oriented Programming II Design Patterns I Department of Computer Science University of Maryland, College Park Design Patterns Descriptions of reusable solutions to common software design
How To Use The Command Pattern In Java.Com (Programming) To Create A Program That Is Atomic And Is Not A Command Pattern (Programmer)
CS 342: Object-Oriented Software Development Lab Command Pattern and Combinations David L. Levine Christopher D. Gill Department of Computer Science Washington University, St. Louis levine,[email protected]
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
Data Structures and Algorithms
Data Structures and Algorithms CS245-2016S-06 Binary Search Trees David Galles Department of Computer Science University of San Francisco 06-0: Ordered List ADT Operations: Insert an element in the list
CHAPTER 4 ESSENTIAL DATA STRUCTRURES
CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex
Data Structure [Question Bank]
Unit I (Analysis of Algorithms) 1. What are algorithms and how they are useful? 2. Describe the factor on best algorithms depends on? 3. Differentiate: Correct & Incorrect Algorithms? 4. Write short note:
Structural Design Patterns Used in Data Structures Implementation
Structural Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: [email protected] November,
16 Collection Classes
16 Collection Classes Collections are a key feature of the ROOT system. Many, if not most, of the applications you write will use collections. If you have used parameterized C++ collections or polymorphic
Java Software Structures
INTERNATIONAL EDITION Java Software Structures Designing and Using Data Structures FOURTH EDITION John Lewis Joseph Chase This page is intentionally left blank. Java Software Structures,International Edition
Data Structure with C
Subject: Data Structure with C Topic : Tree Tree A tree is a set of nodes that either:is empty or has a designated node, called the root, from which hierarchically descend zero or more subtrees, which
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
Questions 1 through 25 are worth 2 points each. Choose one best answer for each.
Questions 1 through 25 are worth 2 points each. Choose one best answer for each. 1. For the singly linked list implementation of the queue, where are the enqueues and dequeues performed? c a. Enqueue in
Curriculum Map. Discipline: Computer Science Course: C++
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
Chapter 13: Query Processing. Basic Steps in Query Processing
Chapter 13: Query Processing! Overview! Measures of Query Cost! Selection Operation! Sorting! Join Operation! Other Operations! Evaluation of Expressions 13.1 Basic Steps in Query Processing 1. Parsing
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
How To Design Your Code In Php 5.5.2.2 (Php)
By Janne Ohtonen, August 2006 Contents PHP5 Design Patterns in a Nutshell... 1 Introduction... 3 Acknowledgments... 3 The Active Record Pattern... 4 The Adapter Pattern... 4 The Data Mapper Pattern...
C++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
- Easy to insert & delete in O(1) time - Don t need to estimate total memory needed. - Hard to search in less than O(n) time
Skip Lists CMSC 420 Linked Lists Benefits & Drawbacks Benefits: - Easy to insert & delete in O(1) time - Don t need to estimate total memory needed Drawbacks: - Hard to search in less than O(n) time (binary
Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.
The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming 1 2 Foreword First of all, this book isn t really for dummies. I wrote it for myself and other kids who are on the team. Everything
Data Structures. Level 6 C30151. www.fetac.ie. Module Descriptor
The Further Education and Training Awards Council (FETAC) was set up as a statutory body on 11 June 2001 by the Minister for Education and Science. Under the Qualifications (Education & Training) Act,
BCS2B02: OOP Concepts and Data Structures Using C++
SECOND SEMESTER BCS2B02: OOP Concepts and Data Structures Using C++ Course Number: 10 Contact Hours per Week: 4 (2T + 2P) Number of Credits: 2 Number of Contact Hours: 30 Hrs. Course Evaluation: Internal
Binary Search Trees CMPSC 122
Binary Search Trees CMPSC 122 Note: This notes packet has significant overlap with the first set of trees notes I do in CMPSC 360, but goes into much greater depth on turning BSTs into pseudocode than
Node-Based Structures Linked Lists: Implementation
Linked Lists: Implementation CS 311 Data Structures and Algorithms Lecture Slides Monday, March 30, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected]
MAX = 5 Current = 0 'This will declare an array with 5 elements. Inserting a Value onto the Stack (Push) -----------------------------------------
=============================================================================================================================== DATA STRUCTURE PSEUDO-CODE EXAMPLES (c) Mubashir N. Mir - www.mubashirnabi.com
C++ Crash Kurs. C++ Object-Oriented Programming
C++ Crash Kurs C++ Object-Oriented Programming Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer C++ classes A class is user-defined type
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Binary Trees and Huffman Encoding Binary Search Trees
Binary Trees and Huffman Encoding Binary Search Trees Computer Science E119 Harvard Extension School Fall 2012 David G. Sullivan, Ph.D. Motivation: Maintaining a Sorted Collection of Data A data dictionary
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
API for java.util.iterator. ! hasnext() Are there more items in the list? ! next() Return the next item in the list.
Sequences and Urns 2.7 Lists and Iterators Sequence. Ordered collection of items. Key operations. Insert an item, iterate over the items. Design challenge. Support iteration by client, without revealing
Data Structures Using C++ 2E. Chapter 5 Linked Lists
Data Structures Using C++ 2E Chapter 5 Linked Lists Doubly Linked Lists Traversed in either direction Typical operations Initialize the list Destroy the list Determine if list empty Search list for a given
Converting a Number from Decimal to Binary
Converting a Number from Decimal to Binary Convert nonnegative integer in decimal format (base 10) into equivalent binary number (base 2) Rightmost bit of x Remainder of x after division by two Recursive
What Is Recursion? Recursion. Binary search example postponed to end of lecture
Recursion Binary search example postponed to end of lecture What Is Recursion? Recursive call A method call in which the method being called is the same as the one making the call Direct recursion Recursion
TREE BASIC TERMINOLOGIES
TREE Trees are very flexible, versatile and powerful non-liner data structure that can be used to represent data items possessing hierarchical relationship between the grand father and his children and
What is a Loop? Pretest Loops in C++ Types of Loop Testing. Count-controlled loops. Loops can be...
What is a Loop? CSC Intermediate Programming Looping A loop is a repetition control structure It causes a single statement or a group of statements to be executed repeatedly It uses a condition to control
AP Computer Science AB Syllabus 1
AP Computer Science AB Syllabus 1 Course Resources Java Software Solutions for AP Computer Science, J. Lewis, W. Loftus, and C. Cocking, First Edition, 2004, Prentice Hall. Video: Sorting Out Sorting,
Class 32: The Java Collections Framework
Introduction to Computation and Problem Solving Class 32: The Java Collections Framework Prof. Steven R. Lerman and Dr. V. Judson Harward Goals To introduce you to the data structure classes that come
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
Advanced Data Structures
C++ Advanced Data Structures Chapter 8: Advanced C++ Topics Zhijiang Dong Dept. of Computer Science Middle Tennessee State University Chapter 8: Advanced C++ Topics C++ 1 C++ Syntax of 2 Chapter 8: Advanced
Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD
1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
Optimal Binary Search Trees Meet Object Oriented Programming
Optimal Binary Search Trees Meet Object Oriented Programming Stuart Hansen and Lester I. McCann Computer Science Department University of Wisconsin Parkside Kenosha, WI 53141 {hansen,mccann}@cs.uwp.edu
Common Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
The Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!
The Tower of Hanoi Recursion Solution recursion recursion recursion Recursive Thinking: ignore everything but the bottom disk. 1 2 Recursive Function Time Complexity Hanoi (n, src, dest, temp): If (n >
1. What are Data Structures? Introduction to Data Structures. 2. What will we Study? CITS2200 Data Structures and Algorithms
1 What are ata Structures? ata Structures and lgorithms ata structures are software artifacts that allow data to be stored, organized and accessed Topic 1 They are more high-level than computer memory
Chapter 14 The Binary Search Tree
Chapter 14 The Binary Search Tree In Chapter 5 we discussed the binary search algorithm, which depends on a sorted vector. Although the binary search, being in O(lg(n)), is very efficient, inserting a
root node level: internal node edge leaf node CS@VT Data Structures & Algorithms 2000-2009 McQuain
inary Trees 1 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the root, which are disjoint from each
N3458: Simple Database Integration in C++11
N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München [email protected] 2012-10-22 Many applications make use of relational database to store and query their data. However,
Operator Overloading. Lecture 8. Operator Overloading. Running Example: Complex Numbers. Syntax. What can be overloaded. Syntax -- First Example
Operator Overloading Lecture 8 Operator Overloading C++ feature that allows implementer-defined classes to specify class-specific function for operators Benefits allows classes to provide natural semantics
Data Structures Using C++ 2E. Chapter 5 Linked Lists
Data Structures Using C++ 2E Chapter 5 Linked Lists Test #1 Next Thursday During Class Cover through (near?) end of Chapter 5 Objectives Learn about linked lists Become aware of the basic properties of
ECE 250 Data Structures and Algorithms MIDTERM EXAMINATION 2008-10-23/5:15-6:45 REC-200, EVI-350, RCH-106, HH-139
ECE 250 Data Structures and Algorithms MIDTERM EXAMINATION 2008-10-23/5:15-6:45 REC-200, EVI-350, RCH-106, HH-139 Instructions: No aides. Turn off all electronic media and store them under your desk. If
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
CSCI 123 INTRODUCTION TO PROGRAMMING CONCEPTS IN C++
Brad Rippe CSCI 123 INTRODUCTION TO PROGRAMMING CONCEPTS IN C++ Recursion Recursion CHAPTER 14 Overview 14.1 Recursive Functions for Tasks 14.2 Recursive Functions for Values 14.3 Thinking Recursively
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
A DESIGN PATTERNS PERSPECTIVE ON DATA STRUCTURES. Virginia Niculescu
Acta Universitatis Apulensis ISSN: 1582-5329 No. 34/2013 pp. 335-355 A DESIGN PATTERNS PERSPECTIVE ON DATA STRUCTURES Virginia Niculescu Abstract. Design patterns may introduce a new perspective on the
CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators
CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators This handout is designed to provide a better understanding of how one should write template code and architect iterators
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
Exercises Software Development I. 11 Recursion, Binary (Search) Trees. Towers of Hanoi // Tree Traversal. January 16, 2013
Exercises Software Development I 11 Recursion, Binary (Search) Trees Towers of Hanoi // Tree Traversal January 16, 2013 Software Development I Winter term 2012/2013 Institute for Pervasive Computing Johannes
Sample Questions Csci 1112 A. Bellaachia
Sample Questions Csci 1112 A. Bellaachia Important Series : o S( N) 1 2 N N i N(1 N) / 2 i 1 o Sum of squares: N 2 N( N 1)(2N 1) N i for large N i 1 6 o Sum of exponents: N k 1 k N i for large N and k
5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.
1. The advantage of.. is that they solve the problem if sequential storage representation. But disadvantage in that is they are sequential lists. [A] Lists [B] Linked Lists [A] Trees [A] Queues 2. The
Cpt S 223. School of EECS, WSU
Abstract Data Types 1 Topics Abstract Data Types (ADTs) Some basic ADTs: Lists Stacks Queues 2 Primitive Data Type vs. Abstract Data Types Primitive DT: ADT: programmer progra ammer Interface (API) e.g.,
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Binary Search Trees. A Generic Tree. Binary Trees. Nodes in a binary search tree ( B-S-T) are of the form. P parent. Key. Satellite data L R
Binary Search Trees A Generic Tree Nodes in a binary search tree ( B-S-T) are of the form P parent Key A Satellite data L R B C D E F G H I J The B-S-T has a root node which is the only node whose parent
Algorithms and Data S tructures Structures Stack, Queues, and Applications Applications Ulf Leser
Algorithms and Data Structures Stack, Queues, and Applications Ulf Leser Content of this Lecture Stacks and Queues Tree Traversal Towers of Hanoi Ulf Leser: Alg&DS, Summer semester 2011 2 Stacks and Queues
Linked Lists: Implementation Sequences in the C++ STL
Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University
Object Oriented Software Design II
Object Oriented Software Design II Real Application Design Christian Nastasi http://retis.sssup.it/~lipari http://retis.sssup.it/~chris/cpp Scuola Superiore Sant Anna Pisa April 25, 2012 C. Nastasi (Scuola
Chapter 8: Bags and Sets
Chapter 8: Bags and Sets In the stack and the queue abstractions, the order that elements are placed into the container is important, because the order elements are removed is related to the order in which
Morris School District. AP Computer Science A Curriculum Grades 9-12
Morris School District 31 Hazel Street Morristown, NJ 07960 Morris School District AP Computer Science A Curriculum Grades 9-12 Mackey Pendergrast, Superintendent Submitted by: Samantha Margenau Date:
CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.
CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation
How To Teach C++ Data Structure Programming
UTSA EE 3223 - C++ Data Structures Syllabus Fall 2015 Part A - Course Outline Catalog Description: 3 hours credit. Review of C/C++ non-object oriented programming concepts. Object-oriented programming
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations
Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
Introduction to Patterns and Frameworks
Patterns and Frameworks Introduction to Patterns and Frameworks Professor Department of EECS [email protected] Vanderbilt University www.cs.wustl.edu/schmidt/ (615) 343-8197 Motivation for Patterns
1.1.3 Syntax The syntax for creating a derived class is very simple. (You will wish everything else about it were so simple though.
Stewart Weiss Inheritance is a feature that is present in many object-oriented languages such as C++, Eiffel, Java, Ruby, and Smalltalk, but each language implements it in its own way. This chapter explains
Sequences in the C++ STL
CS 311 Data Structures and Algorithms Lecture Slides Wednesday, November 4, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] 2005 2009 Glenn
Twin A Design Pattern for Modeling Multiple Inheritance
Twin A Design Pattern for Modeling Multiple Inheritance Hanspeter Mössenböck University of Linz, Institute of Practical Computer Science, A-4040 Linz [email protected] Abstract. We introduce
Abstract Data Type. EECS 281: Data Structures and Algorithms. The Foundation: Data Structures and Abstract Data Types
EECS 281: Data Structures and Algorithms The Foundation: Data Structures and Abstract Data Types Computer science is the science of abstraction. Abstract Data Type Abstraction of a data structure on that
Syllabus for Computer Science. Proposed scheme for B.Sc Programme under Choice Based Credit System
Syllabus for Computer Science Proposed scheme for B.Sc Programme under Choice Based Credit System SEMESTER - I Code Course Title Course Type HPW Credits BS106 SEMESTER -I I BS 206 SEMESTER -III BS 301
Recursive Implementation of Recursive Data Structures
Recursive Implementation of Recursive Data Structures Jonathan Yackel Computer Science Department University of Wisconsin Oshkosh Oshkosh, WI 54901 [email protected] Abstract The elegant recursive definitions
Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Distributed Result Set Iterator: a design pattern for efficient retrieval of large result sets from remote data sources
Distributed Result Set Iterator: a design pattern for efficient retrieval of large result sets from remote data sources Brad Long Australian Development Centre, Oracle Corporation, 300 Ann St, Brisbane,
PES Institute of Technology-BSC QUESTION BANK
PES Institute of Technology-BSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I -BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004. Instruction
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004 Name: Instruction There are two parts in this test. The first part contains 50 questions worth 80 points. The second part constitutes 20 points
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
El Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
