Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with C++ I/O Basics.

Similar presentations


Presentation on theme: "ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with C++ I/O Basics."— Presentation transcript:

1 ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with C++ I/O Basics

2 Lecture outline Announcements/reminders  Lab 1- Monday session: due 5:00 pm, 02/06  Lab1 – Wednesday Session: due 5:00 pm, 02/01  Lab attendance is required, students must sign your name on the attendance sheet  TA: Justin R Lacle (jlacle@umassd.edu)jlacle@umassd.edu  TA Office hour: 11:00 -12:00 pm, Monday and Wednesday Continue with C++ basics  Review basic I/O  Work through examples  Applying design cycle to ECE 264 11/29/2015 ECE 264: Lecture 4 2

3 Review Covered basic C++ program structure—very similar to C! Namespaces  Introduced std namespace—includes cin, cout, etc.  Could include entire namespace: using namespace std;  Or, just include members being used: using std::cout; Output ( cout ) streams  Can output multiple values in same statement cout << “x=“ << x << “, y=“ << y << endl; Input ( cin ) streams  Use cin to read values into variables E.g., cin >> x; Skips whitespace characters Input value must be compatible with type of x 11/29/2015 ECE 264: Lecture 4 3

4 4 Another C++ Program: Adding Integers Variable  Is a location in memory where a value can be stored  Common data types (fundamental, primitive or built-in) int – for integer numbers char – for characters double – for floating point numbers  Declare variables with data type and name before use int integer1; int integer2; int sum; 11/29/2015 ECE 264: Lecture 4

5 Basic program 2 // Adapted from figure 2.5 in text // Addition program that displays the sum of two integers. #include using std::cout; using std::cin; using std::endl; int main() { // variable declarations int number1; int number2; int sum; // prompt user for data and read into appropriate variables cout << "Enter first integer: "; cin >> number1; cout << "Enter second integer: "; cin >> number2; sum = number1 + number2; // add the numbers; store result in sum cout << "Sum is " << sum << endl; // display sum; end line return 0; // indicate that program ended successfully } // end function main 11/29/2015 ECE 264: Lecture 4 5

6 11/29/2015 ECE 264: Lecture 4 6 output 1,2 4.5 cm _ //Example 1: Determine the output #include using std::cout; using std::cin; using std::endl; #include using std::string; int main() { int i, j; double x; string units = " cm"; cin >> i >> j; cin >> x; cout << "output \n"; cout << i << ',' << j << endl << x << units << endl; return 0; } //Input stream is: 1 2 4.5

7 11/29/2015 ECE 264: Lecture 4 7 //Example 2: Determine the output #include using std::cout; using std::cin; using std::endl; int main() { int i, j; double x, y; cin >> i >> j >> x >> y; cout << "First output " << endl; cout << i << ',' << j << ',' << x << ',' << y << endl; cin >> x >> y >> i >> j; cout << "Second output" << endl; cout << i << ',' << j << ',' << x << ',' << y << endl; return 0; } //Input stream is: 1 2 3.4 5 2 3 3.4 7 First output 1,2,3.4,5 Second output 3,2,2,3 _

8 Example 2 (cont.) Issues with second output  Before highlighted lines i = 1, j = 2, x = 3.4, y = 5  Second cin appears to assign: x = 2, y = 3, i = 3.4, j = 7  But printing i, j, x, and y in order yields: 3,2,2,3 j never gets value 7—what happens?  i and j are integers  cin reads 3 into i and then stops at decimal point  cin can’t skip non-whitespace character  j doesn’t change 11/29/2015 ECE 264: Lecture 4 8

9 11/29/2015 ECE 264: Lecture 4 9 Characters and input >> discards leading whitespace get() method used to input whitespace characters  Optional second argument allows you to input multiple characters Default is 1 cin.get(buffer, 10) reads 10 characters from input Example: int x; char ch; cin >> x >> ch; cin >> x; cin.get(ch); xch xch Input stream: 45 c 39 b 45‘c’ 39‘\n ’

10 Characters and input (cont.) Reading an entire line: getline(char[], num)  Reads up to num characters on a line  Stops at newline character  Example: cin.getline(buffer, 10);  Must be careful if input is read using stream extraction operator ( >> ) as well as getline() 11/29/2015 ECE 264: Lecture 4 10

11 getline example int numR; char name[20]; cin >> numR; cin.getline(name, 20); If input is: 6 Room 12 what values do numR and name hold?  numR = 6  name = “\n”  why? cin >> numR stops at any whitespace character  \n cin.getline(name,20) starts with next char, ends at newline 11/29/2015 ECE 264: Lecture 4 11

