SlideShare a Scribd company logo
Chapter 1
C++ Basics
Copyright © 2008 Pearson Addison-Wesley.
All rights reserved
1-2
Learning Objectives
• Introduction to C++
– Origins, Object-Oriented Programming, Terms
• Variables, Expressions, and
Assignment Statements
• Console Input/Output
• Program Style
• Libraries and Namespaces
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-3
Introduction to C++
• C++ Origins
– Low-level languages
• Machine, assembly
– High-level languages
• C, C++, ADA, COBOL, FORTRAN
– Object-Oriented-Programming in C++
• C++ Terminology
– Programs and functions
– Basic Input/Output (I/O) with cin and cout
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-4
Display 1.1
A Sample C++ Program (1 of 2)
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Display 1.1
A Sample C++ Program (2 of 2)
1-5
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-6
C++ Variables
• C++ Identifiers
– Keywords/reserved words vs. Identifiers
– Case-sensitivity and validity of identifiers
– Meaningful names!
• Variables
– A memory location to store data for a program
– Must declare all data before use in program
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Data Types:
Display 1.2 Simple Types (1 of 2)
1-7
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Data Types:
Display 1.2 Simple Types (2 of 2)
1-8
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-9
Assigning Data
• Initializing data in declaration statement
– Results "undefined" if you don’t!
• int myValue = 0;
• Assigning data during execution
– Lvalues (left-side) & Rvalues (right-side)
• Lvalues must be variables
• Rvalues can be any expression
• Example:
distance = rate * time;
Lvalue: "distance"
Rvalue: "rate * time"
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-10
Assigning Data: Shorthand Notations
• Display, page 14
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-11
Data Assignment Rules
• Compatibility of Data Assignments
– Type mismatches
• General Rule: Cannot place value of one type into variable of
another type
– intVar = 2.99; // 2 is assigned to intVar!
• Only integer part "fits", so that’s all that goes
• Called "implicit" or "automatic type conversion"
– Literals
• 2, 5.75, "Z", "Hello World"
• Considered "constants": can’t change in program
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-12
Literal Data
• Literals
– Examples:
• 2 // Literal constant int
• 5.75 // Literal constant double
• "Z" // Literal constant char
• "Hello World" // Literal constant string
• Cannot change values during execution
• Called "literals" because you "literally typed"
them in your program!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-13
Escape Sequences
• "Extend" character set
• Backslash,  preceding a character
– Instructs compiler: a special "escape
character" is coming
– Following character treated as
"escape sequence char"
– Display 1.3 next slide
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Display 1.3
Some Escape Sequences (1 of 2)
1-14
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Display 1.3
Some Escape Sequences (2 of 2)
1-15
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-16
Constants
• Naming your constants
– Literal constants are "OK", but provide
little meaning
• e.g., seeing 24 in a pgm, tells nothing about
what it represents
• Use named constants instead
– Meaningful name to represent data
const int NUMBER_OF_STUDENTS = 24;
• Called a "declared constant" or "named constant"
• Now use it’s name wherever needed in program
• Added benefit: changes to value result in one fix
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-17
Arithmetic Operators:
Display 1.4 Named Constant (1 of 2)
• Standard Arithmetic Operators
– Precedence rules – standard rules
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Arithmetic Operators:
Display 1.4 Named Constant (2 of 2)
1-18
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-19
Arithmetic Precision
• Precision of Calculations
– VERY important consideration!
• Expressions in C++ might not evaluate as
you’d "expect"!
– "Highest-order operand" determines type
of arithmetic "precision" performed
– Common pitfall!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-20
Arithmetic Precision Examples
• Examples:
– 17 / 5 evaluates to 3 in C++!
• Both operands are integers
• Integer division is performed!
– 17.0 / 5 equals 3.4 in C++!
• Highest-order operand is "double type"
• Double "precision" division is performed!
– int intVar1 =1, intVar2=2;
intVar1 / intVar2;
• Performs integer division!
• Result: 0!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-21
Individual Arithmetic Precision
• Calculations done "one-by-one"
– 1 / 2 / 3.0 / 4 performs 3 separate divisions.
• First 1 / 2 equals 0
• Then 0 / 3.0 equals 0.0
• Then 0.0 / 4 equals 0.0!
• So not necessarily sufficient to change
just "one operand" in a large expression
– Must keep in mind all individual calculations
that will be performed during evaluation!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-22
Type Casting
• Casting for Variables
– Can add ".0" to literals to force precision
arithmetic, but what about variables?
• We can’t use "myInt.0"!
– static_cast<double>intVar
– Explicitly "casts" or "converts" intVar to
double type
• Result of conversion is then used
• Example expression:
doubleVar = static_cast<double>intVar1 / intVar2;
– Casting forces double-precision division to take place
among two integer variables!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-23
Type Casting
• Two types
– Implicit—also called "Automatic"
• Done FOR you, automatically
17 / 5.5
This expression causes an "implicit type cast" to
take place, casting the 17  17.0
– Explicit type conversion
• Programmer specifies conversion with cast operator
(double)17 / 5.5
Same expression as above, using explicit cast
(double)myInt / myDouble
More typical use; cast operator on variable
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-24
Shorthand Operators
• Increment & Decrement Operators
– Just short-hand notation
– Increment operator, ++
intVar++; is equivalent to
intVar = intVar + 1;
– Decrement operator, --
intVar--; is equivalent to
intVar = intVar – 1;
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-25
Shorthand Operators: Two Options
• Post-Increment
intVar++
– Uses current value of variable, THEN increments it
• Pre-Increment
++intVar
– Increments variable first, THEN uses new value
• "Use" is defined as whatever "context"
variable is currently in
• No difference if "alone" in statement:
intVar++; and ++intVar;  identical result
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-26
Post-Increment in Action
• Post-Increment in Expressions:
int n = 2,
valueProduced;
valueProduced = 2 * (n++);
cout << valueProduced << endl;
cout << n << endl;
– This code segment produces the output:
4
3
– Since post-increment was used
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-27
Pre-Increment in Action
• Now using Pre-increment:
int n = 2,
valueProduced;
valueProduced = 2 * (++n);
cout << valueProduced << endl;
cout << n << endl;
– This code segment produces the output:
6
3
– Because pre-increment was used
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-28
Console Input/Output
• I/O objects cin, cout, cerr
• Defined in the C++ library called
<iostream>
• Must have these lines (called pre-
processor directives) near start of file:
– #include <iostream>
using namespace std;
– Tells C++ to use appropriate library so we can
use the I/O objects cin, cout, cerr
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-29
Console Output
• What can be outputted?
– Any data can be outputted to display screen
• Variables
• Constants
• Literals
• Expressions (which can include all of above)
– cout << numberOfGames << " games played.";
2 values are outputted:
"value" of variable numberOfGames,
literal string " games played."
• Cascading: multiple values in one cout
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-30
Separating Lines of Output
• New lines in output
– Recall: "n" is escape sequence for the
char "newline"
• A second method: object endl
• Examples:
cout << "Hello Worldn";
• Sends string "Hello World" to display, & escape
sequence "n", skipping to next line
cout << "Hello World" << endl;
• Same result as above
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-31
Formatting Output
• Formatting numeric values for output
– Values may not display as you’d expect!
cout << "The price is $" << price << endl;
• If price (declared double) has value 78.5, you
might get:
– The price is $78.500000 or:
– The price is $78.5
• We must explicitly tell C++ how to output
numbers in our programs!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-32
Formatting Numbers
• "Magic Formula" to force decimal sizes:
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
• These stmts force all future cout’ed values:
– To have exactly two digits after the decimal place
– Example:
cout << "The price is $" << price << endl;
• Now results in the following:
The price is $78.50
• Can modify precision "as you go" as well!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-33
Error Output
• Output with cerr
– cerr works same as cout
– Provides mechanism for distinguishing
between regular output and error output
• Re-direct output streams
– Most systems allow cout and cerr to be
"redirected" to other devices
• e.g., line printer, output file, error console, etc.
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-34
Input Using cin
• cin for input, cout for output
• Differences:
– ">>" (extraction operator) points opposite
• Think of it as "pointing toward where the data goes"
– Object name "cin" used instead of "cout"
– No literals allowed for cin
• Must input "to a variable"
• cin >> num;
– Waits on-screen for keyboard entry
– Value entered at keyboard is "assigned" to num
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-35
Prompting for Input: cin and cout
• Always "prompt" user for input
cout << "Enter number of dragons: ";
cin >> numOfDragons;
– Note no "n" in cout. Prompt "waits" on same
line for keyboard input as follows:
Enter number of dragons: ____
• Underscore above denotes where keyboard entry
is made
• Every cin should have cout prompt
– Maximizes user-friendly input/output
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-36
Program Style
• Bottom-line: Make programs easy to read and modify
• Comments, two methods:
– // Two slashes indicate entire line is to be ignored
– /*Delimiters indicates everything between is ignored*/
– Both methods commonly used
• Identifier naming
– ALL_CAPS for constants
– lowerToUpper for variables
– Most important: MEANINGFUL NAMES!
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-37
Libraries
• C++ Standard Libraries
• #include <Library_Name>
– Directive to "add" contents of library file to
your program
– Called "preprocessor directive"
• Executes before compiler, and simply "copies"
library file into your program file
• C++ has many libraries
– Input/output, math, strings, etc.
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-38
Namespaces
• Namespaces defined:
– Collection of name definitions
• For now: interested in namespace "std"
– Has all standard library definitions we need
• Examples:
#include <iostream>
using namespace std;
• Includes entire standard library of name definitions
• #include <iostream>using std::cin;
using std::cout;
• Can specify just the objects we want
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-39
Summary 1
• C++ is case-sensitive
• Use meaningful names
– For variables and constants
• Variables must be declared before use
– Should also be initialized
• Use care in numeric manipulation
– Precision, parentheses, order of operations
• #include C++ libraries as needed
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1-40
Summary 2
• Object cout
– Used for console output
• Object cin
– Used for console input
• Object cerr
– Used for error messages
• Use comments to aid understanding of
your program
– Do not overcomment
Copyright © 2008 Pearson Addison-Wesley. All rights reserved.

