Home

PROGRAMMING FUNDAMENTALS IN C++

image

Contents

1. funci func2 func3 func4 int funci int func2 end of filel Available for free at Connexions lt http cnx org content col10788 1 1 gt 138 int file2 double b int func3 int func4 end of file2 CHAPTER 2 LECTURE NOTES Although the variable a has been declared in filel we want to use it in file2 Placing the statement extern a in file2 we can extend the scope of the variable a into file2 Now the scope of the variable a is not only in filel but also in func3 and func4 filel int a float c static double d int main 1 funci func2 func3 func4 extern double b int funci int func2 end of file1 file2 double b extern int a int func3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 139 int func4 extern float c end of file2 Besides placing the statement extern float c in func4 extends the scope of this global variable created in filel into func4 and the scope of the global variable b created in file2 is extended into funcl and func2 by the declaration statement extern double b placed before funcl Note 1 We cannot make static variables external 2 The scope of a global static variable cannot extend beyond the file in which it is declared 2 6 7 Pass by Reference Using Reference Parameters Two ways
2. Very Satisfied Satisfied Neutral Dissatisfied Very Dissatisfied 1 Rate the course materials e g lecture notes slides lab mamual textbook Available for free at Connexions lt http cnx org content col10788 1 1 gt AAA Very Satisfied Satisfied a Neutral NS Dissatisfied Very Dissatisfied 1 What topics in the course you like best Why 2 What topics in the course you like least Why 3 Course content comments INSTRUCTION 1 Rate the instructor s subject knowledge Very Satisfied Satisfied a i Neutral NENE Dissatisfied Very Dissatisfied 1 Rate the instructor s effectiveness e g question handling presentation and ability to explain ideas Very Satisfied Satisfied A Neutral AO a a Dissatisfied Very Dissatisfied 1 Instruction comments FACILITIES AND EQUIPMENT 1 Rate the classroom facilities provided e g ventilation lightning temperature space projector Very Satisfied Satisfied o Neutral A Dissatisfied Very Dissatisfied 1 Rate the computer lab equipment provided e g computers software Internet access Very Satisfied Satisfied A NaN Dissatisfied Very Dissatisfied 1 Facilities and equipment comments Available for free at Connexions lt http cnx org content col10788 1 1 gt 10 CHAPTER 1 STUDENT MANUAL SUPPORT 1 Rate the lab teaching assistant support enthusiasm effectiveness knowledge skill communication abilit
3. starting at floor 6 Going Down now at floor 5 Going Down now at floor 4 Going Down now at floor 3 Stopping at floor 3 Figure 2 43 Output of program Note that control is provided by the main function This control is sequential with two calls made to the same object operation using different argument values This control is perfectly correct for testing purposes However by incorporating calls to request within a while loop and using the random number function rand to generate random floor requests a continuous simulation of the elevator s operation is possible 2 7 6 5 Design Techniques of Object Oriented Programs The basic requirements of object oriented programming are evident in even as simple a program as the above program Before the main function can be written a useful class must be constructed For programs that used objects the design process is loaded with the requirement that careful consideration of the class its declaration and implementation be given Code contained in the implementation section effectively removes code that would otherwise be part of main s responsibility Thus any program that uses the object does not have to repeat the implementation details within its main function Rather the main function is only concerned with sending messages and how the state of the object is retained are not main s concern these details are hidden within the class construction Av
4. 154 CHAPTER 2 LECTURE NOTES 2 7 2 3 Preventing Multiple Inclusion Large class based programs are sometimes composed of multiple interface and implementation files With large program you need to ensure that you do not include multiple instances of the same header file when you compile the program since multiple inclusion will make your program unnecessary large C generates an error if you attempt to compile a program that includes multiple instances of the same header file To prevent this kind of error most C programmers use the define preprocessor directive with the if and endif preprocessor directives in header files The if and endif preprocessor directives determine which portions of a file to compile depending on the result of a conditional expression The syntax for the if and endif preprocessor directives if conditional expression statements to compile endif Example if defined TIME1_H define TIME1_H class Time public Time void setTime int int int void printMilitaryO void printStandard private int hour int minute int second endif Note Common practice when defining a header file s constant is to use the header file s name in uppercase letters appended with H For example the constant for the time1 h header file is usually defined as TIME1_H 2 7 3 Member Functions In this section we learn how to write member functions for a class 2 7 3 1 Inline
5. 2 1 1 1 6 Secondary Storage Secondary storage devices are used to be permanent storage area for programs and data Available for free at Connexions lt http cnx org content col10788 1 1 gt 59 Virtually all secondary storage is now done on magnetic tapes magnetic disks and CD ROMs A magnetic hard disk consists of either a single rigid platter or several platters that spin together on a common spindle A movable access arm positions the read and write mechanisms over but not quite touching the recordable surfaces Such a configuration is shown in Figure 2 nm assembly rtation Figure 2 2 The internal structure of a magnetic hard disk drive 2 1 1 2 Computer Software A computer program is a set of instructions used to operate a computer to produce a specific result Another term for a program or a set of programs is software and we use both terms interchangeably throughout the text Writing computer programs is called computer programming The languages used to create computer programs are called programming languages To understand C programming it is helpful to know a little background about how current program ming languages evolved 2 1 1 2 1 Machine and Assembly Languages Machine languages are the lowest level of computer languages Programs written in machine language consist of entirely of 1s and Os Programs in machine language can control directly to the computer s hardware Available for free
6. 5 9 f 32 e Displaying the Celsius temperature C 3 Write and run a program that reads two integers through the keyboard and performs simple arithmetic operations i e addition subtraction multiplication and division and displays the results 4 Write and run a program that reads a floating point number through the keyboard and performs its square root and displays the result with 4 digits of precision to the right of the decimal point 5 Given an initial deposit of money denoted as P in a bank that pays interest annually the amount of money at a time N years later is given by the formula Amount P 1 R N where R is the interest rate as a decimal number e g 6 5 is 0 065 Write and run a program that performs the following steps e Reading the values of P and R from the keyboard Available for free at Connexions lt http cnx org content col10788 1 1 gt 12 CHAPTER 1 STUDENT MANUAL e Calculating the amount of money that will be available in 5 years e Displaying the result 6 Write and run a program that reads the name age sex height and weight of a student and displays with proper heading for each variable 7 Write a program to accept a single character from the keyboard Using cout statement to display the character or keystroke and its decimal hexadecimal and octal values Display in the following format CHARACTER DECIMAL HEXADECIMAL OCTAL Figure 1 3 1 2 4 Exercise 4 1 Write and run a
7. A string may be assigned in a declaration to a character array The declaration char strg C initializes a variable to the string C The declaration creates a 4 element array strg containing the characters C and 0 The null character 10 marks the end of the text string The declaration determines the size of the array automatically based on the number of initializers provided in the initializer list C does not provide built in operations for strings In C you must use a string built in functions to manipulate char variables Some commonly used string functions are listed below Available for free at Connexions lt http cnx org content col10788 1 1 gt 125 Function Description strcat Append one string to another strchr Find the first occurrence of a specified character in a string stremp Compare two strings strepy Replaces the contents of one string with the contents of another strlen Returns the length of a string Figure 2 34 String functions The strcpy function copies a literal string or the contents of a char variable into another char variable using the syntax strcpy destination source where destination represents the char variable to which you want to assign a new value to and the source variable represents a literal string or the char variable contains the string you want to assign to the destination The strcat function combines two strings
8. The syntax for using the new operator is pointer new data_type For example to declare an int pointer iPointer that points to a heap variable you use the following statements int iPointer iPointer new int The syntax for using the delete operator is delete pointer_name For example to delete the heap memory pointed to by the iPointer pointer you use the statement delele iPointer Deleting the contents of an array stored on the heap also requires a slightly different syntax You must append two brackets to the delete keyword using the syntax delete array_ name Notice that the delete operator does not delete the pointer itself Rather it deletes the contents of the heap memory address pointed to by a pointer variable You can reuse the pointer itself after calling the delete operator The pointer still exists and points to the same heap memory address that it did before calling the delete operator Example include lt iostream h gt int main doublex pPrimeInterest new double pPrimeInterest 0 065 cout lt The value of pPrimeInterest is lt lt pPrimelnterest lt endl cout lt The memory address of pPimeInterest is lt lt amp pPrimeInterest lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 161 delete pPrimeInterest pPimelnterest 0 070 cout lt The value of pPrimeInterest is lt lt pPrimelnterest lt endl
9. case label statement s break default statement s The expression in the switch statement must evaluate to an integer result The switch expression s value is compared to each of these case values in the order in which these values are listed until a match is found When a match occurs execution begins with the statement following the match If the value of the expression does not match any of the case values no statement is executed unless the keyword default is encountered If the value of the expression does not match any of the case values program execution begins with the statement following the word default The break statement is used to identify the end of a particular case and causes an immediate exit from the switch statement If the break statements are omitted all cases following the matching case value including the default case are executed Available for free at Connexions lt http cnx org content col10788 1 1 gt 104 Example include lt iostream h gt int main int iCity cout cout cout cout cout cout CHAPTER 2 LECTURE NOTES lt Enter a number to find the state where a city is located lt endl lt lt lt lt lt I mo 3 4 5 cin gt iCity Boston lt endl Chicago lt endl Los Angeles lt endl Miami lt endl Providence lt endl switch iCity case cout 1 lt break case cout 2 lt brea
10. typeNamePtr new TypeName The new operator automatically creates an object of the proper size calls the constructor for the object and returns a pointer of the correct type Available for free at Connexions lt http cnx org content col10788 1 1 gt 160 CHAPTER 2 LECTURE NOTES To destroy the object and free the space for this object in C you must use the delete operator as follows delete typeNamePtr For built in data types we also can use the new and delete operators Example 1 int pPointer pPointer new int Example 2 delete pPointer Example 3 A 10 element integer array can be created and assigned to arrayPtr as follows int arrayPtr new int 10 This array is deleted with the statement delete arrayPtr 2 7 4 1 Stack versus heap A stack is a region of memory where applications can store data such as local variables function calls and parameter information The programmers have no control over the stack C automatically handles placing and removing data to and from stack The heap or free store is an area of memory that is available to application for storing data whose existence and size are not known until run time Notice that when we use new operator we can allocate a piece of memory on the heap and when we use delete operator we can deallocate free a piece of memory on the heap In other words we can manage the memory allocation on the heap explicitly through new and delete operators
11. Available for free at Connexions lt http cnx org content col10788 1 1 gt 180 CHAPTER 2 LECTURE NOTES 2 8 4 4 Access Specifiers and Inheritance Even though a derived class inherits the class members of a base class the base class s members are still bound by its access specifiers Private class members in the base class can be accessed only the base class s member functions For example the idNum data member in the Person class is private If you write the following member function in the Customer class which attempts to directly access to the idNum data member you will get a compiler error void Customer outputBalDue cout lt ID lt idNum lt Balance due lt lt balanceDue lt lt endl Instead to access the idNum data member you must call the Person class s outputData member func tion which is public Alternatively you can declare the idNum data member with the protected access specifier The protected access modifier restricts class member access to 1 the class itself 2 to classes derived from the class or The following code shows a modified version of the Person class declaration in which the private access modifier has been changed to protected Example class Person protected int idNum char lastName 20 char firstName 15 public void setFields int num char last char first void outputData A member function in Customer class that attempts to dir
12. Employee const int id 999 const double hourly 5 65 This format provides the constructor function with default values for two arguments When we create an Employee object the default values in the constructor function prototype are assigned to the class variables Example tinclude lt iostream h gt class Employeef private int idNum double hourlyRate public Employee const int id 9999 const double hourly 5 65 void setValues const int id const double hourly void displayValues 3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 171 Employee Employee const int id const double hourly ae idNum id hourlyRate hourly void Employee displayValues cout lt Employee lt idNum lt rate lt hourlyRate lt per hour lt endl void Employee setValues const int id const double hourly idNum id hourlyRate hourly int main Employee assistant cout lt Before setting values with setValues lt endl assistant displayValues assistant setValues 4321 12 75 cout lt After setting values with setValues lt endl assistant displayValues return 0 The output of the above program Before setting values with set Values Employee 9999 rate 5 65 per hour After setting values with set Values Employee 4321 rate 12 75 per hour 2 8 2 Destructors A default destructor clean
13. To execute a function you must invoke or call it from the main function The values or variables that you place within the parentheses of a function call statement are called arguments or actual parameters Example Function maximum is invoked or called in main with the call maximum a b c Available for free at Connexions lt http cnx org content col10788 1 1 gt 131 2 6 1 3 Function Prototypes One of the most important features of C is the function prototype A function prototype declares to the compiler that you intend to use a function later in the program It informs the compiler the name of the function the type of data returned by the function the number of parameters the function expects to receive the types of the parameters and the order in which these parameters are expected The compiler uses function prototypes to validate function calls If you try to call a function at any point in the program prior to its function prototype or function definition you will receive an error when you compile the project 2 6 1 3 1 Example Finding the maximum of three integers include lt iostream h gt int maximum int int int function prototype int main int a b c cout lt Enter three integers cin gt a gt b gt c a b and c below are arguments to the maximum function call cout lt Maximum is lt maximum a b c lt endl return 0 Function maximum definition
14. lt endl else if crayon yellow cout lt The crayon is yellow lt endl else cout lt The color is not defined An lt endl return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 106 CHAPTER 2 LECTURE NOTES The output of the above program The color is 0 Enter a value 2 The crayon is yellow 2 4 10 Focus on Problem Solving Two major uses of C s if statements are to select appropriate processing paths and to prevent undesirable data from being processed at all In this section an example of both uses is provided Problem Solving Quadratic Equations A quadratic equation is an equation that has the form ax2 bx c 0 or that can be algebraically manipulated into this form In this equation x is the unknown variable and a b and c are known constants Although the constants b and c can be any numbers including 0 the value of the constant a cannot be O if a is 0 the equation becomes a linear equation in x Examples of quadratic equations are 5x 2 6x 2 0 x 2 7x 20 0 34x 2 16 0 In the first equation a 5 b 6 and c 2 in the second equation a 1 b 7 and c 20 and in the third equation a 34 b 0 and c 16 The real roots of a quadratic equation can be calculated using the quadratic formula as delta b2 4ac rootl b squared root delta 2a root2 b squared root delta 2a Using these equations we
15. x y and z are parameters to the maximum function definition int maximum int x int y int z 1 int max x if y gt max max y if z gt max max Z return max The output of the above program Enter three integers 22 85 17 Maximum is 85 2 6 1 4 Passing by Value If a variable is one of the actual parameters in a function call the called function receives a copy of the values stored in the variable After the values are passed to the called function control is transferred to the called function Example The expression maximum a b c calls the function maximum and causes the values currently residing in the variables a b and c to be passed to maximum The method of passing values to a called function is called pass by value Available for free at Connexions lt http cnx org content col10788 1 1 gt 132 CHAPTER 2 LECTURE NOTES 2 6 1 5 Functions with Empty Parameter Lists Functions may have empty parameter list The function prototype for such a function requires either the keyword void or nothing at all between the parentheses following the function name Example int display int display void 2 6 2 Returning Values To actually return a value the function must use a return statement which has the form return expression or return expression Remember that values passes back and forth between functions must be of the same data type When the return statement is en
16. AM pM Driver to test simple class Time int main Time t instantiate object t of class Time cout lt The initial military time is t printMilitaryO cout lt nThe initial standard time is t printStandard t setTime 13 27 6 cout lt n nMilitary time after setTime is t printMilitaryO cout lt nStandard time after setTime is t printStandard t setTime 99 99 99 attempt invalid settings cout lt n nAfter attempting invalid settings lt lt nMilitary time t printMilitaryO cout lt nStandard time t printStandard cout lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 157 158 CHAPTER 2 LECTURE NOTES return 0 The output of the above program The initial military time is 00 00 The initial standard time is 12 00 00 AM Military time after set Time is 13 37 Standard time after setTime is 1 27 06 PM After attempting invalid settings Military time 00 00 Standard time 12 00 00 AM In the above example for the class Time we can see that member functions printStandard and print Mil itary are two get function and member function setTime is a set function 2 7 3 4 Constructor Functions A constructor function is a special function with the same name as its class This function is called automatically when an object from a class is instantiated You define and declare constructor func
17. Assume that these taxes are assessed at 2 of taxable incomes less than or equal to 20 000 For taxable income greater than 20 000 taxes are 2 5 of the income that exceeds 20 000 plus a fixed amount of 400 The flowchart of the program is given in Figure 2 include lt iostream h gt include lt iomanip h gt const float LOWRATE 0 02 lower tax rate const float HIGHRATE 0 025 higher tax rate const float CUTOFF 20000 0 cut off for low rate Available for free at Connexions lt http cnx org content col10788 1 1 gt 98 CHAPTER 2 LECTURE NOTES const float FIXEDAMT 400 fixed dollar amount for higher rate amounts int main float taxable taxes cout lt Please type in the taxable income cin gt taxable if taxable lt CUTOFF taxes LOWRATE taxable else taxes HIGHRATE taxable CUTOFF FIXEDAMT set output format cout lt setiosflags ios fixed lt lt setiosflags ios showpoint lt lt setprecision 2 cout lt Taxes are lt taxes lt endl return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 99 START Input taxable taxable lt CUTOFF Ho taxes HIGHEATE taxable CUTOFF FIXEDAMT taxes LOWE ATE tazable Figure 2 26 Fidweilablede Eten plConnexions lt http cnx org content col10788 1 1 gt 100 CHAPTER 2 LECTURE NOTES The results of the above p
18. Available for free at Connexions lt http cnx org content col10788 1 1 gt 46 student objects in the array and then displays the objects in the array float height float weight public void getinfo void disinfo 3 void student getinfo cout lt Roll no cin gt rollno cout lt Age cin gt age cout lt Sex cin gt sex cout lt Height cin gt height cout lt Weight cin gt weight void student disinfo cout endl cout lt Roll no lt rollno lt endl cout lt Age lt age lt endl cout lt Sex lt sex lt endl cout lt Height lt height lt endl cout lt Weight lt weight lt endl void main student a cout lt Enter the following information lt endl a getinfo cout lt An Contents of class lt endl a disinfo CHAPTER 1 STUDENT MANUAL b Reorganize the program into an interface file and an implementation file and then run the program 2 2 Given the class student as defined in 2 1 a Write a complete C program in which the main function creates an array of size 10 to store student objects and prompts the user to enter the data for the 2 3 Given the class student as defined in 2 1 a Write a complete C program in which the main function performs the following tasks to declare a run time allocated array on the heap to contain the student objec
19. Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Introduction to Classes By Dr Duong Tuan Anh URL http cnx org content m27275 1 1 Pages 151 167 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Object Manipulation Inheritance By Dr Duong Tuan Anh URL http cnx org content m27280 1 1 Pages 168 184 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt ATTRIBUTIONS PROGRAMMING FUNDAMENTALS IN C This course is a comprehensive introductory course that is intended for students who have no background in computer programming This course provides basic knowledge and skills on programming with two important programming paradigms structured programming and object oriented programming The course covers structured programming paradigm in depth and introduces just some basics on object oriented programming The programming language used in this programming course is C About Connexions Since 1999 Connexions has been pioneering a global system where anyone can create course materials and make them fully accessible and easily reusable free of charge We are a Web based authoring teaching and learning environment open to anyone interested in education including students teachers professors and lifelong learners We connect ideas and
20. Write and run a program to print your first name on the first line your middle name on the second line and your last name on the third line using only cout statement 3 Write and run a program that performs the following steps e Assigning value to the radius r e Calculating the circumference using the formula C 2 pi r e Displaying the circumference 4 Given an initial deposit of money denoted as P in a bank that pays interest annually the amount of money at a time N years later is given by the formula Amount P 1 R N where R is the interest rate as a decimal number e g 6 5 is 0 065 Using this formula design write and run a program that determines the amount of money that will be available in 4 years if 10 000 is deposited in a bank that pays 7 interest annually 5 Write and run a program that performs the following steps e Assigning value to a Fahrenheit temperature f e Calculating the equivalent Celsius temperature C using the formula C 5 9 f 32 e Displaying the Celsius temperature C 1 2 3 Exercise 3 1 Write and run a program that performs the following steps e Reading the radius r from the keyboard e Calculating the circumference using the formula C 2 pi r e Displaying the circumference C 2 Write and run a program that performs the following steps e Reading a Fahrenheit temperature f from the keyboard e Calculating the equivalent Celsius temperature C using the formula C
21. function should accept the nine coefficients of a 3 X 3 matrix and return its determinant by calling det2 to calculate the required 2 X 2 determinants b Write and run a C program that accepts the nine coefficients of a 3 X 3 matrix in one main function passes these coefficients to det3 to calculate its determinant and then displays the calculated determinant 3 Your professor has asked you to write a C program that can be used to determine grades at the end of the semester For each student who is identified by an integer number between 1 and 60 four examination grades must be kept Additionally two final grade averages must be computed The first grade average is Available for free at Connexions lt http cnx org content col10788 1 1 gt 26 CHAPTER 1 STUDENT MANUAL simply the average of all four grades The second grade average is computed by weighting the four grades as follows the first grade gets a weight of 0 2 the second grade gets a weight of 0 3 the third grade a weight of 0 3 and the fourth grade a weight of 0 2 that is the final grade is computed as 0 2 gradel 0 3 grade2 0 3 grade3 0 2 grade4 Using this information you are to construct a 60 X 6 two dimensional array in which the the first four columns for the grades and the last two columns for the computed final grades The output of the program should be a display of the data in the completed array For test purposes the professor has provi
22. i total total nPt cout lt total lt endl return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 17 a Explain the meaning of the program b Run to determine the result of the program 11 Given the following function that can find the largest element in an integer array Notice that the function uses pointer arithmetic int findMax int vals int numEls 1 int j max vals for j 1 j lt numEls j if max lt vals j max vals j return max Write a C program that inputs an integer array and invokes the above function to find the largest element in that array and displays the result out 12 a Write a function named days that determines the number of days from the date 1 1 1900 for any date passed as a structure Use the Date structure struct Date int month int day int year In writing the days function use the convention that all years have 360 days and each month consists of 30 days The function should return the number of days for any Date structure passed to it b Rewrite the days function to receive a pointer to a Date structure rather than a copy of the complete structure c Include the function written in b in a complete C program 1 2 7 Exercise 7 1 Given the class student which is defined as follows class student private long int rollno int age char sex float height float weight public
23. j if i j continue else i gt j break else cout lt i lt j cout endl d i 1 start 1 Available for free at Connexions lt http cnx org content col10788 1 1 gt CHAPTER 1 STUDENT MANUAL 37 end 5 step 1 for start gt end cout lt i lt An start step end 2 5 Write a C program to convert Celsius degrees to Fahrenheit The Celsius degrees increase from 5 to 50 with the increment of 5 degrees The resultant table should be in the following form with appropriate headings Celsius degrees Fahrenheit degrees 5 XXNX 10 XXXX 15 XXXX 20 XXNX Figure 1 13 Fahrenheit 9 0 5 0 Celsius 32 0 2 6 Write a C program to compute the sum and average of N single precision floating point numbers entered by the user The value of N is also entered by the user 2 7 The value of Euler constant e is approximated by the following series e 1 1 1 1 2 1 3 1 4 1 5 4 Using this series write a C program to compute e approximately Use while structure that terminates when the difference between two successive approximations becomes less than 1 0E 6 2 8 Write a C program to calculate and display the amount of money accumulated in a saving bank account at the end of each year for 10 years when depositing 1000 in the bank The program has to display the amount of money when interest rates change from 6 to 12 with the increment 1 Th
24. lt iostream h gt int main 1 int i i 10 while i gt 1 1 cout lt i lt i subtract 1 from i F return 0 The output of the above program 1 987654321 2 5 4 Interactive While Loops Combining interactive data entry with the repetition capabilities of the while statement produces very adaptable and powerful programs 2 5 5 Example Class average program with counter controlled repetition include lt iostream h gt int main int total sum of grades gradeCounter number of grades entered grade one grade average average of grades initialization phase total 0 gradeCounter 1 prepare to loop while gradeCounter lt 10 loop 10 times cout lt Enter grade prompt for input cin gt grade input grade total total grade add grade to total Available for free at Connexions lt http cnx org content col10788 1 1 gt 112 2 5 CHAPTER 2 LECTURE NOTES gradeCounter gradeCounter 1 increment counter termination phase average total 10 integer division cout lt Class average is lt average lt endl return 0 The following is a sample run of the above program Enter grade 98 Enter grade 76 Enter grade 71 Enter grade 87 Enter grade 83 Enter grade 90 Enter grade 57 Enter grade 79 Enter grade 82 Enter grade 94 Class average is 81 5 1 Sentinels In programming data values used to i
25. num 3 cout lt Gamma else cout lt Other 2 5 Write a program that inputs the integer variable n consisting of 3 digits and displays it in ascending order of digits Example n 291 It should be displayed as 129 2 6 Write a program that inputs a date with correct month year and day components and then checks if the year is a leap year or not Show the result on the screen Available for free at Connexions lt http cnx org content col10788 1 1 gt 35 2 7 Write a program that can calculate the fee for a taxi ride The formula is as follows e The first kilometer costs 5000 e Each next 200m costs 1000 e If the distance is more than 30km then each next kilometer adds 3000 to the fee The program has to input the total distance in km and calculate the charge 2 8 Write a program that inputs a date consisting of day month and year components Check if the date is valid or not and if it is determine what its previous day is Example if the date is 01 01 2003 then its previous day is 31 12 2002 1 4 4 LAB SESSION 3 REPETITION STRUCTURES 1 4 4 1 1 OBJECTIVE The objectives of Lab 3 are to practice the C s repetition structures such as e for e while e do while 1 4 4 2 2 EXPERIMENT 2 1 Determine the result of the following code segment Explain this result int a 1 while a lt 4 cout lt This is the outer loop n att while a lt 25 break cout l
26. void getinfo void disinfo 3 void student getinfo cout lt Roll no cin gt rollno cout lt Age cin gt age cout lt Sex cin gt sex cout lt Height cin gt height Available for free at Connexions lt http cnx org content col10788 1 1 gt 18 CHAPTER 1 STUDENT MANUAL cout lt Weight cin gt weight void student disinfo cout lt end1l cout lt Roll no lt rollno lt endl cout lt Age K age lt endl cout lt Sex lt sex lt endl cout lt Height lt height lt endl cout lt Weight lt weight lt endl a Write the main program that creates an array of student objects accepts the data of n students and displays the data of all elements in this array The value of n is also entered by the user Remember to organize the program into one interface file and one implementation file and run them again 2 Construct a class named Account consisting of four private data members name of the customer account number balance and rate The public member functions include a constructor and five other member functions that are listed as follows to make a deposit to withdraw an amount from the balance to get the rate of interest to know the balance amount Include the class Account within a complete program The program should declare two objects of type Account and accept and display data for the objects to verify th
27. x1 The order of events when the computer executes an assignment statement is Evaluate the expression on the right hand side of the assignment operator Store the resultant value of the expression in the variable on the left hand side of the assignment operator Note 1 It s important to note that the equal sign in C does not have the same meaning as an equal sign in mathematics 2 Each time a new value is stored in a variable the old one is overwritten Example This program calculates the volume of a cylinder given its radius and height include lt iostream h gt int main float radius height volume radius 2 5 height 16 0 3This content is available online at lt http cnx org content m27210 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 82 CHAPTER 2 LECTURE NOTES volume 3 1416 radius radius height cout lt The volume of the cylinder is lt volume lt endl return 0 The output of the above program The volume of the cylinder is 314 16 We can write multiple assignments such as a b c 25 Because the assignment operator has a right to left associativity the final evaluation proceeds in the sequence c 25 b 25 c 25 2 3 1 1 Data Type Conversion across Assignment Operator Note that data type conversion can take place across assignment operators that is the value of the expression on the right side of
28. 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 95 The NOT operator is used to change an expression to its opposite state thus if the expression has any nonzero value true expression produces a zero value false If an expression is false expression is true and evaluates to false Example age gt 40 amp amp term lt 10 age gt 40 term lt 10 age gt 40 i j II a lt b complete The relational and logical operators have a hierarchy of execution similar to the arithmetic operators The following table lists the precedence of these operators in relation to the other operators we have used Level Operator Associativity 0I mi AA a bo A lunary ef wo Figure 2 22 Associativity of operators Right to left Left to right Left to right Left to right Left to right Left to right Left to right Eight to left Example Assume the following declarations char key m int i 5 j 7 k 12 double x 22 5 Expression 1 2 k 1 ta 1 b 25 gt x 1 0 key 1 gt 20 Equivalent expression 1 2 k 1 Ca D 25 gt x 1 0 key 1 gt 20 Figure 2 23 Results of expressions Value ore Interpretation false true true false Available for free at Connexions lt http cnx org content col10788 1 1 gt 96 CHAPTER 2 LECTURE NOTES By evaluating the expressions within parentheses firs
29. 2 Output Unit This unit takes information that has been processed by the computer and places it on various output devices to make information available for use outside the computer Most output from computer today is displayed on screens printed on paper or used to control other devices 2 1 1 1 3 Memory Unit The memory unit stores information Each computer contains memory of two main types RAM and ROM RAM random access memory is volatile Your program and data are stored in RAM when you are using the computer This content is available online at lt http cnx org content m27277 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 57 58 CHAPTER 2 LECTURE NOTES Central processing unit Secondary Memory storage Figure 2 1 Basic hardware units of a computer ROM read only memory contains fundamental instructions that cannot be lost or changed by the user ROM is non volatile 2 1 1 1 4 Arithmetic and Logic Unit ALU The ALU performs all the arithmetic and logic operations Ex addition subtraction comparison etc 2 1 1 1 5 Central Processing Unit CPU The unit supervises the overall operation of the computer The CPU tells the input unit when information should be read into the memory unit tell the ALU when information from the memory should be used in calculations and tells the output unit when to send information from the memory unit to certain output devices
30. AWG aly Figure 1 12 1 4 3 LAB SESSION 2 SELECTION STRUCTURES 1 4 3 1 1 OBJECTIVE The objective of Lab 2 is to practice C s selection structures such as e if e if else e switch 1 4 3 2 2 EXPERIMENT 2 1 Run the following program BEEP x07 include lt iostream h gt define BEEP cout lt a In int main int num cout lt Please enter a number Available for free at Connexions lt http cnx org content col10788 1 1 gt 34 CHAPTER 1 STUDENT MANUAL cin gt nun if num 1 BEEP else if num 2 BEEP BEEP else if num 3 BEEP BEEP BEEP else if num 4 BEEP BEEP BEEP BEEP else if num 5 BEEP BEEP BEEP BEEP BEEP return 0 2 2 Run the following program include lt iostream h gt define BEEP cout lt a In int main int num cout lt Please enter a number cin gt nun switch num 1 case 1 4 BEEP break case 2 4 BEEP BEEP break case 3 4 BEEP BEEP BEEP break case 4 4 BEEP BEEP BEEP BEEP break case 5 4 BEEP BEEP BEEP BEEP BEEP break return 0 2 3 Remove the break statements from the above program and then try it again and explain the result 2 4 Use switch statement to rewrite the following code segment if num 1 cout lt Alpha else if num 2 cout lt Beta else if
31. Focus on Problem Solving In this section we present a programming problem to further illustrate both the use of cin statements to accept user input data and the use of library functions for performing calculations Problem Approximating the Exponential Function The exponential function e x where e is known as Euler s number and has the value 2 718281828459045 appears many times in descriptions of natural phenomena The value of e x can be approximated using the following series 1 x 1 x 2 2 x 3 6 x 4 24 x 5 120 x 6 720 Using this polynomial as a base assume you are given the following assignment Write a program that approximates e raised to a user input value of x using the first four terms of this series For each approximation display the value calculated by C s exponential function exp the approximate value and the absolute difference between the two Make sure to verify your program using a hand calculation Once the verification is complete use the program to approximate e 4 Using the top down development procedure we perform the following steps 2 3 6 1 Step 1 Analyze the Problem The statement of the problem specifies that four approximations are to be made using one two three and four terms of the approximating polynomial respectively For each approximation three output values are required the value of produced by the exponential function the approximate value and the absolute differen
32. Private access specifiers do not prevent clients from seeing class code To prevent clients from seeing the details of how your code is written you place your class s interface code and implementation code in separate files The separation of classes into separate interface and implementation files is considered to be a funda mental software development technique since it allows you to hide the details of how your classes are written and makes it easier to modify programs The interface code refers to the data member and function member declarations inside a class s braces Interface code does not usually contain definitions for function members nor does it usually assigns values to the data members You create interface code in a header file with an h extension The implementation code refers to a class s function definitions and any code that assigns values to a class s data members In other words implementation code contains the actual member functions themselves and assigns values to data members You add implementation code to standard C source files with an extension of cpp As far as clients of a class are concerned changes in the class implementation do not affect the client as long as the class interface originally provided to the client is unchanged All that a client needs to know to use the class correctly should be provided by the interface Available for free at Connexions lt http cnx org content col10788 1 1 gt
33. Stocks pHeapStock new Stocks pHeapStock gt iNumShares 200 pHeapStock gt dPurchasePricePerShare 32 5 pHeapStock gt dCurrentPricePerShare 48 25 cout lt totalValue pHeapStock lt endl return 0 The output of the above program 3250 9650 Available for free at Connexions lt http cnx org content col10788 1 1 gt 162 CHAPTER 2 LECTURE NOTES In the above program the new operator in the statement Stocks pHeapStock new Stocks invokes the constructor of the Stocks class to create a Stocks object on the heap and returns a pointer which is assigned to the pointer variable pHeapStock Note 1 The totalValue function is not a function member of the Stocks class Rather it is a function that is available to the entire program 2 When declaring and using pointers and references to class objects follow the same rules as you would when declaring and using pointers and references to structures You can use the indirect member selection operator gt to access class members through a pointer to an object either on stack or on the heap As we will see using new and delete offers other benefits as well Tn particular new invokes the constructor and delete invokes the class destructor 2 7 5 Pointers as Class Members A class can contain any C data type Thus the inclusion of a pointer variable in a class should not seem surprising In some cases pointers as class members are advantageous For exa
34. at Connexions lt http cnx org content col10788 1 1 gt 60 CHAPTER 2 LECTURE NOTES 00101010 000000000001 000000000010 10011001 000000000010 000000000011 A machine language instruction consists of two parts an instruction part and an address part The instruction part opcode is the leftmost group of bits in the instruction and tells the computer the operation to be performed The address part specifies the memory address of the data to be used in the instruction Assembly languages perform the same tasks as machine languages but use symbolic names for opcodes and operands instead of 1s and Os LOAD BASEPAY ADD OVERPAY STORE GROSSPAY Since computers can only execute machine language programs an assembly language program must be translated into a machine language program before it can be executed on a computer Assembly Translation Machine language program language program assembler program Figure 2 3 Assembly translation Machine languages and assembly languages are called low level languages since they are closest to com puter hardware 2 1 1 2 2 High level Programming Languages High level programming languages create computer programs using instructions that much easier to under stand than machine or assembly language instructions Programs written in a high level language must be translated into a low level language using a program called a compiler A compiler translates programming code into a low lev
35. at the end of the nth year tinclude lt iostream h gt include lt iomanip h gt tinclude lt math h gt int main 1 double amount principal 1000 0 rate 0 05 cout lt Year lt setw 21 lt lt Amount on deposit lt endl cout lt setiosflags ios fixed ios showpoint lt setprecision 2 for int year 1 year lt 10 year amount principal pow 1 0 rate year cout lt setw 4 lt year lt setw 21 lt amount lt endl return 0 The output of the above program YearAmount on deposit 1 1050 00 1102 50 1157 62 1215 51 1276 28 1340 10 1407 10 1477 46 1551 33 1628 89 A a O Available for free at Connexions lt http cnx org content col10788 1 1 gt 2 5 8 Nested Loops In many situations it nested loops 2 5 9 Example include lt iostream int main const int MAXI const int MAXJ int i j is convenient to use a loop contained within another loop h gt 5 4 for i 1 i lt MAXI i start of outer loop cout lt Ani is now lt i lt endl for j 1 j lt MAXJ j start of inner loop cout lt j lt j end of inner loop end of outer loop cout lt endl return 0 F The output of the above program i is now 1 j 1j 2j 3j 4 i is now 2 j 1j 2j 3j 4 iis now 3 j 1j 2j 3j 4 i is now 4 j 1j 2j 3j 4 i is now 5 j 1j 2j 3j 4 2 5 10 Do While Loops The
36. by 3 0 Module Labworks By Dr Duong Tuan Anh URL http cnx org content m27278 1 1 Pages 31 56 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Introduction to Computers and Programming By Dr Duong Tuan Anh URL http cnx org content m27277 1 1 Pages 57 70 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Basic Elements in C By Dr Duong Tuan Anh URL http cnx org content m27205 1 1 Pages 70 81 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 185 186 Module Completing the Basics By Dr Duong Tuan Anh URL http cnx org content m27210 1 1 Pages 81 94 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Selection Statements By Dr Duong Tuan Anh URL http cnx org content m27291 1 1 Pages 94 108 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Repetition Statements Arrays and Structured Programming By Dr Duong Tuan Anh URL http cnx org content m27289 1 1 Pages 108 129 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Functions and Pointers By Dr Duong Tuan Anh URL http cnx org content m27259 1 1 Pages 129 151 Copyright
37. by passing a pointer Example include lt iostream h gt struct Employee declare a global type int idNum double payRate double hours 3 double calcNet Employee function prototype int main Employee emp 6782 8 93 40 5 double netPay netPay calcNet amp emp pass an address cout lt The net pay for employee lt lt emp idNum lt is lt netPay lt endl return 0 double calcNet Employee pt pt is a pointer to a structure of Employee type return pt gt payRate pt gt hours The output is The net pay for employee 6782 is 361 665 2 6 11 The Typedef Declaration Statement The typedef declaration statement permits us to construct alternate names for an existing C data type name The syntax of a typedef statement is typedef data type new type name For example the statement typedef float REAL make the name REAL a synonym for float The name REAL can now be used in place of the term float anywhere in the program after the synonym has been declared The definition REAL val is equivalent to float val Available for free at Connexions lt http cnx org content col10788 1 1 gt 151 Example Consider the following statement typedef struct char name 20 int idNum EMPREC The declaration EMPREC employee 75 is equivalent to struct char name 20 int idNum employee 75 Example Consider the following statement typ
38. circle_1 cylinder_1 assign a cylinder to a Circle cout lt nThe area of circle_1 is now lt circle_1 calcval lt endl return 0 a Run the program in a Visual C environment and determine the output of the program b Modify the above program by deriving a subclass named Sphere from the base class Circle Member functions of Sphere class include a constructor and a function named calcval which returns the volume of the sphere The formula to compute the volume of a sphere is 4 3 pi R R R And modify the main function in order that it invokes all the member functions of the Sphere class 2 3 Define a base class named Rectangle that contains two data members length and width From this class derive a subclass named Box which includes one more data member depth Two member functions of the base class are the constructor and a function named area which returns the area of the rectangle The derived class Box should have its own constructor and an overriding function area which returns the surface area of the box and the function volume that returns the volume of the box Write a complete C program which invokes all the member functions of the two above classes Besides the main function also invokes the area function of the base class to apply to a Box object Explain the result of this function call 2 4 a Construct a class named CPoint that consists of the following data members and member functions x
39. cout lt The memory address of pPrimeInterest is lt amp pPrimeInterest lt endl return 0 The output of the above program The value of pPrimelnterest is 0 065 The memory address of pPrimelnterest is 0x0066FD74 The value of pPrimelnterest is 0 070 The memory address of pPrimelnterest is 0x0066FD74 Note The above program declares the pPrimelnterest pointer on the heap and assigns to it a value of 0 065 Then the delete operator deletes the heap address that stores the value of 0 065 Finally a new value is added to the heap address You can see that after the delete statement executes the pPimelnterest pointer still point to the same memory address Example In the following program we can create some objects of the class Stocks on the stack or on the heap and then manipulate them tinclude lt iostream h gt class Stocks public int iNumShares double dPurchasePricePerShare double dCurrentPricePerShare 3 double totalValue Stocks pCurStock double dTotalValue dTotalValue pCurStock gt dCurrentPricePerShar pCurStock gt iNumShares return dTotalValue F int main allocated on the stack with a pointer to the stack object Stocks stockPick Stocks pStackStock amp stockPick pStackStock gt iNumShares 500 pStackStock gt dPurchasePricePerShare 10 785 pStackStock gt dCurrentPricePerShare 6 5 cout lt totalValue pStackStock lt endl allocated on the heap
40. data type or before the variable name Examples int pFirstPtr int pSecondPtr You use the address of operator amp to assign to the pointer variable the memory address of another variable Examples double dPrimeInterest double pPrimeInterest pPrimelnterest amp dPrimeInterest Once you assign the memory address of a variable to a pointer to access or modify the contents of the variable pointed to by the pointer you precede a pointer name in an expression with the de reference operator Example The program in this example demonstrates the pointer operators Memory locations are output in this example as hexadecimal integers tinclude lt iostream h gt int main int a int aPtr aPtr is a pointer to an integer a 7 aPtr amp a aPtr set to address of a cout lt The address of a is lt ka lt lt AnThe value of aPtr is lt aPtr cout lt n nThe value of a is lt a lt lt AnThe value of aPtr is lt aPtr Available for free at Connexions lt http cnx org content col10788 1 1 gt 147 lt endl return 0 The output of the above program The address of a is Ox0065FDF4 The value of aPtr is 0x0065FDF4 The value of a is 7 The value of aPtr is 7 Notice that the address of a and the value of aPtr are identical in the output confirming that the address of a is assigned to the pointer variable aPtr 2 6 10 1 Calling Functions by Referenc
41. displays an error message for the grades that is less than 0 or more than 100 tinclude lt iostream h gt int main int grade cout lt nPlease enter a grade cin gt grade if grade lt 0 grade gt 100 cout lt The grade is not valid n return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 102 CHAPTER 2 LECTURE NOTES 2 4 5 Nested If Statement An if else statement can contain simple or compound statements Any valid C statement can be used including another if else statement Thus one or more if else statements can be included within either part of an if else statement The inclusion of one or more if statement within an existing if statement is called a nested if statement 2 4 5 1 The if else Chain When an if statement is included in the else part of an existing if statement we have an if else chain if expression 1 statement 1 else if expression 2 statement 2 else statement 3 2 4 6 Example The following program calculates the monthly income of a computer salesperson using the following com mission schedule Monthly Sales Income Greater than or equal to 50 000 375 plus 16 of sales Less than 50 000 but greater than or equal to 40 000 350 plus 14 of sales Less than 40 000 but greater than or equal to 30 000 325 plus 12 of sales Less than 30 000 but greater than or equal to 20 000 300 plus 9 of sales Less than 20 000 but greater tha
42. does not change you should always use the const keyword to declare the variable as a constant To declare an object as constant place the const keyword in front of the object declaration Example const Date currentDate Note Constant data members in a class can not be assigned values using a standard assignment state ment Therefore you must use an initialization list to assign initial values to constant data members Available for free at Connexions lt http cnx org content col10788 1 1 gt 174 CHAPTER 2 LECTURE NOTES Example Payroll h class Payroll public Payroll private const double dFedTax const double dStateTax Payroll cpp include Payroll h include lt iostream h gt Payroll Payroll dFedTax 0 28 dStateTax 0 05 4 3 In contrast the following code raises several compiler errors since constant data members must be ini tialized in an initialization list Example Payroll h class Payroll public Payroll private const double dFedTax const double dStateTax 3 Payroll cpp include Payroll h include lt iostream h gt Payroll Payroll 1 dFedTax 0 28 illegal dStateTax 0 05 illegal 2 8 3 1 Constant Functions Another good programming technique is to use the const keyword to declare get functions as constant function Get functions are function members which do not modify data members The const keyword makes your program
43. double y 0 4 this gt x x this gt y y void move double dx double dy x x dx y ytdy Point O cout lt Destructor Point called Derive from the class Point another class named Point _Derivel class which is defined as follows class Point_Derive1 public Point private double z public Point_Derivel O void move double dx double dy double dz Point_Derivel Available for free at Connexions lt http cnx org content col10788 1 1 gt 53 3 a List out the data members and member functions of the Point_Derivel class And determine the access specifier of each of these members Derive from the class Point another class named Point _Derive2 class which is defined as follows class Point_Derive2 protected Point private double z public Point_Derivel O void move double dx double dy double dz Point_Derive1 b List out the data members and member functions of the Point_Derive2 class And determine the access specifier of each of these members Derive from the class Point another class named Point _Derive3 class which is defined as follows class Point_Derive3 private Point private double z public Point_Derivel O void move double dx double dy double dz Point_Derivel c List out the data members and member functions of the Point _Derive3 class And determine the access specifier of each of these members 2 2 Given the following program in w
44. employ the symbols shown in the Figure below Available for free at Connexions lt http cnx org content col10788 1 1 gt Terminal Input output po Flow lines eS Decision lt gt Connector Predefined process al Figure 2 5 Flowchart symbols The meaning of each flowchart symbol is given as follows Available for free at Connexions lt http cnx org content col10788 1 1 gt 65 66 CHAPTER 2 LECTURE NOTES Terminal Indicates the beginning or end of an algorithm Input Output Indicates an input or output operation Process Indicates computation or data manipulation Flow lines Connects the flowchart symbols and indicates the logic flow Decision Indicates a program branch point Connector Indicates an entry to or exit from another part of the flowchart or a connection point Predefined process Indicates a predefined process as in calling a function Figure 2 6 Description of flowchart symbols To illustrate an algorithm we consider the simple program that computes the pay of a person The flowchart for this program is given in the Figure below Note Name Hours and Pay are variables in the program Available for free at Connexions lt http cnx org content col10788 1 1 gt 67 Input Name Hours Rate Calculate Pay Hours x Rate Display Name Pay Figure 2 7 A sample flowchart 2 1 4 2 Algorithms in pseudo code You also can use English like phases
45. end of every main function C keyword return is one of several means we will use to exit a function When the return statement is used at the end of main as shown here the value 0 indicates that the program has terminates successfully 2 2 1 3 The cout Object The cout object is an output object that sends data given to it to the standard output display device To send a message to the cout object you use the following pattern cout lt text The insertion operator lt lt is used for sending text to an output device The text portion of the statement is called a text string Text string is text that is contained within double quotation marks Consider the following program Example include lt iostream h gt int main cout lt Hello world return 0 The output of the above program Hello world 2 2 1 4 Preprocessor Directives Before you can use any runtime libraries in your program you must first add a header file into your program using the include statement A header file is a file with an extension of h that is included as part of a program and notifies the compiler that a program uses run time libraries One set of classes you will use extensively in the next few chapters is the iostream classes The iostream classes are used for giving C programs input capabilities and output capabilities The header file for the iostream class is iostream h The include statement is one of the se
46. executed from several location in a program simply by calling the function 2 6 1 1 Defining a Function The lines that compose a function within a C program are called a function definition The syntax for defining a function is data_type name_of_function parameters statements A function definition consists of four parts A reserved word indicating the return data type of the function s return value The function name Any parameters required by the function contained within parentheses The function s statements enclosed in curly braces Example The following function determines the largest integer among three parameters passed to it int maximum int x int y int z This content is available online at lt http cnx org content m27259 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 130 CHAPTER 2 LECTURE NOTES 1 int max x if y gt max max y if z gt max max Z return max You designate a data type for function since it is common to return a value from a function after it executes General format of a function is described below function header line Function header named constants variable declarations Functionbody any other statements Figure 2 36 General format of a function Variable names that will be used in the function header line are called formal parameters 2 6 1 2 How to Call Functions
47. functions Although member functions are usually defined in an implementation file they can also be defined in an interface file Functions defined inside the class body in an interface file are called inline functions Example class Stocks public double getTotalValue int iShares double dCurPrice double dCurrentValue iNumShares iShares dCurrentPricePerShare dCurPrice dCurrentValue iNumShares dCurrentPricePerShare return dCurrentValue private int iNumShares Available for free at Connexions lt http cnx org content col10788 1 1 gt 155 double dPurchasePricePerShare double dCurrentPricePerShare F Stocks NumsShares dPurchasePricePerShare dCurrentPricePerShare getT otalV alue Figure 2 41 Diagram of class stock 2 7 3 2 Member functions in Implementation File Member function definitions are always placed in the implementation file In the example below for the class Stocks the definition of the member function get Total Value is placed in the source code file stocks cpp in which the main program is also included Example stocks h interface section if defined STOCKS_H define STOCKS_H class Stocks public double getTotalValue int iShares double dCurPrice private int iNumShares double dPurchasePricePerShare double dCurrentPricePerShare endif stocks cpp implementation section include
48. given the default value of 1 is used For example the declaration Elevator a 7 Initializes the variable a currentFloor to 7 whereas the declaration Elevator a uses the default argument value and initializes the variable a currentFloor to 1 The request function defined in the implementation section is more complicated and provides the class s primary service Essentially this function consists of an if else statement having three parts If an incorrect service is requested no action is taken if a floor above the current position is selected the elevator is moved up and if a floor below the current position is selected the elevator is moved down For movement up or down the function uses a while loop to increment or decrement the position one floor at a time and report the elevator s movement using a cout statement The following program includes this class in a working program include lt iostream h gt const int MAXFLOOR 15 class declaration class Elevator private int currentFloor public Elevator int 1 constructor void request int 3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 166 CHAPTER 2 LECTURE NOTES implementation section Elevator Elevator int cfloor currentFloor cfloor void Elevator request int newfloor if newfloor lt 1 newfloor gt MAXFLOOR newfloor currentFloor doing nothing else if mewflo
49. greatly exceeded budgets and finished products were unreliable People began to realize that software development was a far more complex activity than they had imagined Research activity in the 1960s resulted in the evolution of structured programming a discipline approach to writing programs that are clearer than unstructured programs easier to test and debug and easier to modify Chapter 5 discusses the principles of structured programming Chapters 2 through 6 develop many structured programs One of the more tangible results of this research was the development of the Pascal programming lan guage by Niklaus Wirth in 1971 Pascal was designed for teaching structured programming in academic environments and rapidly became the preferred programming languages in most universities In the 1980s there is a revolution brewing in the software community object oriented programming Objects are essentially reusable software components that model items in the real world Software developers are discovering that using a modular object oriented design and implementation approach can make software development groups much more productive than with previous popular programming techniques such as structured programming Object oriented programming refers to the creation of reusable software objects that can be easily in corporated into another program An object is programming code and data that can be treated as an individual unit or component Data refers
50. in C can made up of any combination of letters digits or underscores selected according to the following rules Identifiers must begin within an uppercase or lowercase ASCII letter or an underscore _ You can use digits in an identifier but not as the first character You are not allowed to use special characters such as amp or e Reserved words cannot be used for variable names Examples DegToRadintersectaddNums FindMax1_densityslope Examples of invalid identifiers 1AB3 E 6 while Note C is a case sensitive language i e upper and lower case characters are treated as different letters 2This content is available online at lt http cnx org content m27205 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 71 2 2 1 2 The main function The main function is a special function that runs automatically when a program first executes All C programs must include one main function All other functions in a C program are executed from the main function The first line of the function in this case int main is called a function header line The function header line contains three pieces of information 1 What type of data if any is returned from the function 2 The name of the function 3 What type of data if any is sent into the function int main program statements in here return 0 Note The line return 0 is included at the
51. in the six first chapters and Project 2 aims to apply those of 2 last chapters Due date of each project must be respected Unless it is extremely exceptional late submission is not accepted 4nqvhung cse hcmut edu vn 5IhhaiGcse hcmut edu vn 6 nxminh cse hcmut edu vn nvdoanOcse hcmut edu vn Available for free at Connexions lt http cnx org content col10788 1 1 gt 1 1 6 COURSE DURATION This course is one semester long meeting from February 18th through May 29th Our semester is 16 weeks long The course meets for three period lecture session and two period lab session It consists of 42 periods for lectures and 28 periods for lab works 1 period 45 minutes 1 1 7 COURSE OUTLINE Chapter 1 Introduction to Computer and Programming 1 Hardware and software 2 Programming languages 3 Problem solving and software development 4 Algorithms Chapter 2 Basic Elements in C Program structures Data types and operators Variables and variable declarations Integer quantifiers Focus on problem solving id Chapter 3 Completing the Basics Assignment operators Formatting numbers for program output Using mathematical library functions Program input using the cin object Symbolic constants E Chapter 4 Selection Structures Selection criteria The if else statement Nested if statement The switch statement The enum specifier CUS ee D Chapter 5 Repetition Structures Arrays and Structured Program
52. int fibonacci int n if n lt 1 return 1 return fibonacci n 1 fibonacci n 2 The output of the above program Enter a number 4 The fibonacci of 4 is 5 2 6 8 2 Recursion vs Iteration In this section we compare recursion and iteration and discuss why the programmer might choose one approach over the other in a particular situation Both iteration and recursion are based on a control structure Iteration uses a repetition structure recursion uses a selection structure Both iteration and recursion involve repetition Iteration explicitly used a repetition structure while recursion achieves repetition through repeated function calls Iteration and recursion both involve a termitation test Iteration terminates when the loop continuation condition fails recursion terminates when a base case is recognized Iteration with counter controlled repetition and recursion both gradually approach termination Iteration keeps modifying a counter variable until the counter assumes a value that makes the loop continuation condtion falil recursion keeps producing simpler versions of the original problem until the base case is reached Both iteration and recursion can occur indefinitely An infinite loop occurs with iteration if the loop continuation test never become false infinite recursion occurs if the recursion step does not reduce the problem each time in a manner that converges on the base case Recursion has many inconveniences It r
53. iostream h gt include lt math h gt class point 4 private int x y public point int xnew int ynew This content is available online at lt http cnx org content m27280 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 169 inline int getx return x inline int gety return y J double finddist point a point b 3 point point int xnew ynew parameterized constructor x xnew y ynew double point finddist point a point b double temp temp b y a y b y a y b x a x b x a x return sqrt temp int main double value point aobj 4 3 bobj 0 1 value aobj finddist aobj bobj cout lt Distance between two points value lt endl return 0 The output of the above program Distance between two points 5 656855 Constructor functions can be overloaded just like other functions This means that you can instantiate different versions of a class depending on the supplied parameters Being able to overload a constructor function allows you to instantiate an object in multiple ways Example Payroll h class Payroll public Payroll Payroll double dFed Payroll double dFed double dState private double dFedTax double dStateTax Payroll cpp include Payroll h include lt iostream h gt Payroll Payroll dFedTax 0 28 dSta
54. iostream h gt int main char c short s int i long 1 float f double d long double 1d cout lt sizeof c K sizeof c lt tsizeof char lt sizeof char lt nsizeof s lt sizeof s lt tsizeof short lt sizeof short lt nsizeof i lt sizeof i lt tsizeof int lt sizeof int lt lt nsizeof 1 lt sizeof 1 lt tsizeof long lt sizeof long lt nsizeof f lt sizeof f lt tsizeof float lt sizeof float lt nsizeof d lt sizeof d lt tsizeof double lt sizeof double lt endl return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 80 CHAPTER 2 LECTURE NOTES The output of the above program sizeof c 1sizeof char e sizeof s ee sizeof i 4sizeof int sizeof 1 4sizeof long sizeof f 4sizeof float sizeof d pee area 2 2 5 Focus on Problem Solving In this section the software development procedure presented in the previous chapter is applied to a specific programming problem This procedure can be applied to any programming problem to produce a completed program and forms the foundation for all programs developed in this text Problem Telephone Switching Networks A directly connected telephone network is one in which all telephones in the network are connected directly and do not require a central switching station to establish calls
55. less than 1 0E 6 8 The Fibonacci sequence is 0 1 1 2 3 5 8 13 where the first two terms are 0 and 1 and each term thereafter is the sum of the two preceding terms that is Fib n Fib n 1 Fib n 2 Using this information write a program that calculates the nth number in a Fibonacci sequence where n is entered into the program by the user 9 Write and run a program that inputs an array of N real numbers and then computes the average value of the array elements N should be an input parameter 10 Write and run a program that inputs an array of N real numbers and then finds the largest element in the array N should be an input parameter 11 Write and run a program that inputs an integer matrix of order n and transposes it and then prints it out Transposing a square matrix means a i j lt gt a j i for all i j 12 The Fibonacci sequence is 0 1 1 2 3 5 8 13 where the first two terms are 0 and 1 and each term thereafter is the sum of the two preceding terms Write a program that computes and stores the Fibonacci sequence in an integer array F such that Fli will store the ith number in a Fibonacci sequence The size of the array is an input parameter which is entered by the user 13 Write a program that stores the following hourly rates in an array name hourly_ rates 9 5 6 4 12 5 5 5 10 5 Your program should also create two arrays named working hours and wages each capaple of storing five double pr
56. lt endl return 0 The output of the program is Available for free at Connexions lt http cnx org content col10788 1 1 gt 129 32479 Abrams E G T2 33623 Bohm F ad 34145 Donaldson 5 5 56 3598 Ernst T 5 43 36203 Gwodz K of Figure 2 35 Output of program 2 6 Functions and Pointers 2 6 1 Function and Parameter Declarations In C all subprograms are referred to as functions A function allows you to treat a related group of C statements as a single unit The programmer can write functions to define specific tasks that could be used at many points in a program Functions allow the programmer to modulize a program All variables declared in function definitions are local variables they are known only in the function in which they are defined Most functions have a list of parameters that provide the means for communicating information between functions There are several motivations for dividing a program into functions The divide and conquer approach makes program development more manageable Another motivation is software reusability using existing functions as building blocks to create new programs Software reusability is a major factor in object oriented programming With good function naming and definition programs can be created from standardized functions that accomplish specific tasks A third motivation is to avoid repeating code in a program Packing code as a function allows the code to be
57. negative and before calculating the reciprocal check that the number is not zero 1 2 5 Exercise 5 1 Write and run a program that reads a positive integer value for K and then computes K 1 2 3 K 1 K and displays the result out 2 Write and run a program that computes x raised to the power n by repetitive multiplication Then modify your program to calculate x raised to the power n 3 Write and run a program to tabulate sin x cos x and tan x for x 5 10 15 85 degrees Notice that you have to convert x from degrees to radians before using standard functions sin x cos x tan x 4 Write and run a program to read a list of real numbers and then find the number of positive values and the number of negative ones among them The number of entries is also entered by the user 5 Write and run a program to compute the sum of square of the integers from 1 to N where N is an input parameter 6 Write and run a program to compute the value of pi using the series for approximating pi 4 1 1 3 1 5 1 7 1 n 2 n 1 Hint Use a while loop that terminates when the difference between two successive approximations is less than 1 0E 6 7 The value of Euler s number e can be approximated using the formula e 1 1 1 1 2 1 3 1 4 1 n Using this formula write a program that approximates the value of e using a while loop that terminates when the difference between two successive approximations is
58. of individuals customers full time employees part time employees and suppliers all have names and numbers as well Now the company wants to define the Customer class which inherits the members of the Person class The class header declaration for a derived class Customer which inherits the characteristics of the Person class is as follows class Customer public Person eke other statements go here The access modifiers and base class names following the colon in a class s header declaration statement are called the base list Here the public inheritance is used since it is most common The Customer class contains all the members of Person because it inherits them In other words every Customer object has an idNum lastName and firstName just as a Person object does Additionally you can define the Customer class to include an additional data member balanceDue and two more functions setBalDue and outputBalDue The base class Person and the derived class Customer can be graphically represented as in the figure below The arrow in the above class diagram points from the derived class to the base class Available for free at Connexions lt http cnx org content col10788 1 1 gt 177 Person class Class specific members idNum lastName firstName void setFields void outputData Customer class Inherited from Person class idNum lastName firstName void setFields void outputData class spec
59. one disk from column A to column C A gt B C gt B AC B gt A B gt C A gt C Column A Column B Column C Figure 1 11 Hanoi Tower puzzle 9 a Create a class named Fractions having two integer data members named for a fraction s numerator and denominator The class s default constructor should provide both data members with default values of 1 if no explicit user initialization is provided Additionally provide member functions for displaying an object s data values Also provide the class with the member functions that are capable of adding subtracting multiplying and dividing two Fraction objects according to the following formulas Sum of two fractions a b c d ad cb bd Difference of two fractions a b c d ad cb bd Product of two fractions a b X c d ac bd Division of two fractions a b c d ad cb b Include the class written for a in a working C program that tests each of the class s member functions 10 A stack is an ordered collection of data items in which access is possible only at one end called the top of the stack with the following basic operations 1 Push add an element to the top of the stack 2 Pop remove and return the top element of the stack 3 Check if the stack is empty 4 Check if the stack is full It would be nice to have a stack class because we could then use it to easily develop some applications which need stack data structure a For the moment assume tha
60. org content col10788 1 1 gt 179 int main 1 Customer cust cust setFields 215 Santini Linda cust outputData cust setBalDue 147 95 cust outputBalDue return 0 The output of the above program ID 215 Name Linda Santini Balance due 147 95 Of course a Customer object can use its own class member functions setBalDue and outputBalDue Additionally it can use the Person functions setFields and outputData as if they were its own 2 8 4 3 Class Hierarchy Derived classes themselves can serve as base classes for other derived classes When you build a series of base classes and derived classes the chain of inherited classes is known as a class hierarchy Figure below shows a simple inheritance hierarchy A typical company has hundreds of persons An important subset of these persons is a set of employees Employees are either workers or secretaries Person class Employee class Figure 2 45 Person class hierarchy Each class in a class hierarchy cumulatively inherits the class members of all classes that precede it in the hierarchy chain A class that directly precedes another class in a class hierarchy and is included in the derived class s base list is called the direct base class A class that does not directly precede another class in a class hierarchy and that not included in the derived class s base list is called the indirect base class
61. output line Calculate the second approximation Calculate the second difference Available for free at Connexions lt http cnx org content col10788 1 1 gt 92 CHAPTER 2 LECTURE NOTES Print the second output line Calculate the third approximation Calculate the third difference Print the third output line Calculate the fourth approximation Calculate the fourth difference Print the fourth output line To ensure that we understand the processing used in the algorithm we will do a hand calculation The result of this calculation can then be used to verify the result produced by the program that we write For test purposes we use a value of 2 for x which causes the following approximations Using the first term of the polynomial the approximation is e2 1 Using the first two terms of the polynomial the approximation is er2 1 2 1 3 Using the first three terms of the polynomial the approximation is e 2 3 2 2 2 5 Using the first four terms of the polynomial the approximation is e 2 5 2 3 6 6 3333 Notice that the first four terms of the polynomial it was not necessary to recalculate the value of the first three terms instead we used the previously calculated value 2 3 6 3 Step 3 Code the Algorithm The following program represents a description of the selected algorithm in C This program approximates the function e raised to the x power using one two three and four terms
62. problem write a program that accepts a string from the user and prints the string backward Hint Use a character stack Available for free at Connexions lt http cnx org content col10788 1 1 gt Chapter 2 LECTURE NOTES 2 1 Introduction to Computers and Programming 2 1 1 Hardware and Software A computer is a device capable of performing computations and making logical decisions at speeds millions and even billions of times faster than human beings can For example many of today s personal computers can perform hundreds of millions of additions per second Computers process data under the control of sets of instructions called computer programs These computer programs guide the computer through orderly sets of actions specified by people called computer programmers A computer is comprised of various devices such as the keyboard screen mouse disks memory CD ROM and processing units that are referred to as hardware The computer programs that run on a computer are referred to as software 2 1 1 1 Computer Hardware Almost every computer may be seen as being divided into six logical units Figure 1 illustrates the main computer components 2 1 1 1 1 Input Unit This unit obtains information from various input devices and places this information at the disposal of the other units so that the information may be processed The information is entered into computers today through keyboards and mouse devices 2 1 1 1
63. program that reads a character and writes out a name corresponding to the character if the character is F or f then the name is Frank if the character is C or fc then the name is Christine if the character is A or a then the name is Amanda if the character is B or b then the name is Bernard otherwise the name is just the character 2 Write and run a program that reads an angle expressed in degrees and states in which quadrant the given angle lies An angle A is said to be in the first quadrant if it is in the range 0 lt A lt 90 second quadrant if it is in the range 90 lt A lt 180 third quadrant if it is in the range 180 lt A lt 270 and fourth quadrant if it is in the range 270 lt A lt 360 3 Write and run a program that reads a month from the user and displays the number of days in that month 4 Write and run a program that reads a numeric grade from a student and displays a corresponding character grade for that numeric grade The program prints A for exam grades greater than or equal to 90 B for grades in the range 80 to 89 C for grades in the range 70 to 79 D for grades in the range 60 to 69 and F for all other grades 5 Write and run a program that reads a marriage code one character and writes out a message corresponding to the character if the character is M or m then the message is Individu
64. projects o Sep CE ort Analyze the problem 10 Develop a solution 20 Code the solution 20 Test and correct the program 50 Figure 2 4 Four development and design steps in commercial programming projects 2 1 3 2 Phase II Documentation Documentation requires collecting critical documents during the analysis design coding and testing There are five documents for every program solution Program description Algorithm development and changes Well commented program listing Sample test runs User s manual 2 1 3 3 Phase III Maintenance This phase is concerned with the ongoing correction of problems revisions to meet changing needs and the addition of new features Maintenance is often the major effort and the longest lasting of the three phases While development may take days or months maintenance may continue for years or decades Available for free at Connexions lt http cnx org content col10788 1 1 gt 64 CHAPTER 2 LECTURE NOTES 2 1 4 Algorithms An algorithm is defined as a step by step sequence of instructions that describes how the data are to be processed to produce the desired outputs In essence an algorithm answers the question What method will you use to solve the problem You can describe an algorithm by using flowchart symbols By that way you obtain a flowchart which is an outline of the basic structure or logic of the program 2 1 4 1 Flowchart Symbols To draw flowchart we
65. return 0 The output of the above program The value of number is 42 8 2 6 6 Variable Storage Class The lifetime of a variable is referred to as the storage duration or storage class The four available storage classes are auto static extern and register If one of these class names is used it must be placed before the variable s data type in a declaration statement Examples auto int num static int miles register int dist extern float price extern float yld 2 6 6 1 Local Variable Storage Classes Local variables can only be members of the auto static or register storage classes If no class description is included in the declaration statement the variable is automatically assigned to the auto class 2 6 6 1 1 Automatic Variables The term auto is short for automatic Automatic storage duration refers to variables that exist only during the lifetime of the command block such as a function that contains them 2 6 6 1 2 Example tinclude lt iostream h gt int funct int function prototype int main 1 int count value count is a local auto variable for count 1 count lt 10 count value funct count cout lt count lt lt lt value lt endl return 0 int funct int x int sum 100 sum is a local auto variable Available for free at Connexions lt http cnx org content col10788 1 1 gt 136 CHAPTER 2 LECTURE NOTES sum x return sum The outpu
66. some well known operating systems include MS DOS UNIX and MS WINDOWS Many operating systems allow user to run multiple programs Such operating systems are called multitasking systems Beside operating systems language translators are also system softwares 2 1 2 High Level Programming Languages Because of the difficulty of working with low level languages high level languages were developed to make it easier to write computer programs High level programming languages create computer programs using instructions that are much easier to understand than machine or assembly language code because you can use words that more clearly describe the task being performed Examples of high level languages include FORTRAN COBOL BASIC PASCAL C C and JAVA C and C are two separate but related programming languages In the 1970s at Bell Laboratories Dennis Ritchie and Brian Kernighan designed the C programming language In 1985 at Bell Laboratories Bjarne Stroutrup created C based on the C language C is an extension of C that adds object oriented programming capabilities 2 1 2 1 What is Syntax A programming language s syntax is the set of rules for writing grammatically correct language statements In practice this means a C statement with correct syntax has a proper form specified for the compiler As such the compiler accepts the statement and does not generate an error message 2 1 2 2 The C Programming Language C was used excl
67. stocks h include lt iostream h gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 156 CHAPTER 2 LECTURE NOTES double Stocks getTotalValue int iShares double dCurPrice double dCurrentValue iNumShares iShares dCurrentPricePerShare dCurPrice dCurrentValue iNumShares dCurrentPricePerShare return dCurrentValue int main Stocks stockPick cout lt stockPick getTotalValue 200 64 25 lt endl return 0 Output of the above program 12850 Note The format of member functions included in the implementation section is as follows return type Class name functionName parameter list function body In order for your class to identify which functions in an implementation section belong to it you precede the function name in the function definition header with the class name and the scope resolution operator 2 7 3 3 Access Functions Access to a class private data should be carefully controlled by the use of member functions called access functions For example to allow clients to read the value of private data the class can provide a get function To enable clients to modify private data the class can provide a set function Such modification would seem to violate the notion of private data But a set member function can provide data validation capabilities such as range checking to ensure that the value is set properly A set function can also
68. the address of the first memory location used for the variable constitutes its address To see the address of a variable we can use address operator amp which means the address of For example amp num means the address of num Example include lt iostream h gt int main int a a 22 cout lt The value stored in a is lt a lt endl cout lt The address of a K da lt endl return 0 The output of the above program The value stored in a is 22 The address of a 0x0065FDF4 The display of addresses is in hexadecimal notation 2 2 4 Integer Quantifiers Portable languages like C must have flexible data type sizes Different applications might need integers of different sizes C provides long integer short integer and unsigned integer data types These three additional integer data types are obtained by adding the quantifier long short or unsigned to the normal integer declaration statements Example long int days unsigned int num_of_days The reserved words unsigned int are used to specify an integer that can only store nonnegative numbers The signed and unsigned quantifiers tell the compiler how to use the sign bit with integral types and characters floating point numbers always contain a sign An unsigned number does not keep track of the sign and thus has an extra bit available so it can store positive numbers twice as large as the positive numbers that can be stored in a signe
69. the assignment operator is converted to the data type of the variable to the left side of the assignment operator For example if temp is an integer variable the assignment temp 25 89 causes the integer value 25 to be stored in the integer variable temp 2 3 1 2 Assignment Variations C also use a shorthand notation to perform an operation and an assignment at the same time This is denoted by an operator followed by an equal sign For example to add 4 to the variable x and assign x to the result you say x 4 Figure 1 illustrates assignment operator and all assignment variations Operator Example Meaning Numi i1Num2 iNum1 Num2 Numi iNuml1 Num2 Numi iNum2 Numi 1Numl iNum2 Numl Num2 Numl Numl Num2 f Numi Num2 Numi iNum1 iNum2 Numl Num2 Numl Numl Num2 fi q Figure 2 13 Variations of assignment Assignment statements such as sum 10 or its equivalent sum sum 10 are very common in C programming 2 3 1 3 Increment and decrement operators For the special case in which a variable is either increased or decreased by 1 C provides two unary operators increment operator and decrement operator Available for free at Connexions lt http cnx org content col10788 1 1 gt 83 Operator Description Eb Increase an operand by a value of one Decrease an operand by a value of one Figure 2 14 Increment operator and decrement operator The
70. the label specified in the goto statement Example start label if cout gt 10 go to end go to start end cout lt endl The goto statement can lead to programs that are more difficult to debug maintain and modify 2 5 11 2 Structured Programming During the 1960s it became clear that the indiscriminate use of transfers of control through goto statements was the root of much difficulty experienced by programmer groups The notion of so called structured programming became almost synonymous with goto elimination Bohm and Jacopini s work demonstrated that all programs could be written in terms of only three control structures e sequence structure e selection structure e repetition structure The sequence structure is built into C Unless directed otherwise the computer executes C statements one after the other in the order in which they are written Below is a sequence structure statement 1 statement 2 Figure 2 32 Sequence Structure Available for free at Connexions lt http cnx org content col10788 1 1 gt 120 CHAPTER 2 LECTURE NOTES C provides three types of selection structures if statement single selection structure if else statement double selection structure switch statement multiple selection structure C provides three types of repetition structures while statement do while statement for statement So C has only seven control structures sequence t
71. the parent class function because no child class function has the name outputData Overriding a base class member functions with a derived member function demonstrates the concept of polymorphism Recall that polymorphism permits the same function name to take many forms 2 8 4 6 Constructors and Destructors in Derived Classes When you derive one class from another class you can think of any instantiated object of the derived class as having two portions e the base class portion and e the derived class portion During the instantiating process the base class portion of the object is instantiated and then the derived class portion of the object is instantiated So two constructors execute for a single derived class object the base class constructor and the derived class constructor When a derived class object instantiates constructors begin executing at the top of the class hierarchy First the base constructor executes then any indirect base class s constructors execute Finally the derived class constructor executes When an object is destroyed class destructors are executed in the reverse order First the derived class s destructor is called then the destructors for any indirect base classes and finally the destructor for the base class Figure below illustrates this process using a class hierarchy with four levels The order of construction makes sense since it allows base classes to perform any initialization on c
72. to describe an algorithm In this case the description is called pseu docode Pseudocode is an artificial and informal language that helps programmers develop algorithms Pseudocode has some ways to represent sequence decision and repetition in algorithms A carefully pre pared pseudocode can be converted easily to a corresponding C program Example The following set of instructions forms a detailed algorithm in pseudocode for calculating the payment of person Available for free at Connexions lt http cnx org content col10788 1 1 gt 68 CHAPTER 2 LECTURE NOTES Input the three values into the variables Name Hours Rate Calculate Pay Hours U FOB4 Rate Display Name and Pay 2 1 4 3 Loops in Algorithms Many problems require repetition capability in which the same calculation or sequence of instructions is repeated over and over using different sets of data Example 1 1 Write a program to do the task Print a list of the numbers from 4 to 9 next to each number print the square of the number The flowchart for the algorithm that solves this problem is given in Figure below You will see in this figure the flowchart symbol for decision and the flowline that can connect backward to represent a loop Available for free at Connexions lt http cnx org content col10788 1 1 gt Figure 2 8 SONUM lt NUM Print NUM SQNUM Flowcharts of example 1 1 Note Available for free at Connexions lt http cnx o
73. to invoke functions in many programming languages are call by value and call by reference When an argument is passed call by value a copy of the argument s value is made and passed to the called function Changes to the copy do not affect the original variable s value in the caller With call by reference the caller gives the called function the ability to access the caller s data directly and to modify that data if the called function chooses so To indicate that the function parameter is passed by reference simply follow the parameter s type in the function prototype of function header by an ampersand amp For example the declaration int amp count in the function header means count is a reference parameter to an int Example Comparing call by value and call by reference with references include lt iostream h gt int squareByValue int void squareByReference int amp int main int x 2 Z 4 cout lt x lt x lt before squareByValue n lt Value returned by squareByValue lt squareByValue x lt endl lt x lt x lt after squareByValue n lt endl cout lt z lt z lt before squareByReference lt endl squareByReference z cout lt z K z XKX after squareByReference lt endl return 0 int squareByValue int a return a a caller s argument not modified Available for free at Connexions lt http cnx org content col10
74. translate between the form of data used in the interface and the form used in the implementation A get function need not expose the data in raw format rather the get function can edit data and limit the view of the data the client will see Example timel h if defined TIME1_H define TIME1_H class Time public Time constructor void setTime int int int set hour minute second void printMilitary print military time format void printStandard print standard time format private int hour int minute int second Hendif timel cpp include timel h Available for free at Connexions lt http cnx org content col10788 1 1 gt include lt iostream h gt Time constructor initializes each data member to zero Ensures all Time objects start in a consistent state Time Time hour minute second 0 void Time setTime int h int m int s hour h gt 0 amp amp h lt 24 h 0 minute m gt 0 amp amp m lt 60 m 0 second s gt 0 amp amp s lt 60 s 0 void Time printMilitaryO 1 cout lt hour lt 10 o lt hour lt lt minute lt 10 0 lt minute void Time printStandard cout lt hour 0 hour 12 12 hour 12 lt i lt minute lt 10 7 0 lt minute K lt second lt 107 0 lt second lt hour lt 12
75. used to refer to computer storage locations The term variable is used because the value stored in the variable can change or vary Variable names are also selected according to the rules of identifiers Available for free at Connexions lt http cnx org content col10788 1 1 gt 76 CHAPTER 2 LECTURE NOTES Identifiers must begin with an uppercase or lowercase ASCII letter or an underscore _ You can use digits in an identifier but not as the first character You are not allowed to use special characters such as amp or e Reserved words cannot be used for variable names Example Some valid identifiers my_ variable Temperature xl x2 _my_ variable Some invalid identifiers are as follows x1 my_varQx2 We should always give variables meaningful names from which a reader might be able to make a reason able guess at their purpose We may use comments if further clarification is necessary 2 2 3 1 Declaration Statements Naming a variable and specifying the data type that can be stored in it is accomplished using declaration statement A declaration statement in C programs has the following syntax type name The type portion refers to the data type of the variable The data type determines the type of information that can be stored in the variable Example int sum long datenem double secnum Note 1 A variable must be declared before it can be used 2 Declaration statements can also be used t
76. using the syntax strcat destination source where destination represents the char variable whose string you want to combine with another string When you execute strcat the string represented by the source argument is appended to the string contained in the destination variable Example char FirstName 25 char LastName 25 char FullName 50 strcpy FirstName Mike strcpy LastName Thomson strcpy FullName FirstName strcat FullName strcat FullName LastName Two strings may be compared for equality using the stremp function When two strings are compared their individual characters are compared a pair at a time If no differences are found the strings are equal if a difference is found the string with the first lower character is considered the smaller string The functions listed in Figure 2 are contained in the string h header file To use the functions you must add the statement include lt string h gt to your program 2 5 15 2 Example tinclude lt iostream h gt tinclude lt string h gt int main 1 char FirstName 25 Available for free at Connexions lt http cnx org content col10788 1 1 gt 126 CHAPTER 2 LECTURE NOTES char LastName 25 char FullNamel 50 strcpy FirstName Mike strcpy LastName Thomson strcpy FullName FirstName strcat FullName strcat FullName LastName cout lt FullName lt endl int n n
77. void Customer setBalDue double bal balanceDue bal void Customer outputBalDue cout lt Balance due lt balanceDue lt endl F int main Customer cust cust setFields 215 Santini Linda cust outputData cust setBalDue 147 95 cust outputBalDue return 0 The output of the above program is Base class constructor called Derived class constructor called ID 215 Name Linda Santini Balance due 147 95 The output shows that both the constructor of Person class and the constructor of Customer class involve in creating the object Cust Available for free at Connexions lt http cnx org content col10788 1 1 gt ATTRIBUTIONS Attributions Collection PROGRAMMING FUNDAMENTALS IN C Edited by Dr Duong Tuan Anh URL http cnx org content col10788 1 1 License http creativecommons org licenses by 3 0 Module Syllabus By Dr Duong Tuan Anh URL http cnx org content m27299 1 1 Pages 1 10 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Exercises By Dr Duong Tuan Anh URL http cnx org content m27239 1 1 Pages 10 24 Copyright Dr Duong Tuan Anh License http creativecommons org licenses by 3 0 Module Assignments By Dr Duong Tuan Anh URL http cnx org content m27202 1 1 Pages 24 30 Copyright Dr Duong Tuan Anh License http creativecommons org licenses
78. 0 The output of the above program The decimal base 10 value of 15 is 15 The octal base 8 value of 15 is 17 The hexadecimal base 16 value of 15 is f To designate an octal integer constant the number must have a leading 0 Hexadecimal number are denoted using a leading Ox Example Octal and hexadecimal integer constant include lt iostream h gt int main cout lt The decimal value of 025 is lt 025 lt endl lt The decimal value of 0x37 is lt 0x37 lt endl return 0 The output of the above program The decimal value of 025 is 21 Available for free at Connexions lt http cnx org content col10788 1 1 gt 87 The decimal value of 0x37 is 55 2 3 3 Using Mathematical Library Functions Although addition subtraction multiplication and division are easily accomplished using C s arithmetic operators no such operators exist for finding the square root of a number or determining trigonometric values To facilitate such calculations C provides standard library functions that can be included in a program Functions are normally called by writing the name of the function followed by a left parenthesis followed by the argument or a comma separated list of arguments of the function followed by a right parenthesis For example a programmer desiring to calculate and print the square root of 900 0 might write cout lt sqrt 900 0 When this statement is executed the math library funct
79. 0 Please enter values for a b and c 00 16 This equation is degenerate and has no roots We leave it as an exercise to create test data for the other limiting cases checked for by the program 2 5 Repetition Statements Arrays and Structured Programming 2 5 1 Basic Loop Structures The real power of a program is realized when the same type of operation must be made over and over Constructing a repetitive section of code requires that four elements be present The first necessary element is a repetition statement This repetition statement defines the boundaries containing the repeating section of code and also controls whether the code is executed or not C provides three different forms of repetition statements 1 while structure 2 for structure 3 do while structure Each of these statements requires a condition that must be evaluated which is the second required element for constructing repeating sections of code Valid conditions are similar to those used in selection statements If the condition is true the code is executed otherwise it is not The third required element is a statement that initially sets the condition This statement must always be placed before the condition is first evaluated to ensure correct loop execution the first time the condition is evaluated Finally there must be a statement within the repeating section of code that allows the condition to become false This is necessary to ensure that at some p
80. 2 c1 1 c2 2 di 1 d2 2 xl amp c1 x2 amp c2 yi dl y2 8d2 swap a x1 x2 y1 y2 cout lt a 0 a 1 K exl lt ex2 lt gt lt ayl lt x y2 swapla x1 x2 y1 y2 cout lt a 0 a 1 K XIK X2K lt ayl lt x y2 void swap int a int c1 int c2 int d1 int d2 a 0 2 ali 1 c1 2 c2 1 int temp dl di d2 d2 temp 2 6 Write a declaration to store the following values into an array named rates 12 9 18 6 11 4 13 7 9 5 15 2 17 6 Include the declaration in a program that displays the values in the array using pointer notation 2 7 Given the following function that can find the largest element in an integer array Notice that the function scans the elements in the array using pointer arithmetic int findMax int vals int numEls int j max vals for j 1 j lt numEls j if max lt vals j max vals j return max Write a C program that inputs an integer array and invokes the above function to find the largest element in that array and displays the result out 2 8 In the following program the function str_output can display a string which is passed to it as a a pointer parameter Available for free at Connexions lt http cnx org content col10788 1 1 gt 45 tinclude lt iostream h gt tinclude lt string h gt define MAX 80 void str_output char int main char
81. 31 1 4 Labworks 1 4 1 TABLE OF CONTENTS Lab Session 1 Introduction to C Lab Session 2 Selection Structures Lab Session 3 Repetition Structures Lab Session 4 Arrays Lab Session 5 Structures Lab Session 6 Functions Lab Session 7 Pointers Lab Session 8 Introduction to Classes Lab Session 9 Object Manipulation Lab Session 10 Inheritance Programming Project Topic Examples 1 4 2 LAB SESSION 1 INTRODUCTION TO C 1 4 2 1 1 OBJECTIVE The objectives of Lab 1 are 1 to known how to run a simple C program 2 to know the basic data types and operators 3 to learn how to use variable declarations and assignment statements 1 4 2 2 2 EXPERIMENT 2 1 Test the following program tinclude lt iostream h gt int main 1 const float PI 3 14159 float radius 5 float area area radius radius PI Circle area calculation cout lt The area is lt area lt with a radius of 5 n radius 20 Compute area with new radius area radius radius PI cout lt The area is lt area lt with a radius of 20 1n return 0 1 Run the above program 10This content is available online at lt http cnx org content m27278 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 32 CHAPTER 1 STUDENT MANUAL 2 Use define to define the constant PI 3 Declare the constant PI in the file mydef h and then use the include directi
82. 6 cout lt nMy birth date is lt lt birth month lt lt birth day lt lt lt birth year 100 lt endl return 0 F The ouput of the above program is My birth date is 12 28 86 Available for free at Connexions lt http cnx org content col10788 1 1 gt 128 CHAPTER 2 LECTURE NOTES 2 5 17 1 Arrays of Structures The real power of structures is realized when the same structure is used for lists of data Declaring an array of structures is the same as declaring an array of any other variable type Example The following program uses array of employee records Each of employee record is a structure named PayRecord The program displays the first five employee records tinclude lt iostream h gt tinclude lt iomanip h gt const int MAXNAME 20 maximum characters in a name struct PayRecord this is a global declaration 1 long id char name MAXNAME float rate J int main const int NUMRECS 5 maximum number of records int i PayRecord employee NUMRECS 4 32479 Abrams B 6 72 33623 Bohm P 7 54 34145 Donaldson S 5 56 35987 Ernst T 5 43 36203 Gwodz K 8 72 3 cout lt endl start on a new line cout lt setiosflags ios left left justify the output for i 0 i lt NUMRECS i cout lt setw 7 lt employee i id lt lt setw 15 lt employee i name lt lt setw 6 lt employee i rate
83. 788 1 1 gt 140 CHAPTER 2 LECTURE NOTES void squareByReference int amp cRef cRef cRef caller s argument modified The output of the above program x 2 before squareBy Value Value returned by squareByValue 4 x 2 after squareByReference z 4 before squareByReference z 16 after squareB y Reference Since cRef is a reference parameter so squareByReference now has direct access to the argument z Thus any change to cRef within squareByReference directly alters the value of z in main The assignment of value to cRef within squareByReference is relected in main as the altering of z s value Recall from Chapter 2 that the ampersand amp in C means the address of Additionally an amp symbol used within a declaration refers to the address of the preceding data type Using this information declaration such as double amp num1 and int amp secnum are sometimes more clearly understood if they are read backward Reading the declaration int amp cRef in this manner yields the information that cRef is the address of an int value Example This program can solve quadratic equation include lt iostream h gt include lt math h gt include lt iomanip h gt in quad double double double double amp double amp int main double a b c x1 x2 int code cout lt Enter the coefficients of the equation lt endl cin gt a gt b gt c c
84. J Deitel C How to Program 3rd Edition Prentice Hall 2001 This book contains a lot of good C programming examples All examples in this book are very well explained 3 J Farrel Object Oriented Programming Using C 2nd Edition Course Technology Thomson Learning 2001 If students want to go in depth in object oriented programming with C they will find this book very helpful 4 D Gosselin Microsoft Visual C 6 0 Course Technology Thomson Learning 2001 This book is a supplementary text for the students who want to know more about Microsoft Visual C 6 0 programming environment 1 1 12 CALENDAR There are 16 sessions which compose of 14 lectures 1 mid term exam and 1 final exam Available for free at Connexions lt http cnx org content col10788 1 1 gt Week Topics Reading Assignments from the Textbook 1 Ch 1 Introduction to Ch 1 v0 0 computer en programming 2 Ch 2 Basic elements in C Ch 2 fy curren QUO 3 Ch 3 Completing the basics Ch 3 Lab session 1 e MA Mesa 10 Mar Ch4 Selection statements 5 Selection statements cont Ch 4 Lab session 3 a A A o at 6 Ch 5 Repetition statements Ch 5 Lab session 4 velo _ eee 7 Repetition statements cont Ch 5 Lab session 5 Se et a Epa ar Ch 6 Functions and Pointers a cl eel Functions and Pointers a session 6 21 O cont 11 Functions and Pointers Lab session 7 28 Apr cont Ch 7 Introduction to classes Due date Projec
85. LL T OM IN By Dr Duong Tuan Anh AN tenes IN By Dr Duong Tuan Anh Online lt http cnx org content col10788 1 1 gt CONNEXIONS Rice University Houston Texas This selection and arrangement of content as a collection is copyrighted by Dr Duong Tuan Anh It is licensed under the Creative Commons Attribution 3 0 license http creativecommons org licenses by 3 0 Collection structure revised July 29 2009 PDF generated October 27 2012 For copyright and attribution information for the modules contained in this collection see p 185 Table of Contents 1 STUDENT MANUAL EM ll a a gue alee ths as ada 1 12 EXOerCiSeS cuina A A aia die at Ea AE AA a ae a IRA E ea ee 10 1 3 ASES A A A A Be ee A 24 1 4 Labworks c0cocacaira ceed eee cape a a a eee ee A a 31 2 LECTURE NOTES 2 1 Introduction to Computers and Programming cococcccccccccnccncnccncnnann a rea 57 2 2 Basic Elementsin COLE aaa 70 2 3 Completing the Basics 0 cee cence eee rn cnn orar rr 81 2 4 Selection Statements sirri peere kpada aea E i nett eee eect eee nai a k a 94 2 5 Repetition Statements Arrays and Structured Programming 020020020ee000 108 2 6 Functions and Pointers a a da brite 129 2 7 Introduction to Classes yen A A eb bee Aga 151 2 8 Object Manipulation Inheritance 0 0 0 cece nee eee ee teenies 168 Attributions Li A Soe A tire Dae ee ee Re Ee Se ee a 185 lv Available for free at Conne
86. Make szMake dCarEngine dEngine Auto displayAuto cout lt The car make lt szCarMake lt endl cout lt The car engine size lt lt dCarEngine lt endl void main Auto oldCar Chevy 351 Auto newCar oldCar oldCar displayAuto newCar displayAuto 1 Add an appropriate destructor to the class Auto 2 Include the class Auto in a working C program that creates two Auto objects on the heap displays them and destroys them 4 Given the following class class Employeef public Employee const char const char char getFirstName const char getLastName const private char firstName char lastName Employee Employee const char first const char last firstName new char strlen first 1 strcpy firstName first lastName new char strlen last 1 strcpy lastName last char Employee getFirstName const Available for free at Connexions lt http cnx org content col10788 1 1 gt 22 CHAPTER 1 STUDENT MANUAL return firstName char Employee getLastName const return lastName void main Employee e1Ptr new Employee Susan Baker Employee e2Ptr new Employee Robert Jones cout lt in Employee 1 lt elPtr gt getFirstName K K elPtr gt getLastName lt lt An Employee 2 lt e2Ptr gt getFirstName lt K e2Ptr gt getLa
87. a MAX b MAX cin getline a MAX n str_output a cout lt endl strcpy b a str_output b cout lt endl return 0 void str_output char ptr a Complete the function str_output which displays each element in the string using pointer notation b Run to test the whole program 2 9 a Write a function named days that determines the number of days from the date 1 1 1900 for any date passed as a structure Use the Date structure struct Date int month int day int year In writing the days function use the convention that all years have 360 days and each month consists of 30 days The function should return the number of days for any Date structure passed to it b Rewrite the days function to receive a pointer to a Date structure rather than a copy of the complete structure c Include the function written in b in a complete C program 1 4 9 LAB SESSION 8 INTRODUCTION TO CLASSES 1 4 9 1 1 OBJECTIVE The objectives of Lab session 8 are 1 to get familiar with how to define object classes 2 to practice to write constructors and 3 to learn how to dynamically allocate deallocate memory on the heap 1 4 9 2 2 EXPERIMENT 2 1 a Read to understand the following program which uses the class student Organize the program in one source program and run it on a C environment include lt iostream h gt class student private long int rollno int age char sex
88. a global variable because its storage is created by a definition statement located outside a function Both functions main and valfun can use this global variable with no further declaration needed The program also contains two separate local variables both named y Each of the variables named y is local to the function in which their storage is created and each of these variables can only be used within the appropriate functions 2 6 4 2 Scope Resolution Operator When a local variable has the same name as a global variable all uses of the variable s name within the scope of the local variable refer to the local variable In such cases we can still access to the global variable by using scope resolution operator imme diately before the variable name The operator tells the compiler to use the global variable 2 6 5 Example include lt iostream h gt 42 8 a global variable named number float number int main float number 26 4 a local variable named number cout lt The value of number is lt number lt endl return 0 The output of the above program The value of number is 26 4 Available for free at Connexions lt http cnx org content col10788 1 1 gt 135 2 6 5 1 Example include lt iostream h gt float number 42 8 a global variable named number int main float number 26 4 a local variable named number cout lt The value of number is lt number lt endl
89. ailable for free at Connexions lt http cnx org content col10788 1 1 gt 168 CHAPTER 2 LECTURE NOTES 2 8 Object Manipulation Inheritance 2 8 1 Advanced Constructors In the last chapter we already notice that constructors can provide a mechanism for initializing data mem bers However constructors can do more than initializing data members They can execute member functions and perform other type of initialization routines that a class may require when it first starts 2 8 1 1 Parameterized Constructors Although constructor functions do not return values they can accept parameters that a client can use to pass initialization values to the class Example We can have a constructor function definition in the implementation file as follows Payroll Payroll double dFed double dState dFedTax dFed dStateTax dState 3 Once you create a parameterized constructor you have to supply parameters when you instantiate a new object Example Payroll h class Payroll public Payrol1 double double private double dFedTax double dStateTax Payroll cpp include Payroll h include lt iostream h gt Payroll Payroll double dFred double dState dFedTax dFed dStateTax dState 3 int main Payroll employee illegal return 0 Example The program in this example finds the distance between two points using the pointer to class objects technique points include lt
90. al is married if the character is D or d then the message is Individual is divorced if the character is W or w then the message is Individual is widowed otherwise the message is An invalid code was entered Hint use switch statement 6 Chapter 4 contains the example program which can solve quadratic equations Modify that program so that when the discriminant del is negative the imaginary roots are calculated and displayed For this case the two roots of the equation are Available for free at Connexions lt http cnx org content col10788 1 1 gt 13 xl b 2a sqrt del 2a i x2 b 2a sqrt del 2a i where i is the imaginary number symbol for the square root of 1 Hint Calculate the real and imaginary parts of each root separately 7 Write and run a program that gives the user only three choices convert from Fahrenheit to Celsius convert from Celsius to Fahrenheit or quit If the third choice is selected the program stops If one of the first two choices is selected the program should prompt the user for either a Fahrenheit or Celsius temperature as appropriate and then compute and display a corresponding temperature Use the conversion formulas F 9 5 C 32 C 5 9 F 32 8 Write a C program to calculate the square root and the reciprocal of a user entered number Before calculating the square root you should validate that the number is not
91. am should present its results attractively with good formats 2 3 2 1 Stream Manipulators Stream manipulator functions are special stream functions that change certain characteristics of the input and output The main advantage of using manipulator functions is they facilitate the formatting of the input and output streams setw The setw stands for set width This manipulator is used to specify the minimum number of the character positions on the output field a variable will consume setprecision The setprecision is used to control the number of digits of an output stream display of a floating point value Setprecision 2 means 2 digits of precision to the right of the decimal point To carry out the operations of these manipulators in a user program you must include the header file lt iomanip h gt Example tinclude lt iostream h gt tinclude lt iomanip h gt int main cout lt setw 3 lt 6 lt endl K setw 3 lt 18 lt endl lt setw 3 lt 124 endl lt An lt 6 18 124 lt endl return 0 The output of the above program Available for free at Connexions lt http cnx org content col10788 1 1 gt 85 18 124 143 Figure 2 15 Output of above program Example cout lt lt setw 10 lt setioflags ios fixed lt setprecision 3 lt 25 67 lt causes the printout 25 670 Figure 2 16 Output of above code segment setiosflag
92. ase consists of four steps 2 1 3 1 1 1 Analyze the problem This step is required to ensure that the problem is clearly defined and understood The person doing the analysis has to analyze the problem requirements in order to understand what the program must do what outputs are required and what inputs are needed Understanding the problem is very important Do not start to solve the problem until you have understood clearly the problem Available for free at Connexions lt http cnx org content col10788 1 1 gt 63 2 1 3 1 2 2 Develop a Solution Programming is all about solving problems In this step you have to develop an algorithm to solve a given problem Algorithm is a sequence of steps that describes how the data are to be processed to produce the desired outputs An algorithm should be at least complete i e cover all the parts unambiguous no doubt about what it does finite it should finish 2 1 3 1 3 3 Code the solution This step consists of translating the algorithm into a computer program using a programming language 2 1 3 1 4 4 Test and correct the program This step requires testing of the completed computer program to ensure that it does in fact provide a solution to the problem Any errors that are found during the tests must be corrected Figure below lists the relative amount of effort that is typically expended on each of these four development and design steps in large commercial programming
93. ator function becomes a constructor function that is automatically called when an object of type Elevator is created We use this function to initialize the starting floor position of the elevator The request function is used to alter its position To accomplish these services a suitable class implementation section is class implementation section Elevator Elevator int cfloor 1 currentFloor cfloor Available for free at Connexions lt http cnx org content col10788 1 1 gt 165 void Elevator request int newfloor 1 if newfloor lt 1 newfloor gt MAXFLOOR newfloor currentFloor doing nothing else if mewfloor gt currentFloor move elevator up cout lt nStarting at floor lt currentFloor lt endl while newfloor gt currentFloor currentFloor cout lt Going up now at floor lt currentFloor lt endl cout lt Stopping at floor lt currentFloor lt endl else move elevator down cout lt nStarting at floor lt currentFloor lt endl while newfloor lt currentFloor currentFloor cout lt Going down now at floor lt currentFloor lt endl cout lt Stopping at floor lt currentFloor lt endl return The constructor function is straightforward When an Elevator object is declared it is initialized to the floor specified if no floor is explicitly
94. before the statement s some then what the result is when the program is executed Explain why 2 4 Given the class definition as follows class Auto public Auto char double displayAuto char double private char szCarMake double dCarEngine Auto Auto char szMake double dEngine szCarMake new char 25 strcpy szCarMake szMake dCarEngineSize dCarEngine Auto displayAuto cout lt The car make lt szCarMake lt endl cout lt The car engine size lt lt dCarEngine lt endl void main Auto oldCar Chevy 351 Auto newCar oldCar oldCar displayAuto newCar displayAuto 1 Add an appropriate copy constructor to the Auto class 2 Add an appropriate destructor to the Auto class c Run all the modifications in a C environment Available for free at Connexions lt http cnx org content col10788 1 1 gt 52 CHAPTER 1 STUDENT MANUAL 1 4 11 LAB SESSION 10 INHERITANCE 1 4 11 1 1 OBJECTIVE The objectives of Lab session 10 are 1 to get familiar with class inheritance 2 to learn the workings of the constructor and destructor of a derived class This lab session will use the inheritance hierarchies in the following figure Figure 1 19 1 4 11 2 2 EXPERIMENT 2 1 Given the Point class defined as follows class Point private int color protected double x double y public Point double x 0
95. between two telephones The number of direct lines needed to maintain a directly connected network for n telephones is given by the formula lines n n 1 2 For example directly connecting four telephones requires six individual lines Using the formula write a C program that determines the number of direct lines for 100 telephones and the additional lines required if 10 new telephones were added to the network Use our top down software development procedure 2 2 5 1 Step 1 Analyze the Problem For this program two outputs are required the number of direct lines required for 100 telephones and the additional lines needed when 10 new telephones are added to the existing network The input item required for this problem is the number of telephones which is denoted as n in the formula 2 2 5 2 Step 2 Develop a Solution The first output is easily obtained using the given formula lines n n 1 2 Although there is no formula given for additional lines we can use the given formula to determine the total number of lines needed for 110 subscribers Subtracting the number of lines for 100 subscribers from the number of lines needed for 110 subscribers then yields the number of additional lines required Thus the complete algorithm for our program in pseudocode is Calculate the number of direct lines for 100 subscribers Calculate the number of direct lines for 110 subscribers Calculate the additional lined needed which is the dif
96. ble for free at Connexions lt http cnx org content col10788 1 1 gt 148 CHAPTER 2 LECTURE NOTES return 0 The output of the above program The value return by z itself is the addr 0x0065FDF4 The address of the Oth element of z is Ox0065FDF4 Accessing Array Element Using Pointer and Offset Now let us store the address of array element 0 in a pointer Then using the indirection operator we can use the address in the pointer to access each array element For example if we store the address of grade 0 into a pointer named gPtr then the expression gPtr refers to grade 0 One unique feature of pointers is that offset may be included in pointer expression For example the expression gPtr 3 refers to the variable that is three elements beyond the variable pointed to by gPtr The number 3 in the pointer expression is an offset So gPtr 3 points to the element grade 3 of the grade array Example include lt iostream h gt int main int b 4 10 20 30 40 i offset int bPtr b set bPtr to point to array b cout lt Array b printed with n lt Array subscript notation n for i 0 i lt 4 i cout lt bI lt i lt lt bLi lt An cout lt nPointer offset notation n for offset 0 offset lt 4 offset cout lt x bPtr lt offset lt lt K bPtr offset lt n return 0 The output of the above program is Array b printe
97. ce between the two values The structure of the required output display is as below in symbolic form Available for free at Connexions lt http cnx org content col10788 1 1 gt 91 ex Approximation Difference library function value lst approximate value Ist difference library function value 2nd approximate value 2nd difference library function value 3rd approximate value 3rd difference library function value 4th approximate value 4th difference Figure 2 19 Realizing the each line in the display can only be produced by executing a cout statement it should be clear that four such statements must be executed Additionally since each output line contains three computed values each cout statement will have three items in its expression list The only input to the program consists of the value of x This will of course require a single prompt and a cin statement to input the necessary value 2 3 6 2 Step 2 Develop a Solution Before any output items can be calculated the program needs to prompt the user for a value of x and then accept the entered value The output display consists of two title lines followed by four lines of calculated data The title lines can be produced using two cout statements Now let s see how the data being displayed are produced The first item on the first data output line illustrated in Table 3 4 can be obtained using the exp function The second item on this line the approximation to ex can be ob
98. ces and displays the resultant matrix Available for free at Connexions lt http cnx org content col10788 1 1 gt 40 CHAPTER 1 STUDENT MANUAL 1 4 6 LAB SESSION 5 STRINGS AND STRUCTURES 1 4 6 1 1 OBJECTIVE The objectives of Lab session 5 are 1 to get familiar with strings 2 to get familiar with structures 3 to practice on processing arrays of structures 1 4 6 2 2 EXPERIMENT 2 1 Write a C program that accepts a string of characters from a terminal and displays the hexadecimal equivalent of each character Hint Use the cin getline function to input a string 2 2 Write a C program that accepts a two strings of characters from a keyboard and displays the concatenation of the two strings Hint Use the cin getline function to input a string 2 3 Write and run a program that reads three strings and prints them out in an alphabetical order Hint Use the stremp function 2 4 Write a C program that accepts a string of characters from a terminal and converts all lower case letters in the string to upper case letters 2 5 a Using the data type struct MonthDays char name 10 int days J define an array of 12 structures of type MonthDays Name the array months and initialize the array with the names of the 12 months in a year and the number of days in each month b Include the array created in a in a program that displays the names and number of days in each month 2 6 a Declare a data typ
99. ck is empty Check if the stack is full It would be nice to have a stack class because we could then use it to easily develop some applications which need stack data structure For the moment assume that we need to define an integer stack class Since a stack must stores a collection of integers we can use an integer array to model the stack and a pointer named Top to indicate the location of the top of the stack The array should have a fixed size So we can begin the declaration of the class by selection two data members Available for free at Connexions lt http cnx org content col10788 1 1 gt 56 CHAPTER 1 STUDENT MANUAL e Provide an integer array data member to hold the stack elements the size of the array is a constant e Provide an integer data member to indicate the top of the stack As for the member functions of the stack class we have to define 5 member functions the constructor which creates an empty stack and four other member functions push pop check if the stack is empty check if the stack is full After defining the stack class write a main function which does the following tasks Creating one stack object Pushing into the stack object ten integer elements which take values from 1 to 10 with the increment of 1 e Popping one by one element from the stack object and displaying it out repeating this action until the stack becomes empty Next apply the stack data structure in solving the following
100. clude lt iostream h gt Stocks Stocks char szName szStockName new char 25 strcpy szStockName szName 3 Stocks Stocks delete szStockName cout lt Destructor called lt endl void Stocks setNumShares int iShares iNumShares iShares int Stocks getNumShares const return iNumShares void Stocks setPricePerShare double dPrice dPricePerShare dPrice int Stocks getPricePerShare const return dPricePerShare F void Stocks setStockName char szName strcpy szStockName szName char Stock getStockName const return szStockName 7 double Stocks calcTotalValue dCurrentValue iNumShares dPricePerShare return dCurrentValue int main Stocks stockPick 1 Cisco stockPick1 setNumShares 100 stockPick1 setPricePerShare 68 875 Stocks stockPick2 new Stocks Lucent heap object stockPick2 gt setNumShares 200 stockPick2 gt setPricePerShare 59 5 Available for free at Connexions lt http cnx org content col10788 1 1 gt 173 cout lt The current value of your stock in lt stockPick1 getStockName lt is lt lt stockPick1 calcTotalValue O lt gt K endl cout lt The current value of your stock in lt stockPick2 gt getStockName lt is lt lt stockPick2 gt calcTotalValue lt gt K endl return 0 The output of the above prog
101. countered the expression is evaluated first The value of the expression is then automatically converted to the data type declared in the function header before being sent back to the calling function After the value is returned program control reverts to the calling function 2 6 2 1 Inline functions For small functions you can use the inline keyword to request that the compiler replace calls to a function with the function definition wherever the function is called in a program 2 6 3 Example Using an inline function to calculate the volume of a cube include lt iostream h gt inline double cube double s return s s s int main cout lt Enter the side length of your cube double side cin gt side cout lt Volume of cube with side lt side lt is lt cube side lt endl return 0 The output of the above program Enter the side length of your cube 3 5 Volume of cube with side 3 5 is 42 875 2 6 3 1 Function Overloading C enables several functions of the same name to be defined as long as these functions have different sets of parameters at least their types are different This capability is called function overloading When an overloaded function is called the C compiler selects the proper functions by examining the number types and order of the arguments in the call Function overloading is commonly used to create several functions of the same name that perform similar tasks bu
102. cter Data Type To store text you use the character data type To store one character in a variable you use the char keyword and place the character in single quotation marks Example char cLetter A 2 2 2 2 Escape Sequence The combination of a backlash and a special character is called an escape sequence When this character is placed directly in front of a select group of character it tells the compiler to escape from the way these characters would normally be interpreted Examples An move to the next line t move to the next tab The bool Data Type The C bool type can have two states expressed by the built in constants true which converts to an integral one and false which converts to an integral zero All three names are keywords This data type is most useful when a program must examine a specific condition and as a result of the condition being either true or false take a prescribed course of action 2 2 2 3 Arithmetic Operators Most programs perform arithmetic calculations Arithmetic operators are used to perform mathematical calculations such as addition subtraction multiplication and division in C Operator Description Add tuo operands subtracts one operand from another operand e Multiplies one operand by another operand i Divides one operand by another operand a Divides two operands and returns the remainder Figure 2 9 Arithmetic operators Available for free at Connexi
103. ction that can checks if all the elements in integer array are unique i e we can not find any pair of elements that are equal to each other Write a C program that inputs an integer array and invokes the function to check if all the elements in integer array are unique 2 7 Given the following formula for computing the number of combinations of m things out of n denote C n m C n m 1 if m 0 or m n C n m C n 1 m C n 1 m 1 if0 lt m lt n 1 Write a recursive function to compute C n m 2 Write a complete C program that reads two integers N and M and invokes the function to compute C N M and prints the result out 2 8 The greatest common divisor of two positive integers is the largest integer that is a divisor of both of them For example 3 is the greatest common divisor of 6 and 15 and 1 is the greatest common divisor of 15 and 22 Here is a recursive function that computes the greatest common divisor of two positive integers int gcd int p int q int r if r pq 0 return q else return gcd q r Available for free at Connexions lt http cnx org content col10788 1 1 gt a First write a C program to test the function b Write and test an equivalent iterative function 1 4 8 LAB SESSION 7 POINTERS 1 4 8 1 1 OBJECTIVE The objectives of Lab session 7 are to get familiar with how to use pointers in C 1 4 8 2 2 EXPERIMENT 2 1 Run the following program to determine t
104. d private int hour int minute int second Note that the data members hour minute and second are preceded by the private member access specifier A class private data members are normally not accessible outside the class The philosophy here is that the actual data representation used within the class is of no concern to the class clients In this sense the implementation of a class is said to be hidden from its clients Such information hiding promotes program modifiability and simplifies the client s perception of a class You can depict the classes graphically in a class diagram as below Available for free at Connexions lt http cnx org content col10788 1 1 gt 153 hour minute second setTime printMiltary pringStandard Figure 2 40 Diagram of class Time The diagram shown above follows the format of the Unified Modeling Language UML Each class is represented by a box with the class name in the top portion of the box any data members that you care to describe in the middle portion of the box and the member functions the functions that belong to this object which receive any messages you send to that object in the bottom portion of the box 2 7 2 2 Interface and Implementation Files Although the first step in information hiding is to assign private access specifiers to class members private access specifiers only designate which class members a client is not allowed to call or change
105. d as follows If the counter is not equal to zero set the average to the total divided by the counter print the average else Print No grades were entered Notice that we are being careful here to test for the possibility of division by zero a fatal error if undetected would cause the program to fail Now we come to the pseudocode of the third refinement Third Refinement Initialize total to zero Initialize counter to zero Input the first grade While the user has not as yet entered the sentinel Add this grade into the running total Add one to the grade counter Input the next grade If the counter is not equal to zero set the average to the total divided by the counter print the average else Print No grades were entered Final step After coding we come to the following C program include lt iostream h gt include lt iomanip h gt int main int total sum of grades gradeCounter number of grades entered grade one grade double average number with decimal point for average initialization phase total 0 gradeCounter 0 processing phase cout lt Enter grade 1 to end cin gt grade while grade 1 4 total total grade gradeCounter gradeCounter 1 cout lt Enter grade 1 to end cin gt grade termination phase if gradeCounter 0 4 average double total gradeCounter Available for free at Connexions lt http cnx org content c
106. d number Available for free at Connexions lt http cnx org content col10788 1 1 gt 78 CHAPTER 2 LECTURE NOTES Data type Storage Number Range short int 2 bytes 532766 to 32767 unsigned int 2 bytes O to 655535 long int 4 bytes 2 147 483 648 to 2 147 483 647 Figure 2 12 Integer types with quantifiers When you are modifying an int with short or long the keyword int is optional Now all the built in data types provide by C are given in the following list ordered descendingly by the size of the data types Data types long double double float unsigned long long int unsigned int int short in char 2 2 4 1 Data Type Conversions An expression containing both integer and floating point operands is called a mixed mode expression U F020 Example int a float x 2 5 a x 6 x 6 is a mixed mode expression Note We should avoid mixed mode expression Examples char Ch int Ini 129 In2 In3 double Reali 12 34 Real2 What happens with the following mixed mode assignments Ch In1 2 1 Right side 65 assigns A to Ch In2 Ch 1 Right side 66 assigns 66 to In2 Real2 In1 2 Right side 64 assigns 64 0 to Real2 In3 Real11 2 0 Right side 6 17 truncates this value and assigns 6 to In3 The general rules for converting integer and floating point operands in mixed mode arithmetic expressions were presented as follows Available for free at Connexi
107. d with Array subscript notation bjo 10 bfi 20 b 2 30 b 3 40 Pointer offset notation bPtr 0 10 bPtr 1 20 bPtr 2 30 bPtr 3 40 2 6 10 3 Pointers and Strings In C we often use character arrays to represent strings A string is an array of characters ending in a null character 0 Therefore we can scan through a string by using a pointer Thus in C it is appropriate to say that a string is a constant pointer a pointer to the string s first character Available for free at Connexions lt http cnx org content col10788 1 1 gt 149 A string may be assigned in a declaration to either a character array or a variable of type char The declarations char color blue char colorPtr blue each initialize a variable to the string blue The first declaration creates a 5 element array color con taining the characters b I u e and 0 The second declaration creates pointer variable colorPtr that points to the string blue somewhere in the memory The first declaration determines the size of the array automatically based on the number of initializers provided in the initializer list Example Printing a string one character at a time using a non constant pointer to constant data include lt iostream h gt int main char strng Adams char sPtr sPtr amp strng 0 cout lt nTh
108. ded the following data Student grade 1 100 100 82 64 64 94 Run Figure 1 8 Test data grade 2 100 0 94 T4 T4 34 grade 3 100 100 73 84 84 74 grade 4 100 0 36 94 94 64 4 A magic square is an n X n matrix in which each of the integer values from 1 to n n appears exactly once and all column sums row sums and diagonal sums are equal For example the following is a 3 X 3 magic square in which each row each column and each diagonal adds up to 15 Figure 1 9 Magic matrix 1 Write a function that accepts a two dimensional array and integer n and checks if the n X n matrix stored in the array is a magic square The function should return true if it is a magic square and false Available for free at Connexions lt http cnx org content col10788 1 1 gt 27 if it isn t And also design it to return the magic sum of the magic square sum of each row sum of each column sum of each diagonal 2 Write the driver program that e Let you enter the elements of a matrix e Calls a matrix printer function to display it e Calls your magic square checker function to check if it is a magic square and displays an appro priate message including the magic sum if it is a magic square 5 A prime integer is any integer that is evenly divisible only by itself and 1 The Sieve of Eratosthenes is a method of finding prime numbers It operates as follows 1 Create an array with all elem
109. delete ptr_n delete ptr_a a Explain the meaning of the program b Run to determine the result of the program 1 2 8 Exercise 8 1 Construct a class named Complex that contains two double precision floating point data members named real and imag which will be used to store the real and imaginary parts of a complex number The function members should include a constructor that provides default values of 0 for each data member and a display function that prints an object s data values Include the above class in a working C program that creates and displays the values of two Complex objects Available for free at Connexions lt http cnx org content col10788 1 1 gt 21 2 Construct a class named Car that contains the following three data members a floating point variable named engineSize a character variable named bodyStyle and an integer variable named colorCode The function members should include 1 a constructor that provides default values of 0 for each numeric data members and X for each character variable and 2 a display function that prints the engine size body style and color code Include the class Car in a working C program that creates and displays two car objects 3 Given the following class class Auto public Auto char double displayAuto private char szCarMake double dCarEngine 3 Auto Auto char szMake double dEngine szCarMake new char 25 strcpy szCar
110. do while statement executes a statement or statements once then repeats the execution as long as a given conditional expression evaluates to true The do while statement is used to create post test loops The syntax for the do while statement do statements while conditional expression Example do cout lt nEnter an identification number cin gt idNun while idNum lt 1000 idNum gt 1999 Available for free at Connexions lt http cnx org content col10788 1 1 gt 117 Such loops are called 118 CHAPTER 2 LECTURE NOTES Enter the do while statement Execute the statement s test the condition Exit the do while statement Figure 2 31 Flow chart of the do while statement Here a request for a new id number is repeated until a valid number is entered do cout lt nEnter an identification number cin gt idNum if idNum lt 1000 idNum gt 1999 cout lt An invalid number was just entered n cout lt Please reenter an ID number n F else break while true Available for free at Connexions lt http cnx org content col10788 1 1 gt 119 2 5 11 Structured Programming with C 2 5 11 1 The goto Statement In C goto statement an unconditional branch is just a legacy code from C language The result of the goto statement is a change in the flow of control of the program to the first statement after
111. e Statements The continue statement halts a looping statement and restarts the loop with a new iteration while count lt 30 cout lt Enter a grade cin gt grade if grade lt 0 grade gt 100 continue total total grade count F In the above program invalid grades are simply ignored and only valid grades are added to the total 2 5 5 4 The null statement All statements must be terminated by a semicolon A semicolon with nothing preceding it is also a valid statement called the null statement Thus the statement is a null statement Example if a gt 0 b 7 else The null statement is a do nothing statement 2 5 6 For Loops The for statement is used for repeating a statement or series of statements as long as a given conditional expression evaluates to true One of the main differences between while statement and for statement is that in addition to a conditional expression you can also include code in the for statement Available for free at Connexions lt http cnx org content col10788 1 1 gt 114 CHAPTER 2 LECTURE NOTES e to initialize a counter variable and e Changes its value with each iteration The syntax of the for statement for initialization expression condition update statement statement s In its most common form the initialization expression consists of a single statement used to set the starting value of a counter variable the condition conta
112. e for the exam Now we begin the refinement process We divide the top into a series of smaller tasks and list these in the order in which they need to be performed This results in the following first refinement First Refinement Initialize variables Input sum and count the exam grades Calculate and print the class average Here only the sequence structure has been used To proceed to the next level of refinement we need some variables and a repetition structure We need a running total of the numbers a count of how many numbers have been processed a variable to receive the value of each grade as it is input and a variable to hold the calculated average We need a loop to calculate the total of the grades before deriving the average Because we do not know in advance how many grades are to be processed we will use sentinel controlled repetition The program will test for the sentinel value after each grade is input and will terminate the loop when the sentinel value is entered by the user Now we come to the pseudocode of the second refinement Second Refinement Input the first grade possibly the sentinel While the user has not as yet entered the sentinel Add this grade into the running total Available for free at Connexions lt http cnx org content col10788 1 1 gt 121 Input the next grade possibly the sentinel Calculate and print the class average The pseudocode statement Calculate and print the class average can be refine
113. e named Car which is a structure consisting of the following information for each car 25 62 36 136 cet 76 52 105 68 67 Figure 1 17 Available for free at Connexions lt http cnx org content col10788 1 1 gt 41 b Using the data type defined in a write a C program that inputs the data given in the above table into an array of 5 structures and then computes and displays a report consisting of 3 columns car number kms driven and gas litres used 1 4 7 LAB SESSION 6 FUNCTIONS 1 4 7 1 1 OBJECTIVE The objectives of Lab session 6 is to practice on C functions 1 4 7 2 2 EXPERIMENT 2 1 Given the following function int square int a 1 a aka return a a Write a C program that reads an integer n and invokes the function to compute its square and displays this result b Rewrite the function so that the parameter is passed by reference It is named by square2 Write a C program that reads an integer x and invokes the function square2 to compute its square and displays this result and then displays the value of x What is the value of x after the function call Explain this value 2 2 Read the following function that can compute the largest integer which square is less than or equal to a given integer int Intqrt int num int i i 1 do i while i i lt nun return i 1 Write a C program that inputs an interger n and invokes the function Intqrt to compute the lar
114. e operation of the member functions 3 Given the class equation which is defined as follows class equation private float a float b float c public void getinfo float a float b float c void display void equal float a float b void imag void real float a float b float det 3 end of class declaration section beginning of implementation section void equation getinfo float aa float bb float cc a aa b bb c cc da void equation display cout lt endl cout lt a lt a lt At cout K b lt b lt At cout lt c Kc lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 19 void equation equal float a float b float x x b 2xa cout lt roots are equal lt x lt endl void equation imag cout lt roots are imaginary In void equation real float a float b float det float x1 x2 temp tem sqrt det x1 b temp 2 a x2 b temp 2 a cout lt roots are real In cout lt xi lt xi lt endl cout lt x2 lt x2 lt endl Write a main program that accepts the coefficients of a given quadratic equation and makes use of the member functions of the class equation to solve the equation Remember to organize the program into one interface file and one implementation file and run them again 4 Con
115. e string is Ip for sPtr 10 sPtr cout lt sPtr lt return 0 The output of the above program The string is Adams Note The name of a string by itself is equivalent to the base address of that string 2 6 10 4 Passing Structures as Parameters Complete copies of all members of a structure can be passed to a function by including the name of the structure as an argument to the called function Example include lt iostream h gt struct Employee declare a global type int idNum double payRate double hours double calcNet Employee function prototype int main Employee emp 6782 8 93 40 5 double netPay netPay calcNet emp pass by value cout lt The net pay for employee lt lt emp idNum lt is lt netPay lt endl return 0 Available for free at Connexions lt http cnx org content col10788 1 1 gt 150 CHAPTER 2 LECTURE NOTES double calcNet Employee temp temp is of data type Employee 1 return temp payRate temp hours The output is The net pay for employee 6782 is 361 665 In the above program the function call calcNet emp passes a copy of the complete emp structure to the function calcNet The parameter passing mechanism here is call by value An alternative to the pass by value function call we can pass a structure by passing a pointer The following example shows how to pass a structure
116. e with Pointer Arguments In C programmers can use pointers and the dereference operator to simulate call by reference When calling a function with arguments should be modified the addresses of the arguments are passed This is normally achieved by applying the address of operator amp to the name of the variable whose value will be used A function receiving an address as an argument must define a pointer parameter to receive the address Example Cube a variable using call by reference with a pointer argument include lt iostream h gt void cubeByReference int prototype int main int number 5 cout lt The original value of number is lt number cubeByReference amp number cout lt nThe new value of number is lt number lt endl return 0 void cubeByReference int nPtr anPtr nPtr nPtr nPtr cube number in main The output of the above propgram The original value of number is 5 The new value of number is 125 2 6 10 2 Pointers and Arrays Notice that the name of an array by itself is equivalent to the base address of that array That is the name z in isolation is equivalent to the expression amp z 0 Example include lt iostream h gt int main int z0 1 2 3 4 5 cout lt The value return by the addr lt z lt endl cout lt The address of the Oth element of zis lt amp z 0 lt endl tz itself is Availa
117. eading the code The enum specifier creates an enumerated data type which is simply a user defined list of values that is given its own data type name Such data types are identified by the reserved word enum followed by an optional user selected name for the data type and a listing of acceptable values for the data type Example enum day mon tue wed thu fri sat sun enum color red green yellow Any variable declared to be of type color can take only a value of red or green or yellow Any variable declared to be of type day can take only a value among seven given values The statement enum day a b c declares the variables a b and c to be of type day Internally the acceptable values of each enumerated data type are ordered and assigned sequential integer values beginning with 0 For example for the values of the user defined type color the correspondences created by the C compiler are that red is equivalent to 0 green is equivalent to 1 and yellow is equivalent to 2 The equivalent numbers are required when inputting values using cin or displaying values using cout 2 4 9 Example include lt iostream h gt int main enum color red green yellow enum color crayon red cout lt nThe color is lt crayon lt endl cout lt Enter a value cin gt crayon if crayon red cout lt The crayon is red lt endl else if crayon green cout lt The crayon is green
118. ecision numbers Using a for loop and a cin statement have your program accept Available for free at Connexions lt http cnx org content col10788 1 1 gt 14 CHAPTER 1 STUDENT MANUAL five user input numbers into working hours array when the program is run Your program should store the product of the corresponding values in the hourly_ rates and working hours arrays in the wages array for example wages 1 hourly_ rate 1 working hours 1 and display the output as a table consisting of three columns 14 Write and run a program that reads three strings and prints them out in an alphabetical order Hint Use the stremp function 15 Modify the program in Section Array of Structures to compute and display the average rate of the five first employees 16 The following program reads a set of name roll number sex height and weight of the students from the keyboard using a structure within an array include lt iostream h gt include lt string h gt const int MAX 100 struct student char name 20 long int rollno char sex float height float weight 3 void main student cls MAX int i n cout lt How many names An cin gt n for i 0 i lt n 1 i cout lt record lt iti lt endl cout lt name cin gt cls i name cout lt rollno cin gt cls i rollno cout lt sex cin gt cls lil sex cout lt height cin cls il heigh
119. ectly access to the idNum data member will work correctly since the Customer class is a derived class of the Person class and the idNum data member is now declared as protected 2 8 4 5 Overriding Base Class Member Functions Derived classes are not required to use a base class s member functions You can write a more suitable version of a member function for a derived class when necessary Writing a member function in a derived class to replace a base class member function is called function overriding To override a base class function the derived member function declaration must exactly match the base class member function declaration including the function name return type and parameters To force an object of a derived class to use the base class version of an overridden function you precede the function name with the base class name and the scope resolution operator using the syntax object base_class function Example In the following code the base class Person and the derived class Employee have their own function member with the same name setFields tinclude lt iostream h gt tinclude lt string h gt class Person 1 private Available for free at Connexions lt http cnx org content col10788 1 1 gt int idnum char lastName 20 char firstName 15 public void setFields int char char void outputData void Person setFields int num char last char first idnum num strcpy la
120. edef double DPTR The declaration DPTR pointer1 is equivalent to doublex pointer1 2 7 Introduction to Classes 2 7 1 Classes In C programming classes are structures that contain variables along with functions for manipulating that data The functions and variables defined in a class are referred to as class members Class variables are referred to as data members while class functions are referred to as member functions Classes are referred to as user defined data types or programmer defined data types because you can work with a class as a single unit or objects in the same way you work with variables When you declare an object from a class you are said to be instantiating an object The most important feature of C programming is class definition with the class keyword You define classes the same way you define structures and you access a class s data members using the member selection operator Example class Time public Time void setTime int int int void printMilitaryO void printStandard private int hour int minute int second Once the class has been defined it can be used as a type in object array and pointer definitions as follows This content is available online at lt http cnx org content m27275 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 152 CHAPTER 2 LECTURE NOTES Time sunset object of type Times A
121. el format High level languages allow programmers to write instructions that look like every English sentences and commonly used mathematical notations Each line in a high level language program is called a statement Ex Result First Second Third Once a program is written in a high level language it must also be translated into the machine language of the computer on which it will be run This translation can be accomplished in two ways When each statement in a high level source program is translated individually and executed immediately upon translation the programming language used is called an interpreted language and the program doing the translation is called an interpreter When all of the statements in a high level source program are translated as a complete unit before any one statement is executed the programming language used is called is called a compiled language In this case the program doing the translation is called a compiler Available for free at Connexions lt http cnx org content col10788 1 1 gt 61 2 1 1 2 3 Application and System Software Two types of computer programs are application software and system software Application software consists of those programs written to perform particular tasks required by the users System software is the collection of programs that must be available to any computer system for it to Operate The most important system software is the operating system Examples of
122. end of string marker 10 or the ENTER key is detected 2 5 16 Structures A structure or struct is an advanced user defined data type that uses a single variable name to store multiple pieces of related information The individual pieces of information stored in a structure are referred to as elements field or members You define a structure using the syntax struct struct_name data_type field_name Available for free at Connexions lt http cnx org content col10788 1 1 gt 127 data_type field_name variable_name For example the statement struct emloyeef char idnum 5 char name 40 long salary declares the form of a structure named employee and reserves storage for the individual data items listed in the structure The employee structure consists of three data items or fields And the statement struct emloyeef char idnum 5 char name 40 long salary Emp declares that Emp is a structure variable which has the form of the structure employee To access the field inside a structure variable you append a period to the variable name followed by the field name using the syntax variable field When you use a period to access a structure fields the period is referred to as the member selection operator 2 5 17 Example include lt iostream h gt struct Date this is a global declaration int month int day int year 3 int main Date birth birth month 12 birth day 28 birth year 198
123. ents initialized to 1 true Array elements with prime subscripts will remain 1 All other array elements will eventually be set to zero 2 Starting with array subscript 2 subscript 1 must be prime every time an array element is found whose value is 1 loop through the remainder of the array and set to zero every element whose subscript is a multiple of the subscript for the element with value 1 For array subscript 2 all elements beyond 2 in the array that are multiple of 2 will be set to zero subscript 4 6 8 10 etc for array subscript 3 all elements beyond 3 in the array that are multiple of 3 will be set to zero subscripts 6 9 12 15 etc and so on When this process is complete the array elements that are still set to one indicate that the subscript is a prime number These subscripts can then be printed Write and run a C program that uses an array of 1000 elements to determine and print the prime numbers between 1 and 999 Ignore element 0 of the array 6 The Colossus Airlines fleet consists of one plane with a seating capacity of 12 Tt makes one flight daily Write a seating reservation program with the following features a The program uses an array of 12 structures Each structure should hold a seat identification number a marker that indicates whether the seat is assigned and the name of the seat holder Assume that the name of a customer is not more than 20 characters long b The program displays the following men
124. epeatedly invokes the mechanism and consequently the over head of function calls This can be expensive in both CPU time and memory space Each recursive call causes another copy of the function actually only the function s variables to be created this can consume considerable memory Iteration normally occurs within a function so the overhead of repeated function calls and extra memory assignment is omitted Any problem that can be solved recursively can also be solved iteratively nonrecursively A recursive approach is normally chosen in preference to an iterative approach when the recursive approach more natu rally reflects the problem and results in a program that is easier to understand and debug Another reason to choose a recursive solution is that an iterative solution is not apparent 2 6 9 Passing Arrays to Functions To pass an array to a function specify the name of the array without any brackets For example if array hourly Temperature has been declared as int hourlyTemperature 24 The function call statement modifyArray hourlyTemperature size passes the array hourlyTemperature and its size to function modify Array For the function to receive an array through a function call the function s parameter list must specify that an array will be received For example the function header for function modify Array might be written as void modifyArray int b int arraySize Notice that the size of the array is not req
125. f The solution to this puzzle is easily expressed as a recursive procedure where each n disk solution is defined in terms of an n 1 disk solution To see how this works first consider a one disk puzzle Clearly this has a simple solution where we move the disk from column A to column C Now consider the n disk problem Moving n disks can be viewed in terms of moving only n 1 disks hence the recursion as follows a Move n 1 disks from column A to column B using column C as a temporary holding area b Move the last disk the largest from A to from C c Move the n 1 disks from column B to column C using column A as a temporary holding area The process ends when the last task involving n 1 disk i e the base case This is accomplished by trivially moving the disk Write a program to solve the Hanoi Tower puzzle Use a recursive function with four parameters a The number of disks to be moved Available for free at Connexions lt http cnx org content col10788 1 1 gt 29 b The column on which these disks are initially threaded c The column to which this stack of disks is to be moved d The column to be used as a temporary holding area Your program should print the precise instructions it will take to move the disks from a starting column to the destination column For example to move a stack of three disks from column A to column C your program should print the following series of moves A gt C This means move
126. facilitate educational communities Connexions s modular interactive courses are in use worldwide by universities community colleges K 12 schools distance learners and lifelong learners Connexions materials are in many languages including English Spanish Chinese Japanese Italian Vietnamese French Portuguese and Thai Connexions is part of an exciting new information distribution system that allows for Print on Demand Books Connexions has partnered with innovative on demand publisher QOOP to accelerate the delivery of printed course materials and textbooks into classrooms worldwide at lower prices than traditional academic publishers
127. fault constructor refers to any constructor that does not require any parameters when it is called In the above example the prototype Date int 7 int 4 int 2001 is valid for a default constructor Here each argument has been given a default value Then an object can be declared as type Date without supplying any further arguments Although any legitimate C statement can be used within a constructor function such as the cout statement used in above example it is best to keep constructors simple and use them only for initialization purposes 2 7 3 5 Structures vesus Classes Similarities between Structures and Classes 1 Both can be used to model objects with different attributes represented as data members also called fields or instance varibles They can thus be used to process non homogeneous data sets 2 They have essentially the same syntax Differences between Structures and Classes 1 Member of a structure by default are public Member of a class by default are private unless explicitly declared to be public 2 A structure consists of only data elements while a class consists of not only data elements but also functions operations which are operated on the data elements 2 7 4 Dynamic Memory Allocation with Operators New and Delete The new and delete operators provides a nice means of performing dynamic memory allocation for any built in or user defined type Consider the following code TypeName typeNamPtr
128. ference between the second and the first calculation Display the number of lines for 100 subscribers Display the additional lines needed 2 2 5 3 Step 3 Code the Solution The following program provides the necessary code include lt iostream h gt int main int numini numin2 linesi lines2 numini 100 Available for free at Connexions lt http cnx org content col10788 1 1 gt 81 numin2 110 linesi numini numini 1 2 lines2 numin2 numin2 1 2 cout lt The number of initial lines is lt linesl lt An cout lt There are lt lines2 lines1 lt additional lines needed n return 0 2 2 5 4 Step 4 Test and Correct the Program The following output is produced when the program is compiled and executed The number of initial lines is 4950 There are 1045 additional lines needed Because the displayed value agrees with the hand calculation we have established a degree of confidence in the program 2 3 Completing the Basics 2 3 1 Assignment Operators Assignment operator is used for assignment a value to a variable and for performing computations Assignment statement has the syntax variable expression Expression is any combination of constants variables and function calls that can be evaluated to yield a result Example length 25 cMyCar Mercedes sum 3 7 newtotal 18 3 amount slope y2 y1 x2
129. fers to variables declared outside of any functions or classes and that are available to all parts of your program Local scope refers to a variable declared inside a function and that is available only within the function in which it is declared 2 6 4 1 Example include lt iostream h gt int x create a global variable named firstnum void valfun function prototype declaration int main int y create a local variable named secnum x 10 store a value into the global variable y 20 store a value into the local variable Available for free at Connexions lt http cnx org content col10788 1 1 gt 134 CHAPTER 2 LECTURE NOTES cout lt From main x lt x lt endl cout lt From mainQ y lt y lt endl valfun call the function valfun cout lt nFrom main again x lt x lt endl cout lt From main again y lt y lt endl return 0 void valfun no values are passed to this function int y create a second local variable named y y 30 this only affects this local variable s value cout lt nFrom valfun x K x lt endl cout lt nFrom valfun y K y lt endl x 40 this changes x for both functions return The output of the above program From main x 10 From main y 20 From valfun x 10 From valfun y 30 From main again x 40 From main again y 20 In the above program the variable x is
130. gest integer which square is less than or equal to n 2 3 a Write a function that can find the average of all the elements in a double precision floating point array that is passed to the function as a parameter b Write a C program that inputs a double precision floating point array and invokes the above function to find the average of all elements in the array and displays it out 2 4 Write a C function that checks if a square matrix with order of n is symmetric or not And then write a C program that inputs a square matrix with order of n and then checks if it is symmetric or not 2 5 A palindrome is a string that reads the same both forward and backward Some examples are Available for free at Connexions lt http cnx org content col10788 1 1 gt 42 CHAPTER 1 STUDENT MANUAL ABCBA RADAR otto Lam mai Figure 1 18 Given the following function that returns true if the parameter string is a palindrome or false otherwise bool palindrome char strg int len k j len strlen strg k len 2 j 0 bool palin true while j lt k amp amp palin if strg j strg len 1 j palin false else j return palin Write a C program that reads several strings one at a time and checks if each string is a palindrome or not Use a while loop in your program The loop terminates when the user enters a string starting with a 2 6 Write a boolean fun
131. gram structure including efficiency 10 program style 10 documentation 10 format of output 5 Scores are given in the range from 0 to 10 rounded to 0 5 with the following interpretation seorerange percentage FA Sa 90 100 15 9 15 89 0 O Fa 5 gt 3 Fall Figure 1 1 Grading system Exams Exams are closed book exams Exams include one or more of short answer multiple choice trace the given code debug the given code or given a problem description produce a solution in the form of a short program or a function s The problems given in the exams are like those on exercises and lab work The students who spend more time and effort in doing exercises and lab assignments will certainly have better performance in the exams Exam scores are given in the range from 0 to 10 Available for free at Connexions lt http cnx org content col10788 1 1 gt 6 CHAPTER 1 STUDENT MANUAL 1 1 11 COURSE MATERIALS Lecture Notes Exercises Laboratory Manual Available at the instructor s website Text book 1 G J Bronson Program Development and Design Using C 3nd Edition Brooks COLE Thomson Learning 2006 All lecture notes and exercises used in this course are mainly from this textbook Students can find more C language features problem solving guidelines as well as good exercises and assignments from this book for further self study Reference books 2 H M Deitel and P
132. gt Pseudocode Descriptions Pseudocode is stressed throughout the course Flowchart symbols are described but are only used when visually presenting flow of control constructs Gentle Introduction to Object Oriented Programming In the course there are two chapters 7and 8 that provide a mini course introduction to basic object oriented programming concepts and design techniques Object oriented design techniques are illustrated in details in a Focus on Problem Solving section of Chapter 7 with one complete application For more advanced features of object oriented programming in C another course named Object Oriented Programming which is offered one semester later will cover 1 1 10 EVALUATION AND GRADING SYSTEMS The final grade of each student shall be calculated by means of a weighted average as follows Lab works and programming projects 30 Midterm examination 20 Final examination 50 Lab work and project evaluation Lab work evaluation is based on lab work performance of all 10 lab sessions Project evaluation is based on the working of 2 programming projects Sample topics for programming projects are given in the last pages of Programming Fundamentals in C Laboratory Manual which is available in the instructor s web site Lab assignments and projects are evaluated using the following grading criteria correctness 40 appropriate use of arrays structures pointers functions and or classes 25 pro
133. he size of two data types long and byte include lt iostream h gt void main byte a long b cout lt sizeof a lt endl cout lt sizeof b lt endl 2 2 Given the following code segment float pay float ptr_pay pay 2313 54 ptr_pay amp pay determine the values of the following expressions a pay b ptr_ pay c pay d pay 2 3 Read for understanding the following program tinclude lt iostream h gt void main 1 int a int aPtr aPtr is a pointer to an integer a 7 aPtr amp a aPtr set to address of a cout lt The address of a is lt ka lt lt AnThe value of aPtr is lt aPtr cout lt n nThe value of a is lt a lt lt AnThe value of aPtr is lt aPtr lt endl Run the program and explain the output 2 4 Given the following array and pointer declarations int ara 1 2 3 4 5 6 7 8 9 10 int ipl ip2 Determine which of the following assignments are valid a ipl ara b ip2 ipl amp ara 3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 43 44 CHAPTER 1 STUDENT MANUAL c ara 15 d ip2 2 15 Assuming ip2 and ara are equal 2 5 Run the following program and explain the output include lt iostream h gt void swap int al int c1 int c2 int dl int d2 void main 1 int a 2 c1 c2 d1 d2 int x1 x2 y1 y2 alo 1 ali
134. hich the Cylinder class is a subclass derived from the Circle class tinclude lt iostream h gt include lt math h gt const double PI 2 0 asin 1 0 class declaration class Circle protected double radius public Circle double 1 0 constructor double calcval implementation section for Circle constructor Circle Circle double r radius r calculate the area of a circle double Circle calcval return PI radius radius Available for free at Connexions lt http cnx org content col10788 1 1 gt 54 CHAPTER 1 STUDENT MANUAL class declaration for the derived class Cylinder which is derived from Circle class Cylinder public Circle protected double length add one additional data member and public two additional function members Cylinder double r 1 0 double 1 1 0 Circle r length 1 double calcval implementation section for Cylinder double Cylinder calcval this calculates a volume return length Circle calcval note the base function call int main Circle circle_1 circle_2 2 create two Circle objects Cylinder cylinder_1 3 4 create one Cylinder object cout lt The area of circle_1 is lt circle_1 calcval lt endl cout lt The area of circle_2 is lt circle_2 calcval lt endl cout lt The volume of cylinder_1 is lt cylinder_1 calcval lt endl
135. hree types of selection and three types of repetition Each C program is formed by combining as many of each type of control structures as is appropriate for the algorithm the program implements We will see that each control structure has only one entry point and one exit point These single entry single exit control structures make it easy to build programs One way to build program is to connect the exit point of one control structure to the entry point of the next This way is called control structure stacking Another way is to place one control structure inside another control structure This way is called control structure nesting Consistent applying reasonable indentation conventions throughout your programs greatly improves pro gram readability We suggest a fixed size tab of about 4 inch or three blanks per indent For example we indent both body statements of an if else structure as in the following statement if grade gt 60 cout lt Passed else cout lt Failed 2 5 11 3 Top down Stepwise Refinement Using good control structures to build programs is one of the main principles of structured programming Another principle of structured programming is top down stepwise refinement Consider the following problem Develop a class averaging program that will process an arbitrary number of grades each time the program is run We begin with a pseudocode representation of the top Determine the class averag
136. i 0 F void showdata for int i 0 i lt dimension i cout lt value il cout lt end1l Vector if value NULL delete value Fs void main Vector v 5 v showdata Vector v2 v v2 showdata a Explain why the program incurs one memory error at run time b Now add the following code segment in the Vector class definition Vector const Vector amp v dimension v dimension value new int dimension for int i 0 i lt dimension i valuelil v valuelil Check if the program still incurs the memory error or not Explain why 2 3 a Test the following program in a Visual C environment class some code segment a public some 4 cout lt some s destructor endl s void main 4 some sS s some What is the output of the above program during execution Explain the output Available for free at Connexions lt http cnx org content col10788 1 1 gt STUDENT MANUAL 51 b Test the following program in Visual C environment class some code segment b int ptr public some ptr new int some cout lt some s destructor endl if ptr NULL cout delete heap memory lt end1 delete ptr 3 void main some sS s some What is the output of the above program during execution Explain the output c In the main function of the program in b if we remove the two slashes
137. ially until the desired item is found or the end of the array is reached include lt iostream h gt int linearSearch int int int int main const int arraySize 100 int alarraySize searchkey element for int x 0 x lt arraySize x create some data alx 2 x cout lt Enter integer search key lt endl cin gt gt searchKey Available for free at Connexions lt http cnx org content col10788 1 1 gt 146 CHAPTER 2 LECTURE NOTES element linearSearch a searchKey arraySize if element 1 cout lt Found value in element element lt endl else cout lt Value not found lt endl return 0 int linearSearch int array int key int sizeofArray for int n 0 n lt sizeofArray n if array n key return n return 1 2 6 10 Pointers In this section we discuss one of the most powerful features of the C programming language the pointer Pointers are among C s most different capabilities to master In section Pass by Reference we saw that references can be used to perform call by reference Pointers enable programs to simulate call by reference and to create and manipulate dynamic data structures i e data structures that can grow and shrink A pointer is a special type of variable that stores the memory address of other variables You declare a variable as a pointer by placing the indirection operator after the
138. ific members double balanceDue void setBalDue void outputDalDue Figure 2 44 Base class and derived class Available for free at Connexions lt http cnx org content col10788 1 1 gt 178 CHAPTER 2 LECTURE NOTES Once you extend a base class you can access its class member directly through objects instantiated from the derived class Example int mainQ 4 customer cust cust setField 123 Richard Leakey cust outputData return 0 The object cust which belongs to the class Customer can call the member functions setFields and outputData that belongs to the base class Person Example include lt iostream h gt include lt string h gt class Person private int idnum char lastName 20 char firstName 15 public void setFields int char char void outputData void Person setFields int num char last char first idnum num strcpy lastName last strcpy firstName first void Person outputData cout lt IDP lt idnum lt Name lt lt firstName lt lt lastName lt endl class Customer public Person private double balanceDue public void setBalDue void outputBalDue 3 void Customer setBalDue double bal balanceDue bal void Customer outputBalDue cout lt Balance due lt balanceDue lt endl Available for free at Connexions lt http cnx
139. increment and decrement unary operators can be used as prefix or postfix operators to increase or decrease value A prefix operator is placed before a variable and returns the value of the operand after the operation is performed A postfix operator is placed after a variable and returns the value of the operand before the operation is performed Prefix and postfix operators have different effects when used in a statement b a will first increase the value of a to 6 and then assign that new value to b It is equivalent to a a w l b a On the other hand execution of the statement b a will first assign the value of 5 to b and then increase the value of a to 6 It is now equivalent to b a a a l The decrement operators are used in a similar way Example Preincrementing and postincrementing include lt iostream h gt int main int c CSi cout lt c lt endl print 5 cout lt c lt endl print 5 then postincrement cout lt c lt endl lt endl print 6 c 5 cout lt c lt endl print 5 cout lt c lt endl preincrement then print 6 cout lt c lt endl print 6 return 0 successful termination Available for free at Connexions lt http cnx org content col10788 1 1 gt 84 CHAPTER 2 LECTURE NOTES The output of the above program O O OF O Ot or 2 3 2 Formatting Number for Program Output Besides displaying correct results a progr
140. inherited class is called the base class or superclass and the class that inherits a base class is called a derived class or subclass A class that inherits the characteristics of a base class is said to be extending the base class since you often extend the class by adding your own class members When a class is derived from a base class the derived class inherits all of the base class members and all of its member functions with the exception of constructor functions copy constructor functions destructor functions overloaded assignment functions A derived class must provide its own implementation of these functions Consider a class originally developed by a company to hold an individual s data such as an ID number and name The class named Person contains three fields and two member functions class Person private int idnum char lastName 20 char firstName 15 public void setFields int char char void outputData void Person setFields int num char last char first 1 idnum num strcpy lastName last strcpy firstName first void Person outputData cout lt ID lt idnum lt Name lt lt firstName lt lt lastName lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 176 CHAPTER 2 LECTURE NOTES The company that uses the Person class soon realizes that the class can be used for all kinds
141. ins the maximum or minimum value of the counter variable can have and determines when the loop is finished and the update statement provides the increment value that is added to or subtracted from the counter variable each time the loop is executed The flowchart of the for statement is given below Available for free at Connexions lt http cnx org content col10788 1 1 gt 115 Enter the for statement Initialization expression test the condition Execute the statement s Exit the for statement Execute the update statement Figure 2 30 Flow chart of the for statement 2 5 7 Example include lt iostream h gt int main int sum 0 for int number 2 number lt 100 number 2 Available for free at Connexions lt http cnx org content col10788 1 1 gt 116 CHAPTER 2 LECTURE NOTES sum number cout lt Sum is lt sum lt endl return 0 The output of the above program Sum is 2550 Example In this example we have to solve the following problem A person invests 1000 00 in a saving account with 5 percent interest Assuming that all interest is left on deposit in the account calculate and print the amount of money in the account at the end of each year for 10 years Use the following formula for determining these amounts a p 1 r n where p is the original amount invested r is the annual interest rate and n is the number of years and a is the amount on deposit
142. ion sqrt is called to calculate the square root of the number contained in the parentheses 900 0 The number 900 0 is the argument of the sqrt function The preceding statement would print 30 The sqrt function takes an argument of type double and returns a result of type double If your program uses mathematic function sqrt it should have the preprocessor command FFinclude lt math h gt in the beginning of the program This makes a mathematical library accessible Below are some commonly used mathematical functions provided in C Function Name Description Return Value abs a Absolute value Same data type as argument log a Natural logarithm double sin a sine of a a in radians double cos a cosine of a ain radians double tan a tangent of a a in radians double log10 a common log base 10 ofa double pow al a2 al raised to the a2 power double expla e double sqrt a square root ofa double Figure 2 18 Mathematical functions Except abs a the functions all take an argument of type double and return a value of type double Example this program calculates the area of a triangle given its three sides include lt iostream h gt include lt math h gt int main Available for free at Connexions lt http cnx org content col10788 1 1 gt 88 CHAPTER 2 LECTURE NOTES double a b c S a 3 b 4 Gp s atbtc 2 0 area sqrt s s a s b s c cout lt The area of the
143. k case cout 3 lt break case cout 4 lt break case cout 53 lt break default Boston is in Massachusetts endl Chicago is in Illinois lt endl Los Angeles is in California lt endl Miami is in Florida lt endl Providence is in Rhode Island endl cout lt You didn t select one of the five cities lt endl end of switch return 0 The output of the above program Enter a number to find the state where a city is located wookrwnre Boston Chicago Los Angeles Miami Providence Los Angeles is in California The switch statement is a clean way to implement multi way selection i e selecting from among a number of different execution paths but it requires an expression that evaluates to an integral value at compile time When writing a switch statement you can use multiple case values to refer to the same set of statements the default label is optional For example consider the following example switch number Available for free at Connexions lt http cnx org content col10788 1 1 gt 105 case 1 cout lt Have a Good Morningln break case 2 cout lt Have a Happy Day n break case 3 case 4 case 5 cout lt Have a Nice Evening n 2 4 8 The Enum Specifier An enumerated data type is a way of attaching names to numbers thereby giving more meaning to anyone r
144. lass members that may be used by derived classes And the order of destruction ensures that any base class members required by derived classes are not destroyed until all objects of any derived classes are destroyed first Available for free at Connexions lt http cnx org content col10788 1 1 gt Order of Construction 1 Class A 2 Class B 3 Class C 4 Class D Order of Destruction 1 Class D 2 Class C 3 Class B 4 Class A Figure 2 46 Execution of constructors and destructors in a class hierarchy Example include lt iostream h gt include lt string h gt class Person private int idnum char lastName 20 char firstName 15 public Person void setFields int char char void outputData Person Person cout lt Base class constructor call lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 183 184 CHAPTER 2 LECTURE NOTES void Person setFields int num char last char first 1 idnum num strcpy lastName last strcpy firstName first void Person outputData 1 cout lt IDP lt idnum lt Name lt lt firstName lt lt lastName lt endl class Customer public Person private double balanceDue public Customer void setBalDue void outputBalDue 3 Customer Customer 4 cout lt Derived constructor called lt endl
145. lates the roots of aln cout lt quadratic equation of the form n cout lt 2 n cout lt ax bx c 0 n n cout lt Enter values for a b and c cin gt a gt b gt c if a 0 0 amp amp b 0 0 cout lt The equation is degenerate and has no roots n else if a 0 0 cout lt The equation has the single root x lt c b lt endl else del b b 4 0 a c if del gt 0 0 x1 b sqrt del 2 a x2 b sqrt del 2 a cout lt The two roots are K xl lt and lt x2 lt endl Available for free at Connexions lt http cnx org content col10788 1 1 gt 108 CHAPTER 2 LECTURE NOTES else if del lt 0 cout lt Both roots are imaginary n else cout lt Both roots are equal to lt b 2 a lt endl return 0 2 4 10 4 Step 4 Test and Correct the Program Test values should include values for a b and c that result in two real roots plus limiting values for a and b that result in linear equation a 0 b 0 a degenerate equation a 0 b 0 and a negative and 0 discriminant Two such test runs of the above program follow This program calculates the roots of a quadratic equation of the form ax 2 bx c 0 Please enter values for a b and c 1 2 35 The two real roots are 5 and 7 and This program calculates the roots of a quadratic equation of the form ax 2 bx c
146. le is named currentFloor The value of currentFloor effectively represents the current state of the elevator The services that we provide for changing the state of the elevator are an initialization function to set the initial floor position when a new elevator is put in service and a request function to change the elevator s position state to a new floor Putting an elevator in service is accomplished by declaring a single class instance and requesting a new floor position is equivalent to pushing an elevator button The response to the elevator button should be as follows If a request is made for either a nonexistent floor or the current floor Do nothing Else if the request is for a floor above the current floor Display the current floor number While not at the designated floor Increment the floor number Display the new floor number End while Display the ending floor number Else Display the current floor number While not at the designated floor Decrement the floor number Display the new floor number End while Display the ending floor number Endif 2 7 6 3 Coding the Solution From the design a suitable class declaration is class declaration class Elevator 1 private int currentFloor public Elevator int 1 constructor void request int The two declared public member functions Elevator and request are used to define the external services provided by each Elevator object The Elev
147. lement in the StudentGrade array Subscripted variables can be used anywhere scalar variables are valid Examples using the elements of the MyArray array are MyArray 0 17 MyArray 1 MyArray 0 11 MyArray 2 5 MyArray 0 MyArray 3 MyArray 1 MyArray 2 3 2 Sum MyArray 0 MyArray 1 MyArray 2 MyArray 3 2 5 13 Example include lt iostream h gt int mainQ 4 char StudentGrade 5 A B D F for int i 0 i lt 5 i cout lt lt StudentGradelil lt endl return 0 The output is A Available for free at Connexions lt http cnx org content col10788 1 1 gt 123 H Jaw 2 5 14 Example Compute the sum of the elements of the array include lt iostream h gt int main const int arraySize 12 int a arraySize 1 3 5 4 7 2 99 16 45 67 89 45 int total 0 for int i 0 i lt arraySize i total ali cout lt Total of array element values is lt total lt endl return 0 The output of the above program is as follows Total of array element values is 383 2 5 14 1 Multi Dimensional Arrays The C language allows arrays of any type including arrays of arrays With two bracket pairs we obtain a two dimensional array The idea can be iterated to obtain arrays of higher dimension With each bracket pair we add another array dimension Some examples of array declarations int a 1000 a one dime
148. lue is placed in it Thereafter the value in the variable is kept without further initialization each time is called compile time initialization 2 All static variables are set to zero when no explicit initialization is given 2 6 6 1 3 Register Variables Register variables have the same time duration as automatic variables The only difference between register and automatic variables is where the storage for the variable is located Register variables are stored in CPU s internal registers rather than in memory Examples register int time register double difference 2 6 6 2 Global Variable Storage Classes Global variables are created by definition statements external to a function Once a global variable is created it exists until the program in which it is declared is finished executing Global variables may be declared as static or extern but not both The purpose of the extern storage class is to extend the scope of a global variable beyond its normal boundaries To understand this we must notice that the programs we have written so far have always been contained together in one file Thus when you have saved or retrieved programs you have only needed to give the computer a single name for your program Larger programs typically consist of many functions stored in multiple files and all of these files are compiled separately Consider the following exaple Example filel int a float c static double d int main
149. mber lt 1 base case return 1 else recursive case return number factorial number 1 The output of the above program 0 1 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800 Available for free at Connexions lt http cnx org content col10788 1 1 gt 142 CHAPTER 2 LECTURE NOTES 2 6 8 1 How the Computation is Performed The mechanism that makes it possible for a C function to call itself is that C allocates new memory locations for all function parameters and local variables as each function is called There is a dynamic data area for each execution of a function This allocation is made dynamically as a program is executed in a memory area referred as the stack A memory stack is an area of memory used for rapidly storing and retrieving data areas for active functions Each function call reserves memory locations on the stack for its parameters its local variables a return value and the address where execution is to resume in the calling program when the function has completed execution return address Inserting and removing items from a stack are based on last in first out mechanism Thus when the function call factorial n is made a data area for the execution of this function call is pushed on top of the stack This data area is shown as figure below reserved for retumed value retum address Figure 2 37 The data area for the fir
150. ming Basic loop structures while loops Interactive while loops for loops Nested loops do while loops Structured programming with C Arrays Structures SOO VOY OV OO Chapter 6 Functions and Pointers 1 Function and parameter declarations 2 Returning values Available for free at Connexions lt http cnx org content col10788 1 1 gt 4 CHAPTER 1 STUDENT MANUAL Variable scope Variable storage class Passing by reference Recursion Passing arrays to functions Pointers The typedef declaration O OUR Oe Chapter 7 Introduction to Classes Classes Information hiding Member functions Dynamically Memory Allocation with operators new and delete Pointers as class members o Chapter 8 Object Manipulation Inheritance Advanced constructors Destructors Constant objects Inheritance Bm 0N RA 1 1 8 LAB WORK This course maintains a laboratory for its students During semester a group of lab assistants hang out in lab to answer students questions and help them in debugging There are 10 lab sessions in the course and the first lab session starts at the third week of the semester For each lab session which is 3 period long the students are requested to finish at least some required assignments Notice that lab assistants will grade the performance of each student at the end of each lab session Lab assistants inspect the working of student programs and ask questions on their program codes in o
151. mple assume that in the class Book we need to store a book title Rather than using a fixed length character array as a data member to hold each book title we could include a pointer member to a character array and then allocate the correct size array for each book title as it is needed Example tinclude lt iostream h gt tinclude lt string h gt class declaration class Book private char title a pointer to a book title public Book char NULL constructor with a default value void showtitle display the title class implementation Book Book char strng title new char strlen strng 1 allocate memory strcpy title strng store the string void Book showtitle cout lt title lt endl return int main At Book book1 DOS Primer create 1st title Book book2 A Brief History of Western Civilization 2nd title Available for free at Connexions lt http cnx org content col10788 1 1 gt 163 book1 showtitle display booki s title book2 showtitle display book2 s title return 0 The output of the above program DOS Primer A Brief History of Western Civilization The body of the Book constructor contains two statements The first statement performs two taks First the statement allocates enough storage for the length of the name parameter plus one to accommodate the end of string null character n Next the addre
152. n or equal to 10 000 250 plus 5 of sales Less than 10 000 200 plus 3 of sales Figure 2 28 Layout of result include lt iostream h gt include lt iomanip h gt int main float monthlySales income cout lt nEnter the value of monthly sales cin gt gt monthlySales Available for free at Connexions lt http cnx org content col10788 1 1 gt 103 if monthlySales gt 50000 00 income 375 00 16 monthlySales else if monthlySales gt 40000 00 income 350 00 14 monthlySales else if monthlySales gt 30000 00 income 325 00 12 monthlySales else if monthlySales gt 20000 00 income 300 00 09 monthlySales else if monthlySales gt 10000 00 income 250 00 05 monthlySales else income 200 00 03 monthlySales set output format cout lt setiosflags ios fixed lt lt setiosflags ios showpoint lt lt setprecision 2 cout lt The income is lt income lt endl return 0 The output of the program Enter the value of monthly sales 36243 89 The income is 4674 27 2 4 7 The Switch Statement The switch statement controls program flow by executing a set of statements depending on the value of an expression Note The value of expression must be an integer data type which includes the char int long int and short data types The syntax for the switch statement switch expression case label statement s break
153. nd area of a rectangle respectively a member function named getdata to get a rectangle s length and width and a member function named showdata that displays a rectangle s length width perimeter and area Include the Rectangle class within a working C program 7 Given the class point which is defined as follows class point private int x y public point int xnew int ynew void getdata void display Available for free at Connexions lt http cnx org content col10788 1 1 gt 20 CHAPTER 1 STUDENT MANUAL 3 point point int xnew ynew constructor x xnew y ynew void point getdata cout lt Enter an integer value Ip cin gt x cout lt Enter an integer value Ip cin gt y void point display cout lt Entered numbers are In cout K x lt x lt t lt y lt y lt endl Write a main program that creates two point objects on the heap displays these objects and then destroys the two objects 8 Given the following program include lt iostream h gt void main int ptr_a int ptr_n int i cout lt How many numbers are there An cin gt ptr_n for i 0 i lt ptr_n 1 i new int 20 new int cout lt element cin gt ptr_alil cout lt Contents of the array Ip for i 0 i lt ptr_n 1 i cout lt ptr_alil cout lt lt
154. ndicate either the start or end of a data series are called sentinels The sentinel values must be selected so as not to conflict with legitimate data values Example include lt iostream h gt int main float grade total grade 0 total 0 cout lt nTo stop entering grades type in any number less than 0 n n cout lt Enter a grade cin gt grade while grade gt 0 total total grade cout lt Enter a grade cin gt grade cout lt nThe total of the grades is lt total lt endl return 0 The following is a sample run of the above program To stop entering grades type in any number less than 0 Enter a grade 95 Enter a grade 100 Enter a grade 82 Enter a grade 2 The total of the grades is 277 Available for free at Connexions lt http cnx org content col10788 1 1 gt 113 2 5 5 2 break statement The break statement causes an exit from the innermost enclosing loop statement Example while count lt 10 1 cout lt Enter a number cin gt nun if num gt 76 cout lt you lose n break else cout lt Keep on trucking n count break jumps to here The break statement violates pure structured programming principles because it provides a second nonstandard exit from a loop However it is useful and valuable for breaking out of loops when an unusual condition is detected 2 5 5 3 continu
155. ng the roots of a quadratic equation is expressed by the following pseudocode Display a program purpose message Accept user input values for a b and c If a 0 and b O then Available for free at Connexions lt http cnx org content col10788 1 1 gt 107 Display a message saying that the equation has no solution Else if a 0 then calculate the single root equal to c b display the single root Else Calculate the discriminant If the discriminant gt 0 then Solve for both roots using the given formulas Display the two roots Else if the discriminant lt 0 then Display a message that there are no real roots Else Calculate the repeated root equal to b 2a Display the repeated root Endif Endif Notice in the pseudocode that we have used nested if else structures The outer if else structure is used to validate the entered coefficients and determine that we have a valid quadratic equation The inner if else structure is then used to determine if the equation has two real roots discriminant gt 0 two imaginary roots discriminant lt 0 or repeated roots discriminant 0 2 4 10 3 Step 3 Code the Algorithm The equivalent C code corresponding to our pseudocode is listed as the following program This program can solve quadratic equation include lt iostream h gt include lt math h gt include lt iomanip h gt int main 1 double a b c del x1 x2 cout lt This program calcu
156. nsional array int b 3 5 a two dimensional array int c 7 9 2 a three dimensional array In these above example b has 3 X 5 elements and c has 7 X 9 X 2 elements Starting at the base address of the array all the array elements are stored contiguously in memory For the array b we can think of the array elements arranged as follows col 1 col2 col3 col4 col5 row 1 b 0 0 b 9 1 b 9 2 b O 3 b 0 4 row 2 b 1 0 b 1 1 b 1 2 b 1 3 b 1 4 row 3 b 2 0 b 2 1 b 2 2 b 2 3 b 2 4 Figure 2 33 Multi dimensional array Available for free at Connexions lt http cnx org content col10788 1 1 gt 124 CHAPTER 2 LECTURE NOTES 2 5 15 Example This program checks if a matrix is symmetric or not tinclude lt iostream h gt const int N 3 int main int i j int a N N bool symmetr true for i 0 i lt N i for j 0 j lt N j cin gt alil jl for i 0 i lt N i for j 0 j lt N j cout lt alil jl lt endl for i 0 i lt N i for j 0 j lt N j if a i j a j i symmetr false break if symmetr break if symmetr cout lt nThe matrix is symmetric lt endl else cout lt nThe matrix is not symmetric lt endl return 0 2 5 15 1 Strings and String Built in Functions In C we often use character arrays to represent strings A string is an array of characters ending in a null character 0
157. nteger2 sum declaration cout lt Enter two integers n prompt cin gt integer gt integer2 read two integers sum integerl integer2 cout lt Sum is K sum lt endl return 0 J The output of the above program Enter two integers 45 72 Sum is 117 2 3 5 Symbolic Constants C introduces the concept of a named constant that is just like a variable except that its value cannot be changed The qualifier const tells the compiler that a name represents a constant Any data type built in or user defined may be defined as const Tf you define something as const and then attempt to modify it the compiler will generate an error To define a constant in a program we use const declaration qualifier Example const float PI 3 1416 const double SALESTAX 0 05 const int MAXNUM 100 Once declared a constant can be used in any C statement in place of the number it represents Example this program calculates the circumference of a circle given its radius include lt iostream h gt int main Available for free at Connexions lt http cnx org content col10788 1 1 gt 90 CHAPTER 2 LECTURE NOTES 1 const float PI 3 1416 float radius circumference radius 2 0 circumference 2 0 PI radius cout lt The circumference of the circle is lt circumference lt endl return 0 The output of the above program The circumference of the circle is 12 5664 2 3 6
158. o store an initial value into declared variables Example int num 15 float gradel 87 0 Variable declarations are just the instructions that tell the compiler to allocate memory locations for the variables to be used in a program A variable declaration creates a memory location but it is undefined to start with that means it s empty Example tinclude lt iostream h gt int main float pricel 85 5 float price2 97 0 float total average total pricel price2 average total 2 0 divide the total by 2 0 cout lt The average price is lt average lt endl return 0 The output of the above program Available for free at Connexions lt http cnx org content col10788 1 1 gt 77 The average price is 91 25 Let notice the two statements in the above program total pricel price2 average total 2 0 Each of these statements is called an assignment statement because it tells the computer to assign store a value into a variable Assignment statements always have an equal sign and one variable name on the left of this sign The value on the right of the equal sign is assigned to the variable on the left of the equal sign 2 2 3 2 Display a Variable s Address Every variable has three major items associated with it its data type its actual value stored in the variable and the address of the variable The value stored in the variable is referred to as the variable s contents while
159. o verify the workings of the member functions 2 7 Test the following program which uses a run time allocated array include lt iostream h gt void main int num cout lt Please enter the numbers of input cin gt gt nun int a new int num int total 0 Holds total of user s eight numbers int ctr for ctr 0 ctr lt num ctr cout lt Please enter the next number cin gt alctr total alctr cout lt The total of the numbers is lt total lt An return delete a 2 8 Given a class named IntArray that contains two private data members a pointer to the beginning of the array and an integer representing the size of the array The public functions include a constructor and member functions that show every element in the IntArray and show the first IntArray element only The definition of the class IntArray is as follows IntArray h class IntArray private int data pointer to the integer array int size public IntArray int d int s void showList void showFirst 3 IntArray cpp IntArray IntArray int d int s data d size s void IntArray showList cout lt Entire list lt endl for int x 0 x lt size x Available for free at Connexions lt http cnx org content col10788 1 1 gt 49 cout lt data x endl cout amp lt endl J void IntArray sh
160. ode quad a b c x1 x2 if code code 2 cout lt xl lt x1 lt setw 20 lt x2 lt x2 lt endl else if code 3 cout lt There is no solution lt endl return 0 int quad double a double b double c double amp px1 double amp px2 double del del b b 4 0xaxc if del 0 0 px1 b 2xa px2 px1 return 1 else if del gt 0 0 px1 b sqrt del 2 a Available for free at Connexions lt http cnx org content col10788 1 1 gt 141 px2 b sqrt del 2 a return 2 else return 3 Note The called by value parameters a b and c are used to passed the data from the calling function to the called function and the two reference parameters pxl and px2 are used to pass the results from the called function to the calling function 2 6 8 Recursion In C it s possible for a function to call itself Functions that do so are called seft referential or recursive functions Example To compute factorial of an integer 1 1 n n n 1 Example Recursive factorial function tinclude lt iostream h gt include lt iomanip h gt unsigned long factorial unsigned long int main for int i 0 i lt 10 i cout lt setw 2 lt i lt lt factorial i lt endl return 0 Recursive definition of function factorial unsigned long factorial unsigned long number 1 if nu
161. of an approximating polynomial include lt iostream h gt include lt iomanip h gt include lt math h gt int main double x funcValue approx difference cout lt in Enter a value of x cin gt x print two title lines cout lt e to the x Approximation Differenceln Gout g raita ence eS sts An funcValue exp x calculate the first approximation approx 1 difference abs funcValue approx cout lt setw 10 lt setiosflags iso showpoint lt funcValue lt setw 18 lt approx lt setw 18 lt difference lt endl calculate the first approximation approx 1 difference abs funcValue approx cout lt setw 10 lt setiosflags iso showpoint lt funcValue lt setw 18 lt approx lt setw 18 lt difference lt endl calculate the second approximation approx approx x Available for free at Connexions lt http cnx org content col10788 1 1 gt 93 difference abs funcValue approx cout lt setw 10 lt setiosflags iso showpoint lt funcValue lt setw 18 lt approx lt setw 18 lt difference lt endl calculate the third approximation approx approx pow x 2 2 0 difference abs funcValue approx cout lt setw 10 lt setiosflags iso showpoint lt funcValue lt setw 18 lt approx lt setw 18 lt difference lt endl calculate the fourth approximation approx approx pow x 3 6 0 diffe
162. oint the repetition stop The condition being tested can be evaluated at either 1 the beginning or 2 the end of the repeating section of code gt This content is available online at lt http cnx org content m27289 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 109 If the test occurs at the beginning of the loop the type of loop is called a pre test loop or entrance controlled loop If the test occurs at the end of the loop the type of loop is called a post test loop or exit controlled loop In addition to where the condition is tested pretest or posttest repeating sections of code are also classified In a fixed count loop the condition is used to keep track of how many repetitions have occurred In this kind of loops a fixed number of repetitions are performed at which point the repeating section of code is exited In many situations the exact number of repetitions are not known in advance or the items are too numerous to count beforehand In such cases a variable condition loop is used In a variable condition loop the tested condition does not depend on a count being achieved but rather on a variable that can change interactively with each pass through the loop When a specified value is encountered regardless of how many iterations have occurred repetitions stop 2 5 2 While Loops The while statement is used for repeating a statement or series of statements as long as a gi
163. ol10788 1 1 gt 122 CHAPTER 2 LECTURE NOTES cout lt Class average is lt setprecision 2 lt lt setiosflags ios fixed ios showpoint lt average lt endl else cout lt No grades were entered lt endl return 0 2 5 12 Arrays An array is an advanced data type that contains a set of data represented by a single variable name An element is an individual piece of data contained in an array 2 5 12 1 Array Declaration The syntax for declaring an array is type name elements Array names follow the same naming conventions as variable names and other identifiers Example int MyArray 4 char StudentGrade 5 The declaration int MyArray 3 tells the compiler to reserve 4 elements for integer array MyArray The numbering of elements within an array starts with an index number of 0 An index number is an element s numeric position within an array It is also called a subsript Each individual element is referred to as an indexed variable or a subscripted variable because both a variable name and an index or subscrip value must be used to reference the element Example Student Grade 0 refers to the first element in the StudentGrade array Student Grade 1 refers to the second element in the StudentGrade array Student Grade 2 refers to the third element in the StudentGrade array Student Grade 3 refers to the fourth element in the StudentGrade array Student Grade 4 refers to the fifth e
164. ons lt http cnx org content col10788 1 1 gt 28 CHAPTER 1 STUDENT MANUAL 1 Customer s name 2 Customer s address 3 Number of bicycles ordered 4 Type of bicycle mountain or street 5 Creditworthiness of the customer good or bad For output a set of shipping instructions is to be generated The instructions must contain the first four input items the total cost of the order and the type of billing The total cost is obtained as the number of bicycles ordered input item 3 times the appropriate cost per bicycle and the type of billing is determined by the creditworthiness of the customer input item 5 Tf the customer is creditworthy a bill be sent otherwise requires cash payment on delivery The customer record layout is as follows Field No Field contents Field type 1 Customer name Character 50 2 Customer address Character 50 3 Bicycle ordered Integer 4 Bicycle type Character M or 5 Creditworthiness Character Y or N Dollar value of order Float oy un Figure 1 10 Layout of result 8 The Hanoi Tower is a puzzle consisting of a number of disks placed on three columns The disks all have different diameters and holes in the middle so they will fit over the columns see Figure 1 All the disks start out on column A The object of the puzzle is to transfer all the disks from column A to column C Only one disk can be moved at a time and no disk can be placed on a disk that is smaller that itsel
165. ons lt http cnx org content col10788 1 1 gt 74 CHAPTER 2 LECTURE NOTES A simple arithmetic expression consists of an arithmetic operator connecting two operands in the form operand operator operand Examples 3 7 18 3 12 62 9 8 12 6 2 0 Example include lt iostream h gt int main cout lt 15 0 plus 2 0 equals lt 15 0 2 0 lt n lt lt 15 0 minus 2 0 equals lt 15 0 2 0 lt n lt lt 15 0 times 2 0 equals lt 15 0 x 2 0 lt An lt 15 0 divided by 2 0 equals lt 15 0 2 0 lt n return 0 The output of the above program 15 0 plus 2 0 equals 17 15 0 minus 2 0 equals 13 15 0 times 2 0 equals 30 15 0 divided by 2 0 equals 7 5 2 2 2 4 Integer Division The division of two integers yields integer result Thus the value of 15 2 is 7 Modulus operator produces the remainder of an integer division Example 9 4 is 1 17 3 is 2 14 2 is 0 2 2 2 5 Operator Precedence and Associativity Expressions containing multiple operators are evaluated by the priority or precedence of the operators Operator precedence defines the order in which an expression evaluates when several different operators are present C have specific rules to determine the order of evaluation The easiest to remember is that multiplication and division happen before addition and subtraction The following table lists both precedence and associativity of the operator
166. ons lt http cnx org content col10788 1 1 gt 79 1 If both operands are either character or integer operands e when both operands are character short or integer data types the result of the expression is an integer value e when one of the operand is a long integer the result is a long integer unless one of the operand is an unsigned integer In the later case the other operand is converted to an unsigned integer value and the resulting value of the expression is an unsigned value 2 If any one operand is a floating point value e when one or both operands are floats the result of the operation is a float value e when one or both operands are doubles the result of the operation is a double value e when one or both operands are long doubles the result of the operation is a long double value Notice that converting values to lower types can result in incorrect values For example the floating point value 4 5 gives the value 4 when it is converted to an integer value The following table lists the built in data types in order from highest type to lowest type 2 2 4 2 Determining Storage Size C provides an operator for determining the amount of storage your compiler allocates for each data type This operator called the sizeof operator Example sizeof num1 sizeof int sizeof float The item in parentheses can be a variable or a data type Example Demonstrating the sizeof operator include lt
167. or gt currentFloor move elevator up cout lt nStarting at floor lt currentFloor lt endl while newfloor gt currentFloor currentFloor cout lt Going up now at floor lt currentFloor lt endl cout lt Stopping at floor lt currentFloor lt endl else move elevator down cout lt nStarting at floor lt currentFloor lt endl while newfloor lt currentFloor currentFloor cout lt Going down now at floor lt currentFloor lt endl cout lt Stopping at floor lt currentFloor lt endl return int main Elevator a declare 1 object of type Elevator a request 6 a request 3 return 0 2 7 6 4 Test and Correct the Program Within the main function three class function calls are included The first statement creates an object name a of type Elevator Since no explicit floor has been given the elevator begins at floor 1 which is the default constructor argument A request is then made to move the elevator to floor 6 which is followed by a request to move to floor 3 The output produced by the program is Available for free at Connexions lt http cnx org content col10788 1 1 gt 167 Starting at floor 1 Going Up now at floor 2 Going Up now at floor 3 Going Up now at floor 4 Going Up now at floor 5 Going Up now at floor 6 stopping at floor 6
168. or int n 0 n lt sizeofArray n if array n key return n return 1 Write a program that performs the following steps Available for free at Connexions lt http cnx org content col10788 1 1 gt 16 CHAPTER 1 STUDENT MANUAL Input the integer array of N elements N is also an input data Input a value you want to search on the array Invoke the function linearSearch to find the element in the array which is equal to the specified value assume that position is k e Remove that element at location k from the array 9 A palindrome is a string that reads the same both forward and backward Some examples are ABCBA RADAR otto ammai CO Figure 1 5 Given the following function that returns true if the parameter string is a palindrome or false otherwise bool palindrome char strg 1 int len k j len strlen strg k len 2 j 0 bool palin true while j lt k amp amp palin if strg j strg len 1 j palin false else 3 return palin Write a C program that reads several strings one at a time and checks if each string is a palindrome or not Use a while loop in your program The loop terminates when the user enters a string starting with a 10 Given the following program include lt iostream h gt int main const int NUMS 5 int nums NUMS 16 54 7 43 5 int i total 0 int nPt nPt nums for i 0 i lt NUMS
169. owFirst cout lt First element is cout lt data 0 lt endl a Add to the class Int Array one more member function named findMax which returns the largest element in the array b Write a main program that instantiates one array of integers and then displays the array the first element and the largest element of the array 1 4 10 LAB SESSION 9 OBJECT MANIPULATION 1 4 10 1 1 OBJECTIVE The objectives of Lab session 9 are 1 to learn to write parameterized constructor constructor with default arguments and 2 to practice destructors 1 4 10 2 2 EXPERIMENT 2 1 Run the following program in a C environment class Int private int idata public Int 4 idata 0 cout lt default constructor is called lt end1 Int int d 9 idata d cout lt constructor with argument is called lt endl void showData cout lt value of idata lt idata lt endl ds void main 1 Int i Int j 8 Int k 10 a Explain why the program incurs a compile time error b Modify the program in order to remove the above error Run the modified program 2 2 Run the following program in a C environment class Vector private int value Available for free at Connexions lt http cnx org content col10788 1 1 gt 50 CHAPTER 1 int dimension public Vector int d 0 dimension d if dimension 0 value NULL elsef value new int dimension for int i 0 i lt dimension i value
170. plane with a seating capacity of 12 It makes one flight daily Write a seating reservation program with the following features e The program uses an array of 12 structures Each structure should hold a seat identification number a marker that indicates whether the seat is assigned and the name of the seat holder Assume that the name of a customer is not more than 20 characters long e The program displays the following menu with six choices Show the number of empty seats Show the list of empty seats Show the list of customers together with their seat numbers in the order of the seat numbers Assign a customer to a seat Remove a seat assignment Quit e The program successfully executes the promises of its menu Choices 4 and 5 need additional input from the user which is done inside the respective functions e After executing a particular function the program shows the menu again except for choice 6 1 4 12 2 PROJECT 2 This project aims to review all the chapters from Chapter 7 Introduction to Classes to Chapter 8 Object Manipulation Inheritance which focus on the basics of object oriented programming An example of Project 2 can be described as follows A stack is an ordered collection of data items in which access is possible only at one end called the top of the stack with the following basic operations Push add an element to the top of the stack Pop remove and return the top element of the stack Check if the sta
171. rOfTimes 5 array of Times objects xptrTime pointer to a Times objects The class name becomes a new type specifier There may be many objects of a class just as there may be many variables of a type such as int The programmer can create new class types as needed This is one reason why C is said to be an extensible language 2 7 2 Information Hiding The principle of information hiding states that any class members that other programmers or clients do not need to access or know about should be hidden Many programmers prefer to make all of their data member private in order to prevent clients from accidentally assigning the wrong value to a variable or from viewing the internal workings of their programs 2 7 2 1 Access Specifiers Access specifiers control a client s access to data members and member functions There are four levels of access specifiers public private protected and friend The public access specifier allows anyone to call a class s function member or to modify a data member The private access specifier is one of the key elements in information hiding since it prevents clients from calling member functions or accessing data members Both public and private specifiers have what is called class scope class members of both access types are accessible from any of a class s member functions Example class Time public Time O void setTime int int int void printMilitaryO void printStandar
172. ram The current value of your stock in Cisco is 6887 5 The current value of your stock in Lucent is 11900 Destructor called Notice that in the above program the destructor function is called only once The stockPick1 object calls the destructor when it is destroyed by the main function going out of scope The stockPick2 object does not call the destructor since it is declared on the heap and must be deleted manually To delete the stockPick2 object manually add the statement delete stockPick2 to the main function as in the following program int main Stocks stockPick1 Cisco stockPick1 setNumShares 100 stockPick1 setPricePerShare 68 875 Stocks stockPick2 new Stocks Lucent heap object stockPick2 gt setNumShares 200 stockPick2 gt setPricePerShare 59 5 cout lt The current value of your stock in lt stockPick1 getStockName lt is lt lt stockPick1 calcTotalValue O lt gt K endl cout lt The current value of your stock in lt lt stockPick2 gt getStockName lt is lt lt stockPick2 gt calcTotalValue lt gt K endl delete stockPick2 return 0 The output of the above program The current value of your stock in Cisco is 6887 5 The current value of your stock in Lucent is 11900 Destructor called Destructor called 2 8 3 Constant Objects If you have any type of variable in a program that
173. rder to grade the student lab performance in each lab session Lab work materials Lab assignments for all lab sessions are given in Programming Fundamentals in C Laboratory Manual which is available in the instructor s web site System requirement This course is designed to be delivered in an environment supporting a C compiler There is supple mentary information included about the Visual C 6 0 development environment 1 1 9 INSTRUCTIONAL METHODS To facilitate the goal of making C accessible as a first level programming course the following instructional methods are used in this course End of Chapter Exercises Every chapter in the Lecture Notes contains several diverse skill builder and programming exercises Students are encouraged to do all the exercises after each chapter Solutions to some of them are provided by instructor or teaching assistants in the class Focus on Problem Solving In the Chapter 2 3 4 and 7 each chapter contains a Focus on Problem Solving section with one complete problem per chapter Each application is used to demonstrate effective problem solving within the context of a complete program solution Two programming projects one for structured programming paradigm and one for object oriented programming paradigm will ask each student to write larger programs in order to help students to enhance their problem solving skills Available for free at Connexions lt http cnx org content col10788 1 1
174. rence abs funcValue approx cout lt setw 10 lt setiosflags iso showpoint lt funcValue lt setw 18 lt approx lt setw 18 lt difference lt endl return 0 In reviewing the program notice that the input value of x is obtained first The two title lines are then printed prior to any calculations being made The value of ex is then computed using the exp library function and assigned to the variable funcValue This assignment permits this value to be used in the four difference calculations and displayed four times without the need for recalculation Since the approximation to the ex is built up using more and more terms of the approximating poly nomial only the new term for each approximation is calculated and added to the previous approximation Finally to permit the same variables to be reused the values in them are immediately printed before the next approximation is made 2 3 6 4 Step 4 Test and Correct the Program The following is the sample run produced by the above program is Enter a value of x 2 eto the x Difference Approximation f 389056 f 389056 T 389036 T 389036 1 000000 3 000000 2 DOOD 6223333 Figure 2 20 A sample run produced by the above program 6 389056 4 389056 2 389056 USPS Available for free at Connexions lt http cnx org content col10788 1 1 gt 94 CHAPTER 2 LECTURE NOTES The first two columns of output data produced by the sample run agree
175. rg content col10788 1 1 gt 69 70 CHAPTER 2 LECTURE NOTES 1 In the flowchart the statement NUM NUM 1 means old value of NUM 1 becomes new value of NUM The above algorithm can be described in pseudocode as follows NUM 4 do SQNUM NUM NUM Print NUM SQNUM NUM NUM 1 while NUM lt 9 You can compare the pseudo code and the flowchart in Figure above to understand the meaning of the do while construct used in the pseudo code 2 1 4 4 Flowchart versus pseudocode Since flowcharts are inconvenient to revise they have fallen out of favor by programmers Nowadays the use of pseudocode has gained increasing acceptance Only after an algorithm has been selected and the programmer understands the steps required can the algorithm be written using computer language statements The writing of an algorithm using computer language statements is called coding the algorithm which is the third step in our program development process 2 2 Basic Elements in C 2 2 1 Program Structures 2 2 1 1 Modular Programs A large program should be organized as several interrelated segments arranged in a logical order The segments are called modules A program which consists of such modules is called a modular program In C modules can be classes or functions We can think of a function as a program segment that transforms the data it receives into a finished result Each function must have a name Names or identifiers
176. rite the main function in such a way that your program call all of the member functions in the Cylinder class and Sphere class 7 Create a base class named Point that consists of an x and y coordinate From this class derive a class named Circle that has an additional data member named radius For this derived class the x and y data members represents the center coordinates of a circle The function members of the first class should consist of a constructor and a distance function that returns the distance between two points where distance square root x2 x1 2 y2 y1 2 Additionally the derived class should have a constructor an override distance function that calculates the distance between circle centers and a function named area that returns the area of a circle Include the two classes in a complete C program Have your program call all of the member functions in each class In addition call the base class distance function with two Circle objects and explain the result returned by the function 8 Create a base class named Rectangle that contains length and width data members From this class derive a class named Box having an additional data member named depth The function members of the base Rectangle class should consist of a constructor and an area function The derived Box class should have a constructor and an override function named area that returns the surface area of the box and a volume function Include
177. rogram Please type in the taxable income 10000 Taxes are 200 and Please type in the taxable income 30000 Taxes are 650 2 4 3 1 Block Scope All statements within a compound statement constitute a single block of code and any variable declared within such a block only is valid within the block The location within a program where a variable can be used formally referred to as the scope of the variable Example 1 start of outer block int a 25 int b 17 cout lt The value of a is lt a lt and bis lt b lt endl start of inner block float a 46 25 int c 10 cout lt a is now amp a lt b is now lt b lt and c is lt c lt endl cout lt a is now lt a lt b is now lt b lt endl end of outer block The output is The value of a is 25 and b is 17 a is now 46 25 b is now 17 and cis 10 a is now 25 b is now 17 2 4 3 2 One way Selection A useful modification of the if else statement involves omitting the else part of the statement In this case the if statement takes a shortened format if conditional expression statements The flow chart of one way if statement is as below Available for free at Connexions lt http cnx org content col10788 1 1 gt 101 Prewious statement Is condition true Statement s Figure 2 27 Flowchart of statement 2 4 4 Example The following program
178. rogram that reads an integer n and invokes the function to check whether n is prime 5 We can recursively define the number of combinations of m things out of n denote C n m for n gt l and 0 lt m lt n by C n m 1 if m 0 or m n C n m C n 1 m C n 1 m1 if0 lt m lt n 1 Write a recursive function to compute C n m 2 Write a complete program that reads two integers N and M and invokes the function to compute C N M and prints the result out 6 Given a function as follows int cube int a a axara return a 1 Write a complete program that reads an integer n and invokes the function to compute its cube 2 Rewrite the function so that the parameter is passed by reference It is named by cube2 Write a complete program that reads an integer n and invokes the function cube2 to compute its cube prints the result out and then displays the value of n What is the value of n after the function call 7 a Write a function that can find the largest element in the array that is passed to the function as a parameter b Write a program that inputs an array and invokes the above function to find the largest element in the array and print it out 8 Given the following function that can find a specified value in an array If the search is successful this function returns the position of the specified value in the array otherwise it returns 1 int linearSearch int array int key int sizeofArray f
179. s Available for free at Connexions lt http cnx org content col10788 1 1 gt 75 Operator Associativity unary Right to left Fi Left to right Left to right Figure 2 10 Precedence and associativity of the operators Example Let us use the precedence rules to evaluate an expression containing operators of different precedence such as 8 5 7 2 4 Because the multiplication and modulus operators have a higher prece dence than the addition operator these two operations are evaluated first P2 using their left to right associativity before the addition is evaluated P3 Thus the complete expression is evaluated as a 70 24a B 34 2 4 e 1 4 atd Figure 2 11 Expression evaluation 2 2 2 6 Expression Types An expression is any combination of operators and operands that can be evaluated to yield a value An expression that contains only integer values as operands is called an integer expression and the result of the expression is an integer value Similarly an expression containing only floating point values single and double precision as operands is called a floating point expression and the result of the expression is a floating point value the term real expression is also used 2 2 3 Variables and Declaration Statements One of the most important aspects of programming is storing and manipulating the values stored in vari ables A variable is simply a name chosen by the programmer that is
180. s This manipulator is used to control different input and output settings setioflag ios fixed means the output field will use conventional fixed point decimal notation setiosflag ios showpoint means the output field will show the decimal point for floating point number setiosflag ios scientific means the output field will use exponential notation Note In the absence of the ios fixed flag a floating point number is displayed with a default of 6 significant digits If the integral part of the number requires more than 6 digits the display will be in exponential notation Below are some other format flags for use with setiosflags Available for free at Connexions lt http cnx org content col10788 1 1 gt 86 CHAPTER 2 LECTURE NOTES Flag Meaning ioss showpos display a leading sign when the number is positive ioss dec display in decimal format ios coct display in octal format ios left left justify output iosscright right justify output iosschex display in hexadecimal format Figure 2 17 Flags for use with setiosflags Example This program will illustrate output conversions include lt iostream h gt include lt iomanip h gt int main cout lt The decimal base 10 value of 15 is lt 15 lt endl lt lt The octal base 8 value of 15 is lt lt setiosflags ios oct lt 15 endl lt The hexadecimal base 16 value of 15 is lt setiosflags ios hex lt 15 lt endl return
181. s more reliable by ensuring that functions that are not supposed to modify data cannot modify data To declare a function as constant you add the const keyword after a function s parentheses in both the function declaration and definition Payroll h double getStateTax Payroll pStateTax const Payroll cpp double Payroll getStateTax Payroll pStateTax const return pStateTax gt dStateTax 3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 175 2 8 4 Inheritance Inheritance is a form of software reusability in which new classes are created from existing classes by absorbing their attributes and behaviors and overriding or embellishing these with capabilities the new classes require Software reusability saves time in programming development It encourages the reuse of proven and debugged high quality software thus reducing problems after a system becomes functional 2 8 4 1 Basic Inheritance Inheritance refers to the ability of one class to take on the characteristics of another class Often classes do not have to be created from scratch Rather they may be derived from other classes that provide attributes and behaviors the new classes can use Such software reuse can greatly enhance programmer productivity 2 8 4 2 Base Classes and Derived Classes When you write a new class that inherits the characteristics of another class you are said to be deriving or subclassing a class An
182. s up any resources allocated to an object once the object is destroyed The default constructor is sufficient for most classes except when you have allocated memory on the heap To delete any heap variables declared by your class you must write your own destructor function You create a destructor function using the name of the class the same as a constructor function preceded by a tilde Destructor functions cannot be overloaded A destructor accepts no parameter and returns no value A destructor is called in two ways when a stack object loses scope when the function in which it is declared ends when a heap object is destroyed with the delete operator The destructor itself does not actually destroy the object it performs termination house keeping before the system reclaims the object s memory so that memory may be reused to hold new objects Example Stocks_02 h class Stocks public Stocks char szName Stocks destructor void setStockName char szName char getStockName void setNumShares int Available for free at Connexions lt http cnx org content col10788 1 1 gt 172 CHAPTER 2 LECTURE NOTES int getNumShares int void setPricePerShare double double getPricePerShar double calcTotalValue private char szStockName int iNumShares double dCurrentValue double dPricePerShare Stocks cpp include stocks_02 h include lt string h gt in
183. se as a comment Block comments span multiple lines Such comments begin with and end with the symbols Example void main 1 This line is part of the block comment This line is also part of the block comment cout lt Line comment 1 cout lt Line comment 2 This line comment takes up an entire line All programs should contain comments They are remarks insights wisdom in code without affecting the program The compiler ignores comments 2 2 2 Data Types and Operators 2 2 2 1 Data Types A data type is the specific category of information that a variable contains There are three basic data types used in C integers floating point numbers and characters Integers An integer is a positive or negative number with no decimal places 259 13 0 200 Floating Point Numbers A floating point number contains decimal places or is written using exponential notations 6 16 4 4 2 7541 10 5 Available for free at Connexions lt http cnx org content col10788 1 1 gt 73 Exponential notation or scientific notation is a way of writing a very large numbers or numbers with many decimal places using a shortened format 2 0e11 means 2 1011 C supports three different kinds of floating point numbers e float i e single precision numbers e double i e double precision numbers e long double A double precision floating point number can contain up to 15 significant digits The Chara
184. seful 2 3 4 1 Standard Input Stream The cin object reads in information from the keyboard via the standard input stream The extraction operator gt gt retrieves information from the input stream When the statement cin gt numl is encountered the computer stops program execution and accepts data from the keyboard The user responds by typing an integer or float and then pressing the Enter key sometimes called the Return key to send the number to the computer When a data item is typed the cin object stores the integer or float into the variable listed after the gt operator The cin and cout stream objects facilitate interaction between the user and the computer Because this interaction resembles a dialogue it is often called conversational computing or interactive computing Example tinclude lt iostream h gt int main Available for free at Connexions lt http cnx org content col10788 1 1 gt 89 int integer1 integer2 sum declaration cout lt Enter first integer n prompt cin gt integer1 read an integer cout lt Enter second integer n prompt cin gt integer2 read an integer sum integerl integer2 cout lt Sum is K sum lt endl return 0 indicate that program ended successfully The output of the above program Enter the first integer 45 Enter the second integer 72 Sum is 117 Example include lt iostream h gt int main int integer1 i
185. ss of the first allocated character position is assigned to the pointer variable title 2 7 6 Focus on Problem Solving Problem Constructing an Elevator Object In this application you are required to simulate the operation of an elevator Output is required that describes the current floor on which the elevator is stationed or is passing Additionally an internal elevator button that is pushed as a request to move to another floor should be provided The elevator can travel between the first and fifteenth floors of the building in which it is situated 2 7 6 1 Analyze the Problem For this application we have one object an elevator The only attribute of interest is its location A rider can request a change in the elevator s position state Additionally we must be able to establish the initial floor position when a new elevator is put in service Figure below illustrates an object diagram that includes both the required attributes and operations Elevator Floor location Initialize the floor position Request a new floor Figure 2 42 Object diagram Available for free at Connexions lt http cnx org content col10788 1 1 gt 164 CHAPTER 2 LECTURE NOTES Figure 7 3 An Elevator Class Diagram 2 7 6 2 Develop a Solution For this application the location of the elevator which corresponds to its current floor position can be represented by an integer member variable whose value ranges between 1 and 15 The variab
186. ssociate Professor Office Location Faculty of Computer Science and Engineering Ho Chi Minh City University of Tech nology 268 Ly Thuong Kiet Dist 10 Ho Chi Minh City Office hours 14 00 17 00 Wednesday or by appointment Tel 8647256 Ext 5841 Fax 848 8645137 Email dtanh cse hcmut edu vn Website http www dit hcmut edu vn dtanh Teaching Assistants This content is available online at lt http cnx org content m27299 1 1 gt dtanh cse hcmut edu vn Shttp www dit hcmut edu vn dtanh Available for free at Connexions lt http cnx org content col10788 1 1 gt 1 CHAPTER 1 STUDENT MANUAL Mr Nguyen Quoc Viet Hung nqvhung cse hcmut edu vn Mr Ly Hoang Hai IhhaiQGcse hemut edu vn Mr Nguyen Xuan Minh nxminh cse hcmut edu vn Mr Nguyen Van Doan nvdoan cse hcmut edu vn 1 1 3 COURSE DESCRIPTION This course is a comprehensive introductory course that is intended for students who have no background in computer programming This course provides basic knowledge and skills on programming with two important programming paradigms structured programming and object oriented programming The course covers structured programming paradigm in depth and introduces just some basics on object oriented programming The programming language used in this programming course is C 1 1 4 COURSE OBJECTIVES Upon successful completion students will be able to 1 2 3 4 Design algori
187. st call to factorial The progress of execution for the recursive function factorial applied with n 3 is as follows Available for free at Connexions lt http cnx org content col10788 1 1 gt Figure 2 38 factorial 3 3 factorial 2 3 2 factorial 1 3 2 1 fa ctorial 0 3 2 1 1 3 2 1 3 2 6 Progress of execution for the recursive function 143 During the execution of the function call factorial 3 the memory stack evolves as shown in the figure below Whenever the recursive function calls itself a new data area is pushed on top of the stack for that function call When the execution of the recursive function at a given level is finished the corresponding data area is popped from the stack and the return value is passed back to its calling function factorial 3 Figure 2 39 factorial 1 factorial 1 factorial 2 factorial 3 The memory stack for execution of function cal factorial 2 factorial 3 factorial 3 l factorial 3 Example Fibonacci numbers F N F N 1 F N 2 for N gt 2 F 0 F 1 1 include lt iostream h gt int fibonacci int int main int m cout lt Enter a number cin gt m cout lt The fibonacci of lt m lt is lt fibonacci m lt endl return 0 3 Available for free at Connexions lt http cnx org content col10788 1 1 gt 144 CHAPTER 2 LECTURE NOTES
188. stName lt endl delete eiPtr delete e2Ptr Add an appropriate destructor to the class Employee 5 Given the following program which defines and uses the class Ob What is the output of the main function class Ob private int field public ObQ 0b Ob 0b field 0 cout lt Object created lt endl Ob 0b Cout lt Object detroyed lt endl void main Ob obj 6 6 Given a base class named Circle which is defined as follows const double PI 3 14159 class Circle protected double radius public Circle double 1 0 constructor double calcval 3 implementation section for Circle Available for free at Connexions lt http cnx org content col10788 1 1 gt 23 constructor Circle Circle double r radius r calculate the area of a circle double Circle calcval 1 return PI radius radius a Derive from the base class another class named Cylinder which contains an additional data member to store length The only additional function members of Sphere should be a constructor and a caleval function that returns the volume of the cylinder Note Volume length pi radius 2 b Define another derived class name Sphere from the base Circle class The only additional class members of Sphere should be a constructor and a calcval function that returns the volume of the spere Note Volume 4 3 pi radius 3 c W
189. stName last strcpy firstName first void Person outputData cout lt IDP lt idnum lt Name lt lt firstName lt lt lastName lt endl derived class class Employee public Person private int dept double hourlyRate public void setFields int char char int double F void Employee setFields int num char last char first int dept double sal Person setFields num last first dept dep hourlyRate sal int main Person aPerson aPerson setFields 123 Kroening Ginny aPerson outputData cout lt endl lt endl Employee worker worker Person setFields 777 John Smith worket outputData worker setFields 987 Lewis Kathy 6 23 55 worker outputData return 0 F The output of the above program ID 123 Name Ginny Kroening ID 777 Name John Smith ID 987 Name Kathy Lewis Available for free at Connexions lt http cnx org content col10788 1 1 gt 181 182 CHAPTER 2 LECTURE NOTES In the above program when you use the Employee class to instantiate an Employee object with a statement such as Employee worker and then the statement worker setFields uses the child function with the name setFields When used with a child class object the child class function overrides the parent class version On the other hand the statement worker outputData uses
190. strcmp FirstName LastName if n lt 0 cout lt FirstName lt is less than lt LastName lt end1 else if n 0 cout lt FirstName lt is equal to lt LastName lt end1 else cout lt FirstName lt is greater than lt LastName lt endl return 0 The output of the program Mike Thomson Mike is less than Thomson How to input a string Inputting a string from a keyboard requires the string I O library function cin geline The cin getline function has the syntax cin getline str terminatingLength terminatingChar where str is a string or character pointer variable terminatingLength is an integer constant or variable indicating the maximum number of input characters that can be input and terminatingChar is an optional character constant or variable specifying the terminating character If this optional third argument is omitted the default terminating character is the newline n character The function call stops reading characters when the terminatingChar key is pressed or until terminatin gLength characters have been read whichever comes first Example include lt iostream h gt int main char Text 40 cin getline Text 40 n cout lt Text lt endl return 0 The cin getline function continously accepts and stores characters typed at the keyboard into the character array named Text until either 39 characters are entered the 40th character is then used to store the
191. struct a class named Int Array consisting of two private data members a pointer to the beginning of the array and an integer representing the size of the array The public functions include a constructor and member functions that show all elements in the IntArray and search a specified integer in the array Include the class Int Array within a complete program The program should declare one object of type Int Array and accept and display data for the object to verify operation of the member functions 5 Construct a class named Student consisting of an integer student idenfification number an array of five floating point grades and an integer representing the total number of grades entered The constructor for this class should initialize all Student data members to zero Included in the class should be member functions to enter a student ID number enter a single test grade and update the total number of grades entered and compute an average grade and display the student ID following by the average grade Include the class Student within a complete program The program should declare two objects of type Student and accept and display data for the two objects to verify operation of the member functions 6 Construct a class named Rectangle that has floating point data members named length and width The class should have a constructor that sets each data member to 0 member functions named perimeter and area to calculate the perimeter a
192. t This prints 25 times n 2 2 Test the following program include lt iostream h gt include lt iomanip h gt void main float total_grade 0 0 float grade_avg 0 0 float grade int grade_ctr 0 do cout lt What is your grade 1 to end cin gt grade if grade gt 0 0 total_grade grade Add to total grade_ctr Available for free at Connexions lt http cnx org content col10788 1 1 gt 36 3 Add to count while grade gt 0 0 Quit when 1 entered grade_avg total_grade grade_ctr cout lt nYou made a total of lt setprecision 1 lt total_grade lt points In cout lt Your average was lt grade_avg lt An if total_grade gt 450 0 cout lt xx You made an A return 0 2 3 Test the following program include lt iostream h gt void main int outer num fact total cout lt What factorial do you want to see cin gt nun for outer 1 outer lt num outer total 1 for fact 1 fact lt outer fact total fact cout lt The factorial for lt num lt is lt total return 0 2 4 Determine the result of each following code segment a for ctr 10 ctr gt 1 ctr 3 cout lt ctr lt An b n 10 i 1 for i 0 i lt n gt i cout lt i lt endl c for i 1 i lt 10 i for j 1 j lt 5
193. t cout lt weight cin cls i weight cout gt endl Include into the above program the code that performs two tasks a displaying data of n students in the following format Name Kollno Sex Height Weight Figure 1 4 b computing and displaying the average of heights and the average of weights of the students Available for free at Connexions lt http cnx org content col10788 1 1 gt 15 1 2 6 Exercise 6 1 a Write a function inorder that determines whether the three characters are in alphabetic order or not It returns true if the three arguments are in order or false otherwise b Write a complete program that reads three characters and calls the function inorder to report whether they are in alphabetic order loops until reading 2 a Write a function IntSquare that computes the greatest integer so that its square is less than or equal to a given number b Write a complete program that reads an integer n and invokes the function IntSquare to compute the greatest integer so that its square is less than or equal to n 3 a Write a function that computes the fourth root of its integer argument k The value returned should be a double Hint Use the library function sqrt b Write a complete program that reads an integer n and invokes the function to compute the fourth root of n 4 a Write a function is_ prime n that returns true if n is a prime or false otherwise b Write a complete p
194. t the following compound condition is evaluated as 6 3 36 2 13 lt 3 3 4 amp amp 1 6 2 lt 5 18 18 13 lt 94 4 amp amp 4 lt 5 1 3 lt 13 811 1 0 amp amp 0 1 0 1 Figure 2 24 Evaluation process 2 4 1 3 The bool Data Type As specified by the ANSO ISO standard C has a built in Boolean data type bool containing the two values true and false As currently implemented the actual values represented by the bool values true and false are the integer values 1 and 0 respectively For example consider the following program which declares two Boolean variables Example tinclude lt iostream h gt int main bool ti t2 ti true t2 false cout lt The value of ti is lt tl lt An and the value of t2 is lt t2 lt endl return 0 The output of the program is The value of t1 is 1 and the value of t2 is 0 2 4 2 The If Else Statement The if else statement directs the computer to select a sequence of one or more statements based on the result of a comparison The syntax for an if else statement if conditional expression statements else statements Available for free at Connexions lt http cnx org content col10788 1 1 gt 97 Previous statement Is condition tre 7 Statement 1 Statement 2 Figure 2 25 Flowchart of statement 2 4 3 Example 1 We construct a C program for determining income taxes
195. t 1 5 A 9 May 13 Introduction to classes cont Ch 8 Lab session 8 12 May Ld 19 May Inheritance 15 Object Manipulation Ss 10 Lab session 10 26 May Inheritance cont Due date Project 2 30 May 16 2 June Final Exam Figure 1 2 Course calenda Available for free at Connexions lt http cnx org content col10788 1 1 8 CHAPTER 1 STUDENT MANUAL 1 1 13 END OF COURSE EVALUATION To continuously improve course content and design students are requested to complete end of course evalu ation form The student comments will be carefully reviewed and used to improve the quality of the course Please take a moment to complete the following end of course feedback form OVERALL 1 Rate your overall satisfaction with the course Very Satisfied Satisfied ier ere Neutral O me Dissatisfied Very Dissatisfied 1 Rate the course in terms of meeting your educational needs Very Satisfied Satisfied a Neutral A Dissatisfied Very Dissatisfied 1 Based on the knowledge skill you require to do your job how would you want to change this course COURSE CONTENT 1 Rate the course in terms of meeting the stated objectives Very Satisfied Satisfied Neutral Dissatisfied Very Dissatisfied 1 Rate the course content e g relevance structure level of details Very Satisfied Satisfied Neutral Dissatisfied Very Dissatisfied 1 Rate the participative activities e g labs exercises projects
196. t http cnx org content col10788 1 1 gt 39 d cout lt teams 0 e cout lt teams 0 0 f cout lt teams 5 2 4 Given the array declaration int grades 3 5 80 90 96 73 65 67 90 68 92 84 70 55 95 78 100 Determine the value of the following subscripted variables a grades 2 3 b grades 2 4 c grades 0 1 2 5 Write a C program that inputs an array consisting of n single precision floating point numbers and finds the smallest element in the array n is an integer that is entered by the user 2 6 Write a C program that inputs an integer array and finds the last element in the array 2 7 Write a C program that inputs an integer array and then inserts the integer value X in the first position in the array 2 8 Write a C program that inputs an integer array and checks if all the elements in the array are unique i e we can not find any pair of elements that are equal to each other 2 9 Write a C program that inputs a matrix and then transposes it and displays the transposed matrix Transposing a square matrix is to swap a i j lt gt a j i for all i j For example given the matrix E BF ee I oo uo LA Figure 1 15 After transposing it it becomes as follows Lh L wD D m7 fo Figure 1 16 2 10 Write a C program that inputs an integer n and two square matrices with order of n Then the program calculates the multiplication of the two matri
197. t of the above program 1 101 2 102 3 103 4 104 5 105 6 106 7 107 8 108 9 109 10 110 Note The effect of increasing sum in funct before the function s return statement is lost when control is returned to main In some applications we want a function to remember values between function calls This is the purpose of the static storage class A local static variable is not created and destroyed each time the function declaring the static variable is called Once created local static variables remain in existence for the life of the program Example tinclude lt iostream h gt int funct int function prototype int main 1 int count value count is a local auto variable for count 1 count lt 10 count value funct count cout lt count lt lt lt value lt endl return 0 int funct int x static int sum 100 sum is a local auto variable sum x return sum The output of the above program 1101 2 103 3 106 4110 5 115 6 121 7 128 8 136 9 145 10 155 Since sum has a permanent memory space it retains the same value in the period of time between leaving function and again entering it later Available for free at Connexions lt http cnx org content col10788 1 1 gt 137 Note 1 The initialization of static variables is done only once when the program is first compiled At compile time the variable is created and any initialization va
198. t on different data types Example void showabs int x Available for free at Connexions lt http cnx org content col10788 1 1 gt 133 1 if x lt 0 X X cout lt The absolute value of the integer is lt x lt endl void showabs double x if x lt 0 X X cout lt The absolute value of the double is lt x lt endl The function call showabs 10 causes the compiler to use the first version of the function showabs The function call showabs 6 28 causes the compiler to use the second version of the function showabs 2 6 3 2 Default Arguments C allows default arguments in a function call Default argument values are listed in the function prototype and are automatically transmitted to the called function when the corresponding arguments are omitted from the function call Example The function prototype void example int int 5 float 6 78 provides default values for the two last arguments If any of these arguments are omitted when the function is actually called the C compiler supplies these default values Thus all following function calls are valid example 7 2 9 3 no default used example 7 2 same as example 7 2 6 78 example 7 same as example 7 5 6 78 2 6 4 Variable Scope Scope refers to where in your program a declared variable or constant is allowed used A variable can be used only when inside its scope Global scope re
199. t we need to define an integer stack class Since a stack must stores a collection of integers we can use an integer array to model the stack and a pointer named Top to indicate the location of the top of the stack The array should have a fixed size So we can begin the declaration of the class by selection two data members e Provide an integer array data member to hold the stack elements the size of the array is a constant Available for free at Connexions lt http cnx org content col10788 1 1 gt 30 CHAPTER 1 STUDENT MANUAL e Provide an integer data member to indicate the top of the stack As for the member functions of the stack class we have to define 5 member functions the constructor which creates an empty stack and four other member functions push pop check if the stack is empty check if the stack is full b After defining the stack class write a main function which does the following tasks Creating one stack object Pushing into the stack object ten integer elements which take values from 1 to 10 with the increment of 1 e Popping one by one element from the stack object and displaying it out repeating this action until the stack becomes empty c Next apply the stack data structure in solving the following problem write a program that accepts a string from the user and prints the string backward Hint Use a character stack Available for free at Connexions lt http cnx org content col10788 1 1 gt
200. tained by using the first term in the polynomial that was given in the program specification Finally the third item on the line can be calculated by using the abs function on the difference between the first two lines When all of these items are calculated a single cout statement can be used to display the three results on the same line The second output line illustrated in Table 3 4 displays the same type of items as the first line except that the approximation to ex requires the two of two terms of the approximating polynomial Notice also that the first item on the second line the value obtained by the exp function is the same as the first item on the first line This means that this item does not have to recalculated the value calculated for the first line can simply be displayed a second line Once the data for the second line have been calculated a single cout statement can again be used to display the required values Finally only the second and third items on the last two output lines shown in Figure 1 need to be recalculated because the first item on these lines is the same as previously calculated for the first line Thus for this problem the complete algorithm described in pseudocode is Display a prompt for the input value of x Read the input value Display the heading lines Calculate the exponential value of x using the exp function Calculate the first approximation Calculate the first difference Print the first
201. teTax 0 05 Available for free at Connexions lt http cnx org content col10788 1 1 gt 170 CHAPTER 2 LECTURE NOTES 3 Payroll Payroll double dFed dFedTax dFed 3 Payroll Payroll double dFred double dState dFedTax dFed dStateTax dState int main Payroll employeeFL 0 28 Payroll employeeMA 0 28 0 0595 return 0 In the above example the Payroll class has two parameterized constructor functions one for states that have a state income tax and one for states that do not have a state income tax 2 8 1 2 Initialization Lists Initialization lists or member initialization lists are another way of assigning initial values to a class s data members An initialization list is placed after a function header s closing parenthesis but before the function s opening curly braces Example Given the simple constructor that assigns parameter values to the Payroll class Payroll Payroll double dFed double dState dFedTax dFed dStateTax dState You can use initialization list to rewrite the above constructor function Payroll Payroll double dFed double dState dFedTax dFed dStateTax dState 2 8 1 3 Parameterized Constructors that Uses Default Arguments To create a parameterized constructor that uses default arguments we can put the default values at the constructor prototype In the following example the class Employee has a constructor with the prototype
202. the formula Xie1 Xi y x y xi For example if y x 3x 2x 2 then y x 6x 2 and the roots are found by making a reasonable guess for a first approximation x and iterating using the equation Xi 1 Xi 3xi 2x 2 6x 2 Figure 1 6 Newton Raphson method Using the Newton Raphson method find the two roots of the equation 3x 2 2x 2 0 Hint Stop the loop when the difference between the two approximations is less than 0 00001 Extend the program written for a so that it finds the roots of any function y x 0 when the function for y x and the derivative of y x are placed in the code This content is available online at lt http cnx org content m27202 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 25 2 a See the definition of determinant of a matrix as below The determinant of a 2 2 matrix lay 212 aya d77 1s 2 1277 221217 Similarly the determinant of a 3 x 3 matrix lali al ai3 la21 a22 a23 a3l a32 a33 a11 D a2 D2 a31 D3 where D is determinant of las a laz as Dszisdeterminant of la a 3 az2 233 and D is determinant of lajzaj3 azo 273 Figure 1 7 Determinant of matrix Using this information write and test two functions named det2 and det3 The det2 function should accept the four coefficients of a 2 X 2 matrix and return its determinant The det3
203. the two classes in a complete C program Have your program call all of the member functions in each class and explain the result when the area function is called using a Box object 9 Modify the following code so that the overridden setSound function executes correctly with the statements in the main method class Instruments public Instruments void setSound char char getSound protected char szSound Instruments Instruments szSound new char 25 void Instruments setSound char szSound szSound quiet Available for free at Connexions lt http cnx org content col10788 1 1 gt 24 char getSound return szSound class Percussion public Instruments public Percussion void setSound char Percussion Percussion cout lt I repeat the drum goes lt lt getSound lt endl void Percussion setSound char szSound szSound boom void main Instruments drums new Percussion drums gt setSound cout lt The drum goes lt drums gt getSound lt endl 1 3 Assignments CHAPTER 1 STUDENT MANUAL 1 Here is a challenging problem for those who know a little calculus The Newton Raphson method can be used to find the roots of any equation y x 0 In this method the 1 st approximation x to a root of y x 0 is given in terms of the i th approximation x by
204. thmic solutions to problems Translate a specified algorithm into correct self documented C code using generally accepted pro gramming style In accomplishing this translation the student shall be able to apply the structured programming mechanisms of C including sequence selection iteration recursion pointers and arrays Acquire an understanding of basic object oriented concepts and the issues involved in effective class design Write C programs that use arrays structures pointers object oriented concepts such as information hiding constructors destructors inheritance 1 1 5 INTRUCTOR OBJECTIVES In order to meet the course objectives the students are expected to fulfill the following requirements Class attendance must be more than 75 For each chapter the students should complete at home a sufficient amount of exercises given for the chapter All the exercises are given in Programming Fundamentals in C Lecture Notes and Exercises available at the instructor s website Lab work participation is mandatory At each lab session the students must complete a sufficient amount of assignments assigned for that lab session Lab assistants will evaluate the performance of each student at the end of each lab session There are two programming projects each student is required to produce solutions These projects aim to train the student s creativity and problem solving skills Project 1 aims to apply all the knowledge
205. tions the same way you define other functions although you do not include a return type since constructor functions do not return values Example class Payroll public Payroll constructor function dFedTax 0 28 dStateTax 0 05 private double dFedTax double dStateTax You also include just a function prototype in the interface file for the constructor function and then create the function definition in the implementation file Payroll Payroll constructor function dFedTax 0 28 dStateTax 0 05 Example include lt iostream h gt include lt iomanip h gt class declaration section class Date private int month int day int year public Date int 7 int 4 int 2001 constructor with default values Js implementation section Available for free at Connexions lt http cnx org content col10788 1 1 gt 159 Date Date int mm int dd int yyyy constructor 1 month mm day dd year yyyy cout lt Created a new data object with data values lt month lt lt K day lt K year lt endl int main Date a declare an object Date b declare an object Date c 4 1 2002 declare an object return 0 The output of the above program Created a new data object with data values 7 4 2001 Created a new data object with data values 7 4 2001 Created a new data object with data values 4 1 2002 De
206. to information contained within variables constants or other types of storage structures The procedures associated with an object are referred as functions or methods Variables that are associated with an object are referred to as properties or attributes Object oriented programming allows programmers to use programming objects that they have written themselves or that have been written by others 2 1 3 Problem Solution and Software Development No matter what field of work you choose you may have to solve problems Many of these can be solved quickly and easily Still others require considerable planning and forethought if the solution is to be appropriate and efficient Creating a program is no different because a program is a solution developed to solve a particular problem As such writing a program is almost the last step in a process of first determining what the problem is and the method that will be used to solve the problem One technique used by professional software developers for understanding the problem that is being solved and for creating an effective and appropriate software solution is called the software development procedure The procedure consists of three overlapping phases Development and Design Documentation Maintenance As a discipline software engineering is concerned with creating readable efficient reliable and main tainable programs and systems 2 1 3 1 Phase I Development and Design The first ph
207. to prompt the user to enter the length and width for a rectangle Function showdata to display length width perimeter and area of a rectangle Include the class Rectangle in a complete C program The main function of this program creates two Rectangle objects using the two constructors respectively and displays the data of the two objects to check the working of all the member functions Then modify the program by replacing the two above constructor functions by a constructor with default arguments 2 6 Define a class named CStudent which consists of the following data members e Student id number integer e An array of size 5 to contains at most 5 grades single precision floating point numbers e An integer to indicate the number of entered grades The class also has the following member functions e the constructor which assigns the initial values O to all data members of each Cstudent objects Available for free at Connexions lt http cnx org content col10788 1 1 gt 48 CHAPTER 1 STUDENT MANUAL A function to get a student id number A function to get one grade and update the total of the entered grades A function to compute the average of all entered grades of a student A function to display student id number and the average grade of that student Include the class CStudent in a complete C program This program creates one CStudent object inputs the data for the object and displays the object s data t
208. triangle lt area lt endl return 0 The output of the above program The area of the triangle 6 0 2 3 3 1 Casts We have already seen the conversion of an operand s data type within mixed mode expressions and across assignment operators In addition to these implicit data type conversions that are automatically made within mixed mode expressions and assignment C also provides for explicit user specified type conversion This method of type conversion is called casting The word cast is used in the sense of casting into a mold Casting or type casting copies the value contained in a variable of one data type into a variable of another data type The C syntax for casting variables is variable new_type old_variable where the new_ type portion is the keyword representing the type to which you want to cast the variable Example int iNum 100 float fNum fNum float inum If you do not explicitly cast a variable of one data type to another data type then C will try to automatically perform the cast for you 2 3 4 Program Input Using the CIN Object So far our programs have been limited in the sense that all their data must be defined within the program source code We will now learn how to write programs which enable data to be entered via the keyboard while the program is running Such programs can be made to operate upon different data every time they run making them much more flexible and u
209. ts to prompt the user to enter an integer n and allocate a memory area on the heap to store n student objects on the screen to deallocate the memory area for the array on the heap to prompt the user to enter the student objects and store them in the array and display all the objects Available for free at Connexions lt http cnx org content col10788 1 1 gt 2 4 Test the following program class Int private int idata public Int 41 idata 0 cout lt default constructor is called lt endl Int int d idata d cout lt constructor with argument is called lt endl void showData cout lt value of idata lt idata lt endl 3 void main Int i Int j 8 Int k 10 Int ptrInt new Int ptrInt gt showData delete ptrint What are the outputs of the program Explain the results What is the purpose of the statement delete ptrInt in the program 47 2 5 Define a class named Rectangle which contains two single precision floating point data members length and width The class has some member functions A constructor with no parameters that assigns 0 to two data members of the created object A constructor with two single precision floating point parameters which assigns two parameters to the two data members of the created object Function area to compute the area of the rectangle Function perimeter to compute the perimeter of the rectangle Function getdata
210. u 1 Show the number of empty seats 2 Show the list of empty seats 1 Show the list of customers together with their seat numbers in the order of the seat numbers 2 Assign a customer to a seat 3 Remove a seat assignment 4 Quit c The program successfully executes the promises of its menu Choices 4 and 5 need additional input from the user which is done inside the respective functions d After executing a particular function the program shows the menu again except for choice 6 7 In this problem a customer calls in an order for bicycles giving his or her name address number of bicycles desired and the kind of bicycle For now all bicycles on one order must be the same kind Mountain bikes cost 269 95 each and street bikes 149 50 The total bill is to be calculated for the order Additionally based on the user s knowledge of the customer the customer is classified as either a good or bad credit risk Based on the input data the program is to prepare shipping instructions listing the customer s name address number and type of bikes and the total amount due Based on the creditworthiness of the customer the program must indicate on the shipping instructions if this is a C O D cash on delivery shipment or whether the customer will be billed separately The input and output requirements of this problem are relatively simple On the input side the items that must be obtained are Available for free at Connexi
211. uired between the array brackets Example To illustrate the use of array and function we set for ourselves the following tasks 1 Read in the amount to be deposited in the bank the interest rate and the number of years to deposit 2 Invoke the function to compute a table which keeps the amount we get after i years of deposit at the i th component of the array Available for free at Connexions lt http cnx org content col10788 1 1 gt 145 3 Display out the above array Compute compound interest tinclude lt iostream h gt include lt iomanip h gt define YMAX 50 void interest double double int double int main double deposit rate int i years double compounded YMAX cout lt An ENTER DEPOSIT INTEREST RATE NUMBER OF YEARS An cin gt deposit gt rate gt years cout lt end1l if years gt YMAX cout lt n Number of years must be less than or equal lt lt YMAX else interest deposit rate years compounded for i 0 i lt years i cout lt itil lt setw 25 lt compounded i lt endl cout lt endl return 0 void interest double deposit double rate int years double cp int i for i 0 i lt years i deposit deposit 1 0 rate cpLli deposit Example In the following program we have to search an integer array for a given element We use linear search in which each item in the array is examined sequent
212. us you should use two nested loops the outer loop iterates according to interest rates and the inner loop iterates according to the years 2 9 Write a C program that inputs a positive integer n and lists out n first prime numbers 2 10 Write a C program to display an equilateral triangle with the height h h is entered from the user Example h 4 Available for free at Connexions lt http cnx org content col10788 1 1 gt 38 CHAPTER 1 STUDENT MANUAL Figure 1 14 1 4 5 LAB SESSION 4 ARRAYS 1 4 5 1 1 OBJECTIVE The objective of Lab session 4 is to get familiar with arrays one dimensional and two dimensional arrays 1 4 5 2 2 EXPERIMENT 2 1 Test the following program include lt iostream h gt const int NUM 8 void main int nums NUM int total 0 Holds total of user s eight numbers int ctr for ctr 0 ctr lt NUM ctr cout lt Please enter the next number cin gt nums ctr total nums ctr cout lt The total of the numbers is lt total lt An return 2 2 If the array weights is declared as in the following statement then what the value of weights 5 is int weights 10 5 2 4 2 3 Given the statement char teams LE Ya 7 g 1 gt le Ig P 0 3 R ta 5 Im Ig NOF which of the following statement is valid a cout lt teams b cout lt teams 7 c cout lt teams 3 Available for free at Connexions l
213. usively on UNIX and on mini computers During the 1980s C compilers were written for other platforms including PCs To provide a level of standardization for C language in 1989 ANST created a standard version of C that is called ANST C One main benefit of the C language is that it is much closer to assembly language other than other types of high level programming languages The programs written in C often run much faster and more efficiently than programs written in other types of high level programming language 2 1 2 3 The C Programming Language C is an extension of C that adds object oriented programming capabilities C is a popular program ming language for writing graphical programs that run on Windows and Macintosh The standardized version of C is commonly referred to as ANSI C The ANSI C and ANSI C standards define how C C code can be written The ANSI standards also define run time libraries which contains useful functions variables con stants and other programming items that you can add to your programs The ANSI C run time library is also called the Standard Template Library or Standard C Library Available for free at Connexions lt http cnx org content col10788 1 1 gt 62 CHAPTER 2 LECTURE NOTES 2 1 2 4 Structured Programming and Object Oriented Programming During the 1960s many large software development effects encountered severe difficulties Software schedules were typically late costs
214. ve to insert the header file in the above program 2 2 Debug the following code segment tinclude lt iostream h gt int main const int age 35 cout lt age lt An age 52 cout lt age lt n return 0 2 3 What is the result of each following expression 1 1 2 4 2 2 14 2 4 2 3 1 2 4 2 4 9 2 1 5 1 10 2 2 2 4 Run the following programs and explain their results a void main short i 3 unsigned short u cout lt sizeof i lt amp i cout lt lt sizeof u lt ku cout lt u i lt n b void main byte i 125 4 10 cout lt i lt n 2 5 Write a program that inputs two time points and display the difference between them 2 6 Run the following programs and explain their results a include lt iostream h gt int main int f g g 53 f 8 if g 25 11 35 cout lt g is lt g lt and f got changed to lt f return 0 b Available for free at Connexions lt http cnx org content col10788 1 1 gt 33 include lt iostream h gt void main if 0 cout lt C By Example In int a 0 if a 0 amp amp 2 a gt 0 cout lt hello 2 7 Write a program that inputs the three grades for mathematics physics and chemistry And then it displays the average of the three grades in the following format Math 6 5 Physics 9 Chemistry 10
215. ven conditional expression is evaluated to true The syntax for the while statement while condition expression statements The flow chart of the while statement is given below Available for free at Connexions lt http cnx org content col10788 1 1 gt 110 CHAPTER 2 LECTURE NOTES Enter the wile statement test the condition Execute the statement s Exit the wile statement Figure 2 29 Flow chart of the while statement 2 5 3 Example this program computes the sum of 10 first integers starting from 1 include lt iostream h gt int main const int N 10 int sum 0 int count 1 initialize count while count lt N sum sum count count increment count cout lt The sum is lt sum lt endl return 0 F The output of the above program The sum is 55 Available for free at Connexions lt http cnx org content col10788 1 1 gt 111 In the above program the loop incurs a counter controlled repetition Counter controlled repetition requires 1 the name of a control variable the variable count in this case 2 the initial value of the control variable count is initialized to 1 in this case 3 the condition that tests for the final value of the control variable i e whether looping should continue gt 4 the increment or decrement by which the control variable is modified each time through the loop 2 5 3 1 Example include
216. veral preprocessor directives that are used with C Available for free at Connexions lt http cnx org content col10788 1 1 gt 72 CHAPTER 2 LECTURE NOTES The preprocessor is a program that runs before the compiler When it encounters an include statement the preprocessor places the entire contents of the designated file into the current file Preprocessor directives and include statements allow the current file to use any of the classes functions variables and other code contained within the included file Example To include the iostream h file you use the following statement tinclude lt iostream h gt An i o manipulator is a special function that can be used with an i o statement The endl i o manipulator is part of the iostream classes and represents a new line character Example cout lt Program type console application lt endl cout lt Create with Visual C lt endl cout lt Programmer Don Gesselin lt endl All statements in C must end with a semicolon Large statements can span multiple lines of code Example cout lt Program type console application lt Create with Visual C lt Programmer Don Gesselin 2 2 1 5 Comments Comments are lines that you place in your code to contain various type of remarks C support two types of comments line and block C line comments are created by adding two slashes before the text you want to u
217. will write a C program to solve for the roots of a quadratic equation 2 4 10 1 Step 1 Analyze the Problem The problem requires that we accept three inputs the coefficients a b and c of a quadratic equation and compute the roots of the equation using the given formulas 2 4 10 2 Step 2 Develop a Solution A first attempt at a solution is to use the user entered values of a band c to directly calculate a value for each of the roots Thus our first solution is Display a program purpose message Accept user input values for a b and c Calculate the two roots Display the values of the calculated roots However this solution must be refined further to account for a number of possible input conditions For example if a user entered a value of 0 for both a and b the equation is neither quadratic nor linear and has no solution this is referred to as a degenerate case Another possibility is that the user supplies a nonzero value for b but make a 0 In this case the equation becomes a linear one with a single solution of c b A third possibility is that the value of the term b 2 4ac which is called the discriminant is negative Since the square root of a negative number cannot be taken this case has no real roots Finally when the discriminant is 0 both roots are the same this is referred to as the repeated roots case Taking into account all four of these limiting cases a refined solution for correctly determini
218. with our hand calculation A hand check of the last column verifies that it also correctly contains the difference in values between the first two columns 2 4 Selection Statements 2 4 1 Selection Criteria 2 4 1 1 Relational Operators Relational operators are used to compare two operands for equality and to determine if one numeric value is greater than another A Boolean value of true or false is returned after two operands are compared The list of relational operators is given below Operator Description equal not equal gt oreater than z less than lt less than or equal W Il greater than or equal Figure 2 21 Relational operators Example a b axb c s y x lt 4 The value of a relational expression such as a gt 40 depends on the value stored in the variable a 2 4 1 2 Logical Operators Logical operators AND OR and NOT are used for creating more complex conditions Like relational operators a Boolean value of true or false is returned after the logical operation is executed When the AND operator amp amp is used with two simple expressions the condition is true only if both individual expressions are true by themselves The logical OR operator is also applied with two expressions When using the OR operator the condition is satisfied if either one or both of the two expressions are true This content is available online at lt http cnx org content m27291 1
219. xions lt http cnx org content col10788 1 1 gt Chapter 1 STUDENT MANUAL 1 1 Syllabus 1 1 1 LETTER TO STUDENTS This course and this student manual reflect a collective effort by your constructor the Vietnam Education Foundation The Massachusetts Institute of Technology MIT Open Courseware Project and faculty col leagues within Vietnam and the United States who served as reviewers of drafts of this student manual This course is an important component of our academic program Although it has been offered for more than three years this latest version represents an attempt to expand the ranges of sources of information and instruction so that the course continues to be up to date and the methods well suited to what is to be learned You will be asked from time to time to offer feedback on how the student manual is working and how the course is progressing Your comments will inform the development team about what is working and what requires attention Our goal is to help you learn what is important about this particular field and to eventually succeed as a professional applying what you learn in this course Thank you for your cooperation 1 hope you enjoy the course 1 1 2 COURSE INFORMATION Course name Programming Fundamentals In C 501125 Semester Spring Semester 2008 Institute Faculty of Computer Science And Engineering Hochiminh City University of Technology Vietnam Credit Hours 3 Instructor Dr Duong Tuan Anh A
220. y Very Satisfied Satisfied 1 Support comments Thank you for your comments 1 2 Exercises 1 2 1 Exercise 1 1 Design an algorithm in flowchart to find the smallest number in a group of three real numbers 2 Design an algorithm in flowchart to solve the quadratic equation ax 2 bx c 0 with the inputs a b and c 3 A set of linear equations aX bY c dX eY f can be solved using Cramer s rule as X ce bf ae bd Y af cd ae bd Design an algorithm in flowchart to read in a b c d e and f and then solve for X and Y 4 Design an algorithm in flowchart to read in a group of N numbers and compute the average of them where N is also an input 5 Design an algorithm in flowchart to read in a group of N numbers and compute the sum of them where N is also an input 1 2 2 Exercise 2 1 Read the following C program for understanding Add some suitable declarations to complete the program and run it lt include lt iostream h gt void main units 5 price 12 5 idnumber 12583 cost price units cout lt idnumber lt K units lt lt price lt lt cost lt endl tax cost 0 06 8 This content is available online at lt http cnx org content m27239 1 1 gt Available for free at Connexions lt http cnx org content col10788 1 1 gt 11 total cost tax cout lt tax lt lt total lt endl 2
221. y coordinates a constructor with two parameters representing x y coordinates their default values are allowed to be 0 a member function named display which prints out two coordinates on the screen A member function named getInfo which accepts two input data from the user for x y coordinates Two member functions named setX set Y to update values to x y respectively Two member functions named getX get Y to retrieve values from x y respectively A member function named distance which accepts as parameter an object of class CPoint and calculates the distance from the object invoking the function to the parameter object Available for free at Connexions lt http cnx org content col10788 1 1 gt 55 b Construct a derived class named CPoint_3D from the class CPoint described as follows e There is one more data member coordinate z e There are overriding member functions in CPoint_ 3D for all corresponding member functions in the class CPoint c Include the class constructed in a and b in a working C program Have your program call all of the member functions in the CPoint_3D class 1 4 12 PROGRAMMING PROJECT TOPIC EXAMPLES 1 4 12 1 PROJECT 1 This project aims to review all the chapters from Chapter 1 Introduction to Computers and Programming to Chapter 6 Functions and Pointers which focus on structured programming An example of Project 1 can be described as follows The Colossus Airlines fleet consists of one

Download Pdf Manuals

image

Related Search

Related Contents

Sony BTA-NW1 Network Card User Manual  MASTIC MS  Oxford Mobile Hoists User Manual  取扱説明書ダウンロード(PDF)  SG021-C (Clear)  none SB6000 Use and Care Manual  VGN-FW170J/W  Betriebsanleitung (Ergänzung  George Foreman GR2080B Use & Care Manual  Fluke 434/435  

Copyright © All rights reserved.
Failed to retrieve file