12 Fixing getline example Skipping whitespace characters: ignore(num)  Discards num characters from input stream without storing them  To fix previous example: int numR; char name[20]; cin >> numR; cin.ignore(1); cin.getline(name, 20); 11/29/2015 ECE 264: Lecture 4 12

13 Formatted output Recall earlier example: int i, j; double x, y;... cin >> x >> y >> i >> j; cout << "Second output" << endl; cout << i << ',' << j << ',' << x << ',' << y << endl; x and y are of type double …... but second cout prints 2 & 3 for x & y What if we want to  Always print decimal point?  Always show certain number of places after point?  Force output to align within columns of a particular width?  Change the number base being printed? Use stream manipulators: objects affecting output stream  Already seen one of these: endl  To use others, must add #include May also use stream functions: functions associated with cin/cout 11/29/2015 ECE 264: Lecture 4 13

14 Integral Stream Base: dec, oct, hex and setbase Change a stream’s integer base by inserting manipulators  hex manipulator Sets the base to hexadecimal (base 16)  oct manipulator Sets the base to octal (base 8)  dec manipulator Resets the base to decimal  setbase parameterized stream manipulator Takes one integer argument: 10, 8 or 16 Sets the base to decimal, octal or hexadecimal Requires the inclusion of the header file  Stream base values are sticky Remain until explicitly changed to another base value 11/29/2015 ECE 264: Lecture 4 14

15 Example 1: bases // Fig. 15.8: Fig15_08.cpp // Using stream manipulators hex, oct, dec and setbase. #include using std::cin; using std::cout; using std::dec; using std::endl; using std::hex; using std::oct; #include using std::setbase; 11/29/2015 ECE 264: Lecture 4 15

16 Example 1: bases (cont.) int main() { int number; cout << "Enter a decimal number: "; cin >> number; // input number // use hex stream manipulator to show hexadecimal number cout << number << " in hexadecimal is: " << hex << number << endl; // use oct stream manipulator to show octal number cout << dec << number << " in octal is: " << oct << number << endl; // use setbase stream manipulator to show decimal number cout << setbase( 10 ) << number << " in decimal is: " << number << endl; return 0; } // end main 11/29/2015 ECE 264: Lecture 4 16

17 Example 2: bases //Example: Determine the output #include using std::cout; using std::endl; using std::hex; using std::oct; int main() { int i; for (i = 0; i <= 32; i += 8) { cout << "Decimal: " << i << endl; cout << oct << "Octal: " << i << endl; if ((i % 16) == 0) cout << hex << "Hexadecimal: " << i << endl; } return 0; } 11/29/2015 ECE 264: Lecture 4 17

18 Example 2: bases (cont.) Output: Decimal: 0 Octal: 0 Hexadecimal: 0 Decimal: 8 Octal: 10 Decimal: 20 Octal: 20 Hexadecimal: 10 Decimal: 18 Octal: 30 Decimal: 40 Octal: 40 Hexadecimal: 20 11/29/2015 ECE 264: Lecture 4 18 What’s the problem?  Base settings are sticky How would we fix it?  Insert “ dec ” into the cout statement for the decimal values

19 Questions: What is the difference between endl and \n Std:: endl  Insert a new line + flush the stream buffer \n  Insert a new line In most cases  No much difference  Notes: If you are interested in faster screen output, using \n is faster because flushing the output takes a little time. 11/29/2015 ECE 264: Lecture 4 19

20 Applying life cycle to ECE 264 How does the software cycle apply to ECE 264?  Project: You’ll be working in teams and taking a project through these stages  Labs: Don’t just sit down and start coding! Read the lab handout  will give you, in essence  Requirements: what should your program be able to do?  Hints about design / programming:  How might you organize your program?  How might you implement that design?  Basic system tests: given particular inputs to your “system” (program), what should the output look like? Identify each of those parts as you read the handout Based on what you read, formulate a high-level design  Given requirements, how are we going to organize the code?  What function(s) do we need?  What class(es) might we use?  We will often provide hints to point you in the right direction  Later labs may ask you to use UML to formalize parts of your design Once high-level design is done and you have a sense of overall program, then start writing code! 11/29/2015 ECE 264: Lecture 4 20

21 Final notes Next time More on formatted output Acknowledgements: this lecture borrows heavily from lecture slides provided with the following texts: Deitel & Deitel, C++ How to Program, 8 th ed. Etter & Ingber, Engineering Problem Solving with C++, 2 nd ed. 11/29/2015 ECE 264: Lecture 4 21


Download ppt "ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with C++ I/O Basics."

Similar presentations


Ads by Google