More Related Content

PPT
C++ basic.ppt
PPTX
Lecture # 1 - Introduction Revision - 1 OOPS.pptx
PDF
Lecture # 1 introduction revision - 1
PPT
Savitch ch 022
DOCX
Copyright © 2012 Pearson Addison-Wesley. All rights reser.docx
PPT
Chapter02-S11.ppt
PPT
savitchch02-C++Basic Computer Programming.ppt
PPTX
Week 03.pptx c++ loops files and expression
C++ basic.ppt
Lecture # 1 - Introduction Revision - 1 OOPS.pptx
Lecture # 1 introduction revision - 1
Savitch ch 022
Copyright © 2012 Pearson Addison-Wesley. All rights reser.docx
Chapter02-S11.ppt
savitchch02-C++Basic Computer Programming.ppt
Week 03.pptx c++ loops files and expression

Similar to chap1cpp3rd.ppt (20)

PPT
Chapter 2 Introduction to C++
PPT
Savitch Ch 02
PPT
Savitch Ch 02
PPT
02a fundamental c++ types, arithmetic
PPT
Basics of c++ Programming Language
PPT
Chapter 3 Expressions and Inteactivity
PPT
CPLUSPLUS UET PESHAWAR BS ELECTRICAL 2ND SEMSTER Lecture02.ppt
PPTX
Programming Fundamentals
PPTX
intro to programming presentation .pptx
PPTX
#Code2 create c++ for beginners
PPT
Savitch ch 02
PPTX
C++ lecture 01
PDF
BASIC C++ PROGRAMMING
PPT
Lecture 1.ppt morphology of higher plant
PPTX
Lecture 1.pptx on plant morphology, intro
PPT
Chapter2
PPT
Lecture06-TypesVarsConsts variables data types
PPT
Lecture+06-TypesVars.ppt
Chapter 2 Introduction to C++
Savitch Ch 02
Savitch Ch 02
02a fundamental c++ types, arithmetic
Basics of c++ Programming Language
Chapter 3 Expressions and Inteactivity
CPLUSPLUS UET PESHAWAR BS ELECTRICAL 2ND SEMSTER Lecture02.ppt
Programming Fundamentals
intro to programming presentation .pptx
#Code2 create c++ for beginners
Savitch ch 02
C++ lecture 01
BASIC C++ PROGRAMMING
Lecture 1.ppt morphology of higher plant
Lecture 1.pptx on plant morphology, intro
Chapter2
Lecture06-TypesVarsConsts variables data types
Lecture+06-TypesVars.ppt

