Intro to Programming & Algorithm Design Input, Processing and Output Assg1 Assg2 Assg3 Labs 1 Copyright 2014 by Janson Industries Objectives ▀ Explain ♦ The process of designing and coding a program ♦ The overall logic flow of programs ♦ Variables ♦ External and Internal design 2 Copyright 2014 by Janson Industries Programming Process ▀ ▀ More than just coding 1. Understand the problem and the users requirements ♦ Unearth the real problem ► Don't ♦ ♦ react to symptoms Find a logical solution Clarify non-logic requirements ► Format, ♦ ♦ timeliness, responsiveness Often considered an analysts job Most difficult part of process 3 Copyright 2014 by Janson Industries Programming Process ▀ ▀ Who’s involved: ♦ Programmer/Analyst ♦ End user Usually the focal point of discussion is the output ♦ Specifically what data should appear ♦ The data organization and format ► Sort order, summary data, paper printout, screen display, storyboard 4 Copyright 2014 by Janson Industries Programming Process ▀ 2. Clearly define the program's logic ♦ ♦ ♦ Writing down the "steps" the program should take (the algorithm) Programming language neutral Then further define, 2 primary tools ► Pseudo code ► Flowcharts ♦ Like specifying directions ► Writing out in words vs. ► Draw a map 5 Copyright 2014 by Janson Industries Pseudo Code (OilCalc) ▀ Use subset of words consistently ▀ Indentation shows selection & looping Module main() Declare Integer order Declare Real cost Display “Amount of oil is? ” Input order If order < 150 Then cost= order x 2.25 Else If order < 250 Then cost= (150 x 2.25) + (order - 150) x 2.10 Else cost= (150 x 2.25) + (100 x 2.10) + (order - 250) x 1.99 Endif Endif Display “The cost of the oil is ”, cost End Module 6 Copyright 2014 by Janson Industries Flow Charts ▀ ▀ Copyright 2014 by Janson Industries Use symbols and words to further define the algorithm Common flowchart symbols ♦ Input/Output: ♦ Process: ♦ Start/Stop: ♦ Decision: ♦ Sequence/Flow: 7 Flowchart ▀ Sequence shown with arrows Insert key Turn key Put into reverse Copyright 2014 by Janson Industries Step on gas pedal 8 Flowchart ▀ Selection shown with a diamond True Step on brake Copyright 2014 by Janson Industries Light = “red” False Maintain speed 9 Flowchart ▀ Hair = “dirty” Iteration (aka looping, repeating) True Lather Rinse False Get out of shower Copyright 2014 by Janson Industries 10 Flowchart (OilCalc) Display “The amount of oil is ?” Input order Is order < 150? True cost = order * 2.25 False True cost= (150 * 2.25) + (order150) * 2.10 Copyright 2014 by Janson Industries Display “ The cost of the oil is ”, cost Is order < 250? False cost=(150 * 2.25) + (100*2.10)+(order250) * 1.99 11 Large Flowcharts ▀ Additional flowchart symbols ♦ On page connector: 1 ♦ Off page connector: Pg 3 C 12 Copyright 2014 by Janson Industries Large Flowcharts Copyright 2014 by Janson Industries Start 1 Insert key Put into reverse Turn key Step on gas pedal 1 Pg 3 C 13 Programming Process ▀ 3. Code the program ♦ Pick a language based on requirements ► Each language has its own advantages and disadvantages ♦ Enter HLL instructions ► Most source code editors will highlight obvious errors (like Word) ♦ Once a programmer has mastered a language, this is relatively simple step ► The Copyright 2014 by Janson Industries hard part is the first two steps 14 Code the Program // OilCalc.java import java.io.*; import java.util.Scanner; public class OilCalc { public static void main(String[] args) throws IOException { Scanner keyboard = new Scanner(System.in); int amount = 0; double cost = 0; System.out.print("Amount of oil is? "); amount = = keyboard.nextInt(); if (amount <= 100) {cost = amount * 2.25; else if (amount <= 250) { cost = 100 * 2.25 + (amount-100) * 2.10;} else { cost = 100 * 2.25 + 150 * 2.10 + (amount-250) * 1.99;} } System.out.println("The cost of the oil is $" + cost) } Copyright 2014 by Janson Industries 15 Programming Process ▀ 4. Translate source code to executable machine language and resolve syntax errors ♦ Iterative process: ► Translate using compiler/interpreter ► Get error list from compiler/interpreter ► Change HLL instructions to resolve errors ► Translate using compiler/interpreter ♦ Compiler/interpreter not perfect ► Takes a stab at what it thinks is the error 16 Copyright 2014 by Janson Industries Errors ▀ If a program was like baking a cake ♦ Get ingredients ♦ Process ingredients (mix, cook, ice) ♦ Serve cake 17 Copyright 2014 by Janson Industries Errors ▀ Syntax errors ♦ ▀ ▀ ▀ Get nigredients A person could probably understand that instruction A computer does not Translation s/w (compiler) checks for syntax errors ♦ Will generate errors msgs 18 Copyright 2014 by Janson Industries Resolve Syntax Errors 19 Copyright 2014 by Janson Industries Resolve Syntax Errors // OilCalc.java import java.io.*; import java.util.Scanner; public class OilCalc { public static void main(String[] args) throws IOException { Scanner keyboard = new Scanner(System.in); int amount = 0; double cost = 0; System.out.print("Amount of oil is? "); amount = keyboard.nextInt(); if (amount <= 100) {cost = amount * 2.25;} else if (amount <= 250) { cost = 100 * 2.25 + (amount-100) * 2.10;} else { cost = 100 * 2.25 + 150 * 2.10 + (amount-250) * 1.99;} } System.out.println("The cost of the oil is $" + cost); } Copyright 2014 by Janson Industries 20 Resolve Syntax Errors 21 Copyright 2014 by Janson Industries Programming Process ▀ 5. Test for and resolve logic errors ♦ Execute with test data ► Should have many tests with a wide range of data ♦ Verify results are correct ♦ Often many types of testing: ► Programmer, User, Performance ► Each type may require its own unique test data 22 Copyright 2014 by Janson Industries Errors ▀ Logic errors (aka run time errors) ♦ Instructions are syntactically correct but do not perform the desired function ♦ Often difficult to resolve ► In baking cake example: • Get baking soda (instead of powder) ♦ Or ► Put letter in envelop ► Put envelop in mailbox ► Put stamp and address on envelop Copyright 2014 by Janson Industries 23 Errors ▀ In other words: ♦ Instructions must be syntactically correct ► Always use the correct command to indicate input, output, etc. ► Command must follow the programming language syntax rules ♦ The order in which the instructions are specified is important ► For example, must read data before it can be acted upon 24 Copyright 2014 by Janson Industries Test/Resolve Logic Errors ▀ In OilCalc make sure ♦ Calculated amounts are correct ♦ Prompts and displayed results match the design 25 Copyright 2014 by Janson Industries General Program Logic ▀ Most program functions are executed in this order ♦ ♦ ♦ ▀ Get the input Process the input into output Show the output Just like the baking a cake example ♦ ♦ ♦ Get ingredients Process ingredients (mix, cook, ice) Serve cake 26 Copyright 2014 by Janson Industries Input ▀ ▀ Users should be prompted for the data to be entered ♦ In command line, prompts are displayed text ♦ In GUI, text fields have labels identifying the data to enter When data entered into a program, variables are needed to store/hold that data 27 Copyright 2014 by Janson Industries Command Prompt Input When program is run, user prompted for info (Amount of oil is?), user enters info (250) at the prompt, presses the Enter key, the result (The cost of oil is $540.0) is displayed 28 Copyright 2014 by Janson Industries GUI Input Label text indicates what data the user should enter 29 Copyright 2014 by Janson Industries Good Design ▀ Write clear prompts for input ♦ ♦ A prompt is a message describing the information that should be input In OilCalc should have prompted with ► Number ▀ of gallons of oil being purchased? Echo back input ♦ In OilCalc, instead of ► The ♦ cost of the oil is $540 Should have displayed ► The cost of 250 gallons of oil is $540 30 Copyright 2014 by Janson Industries Good Design ▀ ▀ Makes a program user-friendly User-friendly means that the program is easy for a user (aka an end user) to work with ♦ I.e. It’s clear what the user should do to get the desired results 31 Copyright 2014 by Janson Industries Variables ▀ ▀ Defined in programs to hold ♦ Data input to program ♦ Results of processing Variable values can be changed ♦ This is what makes a program so useful ► Same function can be performed against different data ▀ Can think of variables as ministorage areas within the program 32 Copyright 2014 by Janson Industries Variables ▀ ▀ In programming languages, variables must have: ♦ A name (aka an identifier) ♦ A type ♦ A size In designs, variables are declared by specifying the name and type of data ♦ Copyright 2014 by Janson Industries Usually no size is required 33 Variable Names ▀ Names should be: ♦ ♦ Meaningful A continuous string of characters ► No ♦ ♦ spaces between characters Begin with a lower case letter Be camel-cased ► Each ▀ new word starts with a capital letter Examples ♦ ♦ oilAmtGallons custName 34 Copyright 2014 by Janson Industries Variables ▀ Variable must be defined (aka declared) before it can be used Declare Integer oilAmtGallons Input oilAmtGallons ▀ This is valid: ▀ This is not valid: Input oilAmtGallons Declare Integer oilAmtGallons ♦ Like saying ► Get Copyright 2014 by Janson Industries two eggs ► Crack into bowl ► Get bowl 35 Variable Types ▀ For designs, three variable types ♦ String variables hold text (values that are not used in arithmetic operations) and the assigned value is enclosed in "" ► “Joe Smith” ► “123 Main St” ► “904-646-2270” ♦ Integer variables hold whole numbers ► 437, ♦ 6, 27904 Real variables hold numbers with fractional values ► 3.147562, Copyright 2014 by Janson Industries .99, 14367.52 36 Variables ▀ For example, OilCalc has variables to hold the amount of oil entered (order) and the calculated cost of the oil (cost) Declare Integer order Declare Real cost Display “Amount of oil is? ” Input order If order < 150 THEN cost= order x 2.25 Else If order < 250 THEN cost= (150 x 2.25) + (order - 150) x 2.10 Else cost= (150 x 2.25) + (100 x 2.10) + (order - 250) x 1.99 Endif Endif 37 Display “The cost of the oil is ”, cost Copyright 2014 by Janson Industries Setting Variable Values ▀ Can be initialized to a value ♦ Value assigned when variable is declared ► Previously, the variable examples were all uninitialized variables Declare Integer order Declare Real cost ♦ Value is assigned with an equal sign and then the value to the right of the variable name Declare String custName = “Joe Smith” Declare Real salesTaxRate = .065 38 Copyright 2014 by Janson Industries Setting Variable Values ▀ Uninitialized variables can be assigned a value later, either with input operations or calculations Declare Integer order Declare Real cost : : : Input order : : : cost = order * price ♦ Book uses the keyword Set, I will not ♦ You can use Set or not use Set ► But you must me consistent! 39 Copyright 2014 by Janson Industries Data Compatibility ▀ ▀ The data assigned to a variable must be the same type as the variable type The following are invalid Declare Integer order Declare Real cost Declare String custName cost = “John Smith” custName = 44 order = 1.75 custName = John Smith 40 Copyright 2014 by Janson Industries Data Compatibility ▀ ▀ Real variables can hold values with a fractional value of zero So the following are valid Declare Integer order Declare Real cost Declare String custName cost = 1 custName = “John Smith” order = 3416 ♦ The double quotes are not part of the String variable value ► But are required when specifying a string value Copyright 2014 by Janson Industries 41 Variables ▀ Consider this calculation netSalary = salary – (salary * .25) ▀ .25 is called an unnamed constant ▀ Problems with unnamed constants: ♦ Not clear what the value (.25) is ♦ If value is changed and is used many times in the program, programmer must find and change all occurrences 42 Copyright 2014 by Janson Industries Named Constant Variables ▀ Used instead of unnamed constants ♦ ▀ Instead of using a value like .25 in calculation, create a named constant, assign .25 to it and use Named constants ♦ ♦ ♦ Initialized when defined Name is all caps “Words” separated by underscores Declare Real INCOME_TAX_RATE = .25 43 Copyright 2014 by Janson Industries Constant Variables ▀ Advantages: ♦ Meaningful variable name rather than static number makes understanding program easier ► “Magic” ♦ values eliminated If value changes, change once in variable definition not throughout the program 44 Copyright 2014 by Janson Industries Assigning Variable Values ▀ ▀ Variables can be assign a value that is the result of a formula Variable is on the left of the equal sign, formula on right Declare Real salary, netSalary, INCOME_TAX_RATE = .25 Input salary netSalary = salary - (salary * INCOME_TAX_RATE) ▀ Standard arithmetic operators ♦ +, -, *, / 45 Copyright 2014 by Janson Industries Order of Operations ▀ Follows math standard ♦ ♦ ♦ ▀ ▀ Formula within parenthesis done before all above So 2*3+(6-4)/2 equals 7 ♦ ♦ ♦ Copyright 2014 by Janson Industries Multiplication and division first Then addition and subtraction Left to right ♦ 2*3+2/2 6+2/2 6+1 7 46 Order of Operations ▀ Without parenthesis what does 2*3+6-4/2 equal? ♦ 6+6-4/2 ♦ 6+6-2 ♦ 12-2 ♦ 10 47 Copyright 2014 by Janson Industries Integer Division ▀ Beware of a division operation between 2 Integer variables ♦ ▀ Any fractional value will be truncated (i.e. deleted) For example Declare Integer firstNumber, secondNumber Real result firstNumber = 7 secondNumber = 2 result = firstNumber/secondNumber ▀ result is equal to 3 not 3.5 48 Copyright 2014 by Janson Industries Documentation ▀ External: describes how to use the program ♦ ▀ Internal: describes how the program works ♦ ▀ Includes comments (nonexecutable text) added in code to explain what the program is doing For example, for a car ♦ ♦ Copyright 2014 by Janson Industries User manual A manual on how to drive (external) A mechanics manual (internal) 49 Comments ▀ Block vs. Line comments ♦ Block comments span many lines ► Contain ♦ Line comments are a single line ► Explain ▀ extensive info a small area of the program Orgs usually have standards re: block and line comments 50 Copyright 2014 by Janson Industries Comment Standards Example ▀ All programs must begin with a block comment that includes ♦ Program and author’s name ♦ Date program completed ♦ Brief explanation of pgm function (at least one paragraph) ♦ List of all files read/written to ♦ Entry for each change that includes ► Date Copyright 2014 by Janson Industries of change ► Programmers name ► Explanation of change (at least one sentence) 51 Comment Standards Example ▀ ▀ All programs must include a line comment for at least every ten lines of code Line comment should explain the function of the code 52 Copyright 2014 by Janson Industries Comments ▀ ▀ Each programming language/internal design tool will have it’s own syntax for defining In pseudo code, will use two forward slashes to indicate a comment // This is a non-executable line comment 53 Copyright 2014 by Janson Industries Pseudocode Comments Example // // // // OilCalc.java Created by R. Janson on 1/1/2015 Program accepts the amount of oil being purchased by the user then calculates and displays the total cost of that amount // Variables defined to hold the input and output values Declare Integer order Declare Real cost // Prompt the user for the amount and save it to order Display “Amount of oil is? ” Input order // Calculate the cost based on the amount of oil being purchased If order < 150 Then cost= order x 2.25 Else If order < 250 Then cost= (150 x 2.25) + (order - 150) x 2.10 Else cost= (150 x 2.25) + (100 x 2.10) + (order - 250) x 1.99 Endif Endif // Display the cost of oil being purchased Display “The cost of the oil is ”, cost Copyright 2014 by Janson Industries 54 SFC ▀ Prompts for some of the block comment info ♦ ♦ ♦ Author Course Program name ▀ Supports line comments ▀ Automatically puts in Start/Stop ▀ Variable declarations defined as process statements 55 Copyright 2014 by Janson Industries SFC ▀ Prompts for some of the block comment info ▀ Supports line comments ▀ Automatically puts in Start/Stop ▀ Variable declarations defined as process statements 56 Copyright 2014 by Janson Industries SFC To insert more line comments, click on location within the FC then Edit and Insert 57 Copyright 2014 by Janson Industries SFC 58 Copyright 2014 by Janson Industries SFC 59 Copyright 2014 by Janson Industries SFC 60 Copyright 2014 by Janson Industries SFC 61 Copyright 2014 by Janson Industries Simplified OilCalc Start Declare Integer order Declare Real cost Display “The amount of oil is? ” Input order cost=order * 2.99 Display “The cost of ” + order + “gallons of oil is ” + cost End Copyright 2014 by Janson Industries Non-graded Assg 1 - SFC ▀ ▀ ▀ Create the OilCalc flow chart in SFC, save it as OilCalc.sfc and send as email attachment with topic of Chap2Assg1 Include the comments from the pseudocode and the new simplified calculation Should look like this… 63 Copyright 2014 by Janson Industries Non-graded Assg 1 - SFC 64 Copyright 2014 by Janson Industries SFC Non-graded Assg 1 - SFC 65 Copyright 2014 by Janson Industries Raptor ▀ To create block comments at beginning of FC, click ♦ ♦ ♦ Start oval Edit Comment Enter comment text and click Done 66 Copyright 2014 by Janson Industries Raptor 67 Copyright 2014 by Janson Industries Non-graded Assg 2 - Raptor ▀ ▀ Create the OilCalc flow chart in Raptor, save it as OilCalc.rap and send as email attachment with topic of Chap2Assg2 Include the comments from the pseudocode and the new simplified calculation ♦ ▀ Don’t forget that Raptor includes the prompt with the input operation Should look like this… 68 Copyright 2014 by Janson Industries Non-graded Assg 2 - Raptor 69 Copyright 2014 by Janson Industries Non-graded Assg 2 - Raptor ▀ When run should look like this 70 Copyright 2014 by Janson Industries Java ▀ ▀ // // // // Comment indicated with // (just like in pseudo code) Block comments placed at top of file before all code OilCalc.java Created by R. Janson on 1/1/2015 Program accepts the amount of oil being purchased by the user then calculates and displays the total cost of that amount Start of java statements 71 Copyright 2014 by Janson Industries Java ▀ To get input into program need to use a Scanner object ♦ Need to import the object ♦ This means have to tell compiler where to find it ► This is done with a an import statement ► import statements are at the beginning of the source code // // // // OilCalc.java Created by R. Janson on 1/1/2015 Program accepts the amount of oil being purchased by the user then calculates and displays the total cost of that amount import java.io.*; import java.util.Scanner; Copyright 2014 by Janson Industries 72 Java ▀ The Scanner object has to be created and assigned to a Scanner variable Scanner keyboard = new Scanner(System.in); ▀ Need variables to hold the input and output ♦ Java has int and double variable types that correspond to Integer and Real int order = 0; double cost = 0; 73 Copyright 2014 by Janson Industries Java ▀ ▀ To display text you can use either System.out.println or System.out.print ♦ println inserts a blank line after the displayed text and puts the cursor there ♦ print leaves the cursor on the same line as the text If we were prompting for the order amount and then entering the amount… 74 Copyright 2014 by Janson Industries Java ▀ Using System.out.println, the prompt and entered data would look like this The amount of oil is? 150 ▀ Using System.out.print, the prompt and entered data would look like this The amount of oil is? 150 75 Copyright 2014 by Janson Industries Java ▀ ▀ To get data into the program, we use the appropriate next method of the Scanner object ♦ nextInt() ♦ next() ♦ nextDouble() Need to use the Scanner variable (keyboard) to access the Scanner object method order = keyboard.nextInt(); 76 Copyright 2014 by Janson Industries // // // // OilCalc.java Created by R. Janson on 1/1/2015 Program accepts the amount of oil being purchased by the user then calculates and displays the total cost of that amount Java import java.io.*; import java.util.Scanner; public class OilCalc { public static void main(String[] args) throws IOException { // Variables defined to hold the input and output values int order = 0; double cost = 0; // Create the Scanner object, prompt the user for the amount and save it to order Scanner keyboard = new Scanner(System.in); System.out.print("Amount of oil is? "); order = keyboard.nextInt(); // Calculate the cost based on the amount of oil being purchased cost = order * 2.99; // Display the cost of oil being purchased System.out.println("The cost of " + order + " gallons of oil is " + cost); } } 77 Copyright 2014 by Janson Industries Non-graded Assg 3 - Java ▀ ▀ When run, should look like this… Create OilCalc.java, enter the code, debug and run it, then send OilCalc.java as an email attachment with topic of Chap2Assg3 78 Copyright 2014 by Janson Industries Points to Remember ▀ Copyright 2014 by Janson Industries Many phases to develop the program: ♦ Understand the problem ♦ Create the External and Internal design for the program ♦ Code the program ♦ Translate the program to machine language ♦ Test the program and resolve errors 79 Points to Remember ▀ Flowchart: ♦ ▀ Diagram representation of program logic Pseudo code: ♦ Word representation of program logic 80 Copyright 2014 by Janson Industries Labs ▀ Non-graded assgs: ♦ Chapter 2 Lab labs 1-1 through 1-4 ► Paste pseudocode into the document and/or send as email attachment • I recommended doing these and getting feedback before doing the graded assg ► Send flowchart files as email attachments with lab name in subject ▀ Graded assg, ♦ Chapter 2 Lab 1-5 ► Package the work as specified above 81 Copyright 2014 by Janson Industries All Assignments Due ▀ 10 non-graded assgs: ♦ ♦ Ch01 in class assgs 1,2,3 and Ch02 in class assgs 1,2,3 sent as email attachments Chapter 2 Lab labs 1-1 through 1-4 ► Paste work into the document and/or send as email attachment • I recommended doing this and getting feedback before doing the graded assg ▀ Graded assg, Chapter 2 Lab 1-5 ♦ Paste all work into the document and/or send files as email attachments Copyright 2014 by Janson Industries 82 Assignment Problems ▀ If you have trouble emailing the labs because the file is too big ♦ Delete the video links from the document ♦ Break the document into separate docs for each lab ► Instead • • • • • Copyright 2014 by Janson Industries of one doc for all the labs, 5 docs Lab 1_1.docx Lab 1_2.docx Lab 1_3.docx Lab 1_4.docx Lab 1_5.docx 83