# Programming Fundamentals/Practice: Program Planning & Design

Questions, exercises, problems, etc. that support this chapter in the "Programming Fundamentals - A Modular Structured Approach using C++" collection/textbook.

## Learning Objectives

With 100% accuracy during a: memory building activity, exercises, lab assignment, problems, or timed quiz/exam; the student is expected to:
* Define the terms on the definitions as listed in the modules associated with this chapter.
* Create a pseudocode document for a programming problem
* Create a test data document for a programming problem

## Exercises
### Exercise 1
#### Answer the following statements as either true or false:

* Coding the program in a language like C++, Java, or Python is the first task of planning. You plan as you code.
* Pseudocode is the only commonly used planning tool.
* Test data is developed for testing the program once it is code into a language.
* The word pseudo means false and includes the concepts of fake or imitation.
* Many programmers pick up the bad habit of not completing the planning step before starting to code the program.

## Miscellaneous Items

None at this time.

## Lab Assignment
### Creating a Folder or Sub-Folder for Chapter 02 Files

Depending on your compiler/IDE, you should decide where to download and store source code files for processing. Prudence dictates that you create these folders as needed prior to downloading source code files. A suggested sub-folder for the Bloodshed Dev-C++ 5 compiler/IDE might be named:
* Chapter_02 within the folder named: Cpp_Source_Code_Files
If you have not done so, please create the folder(s) and/or sub-folder(s) as appropriate.

### Download the Lab File(s)

Download and store the following file(s) to your storage device in the appropriate folder(s). You may need to right click on the link and select "Save Target As" in order to download the file.
Download from Connexions: Solution_Lab_01_Pseudocode.txt
Download from Connexions: Solution_Lab_01_Test_Data.txt

### Detailed Lab Instructions

Read and follow the directions below carefully, and perform the steps in the order listed.
* Navigate to your sub-folder: Chapter_02 and print the: Solution_Lab_01_Pseudocode.txt and the: Solution_Lab_01_Test_Data.txt files. Review the printouts in conjunction with your Lab 01 source code file. Note: In Lab 01 we gave you step by step directions for modifying the Compiler_Test.cpp source code file into the Lab_01.cpp source code file. I could have given you the pseudocode and test data files, but you had not received any instructions about them. Now, after having studied the Chapter 2 materials, these files should make sense.
* Make copies of the: Solution_Lab_01_Pseudocode.txt and Solution_Lab_01_Test_Data.txt and rename them: Lab_02_Pseudocode.txt and Lab_02_Test_Data.txt
* Here is the problem. Your local bank has many customers who save their change and periodically bring it in for deposit. The customers have sorted the coins (pennies, nickels, dimes and quarters – forget half dollars and dollar coins) and know how many (an integer data type) of each value they have but have evolved (or their environment has made them lazy). They have lost their ability to do simple arithmetic. They can’t seem to determine the total value of all of the coins without a calculator (or computer). Write a program to interact with the customers and to determine and report the total value of their coins.
* No! No! No! We are not going to write a program (create source code) using the C++ programming language. We are going to design a plan for a program using pseudocode as our model. Additionally, we need to develop some test data for use in testing our model.
* Start your text editor (Microsoft Notepad. Set the font on Notepad to: Courier 12 font because Courier uses the same amount of space horizontally for each letter. It will make the information in the files show as it should be seen. Open your Lab 02 pseudocode text file. Change all items as needed to be able to solve the above problem. NOTE: You may use any application software that will let you open, modify and save ASCII text files. You may even use the Bloodshed Dev-C++ 5 compiler/IDE software to view, modify and save ASCII text files; after all, our source code files are ASCII text files with a special extension of .cpp
* Open your Lab 02 test data text file. Modify the text file as appropriate. Use your test data and step through your pseudocode. Does everything seem to work? Have you missed something?
* When you are satisfied that you have your program plan and test data completed, close your text files. That’s right, I said, "Save and close your text files." Files should be properly closed before being used by other software and this includes the Operating System software that moves, copies and renames files.
* After you have successfully written this program, if you are taking this course for college credit, follow the instructions from your professor/instructor for submitting it for grading.

## Problems
### Problem 02a – Instructions

Create simple IPO pseudocode to solve the following:
Problem: I have a friend who is visiting from Europe and he does not understand exactly how much gas he is buying for his car. We need to write a program that allows him to enter the gallons of gas and convert it to liters (metric system). NOTE: One US gallon equals 3.7854 liters.

### Problem 02b – Instructions

Create test data for the following:
Problem: A major restaurant sends a chef to purchase fruits and vegetables every day. Upon returning to the store the chef must enter two pieces of data for each item he purchased. The quantity (Example: 2 cases) and the price he paid (Example: $4.67). The program has a list of 20 items and after the chef enters the information, the program provides a total for the purchases for that day. You need to prepare test data for five (5) items: apples, oranges, bananas, lettuce and tomatoes.