More from krishnakumararunacha5 (6)

PPT
15 NAT - Harmony in Nature.ppt underatstangin g harmony in nature
PPTX
switching multiple access control data communication
PDF
ch5systemmodeling-150102101848-conversion-gate01.pdf
PPT
multiple access prtocols and its types
PDF
3-IA DC (1AH19CS018).pdf
15 NAT - Harmony in Nature.ppt underatstangin g harmony in nature
switching multiple access control data communication
ch5systemmodeling-150102101848-conversion-gate01.pdf
multiple access prtocols and its types
3-IA DC (1AH19CS018).pdf

Recently uploaded (20)

PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PPTX
History, Philosophy and sociology of education (1).pptx
PPTX
UNIT III MENTAL HEALTH NURSING ASSESSMENT
PPTX
Unit 4 Skeletal System.ppt.pptxopresentatiom
PDF
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
PPTX
Cell Types and Its function , kingdom of life
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
PPTX
Lesson notes of climatology university.
PPTX
CHAPTER IV. MAN AND BIOSPHERE AND ITS TOTALITY.pptx
PDF
1_English_Language_Set_2.pdf probationary
PDF
Complications of Minimal Access Surgery at WLH
PDF
Empowerment Technology for Senior High School Guide
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
Final Presentation General Medicine 03-08-2024.pptx
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
History, Philosophy and sociology of education (1).pptx
UNIT III MENTAL HEALTH NURSING ASSESSMENT
Unit 4 Skeletal System.ppt.pptxopresentatiom
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
Cell Types and Its function , kingdom of life
Supply Chain Operations Speaking Notes -ICLT Program
Final Presentation General Medicine 03-08-2024.pptx
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
Lesson notes of climatology university.
CHAPTER IV. MAN AND BIOSPHERE AND ITS TOTALITY.pptx
1_English_Language_Set_2.pdf probationary
Complications of Minimal Access Surgery at WLH
Empowerment Technology for Senior High School Guide

