Enumeration used to make a program more readable

Slides:



Advertisements
Similar presentations
1 C++ Syntax and Semantics The Development Process.
Advertisements

True or false A variable of type char can hold the value 301. ( F )
Types and Variables. Computer Programming 2 C++ in one page!
1 Chapter 11 Structured Types, Data Abstraction and Classes Dale/Weems/Headington.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Introduction.
© 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5/e Starting Out with C++: Early Objects 5 th Edition Chapter 2 Introduction.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Introduction.
1 Lecture 29 Chapter 11 Structured Types, Data Abstraction and Classes Dale/Weems/Headington.
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
A function (procedure) code to perform a task (carry out an algorithm) Return_type Func(parameters) ---- Func (arguments) --- Return value.
Basic Elements of C++ Chapter 2.
More Storage Structures A Data Type Defined by You Characteristics of a variable of a specific ‘data type’ has specific values or range of values that.
CSC 125 Introduction to C++ Programming Chapter 2 Introduction to C++
COMPUTER PROGRAMMING. Data Types “Hello world” program Does it do a useful work? Writing several lines of code. Compiling the program. Executing the program.
Input & Output: Console
Copyright 2006 Addison-Wesley Brief Version of Starting Out with C++ Chapter 2 Introduction to C++
Program A computer program (also software, or just a program) is a sequence of instructions written in a sequence to perform a specified task with a computer.
CIS-165 C++ Programming I CIS-165 C++ Programming I Bergen Community College Prof. Faisal Aljamal.
Data TypestMyn1 Data Types The type of a variable is not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which.
Copyright 2005, The Ohio State University 1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation.
 2008 Pearson Education, Inc. All rights reserved Pointers and Pointer-Based Strings.
CHAPTER 2 C++ SYNTAX & SEMANTICS #include using namespace std; int main() { cout
Computing and Statistical Data Analysis Lecture 2 Glen Cowan RHUL Physics Computing and Statistical Data Analysis Variables, types: int, float, double,
CSC 143A 1 CSC 143 Introduction to C++ [Appendix A]
More About Data Types & Functions. General Program Structure #include statements for I/O, etc. #include's for class headers – function prototype statements.
1 Chapter 12 Arrays. 2 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating.
1 CSC 1111 Introduction to Computing using C++ C++ Basics (Part 1)
CPS120 Introduction to Computer Science Exam Review Lecture 18.
Array and Pointers An Introduction Unit Unit Introduction This unit covers the usage of pointers and arrays in C++
1 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating float double long.
1 Chapter 12 Classes and Abstraction. 2 Chapter 12 Topics Meaning of an Abstract Data Type Declaring and Using a class Data Type Using Separate Specification.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 2-1 Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley.
Bill Tucker Austin Community College COSC 1315
Chapter 12 Classes and Abstraction
C++ Lesson 1.
Chapter 1.2 Introduction to C++ Programming
LESSON 06.
Chapter Topics The Basics of a C++ Program Data Types
Chapter 1.2 Introduction to C++ Programming
Chapter 1.2 Introduction to C++ Programming
Basics (Variables, Assignments, I/O)
Chapter 1.2 Introduction to C++ Programming
Chapter 2: Introduction to C++
CO1401 Program Design and Implementation
C++ Templates.
Computing and Statistical Data Analysis Lecture 2
Chapter 2 Topics Programs Composed of Several Functions
Structured Data (Lecture 07)
Basic Elements of C++.
The Selection Structure
CSC113: Computer Programming (Theory = 03, Lab = 01)
Student Book An Introduction
Basics (Variables, Assignments, I/O)
8 Pointers.
Chapter 2: Introduction to C++
DATA HANDLING.
Basic Elements of C++ Chapter 2.
Basics (Variables, Assignments, I/O)
Character Set The character set of C represents alphabet, digit or any symbol used to represent information. Types Character Set Uppercase Alphabets A,
Introduction to Abstract Data Types
2.1 Parts of a C++ Program.
Pointers, Dynamic Data, and Reference Types
More About Data Types & Functions
Built-In (a.k.a. Native) Types in C++
Pointers and Pointer-Based Strings
Variables, Identifiers, Assignments, Input/Output
Chapter 2: Introduction to C++.
Chapter 8 Functions.
C Language B. DHIVYA 17PCA140 II MCA.
Structures Structured Data types Data abstraction structs ---
Presentation transcript:

Enumeration used to make a program more readable associates a set of programmer defined values with the integer values 0, 1, 2, - - Example enum Suit {CLUBS, SPADES, HEARTS, DIAMONDS}; Suit mySuit = HEARTS; if (mySuit == SPADES) --- switch (mySuit) { case CLUBS: ---- case SPADES: ---

typedef statement used to declare a new name (synonym) for an already existing type const int SIZE = 100; typedef int intArrayType[SIZE]; intArrayType numberList; usually given global (file) scope used to make a program easier to modify

a function (procedure) ---- Func (arguments) --- Return value Return_type Func(parameters) code to perform a task (carry out an algorithm)

Parameters C parameters are either values or pointers value parameters reference parameters constant reference parameters array parameters Java parameters are either primitive types - parameter is a copy of the argument (argument cannot be changed) objects - parameter is an alias for the argument (argument can be changed)

C and C++ Parameters C++ parameters are either value - (type param_name) parameter is a copy of the argument, thus argument cannot be modified reference - (type & param_name) parameter is an alias for the argument, thus argument is modified if parameter is modified constant reference - (const type & param_name) parameter is an alias for the argument, but compiler disallows assignment to parameter

C and C++ parameter passing void myFunction (int val, int & ref, const int & constref) { --- } v 36 myFunction (v, r, cr); r 25 cr 6 36 val ref activation record (memory space) created when myFunction is called constref

Java parameter passing public void myMethod (int number, SomeClass myObj) { --- } obj.myMethod (intArg, objArg); 36 intArg objArg number myObj 36 activation record (memory space) created when myMethod is called

Decomposition Example main Instruct GetEmployee Info GrossWages Compute NetPay Print EmpInfo

/* Program to compute wages for several employees. Written at ___________ by _________________- Input: Id-number, number of dependents, hours worked, and hourly rate for each of several employees Output: Id-number, hours worked, gross pay, taxes withheld and net pay ____________________________________________________*/ #include <iostream> #include <iomanip> using namespace std; void Instruct ( ); void GetEmployeeInfo (int & empNumber, int & dependents, double & hours, double & rate, bool & done); double GrossWages (int dependents, double hours, double rate); void ComputeNetPay (double grossPay, int dependents, double & tax, double & netPay); void PrintEmpInfo (int idNumber, double hours, double grossPay, double taxes, double netPay); int main ( ) { ----- }

int main ( ) { int idNumber, // employee's id-number numDependents; // number of dependents double hoursWorked, // hours worked this pay period hourlyRate, // dollars per hour grossPay, // pay before taxes taxWithheld, // amount of tax withheld netPay; // grossPay - tasWithheld bool endOfData; // signals end of data Instruct ( ); for ( ; ; ) GetEmployeeInfo (idNumber, numDependents, hoursWorked, hourlyRate, endOfData); if (endOfData) break; // MUST BE CHANGED!! grossPay = GrossWages (numDependents, hoursWorked, hourlyRate); ComputeNetPay (grossPay, numDependents, taxWithheld, netPay); PrintEmpInfo (idNumber, hoursWorked, grossPay, taxWithheld, netPay); } return 0;

int main ( ) { int idNumber, // employee's id-number numDependents; // number of dependents double hoursWorked, // hours worked this pay period hourlyRate, // dollars per hour grossPay, // pay before taxes taxWithheld, // amount of tax withheld netPay; // grossPay - tasWithheld // bool endOfData; // signals end of data Instruct ( ); while (GetEmployeeInfo (idNumber, numDependents, hoursWorked, hourlyRate)) // if (endOfData) break; // TO BE CHANGED!! grossPay = GrossWages (numDependents, hoursWorked, hourlyRate); ComputeNetPay (grossPay, numDependents, taxWithheld, netPay); PrintEmpInfo (idNumber, hoursWorked, grossPay, taxWithheld, netPay) } return 0;

Change Needed? void GetEmployeeInfo (int & empNumber, int & dependents, double & hours, double & rate, bool & done); bool GetEmployeeInfo (int & empNumber, int & dependents, double & hours, double & rate);

/* bool GetEmployeeInfo (int & empNumber, int & dependents, double & hours, double & rate) Purpose: read information for one employee Precondition(s): none Postcondition(s): The four parameters have been assigned values Returns: false if end of data reached; true otherwise --------------------------------------------------------------------------------------------*/ bool GetEmployeeInfo (int & empNumber, int & dependents, { cout << "\nEnter employee number (0 to stop): "; cin >> empNumber; if (empNumber == 0) return false; cout << "Enter # of dependents, hours worked, and hourly rate for " << empNumber << ": "; cin >> dependents >> hours >> rate; return true; }

/* double GrossWages (int dependents, double hours, double rate) Purpose: compute gross wages as determined by number of hours employee worked plus a dependency allowance for each dependent. Precondition(s): dependents, hours and rate >= 0 Postcondition(s): none Returns: Gross wages --------------------------------------------------------------------------------------------*/ double GrossWages (int dependents, double hours, double rate) { const double DEP_ALLOWANCE = 100; // bonus per dependent double wages; // wages earned if (hours <= 40) // no overtime wages = hours * rate; else // overtime wages = 40 * rate + 1.5 * rate * (hours - 40); return wages + DEP_ALLOWANCE * dependents; }

/* void Instruct ( ) Purpose: Display instructions to the user Precondition(s): none Postcondition(s): instructions have been displayed on the screen Returns: nothing **********************************************************************************/ /* void ComputeNetPay(double grossPay, int dependents, double & tax, double & netPay) Purpose: compute taxes withheld and net pay Precondition(s): grossPay and dependents are valid Postcondition(s): tax and netPay have been assigned computed values ************************************************************************************/ /* void PrintEmpInfo( int idNumber, double hours, double grossPay double taxes, double netPay) Purpose: display payroll information regarding one employee Precondition(s): idNumber, hours, grossPay, taxes and netPay are valid Postcondition(s): payroll information has been displayed on the screen *************************************************************************************/

Programming & Problem Solving Real world results Real world problem PROBLEM DOMAIN PROGRAM DOMAIN Representation of results Representation of real world problem Processing algorithms

Variables (data objects) Components of a data object name (programmer defined) address (memory location) type value (determined by interpretation of the sequence of bits stored in memory) type name [= value]; 10011100

Types predefined (built-in) vs programmer defined simple (fundamental) vs structured type of a data object determines number of bytes used to store the value interpretation of the bit pattern stored in those bytes possible operations data abstraction refers to the separation of the use of a data type from the implementation details

C++ Types C++ Standard Library classes Fundamental Types valarray vector deque list set map multiset multimap stack queue string bitset istream ostream iostream ifstream ofstream fstream Structured Types void Arithmetic pointers array Integral Floating point bool complex (reals) struct union float priority_queue Characters Enumerations Integers double long double char int unsigned char short int signed char long int unsigned unsigned short unsigned long

C++ arrays groups data items of same type under one name double Numbers[4]; int List = {45, 63, 22}; individual items accessed by indexing Numbers[2] = 85.3; first array element is at index position 0 C++ arrays are not objects no length data member number of elements is determined either at compile-time (both examples above) at run-time (coming later)

C and C++ array implementation array name is a variable whose value is the base address of the array, i.e. a pointer variable accessing an individual element involves calculating its address base_address + index * element_size b b+1 b+2 b+3 b+4 - - - - - - - - - - b+8 - - - - - - - - - - b+12 List[0] List[1] List[2] List 45 63 22

Alternative Syntax Given: int List = {45, 63, 22}; first element can be accessed by List[0]; *List; // * is the dereferencing operator second element can be accessed by List[1]; *(List + 1); what is the value of List? always use the indexing notation

C++ array parameters void func (double A[ ], int N) { --- } 4 4 const arguments provided when func is called activation record (memory space) created when func is called A N 4 Numbers 3.2 2.1 5.9 7.0 N 4

C++ structs struct - group of data items of different types struct person { string Name; int Age; }; person is a type grouping together 2 data members person OneStudent; //represents 1 person person Class[25]; //represents 25 persons dot operator (.) used to access members Class[i].Age struct to struct assignments are legal Class[i] = Class[i+1];

Creating New C++ Types enumeration typedef struct class allows defining your own set of values for a scalar type typedef allows for defining a synonym or alias for an existing type struct allows a variable to have multiple values of different types class allows encapsulating data members and operations

C++ strings early versions of C++ used “C-style strings” array of char with a special character (null character) marking the end <string.h> or <cstring> have functions to manipulate C-style strings C++ standard library provides the class string #include <string> use C++ string class, not C-style strings