Integrating the C++ Standard Template Library Into the Undergraduate Computer Science Curriculum
|
|
|
- Wesley Chandler
- 10 years ago
- Views:
Transcription
1 Integrating the C++ Standard Template Library Into the Undergraduate Computer Science Curriculum James P. Kelsh Roger Y. Lee Department of Computer Science Central Michigan University Mt. Pleasant, MI Introduction When the computer science community compared Pascal and C, the C Standard Library was a reason sometimes offered for choosing C. After all (it was argued), how can you do real programming in a language whose support for character strings is as limited as Pascal s? The C++ Standard Template Library, now available with most compilers, gives us one more chance to ask how many of our habits should yield to new techniques. And many of those who seemed proud of the C Standard Library seem slow to adopt the C++ Standard Library, occasionally questioning the efficiency of a larger language and boilerplate code. But according to the goals of the C++ Standard Library, the facilities provided should be efficient enough to provide genuine alternatives to hand-coded functions, classes, and templates. [Stroustrup, p. 430] The present authors contend that if we intend to teach problem-solving skills rather than reinventing the wheel, those of us teaching C++ should make the Standard Template Library an early part of our curriculum. This paper describes the authors experience using the Standard Template Library in CS1 and CS2 in a department that exhibits a wide range of opinions on STL. The Standard Template Library consists of algorithm implementations as well as container classes. This paper concentrates on the most generally useful container classes, specifically string, vector, list, and map. String Most instructors are happy with a built-in string type, but some feel unsure about introducing it without discussing all the details: constructors, substring search/extract functions, etc. Indeed, the STL string has a rich variety of functions for finding or replacing a substring, but we introduce string as just one more data type: Programs can read it, write it, assign it, and pass it as a parameter. Students quickly become unhappy if the language provides no way to store a name, but are happy with these four operations (read, write, assign, pass). Some instructors feel compelled to teach all the constructors and variations, but we ask: Do you need to discuss excess-64 exponents in order to teach float or double? We do not always change their minds, but we continue offering examples of simple programs that illustrate the fundamentals of string:
2 // file: string.cpp #include <string> using namespace std; #include <iostream> int main() string family_name, given_name; cout << "Name (given name, then family name): "; cin >> given_name >> family_name; cout << family_name << ", " << given_name << endl; return 0; The sample program above gives enough information for students to use string to add interest to their early programs. It shows the proper include (note that the STL tends to avoid.h in filenames) and the using namespace std; statement to make the names available. Running the program demonstrates that input to a string ends at whitespace. Students in CS1 need not discuss all the techniques for searching or reversing strings to write more satisfying programs. We recommend treating it as the same sort of string type that we might be familiar with from some other language. Anyone who has programmed with string variables in Basic or dbase has a reasonable intuition for what can be done with a string datatype. If string manipulation is the subject being taught, or if you are tempted to assume something about the underlying representation, then consulting a good reference is advisable. Some may advise against this simple approach: Building on the example presented above, one professor wanted to read the given name and family name into one string. Deciding that a string was an array of char, our friend wrote: string str; char ch; int n = 0; do cin.get(ch); if (ch!= \n ) str[n++] = ch; while (ch!= \n ) Unfortunately, an assignment to str[0] is (generally) not allowed if the string is empty: string is a dynamic container, so str[0] doesn t exist until a value has been assigned through one of the defined string operations. Extending a string is easy to with: str = str + ch;
3 (Yes, there are other ways to reserve space before reading values, but our point is simply: A naive approach will probably work if you don t assume that you know the implementation.) Before using STL string, the authors used their own string class. Certainly there is no shortage of string classes; one seems to come with every C++ text. But ours had one distinction: It was a minimal string class, rather than one designed to impress users with all the details it offered. By being minimal, it contained few things that could contradict the STL version. With only two modifications (adding an indexing operator and changing the read function to stop at white space) and a typedef, it remains useable as a substitute in cases where STL is not available. If a substitute class is used, we recommend keeping its syntax consistent with the STL string, to ease the transition to the standard library. Vector This is surprisingly difficult for some instructors to accept, even though the only place where programs are significantly affected by the difference between C-style arrays and vectors is the act of filling the array. // C-style array: // Keep counting data_type ray[max_size]; int count = 0; while (!cin.eof() ) cin >> ray[count]; if (!cin.fail() ) ++count; // STL vector // Just push_back vector<data_type> ray while (!cin.eof() ) data_type temp; cin >> temp; if (!cin.fail() ) ray.push_back (temp); Simplifications in traversing and processing an array come from the vector s size() function: // C-style array uses // separate var: count for (n=0; n < count; ++n) process (ray[n]); // STL vector remembers // its size for (n=0; n < ray.size(); ++n) process (ray[n]); But what of situations where STL vectors are not available? Or cases when pedagogical reasons suggest teaching classical programming? In these cases, we recommend borrowing from the vector approach to create a new datatype with syntax similar to that of the STL vector. A sample storing ints would be:
4 class int_ray public: int_ray (int size); ~int_ray(); void push_back(int x); int size() const; int& operator[](int n); private: int max; int* ray; int current_size; ; int_ray :: int_ray (int size) ray = new int [size]; max = size; current_size = 0; int_ray :: ~int_ray() delete[] ray; int& int_ray::operator[](int n) if ( (n >= 0) && (n < max) ) return ray[n]; else // What here? void int_ray::push_back(int x) if (current_size < max) ray[current_size] = x; ++current_size; else // What here? int int_ray::size () const return current_size;
5 This small amount of additional typing will let students use conventional (C-style arrays) with any compiler, yet learn the syntax of STL vectors. One hybrid feature, standard in neither C-style arrays nor STL vectors, is the declaration: int_ray ray(10); This declares an (empty) int_ray with a maximum size of 10. After that declaration, students can program using the syntax of the STL vector. And we can hope it will acquaint them with some of the concerns they should consider in any use of arrays (indicated above by // What here? ). One warning is necessary: Some versions of STL, as processed by some compilers require that container classes must be comparable (with < and == ). STL defines these comparisons on the containers by obtaining a lexicographical ordering based on the objects contained. This requires the programmer who may want to store a student class in a vector to define the < and == operators for student, even if the value returned is meaningless. The simplest way to do this is to define the operators as in-line member functions in the header (.h) file: List // // // // // // // // // // // // // // bool operator< (const student& st) return true; ; bool operator== (const student& st) return true; ; // // // // // // // // // // // // // // This sparks considerable controversy. Some of our colleagues are convinced that CS2 should be a semester of Pointers, pointers, and pointers. The thought of addressing dynamic structures without emphasizing the intricacies of new and delete seems revolutionary to them. Others see pointer manipulation as an assembly language concept and want students to use data structures without being intimidated by their earthy details. The authors realize that we serve two masters (tool designers and tool users) and hope that our community will integrate these ideas in developing a consensus to present simple first or complex first. Or maybe concrete first or abstract first. Or maybe difficult first or. The STL list is declared: #include <list> typedef list<int> int_list; This creates an (empty) list of ints named int_list. Our preference is to use a typedef to create a new name. Then this name, without extra reference to STL or < and >, seems to make algorithms clearer without calling attention to the implementation of the data structures. Acceptance of the STL list is mixed in our department. Accordingly, our present compromise is to introduce a relatively simple singly-linked list class whose interface is consistent with the STL list. After devoting some time to using as well as studying the implementation of the singly-linked
6 list, we show that it is actually a special case of a list class which can be singly-linked, doublylinked (with separate head and tail nodes) or doubly-linked and circular, by conditional compilation pragmas. In general, the syntax is consistent with STL, to facilitate an easy transition to the STL list. typedef int data_type; // customize for your type struct node data_type data; node* next; ; class list public: node* begin() const; node* end() const; int size() const; bool empty() const; void insert(node* p, const data_type& d); void erase(node*& p); list(); list (const list& l); ~list(); list& operator= (const list& l); private: void free_list(); node* head; #define tail NULL ; Users of this list class will write code such as: node* p; for (p = lst.begin(); p!= lst.end(); p = p->next) cout << p->data; Notice that begin() returns a node*. In the STL list, my_list_type :: begin() returns an object of type my_list_type :: iterator. For simplicity, we have not defined a nested class, using simply node*. This is dangerous programming, since it allows read/write access to the list data, even if the list is passed as a const parameter. We live with it merely because we need a simple class for an introduction to lists. The STL list handles this danger by defining a const_interator type, which allows read access, but not write access. While our syntax is generally consistent with STL syntax, it is much less sophisticated.
7 We considered (and decided against) defining a pre- or post-increment operator for type node*. The operators on iterators defined by list simplify STL programming. Code to display the contents of an STL list named lst would look like: my_list_type :: iterator p; for (p = lst.begin(); p!= lst.end(); ++p) cout << p->data; An increment operator would have made our syntax more similar to that of the STL list, but we still favor something to remind CS2 students that there is something more than an array here. We also emphasize to the students that p!= lst.end() is different from p < lst.end(), a condition that might be used with a vector. In a direct comparison of pointers which may be widely scattered in memory, < is unreliable. Map Although Stroustrup, in proper object-oriented fashion, defines this solely in terms of how it functions (O(log n) access), we may be excused for thinking of it as a balanced binary search tree. Acceptance (in CS2) has been slow in our department, although some who reject it in CS2 are introducing it in an upper-division Algorithms course. Map may provide the clearest example of the differing goals: Teaching tools to solve problems vs. teaching complex programming (and perhaps screening out weaker students). Map programming is deceptively simple. To declare a map: #include <map> using namespace std; #include "student.h" typedef map<string, student, less<string> > map_type; map_type student_map; This declares an object student_map, of type map_type. The new object will store objects of type student in an associative container, with the capabilities of a binary search tree. The ordering key used is of type string in this example, and the order is dictated by the STL template predicate less. (We could provide our own function for ordering the key objects.) Inserting an object, say new_student, into the map with the key value new_key (a string), is as simple as: student_map[new_key] = new_student;
8 Note that no explicit action to allocate storage dynamically is apparent; All allocation and copying is done by the map. Although the similarity to array syntax makes some people think of O(1) access, this is actually an O(log n) operation. Similarly, finding an entry, given a key value (as in the statement cout << student_map[ Doe, John ]); STL provides iterators (and const_iterators) to traverse the map. To display the entire contents of a map, the code would be: void show_map (const map_type& st_map) map_type :: const_iterator i; for (i = st_map.begin(); i!= st_map.end(); ++i) cout << map[ << i->first << ]= << i->second << endl; cout << endl; When looking for an STL model, we were struck by the absence of an STL tree container. While the map provides binary search tree capability, nothing seems to provide a simple binary tree such as an expression tree, or the binary tree we might use to implement a general tree. Thus we feel compelled, even in CS2, to teach a simple binary tree which can be specialized into a binary search tree with or without balance condition. In our advanced algorithms course, we work with binary trees first and then introduce map. We believe that anyone who teaches balanced binary search trees should discuss map. Conclusion The Standard Template Library container classes string, vector, and list provide powerful tools for real world programming and can be valuable for teaching algorithms and problem-solving without becoming mired in details. We recommend that even those who prefer their own tools design them with syntax consistent with STL. Some version of the STL is currently available with most C++ compilers, although levels of compliance differ. In learning STL, we find an excellent explanation of the specification in [Stroustrup] and turn to [Nelson] for implementation details. References Nelson, Mark. C++ Programmer s Guide to the Standard Template Library. IDG, Chicago Stroustrup, Bjarne. The C++ Programming Language, Third Edition. Addison-Wesley, Menlo Park
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
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
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
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.,
Quiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
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.
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
Cours de C++ Utilisations des conteneurs
Cours de C++ Utilisations des conteneurs Cécile Braunstein [email protected] 1 / 18 Introduction Containers - Why? Help to solve messy problems Provide useful function and data structure Consistency
Simple C++ Programs. Engineering Problem Solving with C++, Etter/Ingber. Dev-C++ Dev-C++ Windows Friendly Exit. The C++ Programming Language
Simple C++ Programs Engineering Problem Solving with C++, Etter/Ingber Chapter 2 Simple C++ Programs Program Structure Constants and Variables C++ Operators Standard Input and Output Basic Functions from
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
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation
Comp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
Why you shouldn't use set (and what you should use instead) Matt Austern
Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't
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
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
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
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
Ch 7-1. Object-Oriented Programming and Classes
2014-1 Ch 7-1. Object-Oriented Programming and Classes May 10, 2014 Advanced Networking Technology Lab. (YU-ANTL) Dept. of Information & Comm. Eng, Graduate School, Yeungnam University, KOREA (Tel : +82-53-810-2497;
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,
Object Oriented Software Design II
Object Oriented Software Design II C++ intro Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 26, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February 26,
LINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
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
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
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
Variable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
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)
Lewis, Loftus, and Cocking. Java Software Solutions for AP Computer Science 3rd Edition. Boston, Mass. Addison-Wesley, 2011.
Dear Parent/Guardian: Please find a summary of instructional goals and activities for the class indicated below, in which your student is enrolled. Although what is set forth is subject to change, the
Sequential Program Execution
Sequential Program Execution Quick Start Compile step once always g++ -o Realtor1 Realtor1.cpp mkdir labs cd labs Execute step mkdir 1 Realtor1 cd 1 cp../0/realtor.cpp Realtor1.cpp Submit step cp /samples/csc/155/labs/1/*.
Basics of I/O Streams and File I/O
Basics of This is like a cheat sheet for file I/O in C++. It summarizes the steps you must take to do basic I/O to and from files, with only a tiny bit of explanation. It is not a replacement for reading
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
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
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
Coding conventions and C++-style
Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Computer Programming I
Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,
Linked Lists, Stacks, Queues, Deques. It s time for a chainge!
Linked Lists, Stacks, Queues, Deques It s time for a chainge! Learning Goals After this unit, you should be able to... Differentiate an abstraction from an implementation. Define and give examples of problems
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
Fondamenti di C++ - Cay Horstmann 1
Fondamenti di C++ - Cay Horstmann 1 Review Exercises R10.1 Line 2: Can't assign int to int* Line 4: Can't assign Employee* to Employee Line 6: Can't apply -> to object Line 7: Can't delete object Line
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
C++ Language Tutorial
cplusplus.com C++ Language Tutorial Written by: Juan Soulié Last revision: June, 2007 Available online at: http://www.cplusplus.com/doc/tutorial/ The online version is constantly revised and may contain
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
Lecture Notes on Binary Search Trees
Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 17 October 23, 2014 1 Introduction In this lecture, we will continue considering associative
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
C++ Programming: From Problem Analysis to Program Design, Fifth Edition. Chapter 3: Input/Output
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 3: Input/Output Objectives In this chapter, you will: Learn what a stream is and examine input and output streams Explore
The Payroll Program. Payroll
The Program 1 The following example is a simple payroll program that illustrates most of the core elements of the C++ language covered in sections 3 through 6 of the course notes. During the term, a formal
The University of Alabama in Huntsville Electrical and Computer Engineering CPE 112 01 Test #4 November 20, 2002. True or False (2 points each)
True or False (2 points each) The University of Alabama in Huntsville Electrical and Computer Engineering CPE 112 01 Test #4 November 20, 2002 1. Using global variables is better style than using local
Output: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
CS193D Handout 06 Winter 2004 January 26, 2004 Copy Constructor and operator=
CS193D Handout 06 Winter 2004 January 26, 2004 Copy Constructor and operator= We already know that the compiler will supply a default (zero-argument) constructor if the programmer does not specify one.
02-201: Programming for Scientists
1. Course Information 1.1 Course description 02-201: Programming for Scientists Carl Kingsford Fall 2015 Provides a practical introduction to programming for students with little or no prior programming
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
Appendix M: Introduction to Microsoft Visual C++ 2010 Express Edition
Appendix M: Introduction to Microsoft Visual C++ 2010 Express Edition This book may be ordered from Addison-Wesley in a value pack that includes Microsoft Visual C++ 2010 Express Edition. Visual C++ 2010
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
C++ Outline. cout << "Enter two integers: "; int x, y; cin >> x >> y; cout << "The sum is: " << x + y << \n ;
C++ Outline Notes taken from: - Drake, Caleb. EECS 370 Course Notes, University of Illinois Chicago, Spring 97. Chapters 9, 10, 11, 13.1 & 13.2 - Horstman, Cay S. Mastering Object-Oriented Design in C++.
Short Notes on Dynamic Memory Allocation, Pointer and Data Structure
Short Notes on Dynamic Memory Allocation, Pointer and Data Structure 1 Dynamic Memory Allocation in C/C++ Motivation /* a[100] vs. *b or *c */ Func(int array_size) double k, a[100], *b, *c; b = (double
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
CISC 181 Project 3 Designing Classes for Bank Accounts
CISC 181 Project 3 Designing Classes for Bank Accounts Code Due: On or before 12 Midnight, Monday, Dec 8; hardcopy due at beginning of lecture, Tues, Dec 9 What You Need to Know This project is based on
Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009
Software Engineering Concepts: Testing Simple Class Example continued Pointers & Dynamic Allocation CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Glenn G. Chappell Department
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
Binary Heap Algorithms
CS Data Structures and Algorithms Lecture Slides Wednesday, April 5, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] 2005 2009 Glenn G. Chappell
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]
Animating Programs and Students in the Laboratory
Animating Programs and Students in the Laboratory James F. Korsh Paul S. LaFollette, Jr. Department of Computer and Information Sciences Temple University Philadelphia, PA 19122 Raghvinder Sangwan Department
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
The little endl that couldn t
This is a pre-publication draft of the column I wrote for the November- December 1995 issue of the C++ Report. Pre-publication means this is what I sent to the Report, but it may not be exactly the same
1. Relational database accesses data in a sequential form. (Figures 7.1, 7.2)
Chapter 7 Data Structures for Computer Graphics (This chapter was written for programmers - option in lecture course) Any computer model of an Object must comprise three different types of entities: 1.
Chapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
Unordered Linked Lists
Unordered Linked Lists Derive class unorderedlinkedlist from the abstract class linkedlisttype Implement the operations search, insertfirst, insertlast, deletenode See code on page 292 Defines an unordered
Course notes Standard C++ programming
Department of Cybernetics The University of Reading SE2B2 Further Computer Systems Course notes Standard C++ programming by Dr Virginie F. Ruiz November, 03 CREATING AND USING A COPY CONSTRUCTOR... 27
A deeper look at Inline functions
A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the
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
MPLAB TM C30 Managed PSV Pointers. Beta support included with MPLAB C30 V3.00
MPLAB TM C30 Managed PSV Pointers Beta support included with MPLAB C30 V3.00 Contents 1 Overview 2 1.1 Why Beta?.............................. 2 1.2 Other Sources of Reference..................... 2 2
Module 816. File Management in C. M. Campbell 1993 Deakin University
M. Campbell 1993 Deakin University Aim Learning objectives Content After working through this module you should be able to create C programs that create an use both text and binary files. After working
7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
Binary storage of graphs and related data
EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
! " # $ %& %' ( ) ) *%%+, -..*/ *%%+ - 0 ) 1 2 1
!" #$%&%'())*%%+,-..*/*%%+- 0 )12 1 *!" 34 5 6 * #& ) 7 8 5)# 97&)8 5)# 9 : & ; < 5 11 8 1 5)=19 7 19 : 0 5)=1 ) & & >) ) >) 1? 5)= 19 7 19 : # )! #"&@)1 # )? 1 1#& 5)=19719:# 1 5)=9 7 9 : 11 0 #) 5 A
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Arrays. number: Motivation. Prof. Stewart Weiss. Software Design Lecture Notes Arrays
Motivation Suppose that we want a program that can read in a list of numbers and sort that list, or nd the largest value in that list. To be concrete about it, suppose we have 15 numbers to read in from
Lecture 12 Doubly Linked Lists (with Recursion)
Lecture 12 Doubly Linked Lists (with Recursion) In this lecture Introduction to Doubly linked lists What is recursion? Designing a node of a DLL Recursion and Linked Lists o Finding a node in a LL (recursively)
Abstract Data Types. Chapter 2
Chapter 2 Abstract Data Types The second idea at the core of computer science, along with algorithms, is data. In a modern computer, data consists fundamentally of binary bits, but meaningful data is organized
Software Engineering Techniques
Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary
For the next three questions, consider the class declaration: Member function implementations put inline to save space.
Instructions: This homework assignment focuses on basic facts regarding classes in C++. Submit your answers via the Curator System as OQ4. For the next three questions, consider the class declaration:
Basics of C++ and object orientation in OpenFOAM
Basics of C++ and object orientation in OpenFOAM To begin with: The aim of this part of the course is not to teach all of C++, but to give a short introduction that is useful when trying to understand
5 CLASSES CHAPTER. 5.1 Object-Oriented and Procedural Programming. 5.2 Classes and Objects 5.3 Sample Application: A Clock Class
CHAPTER 5 CLASSES class head class struct identifier base spec union class name 5.1 Object-Oriented and Procedural Programming 5.2 Classes and Objects 5.3 Sample Application: A Clock Class 5.4 Sample Application:
While Loop. 6. Iteration
While Loop 1 Loop - a control structure that causes a set of statements to be executed repeatedly, (reiterated). While statement - most versatile type of loop in C++ false while boolean expression true
Object-Oriented Desin and Prorammin C++ Container Classes Outline Introduction Container Class Objectives Class Library Architecture Parameterized Types Preprocessor Macros enclass void Pointer Method
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
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Lecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c
Lecture 3 Data structures arrays structs C strings: array of chars Arrays as parameters to functions Multiple subscripted arrays Structs as parameters to functions Default arguments Inline functions Redirection
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
BSc (Hons) Business Information Systems, BSc (Hons) Computer Science with Network Security. & BSc. (Hons.) Software Engineering
BSc (Hons) Business Information Systems, BSc (Hons) Computer Science with Network Security & BSc. (Hons.) Software Engineering Cohort: BIS/05/FT BCNS/05/FT BSE/05/FT Examinations for 2005-2006 / Semester
Data Structures using OOP C++ Lecture 1
References: 1. E Balagurusamy, Object Oriented Programming with C++, 4 th edition, McGraw-Hill 2008. 2. Robert Lafore, Object-Oriented Programming in C++, 4 th edition, 2002, SAMS publishing. 3. Robert
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