chap1cpp3rd.ppt

  • 1. Chapter 1 C++ Basics Copyright © 2008 Pearson Addison-Wesley. All rights reserved
  • 2. 1-2 Learning Objectives • Introduction to C++ – Origins, Object-Oriented Programming, Terms • Variables, Expressions, and Assignment Statements • Console Input/Output • Program Style • Libraries and Namespaces Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 3. 1-3 Introduction to C++ • C++ Origins – Low-level languages • Machine, assembly – High-level languages • C, C++, ADA, COBOL, FORTRAN – Object-Oriented-Programming in C++ • C++ Terminology – Programs and functions – Basic Input/Output (I/O) with cin and cout Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 4. 1-4 Display 1.1 A Sample C++ Program (1 of 2) Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 5. Display 1.1 A Sample C++ Program (2 of 2) 1-5 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 6. 1-6 C++ Variables • C++ Identifiers – Keywords/reserved words vs. Identifiers – Case-sensitivity and validity of identifiers – Meaningful names! • Variables – A memory location to store data for a program – Must declare all data before use in program Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 7. Data Types: Display 1.2 Simple Types (1 of 2) 1-7 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 8. Data Types: Display 1.2 Simple Types (2 of 2) 1-8 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 9. 1-9 Assigning Data • Initializing data in declaration statement – Results "undefined" if you don’t! • int myValue = 0; • Assigning data during execution – Lvalues (left-side) & Rvalues (right-side) • Lvalues must be variables • Rvalues can be any expression • Example: distance = rate * time; Lvalue: "distance" Rvalue: "rate * time" Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 10. 1-10 Assigning Data: Shorthand Notations • Display, page 14 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 11. 1-11 Data Assignment Rules • Compatibility of Data Assignments – Type mismatches • General Rule: Cannot place value of one type into variable of another type – intVar = 2.99; // 2 is assigned to intVar! • Only integer part "fits", so that’s all that goes • Called "implicit" or "automatic type conversion" – Literals • 2, 5.75, "Z", "Hello World" • Considered "constants": can’t change in program Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 12. 1-12 Literal Data • Literals – Examples: • 2 // Literal constant int • 5.75 // Literal constant double • "Z" // Literal constant char • "Hello World" // Literal constant string • Cannot change values during execution • Called "literals" because you "literally typed" them in your program! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 13. 1-13 Escape Sequences • "Extend" character set • Backslash, preceding a character – Instructs compiler: a special "escape character" is coming – Following character treated as "escape sequence char" – Display 1.3 next slide Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 14. Display 1.3 Some Escape Sequences (1 of 2) 1-14 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 15. Display 1.3 Some Escape Sequences (2 of 2) 1-15 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 16. 1-16 Constants • Naming your constants – Literal constants are "OK", but provide little meaning • e.g., seeing 24 in a pgm, tells nothing about what it represents • Use named constants instead – Meaningful name to represent data const int NUMBER_OF_STUDENTS = 24; • Called a "declared constant" or "named constant" • Now use it’s name wherever needed in program • Added benefit: changes to value result in one fix Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 17. 1-17 Arithmetic Operators: Display 1.4 Named Constant (1 of 2) • Standard Arithmetic Operators – Precedence rules – standard rules Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 18. Arithmetic Operators: Display 1.4 Named Constant (2 of 2) 1-18 Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 19. 1-19 Arithmetic Precision • Precision of Calculations – VERY important consideration! • Expressions in C++ might not evaluate as you’d "expect"! – "Highest-order operand" determines type of arithmetic "precision" performed – Common pitfall! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 20. 1-20 Arithmetic Precision Examples • Examples: – 17 / 5 evaluates to 3 in C++! • Both operands are integers • Integer division is performed! – 17.0 / 5 equals 3.4 in C++! • Highest-order operand is "double type" • Double "precision" division is performed! – int intVar1 =1, intVar2=2; intVar1 / intVar2; • Performs integer division! • Result: 0! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 21. 1-21 Individual Arithmetic Precision • Calculations done "one-by-one" – 1 / 2 / 3.0 / 4 performs 3 separate divisions. • First 1 / 2 equals 0 • Then 0 / 3.0 equals 0.0 • Then 0.0 / 4 equals 0.0! • So not necessarily sufficient to change just "one operand" in a large expression – Must keep in mind all individual calculations that will be performed during evaluation! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 22. 1-22 Type Casting • Casting for Variables – Can add ".0" to literals to force precision arithmetic, but what about variables? • We can’t use "myInt.0"! – static_cast<double>intVar – Explicitly "casts" or "converts" intVar to double type • Result of conversion is then used • Example expression: doubleVar = static_cast<double>intVar1 / intVar2; – Casting forces double-precision division to take place among two integer variables! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 23. 1-23 Type Casting • Two types – Implicit—also called "Automatic" • Done FOR you, automatically 17 / 5.5 This expression causes an "implicit type cast" to take place, casting the 17  17.0 – Explicit type conversion • Programmer specifies conversion with cast operator (double)17 / 5.5 Same expression as above, using explicit cast (double)myInt / myDouble More typical use; cast operator on variable Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 24. 1-24 Shorthand Operators • Increment & Decrement Operators – Just short-hand notation – Increment operator, ++ intVar++; is equivalent to intVar = intVar + 1; – Decrement operator, -- intVar--; is equivalent to intVar = intVar – 1; Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 25. 1-25 Shorthand Operators: Two Options • Post-Increment intVar++ – Uses current value of variable, THEN increments it • Pre-Increment ++intVar – Increments variable first, THEN uses new value • "Use" is defined as whatever "context" variable is currently in • No difference if "alone" in statement: intVar++; and ++intVar;  identical result Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 26. 1-26 Post-Increment in Action • Post-Increment in Expressions: int n = 2, valueProduced; valueProduced = 2 * (n++); cout << valueProduced << endl; cout << n << endl; – This code segment produces the output: 4 3 – Since post-increment was used Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 27. 1-27 Pre-Increment in Action • Now using Pre-increment: int n = 2, valueProduced; valueProduced = 2 * (++n); cout << valueProduced << endl; cout << n << endl; – This code segment produces the output: 6 3 – Because pre-increment was used Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 28. 1-28 Console Input/Output • I/O objects cin, cout, cerr • Defined in the C++ library called <iostream> • Must have these lines (called pre- processor directives) near start of file: – #include <iostream> using namespace std; – Tells C++ to use appropriate library so we can use the I/O objects cin, cout, cerr Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 29. 1-29 Console Output • What can be outputted? – Any data can be outputted to display screen • Variables • Constants • Literals • Expressions (which can include all of above) – cout << numberOfGames << " games played."; 2 values are outputted: "value" of variable numberOfGames, literal string " games played." • Cascading: multiple values in one cout Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 30. 1-30 Separating Lines of Output • New lines in output – Recall: "n" is escape sequence for the char "newline" • A second method: object endl • Examples: cout << "Hello Worldn"; • Sends string "Hello World" to display, & escape sequence "n", skipping to next line cout << "Hello World" << endl; • Same result as above Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 31. 1-31 Formatting Output • Formatting numeric values for output – Values may not display as you’d expect! cout << "The price is $" << price << endl; • If price (declared double) has value 78.5, you might get: – The price is $78.500000 or: – The price is $78.5 • We must explicitly tell C++ how to output numbers in our programs! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 32. 1-32 Formatting Numbers • "Magic Formula" to force decimal sizes: cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); • These stmts force all future cout’ed values: – To have exactly two digits after the decimal place – Example: cout << "The price is $" << price << endl; • Now results in the following: The price is $78.50 • Can modify precision "as you go" as well! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 33. 1-33 Error Output • Output with cerr – cerr works same as cout – Provides mechanism for distinguishing between regular output and error output • Re-direct output streams – Most systems allow cout and cerr to be "redirected" to other devices • e.g., line printer, output file, error console, etc. Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 34. 1-34 Input Using cin • cin for input, cout for output • Differences: – ">>" (extraction operator) points opposite • Think of it as "pointing toward where the data goes" – Object name "cin" used instead of "cout" – No literals allowed for cin • Must input "to a variable" • cin >> num; – Waits on-screen for keyboard entry – Value entered at keyboard is "assigned" to num Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 35. 1-35 Prompting for Input: cin and cout • Always "prompt" user for input cout << "Enter number of dragons: "; cin >> numOfDragons; – Note no "n" in cout. Prompt "waits" on same line for keyboard input as follows: Enter number of dragons: ____ • Underscore above denotes where keyboard entry is made • Every cin should have cout prompt – Maximizes user-friendly input/output Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 36. 1-36 Program Style • Bottom-line: Make programs easy to read and modify • Comments, two methods: – // Two slashes indicate entire line is to be ignored – /*Delimiters indicates everything between is ignored*/ – Both methods commonly used • Identifier naming – ALL_CAPS for constants – lowerToUpper for variables – Most important: MEANINGFUL NAMES! Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 37. 1-37 Libraries • C++ Standard Libraries • #include <Library_Name> – Directive to "add" contents of library file to your program – Called "preprocessor directive" • Executes before compiler, and simply "copies" library file into your program file • C++ has many libraries – Input/output, math, strings, etc. Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 38. 1-38 Namespaces • Namespaces defined: – Collection of name definitions • For now: interested in namespace "std" – Has all standard library definitions we need • Examples: #include <iostream> using namespace std; • Includes entire standard library of name definitions • #include <iostream>using std::cin; using std::cout; • Can specify just the objects we want Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 39. 1-39 Summary 1 • C++ is case-sensitive • Use meaningful names – For variables and constants • Variables must be declared before use – Should also be initialized • Use care in numeric manipulation – Precision, parentheses, order of operations • #include C++ libraries as needed Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
  • 40. 1-40 Summary 2 • Object cout – Used for console output • Object cin – Used for console input • Object cerr – Used for error messages • Use comments to aid understanding of your program – Do not overcomment Copyright © 2008 Pearson Addison-Wesley. All rights reserved.