CS 1400 - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

CS 1400

Description:

Title: CS 1400 Author: Scott Cannon Last modified by: Scott Cannon Created Date: 8/28/2006 3:34:14 PM Document presentation format: On-screen Show Company – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 28
Provided by: ScottC183
Category:
Tags: display | segment

less

Transcript and Presenter's Notes

Title: CS 1400


1
CS 1400
  • Pick ups from chapters 4 and 5

2
if-else-if
  • Chained if statements can be useful for menus
  • Enter savings plan choice (A) economy
    rate
  • (B) saver rate
  • (C) preferred rate
  • (D) special rate

3
Example Menu
  • char choice
  • cin gtgt choice
  • if (choice A)
  • rate 2.15
  • else if (choice B)
  • rate 3.25
  • else if (choice C)
  • rate 4.86
  • else rate 5.22

4
The switch statement
  • General form
  • switch (ordinal variable)
  • case constant value1 statements
  • break
  • case constant value2 statements
  • break
  • case constant value3 statements
  • break
  • default statements

5
Example Menu (bis)
  • char choice
  • cin gtgt choice
  • switch (choice)
  • case A rate 2.15
  • break
  • case B rate 3.25
  • break
  • case C rate 4.86
  • break
  • default rate 5.22

6
Compound boolean expressions
  • Two relational (or Boolean) expressions can be
    combined using
  • (and)
  • (or)
  • examples
  • if ((age gt 21) (age lt 35))
  • cout ltlt You could be drafted!
  • if ((age lt 0) (age gt 120))
  • cout ltlt Incorrect age!

(Dont confuse with and )
7
Precedence
  • has precedence over
  • relational operators have precedence over
  • if (altb cgtd ef) same as
  • if (((altb) (cgtd)) (ef))

8
Caution!!
  • Be sure , are between relational
    expressions
  • if (a lt bc) ??
  • if (ba c) ??

9
Comparing two strings
  • The following will have unexpected results
  • char name120, name220
  • cin gtgt name1 gtgt name2
  • if (name1 name2)
  • cout ltlt these names are the same!
  • The reasons will become clear later on This is
    correct
  • if (strcmp (name1, name2) 0)
  • cout ltlt these names are the same!

FYI
10
Testing for file errors
  • A file variable may be tested for the failure of
    the most recent file operation using the member
    function .fail()
  • Example
  • ifstream fin
  • fin.open(myfile.txt)
  • if (fin.fail())
  • cout ltlt this file could not be opened!
  • Alternate example
  • if (!fin)
  • cout ltlt this file could not be opened!

11
Other loop statements
  • The do-while loop
  • do
  • statements
  • while ( expr )
  • This is a post-test loop The expression is
    tested at the bottom of the loop and always
    performs at least one iteration

12
Example
  • Input validation a program must prompt for an
    age and only accept a value greater than 0 and
    less than 120.
  • do
  • cout ltlt Enter a valid age
  • cin gtgt age
  • while ((age gt 0) (age lt 120))

13
Other loop statements.
  • The for loop
  • for ( initialization test expr update )
  • statements
  • This is a pre-test loop The test expression is
    tested at the top of the loop. The
    initialization, test expression and update
    segments can be any valid C expression

14
Explanation of segments
  • initialization
  • This segment is executed once prior to beginning
    the loop
  • test expr
  • This segment is executed prior to each iteration.
    If this segment is false, the loop terminates
  • update
  • This segment is executed at the bottom of each
    iteration.

15
Example
  • Add 20 numbers input by the user
  • float num, sum 0.0
  • int n
  • for (n0 nlt20 n)
  • cout ltlt Enter a number
  • cin gtgt num
  • sum num

16
Example variation
  • The test variable can actually be declared within
    the loop
  • float num, sum 0.0
  • for (int n0 nlt20 n)
  • cout ltlt Enter a number
  • cin gtgt num
  • sum num

17
A programmer has a choice
  • Convert the following while loop to a for loop
  • int count 0
  • while (count lt 50)
  • cout ltlt count is ltlt count ltlt endl
  • count
  • Convert the following for loop to a while
  • for (int x 50 x gt 0 x- - )
  • cout ltlt x ltlt seconds to launch.\n

18
Example loan amoritization
  • A case study (5.14, pg 295)
  • Write a loan amoritization program
  • inputs principle, interest_rate, num_years
  • outputs
  • monthly payment
  • for each month month number, interest,
    principle, remaining_balance

19
Formulas
  • payment
  • (principle interest_rate/12 term) / (term-1)
  • where term
  • (1 interest_rate/12) num_years 12
  • monthly_interest
  • (annual_rate / 12) balance
  • principle
  • payment monthly_interest

20
Example execution
  • Enter loan amount 2500
  • Enter annual Interest rate 0.08
  • Enter number of years 2
  • Monthly payment 113.07
  • month interest principle balance
  • 1 16.67 96.40 2403.60
  • 2 16.02 97.04 2306.55
  • 3 15.38 97.69 2208.86
  • (a total of 24 month lines)

21
Pseudocode
  • Prompt and input loan amount, annual interest
    rate, and number of years
  • Calculate and display monthly payment
  • Print report header
  • For each month in the loan period
  • calculate the monthly interest
  • calculate the principle
  • display the month number, interest, principle,
    and balance
  • calculate the new balance

22
First refinement
for ( int month 1 month lt num_years 12
month) // 4.

23
Example loops within loopsinput table of grades
  • Student count 64
  • John 9 scores 9 7 8 9 6 10 10 8 10
  • Fred 13 scores 7 8 5 6 7 6 8 9 6 10 9 10 3
  • Emily 8 scores 8 4 5 3 9 7 5 4

24
Pseudocode rough outline
  • 1. Input number_of_students
  • 2. Repeat for number_of_students iterations
  • a-b) Input student_name and count_of_grades
  • c-d) sum grades for this student
  • e) Calculate average
  • f) Output student_name and average

25
Pseudocode (more detailed)
  • 1. Input number_of_students
  • 2. Repeat for number_of_students iterations
  • a) Input student name
  • b) Input count_of_grades
  • c) initialize sum to 0.
  • d) Repeat for count_of_grades iterations
  • i Input grade
  • ii sum grade
  • e) Calculate average
  • f) Output student_name and average

26
First refinement
for ( int student 0 student lt num_of_students
student) //2

27
Second refinement

for (int count0 countltnum_of_grades count)
// d)
Write a Comment
User Comments (0)
About PowerShow.com