1 / 31

Pseudocode

Pseudocode. Faking it. Pseudocode. Literally – “False code” Not a ‘real’ programming language only used to define algorithms same pseudocode can be implemented in many different computer languages Many conventions to be followed:

sirius
Télécharger la présentation

Pseudocode

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pseudocode Faking it

  2. Pseudocode • Literally – “False code” • Not a ‘real’ programming language • only used to define algorithms • same pseudocode can be implemented in many different computer languages • Many conventions to be followed: • all programs begin with PROGRAM statement and BEGIN, and end with END statement • modules are defined after the main program, and begin with MODULE statement along with inputs and outputs • ‘Reserved words’: PROGRAM, BEGIN, END, MODULE, IF, THEN, ELSE, FOR, TO, STEP, CASE, IS, WHILE, REPEAT, UNTIL, AND, OR, NOT, ADDRESS, CONTENTS. • Variables are not declared, and have no type • but they still should have sensible names

  3. Pseudocode • Program structure: • every program begins and ends in the same way.. PROGRAM my_program BEGIN statement1 statement2 …. END

  4. Pseudocode • Layout is very important! • indentation must be used for conditional statements, loops, etc.. • one statement per line • upper case for reserved words • main program first, modules in top-down order or grouped by function • Some good habits to get into: • leave space between lines to add more code • give variables meaningful names • think first, then write • module structure, algorithm, etc.. • try it in your head or on paper first

  5. Pseudocode Variables • In general: • do not need to be declared • have no type, and no size • Arrays: • a set of values of the same type referred to using the same label • a list of 10 numbers • a sentence consisting of 100 characters • a collection of 45 students • set and accessed using the [ ] operator • first element is element 0, last is size - 1 • examples: Set num_array[0] = 50 sets first element to 50 Set num_array[10] = 0 sets 11th element to 0 write num_array[0] to screen Prints 50

  6. Pseudocode • Statements: • can take many forms • simple – single action, defined in simple English statement Set x = 1 Read m, c from keyboard Set y = m * x + c • module call – sqrt ( IN: x OUT: y ) • conditional – IF or CASE statement • loop – WHILE, REPEAT, FOR

  7. Simple Statements • Simple statements should: • be unambiguous get x BAD read x from keyboard GOOD • as brief as possible multiply x by 3 and store result in variable y BAD Set y = x * 3 GOOD • follow pseudocode conventions • “Set” should be used when assigning variables • normal mathematical symbols (*, /, +, -, ^, etc..) • be simple! calculate impedence of circuit BAD calculate Fourier Transform of image VERY BAD! • make sense

  8. Module Calls • Syntax: module_name ( IN: input1, input2, … OUT: output1, output2, … ) • both IN: and OUT: should always be present, even if there are no inputs or outputs • number and type of inputs and outputs MUST exactly match the module definition • but the names of the variables don’t have to match.. • Examples: sqrt ( IN: x OUT: y ) fft ( IN: signal OUT: signal_fft ) • How to define modules? We’ll get to that in a little bit..

  9. Conditional Statements • IF statements: • branch program execution depending on value of a boolean expression • should be a TRUE or FALSE answer! • syntax: IF ( expression ) THEN statements... • ELSE block can also be added, to be run when the expression is FALSE IF ( expression ) THEN statements… ELSE more statements… • note the indentation - it is the ONLY way to tell when the IF statement ends!!

  10. Conditional Statements • IF statements can also be nested • ie, one inside the other IF ( a = 1 ) THEN do something ELSE IF ( a = 2 ) THEN do something else ELSE IF ( a = 3 ) THEN some else again ELSE default behavior • obviously quite difficult to read – better way is to combine ELSE and IF into one line IF ( a = 1 ) THEN do something ELSE IF ( a = 2 ) THEN do something else ELSE IF ( a = 3 ) THEN something else again ELSE default behavior

  11. IF Statement Examples PROGRAM quadratic BEGIN read a, b, c from keyboard Set det = b^2 – 4*a*c IF ( det < 0 ) THEN write “No roots” to the screen ELSE IF ( det = 0 ) THEN Set r1 = -b / ( 2 * a ) write “One root: “, r1 to the screen ELSE Set r1 = ( -b + det^0.5 ) / ( 2 * a ) Set r2 = ( -b – det^0.5 ) / ( 2 * a ) write “Two roots: “, r1, r2 to the screen END

  12. Logical Operators • The standard mathematical operators for comparisons are used in pseudocode: • <, <=, =, >=, >, != • Expressions may also be combined via logical operators to form compound expressions • AND, OR, NOT IF ( a = b AND c > d ) THEN … IF ( size = 0 OR size = max ) THEN …

  13. Invalid Expressions • Expressions controlling IF statements (and loops, etc) must be easily calculated • simple comparisons ( = <= > != etc..) • logical combinations of the above (AND OR etc) • Complex expressions should not be used, eg: • IF ( the value 7 is in the array ) THEN… • IF ( the smallest value in the array is < 10 )… • IF ( the WHILE loop above ran more than 15 times )… • IF ( day is a public holiday )… • All of these expressions are NOT VALID • the logical they represent is possible, but they must be expressed in a different manner x

  14. Conditional Statements • CASE statement: • program branches in multiple directions depending on the value of an expression • syntax: CASE ( expression ) IS const1: statements… const2: statements… … DEFAULT: default behavior • the expression can be anything that resolves to a value • the values to be tested against must be LITERAL values

  15. CASE Statement Example PROGRAM menu BEGIN display menu to screen read option from keyboard CASE ( option ) IS ‘a’: read num from keyboard add num to list ‘d’: delete last number from list ‘s’: write list to screen DEFAULT: write “Invalid option” to screen END

  16. Loops • 3 distinct types of loops: • FOR..DO • executes a fixed (at start of loop) number of times • a variable (counter) keeps track of iterations • automatically incremented after each iteration • WHILE..DO • continues looping while an expression is true • condition is checked before loop begins • may loop zero or more time • REPEAT..UNTIL • continues until an expression becomes true • condition is checked at the end of the loop • must loop at least once!

  17. FOR Loop • Syntax: FOR variable IS start TO finish STEP inc DO statements … • The process: • variable is assigned the value start before the loop begins – this happens exactly ONCE only! • before each loop iteration, variable is checked to see if it has reached finish yet – if so, terminate loop • at the end of each loop, variable is increased / decreased by inc. This happens at the end of each loop iteration.

  18. FOR Loop var=start Y var > finish? N loop body loop body var = var+ inc

  19. FOR Loop • Loop can only terminate once var reaches finish • STEP clause is not required • default increment is 1 if it is omitted • Common uses: • accessing or modifying entire arrays • calculating averages, max, min, std deviation, etc • running a task a fixed number of times • The loop variable (var) is often extremely useful • indicates which iteration we are on • used to index arrays • useful in performing mathematical calculations • etc, etc..

  20. FOR Loop Examples • Reading 10 numbers from user and print: PROGRAM for_loop_test BEGIN FOR i IS 0 TO 9 DO read array[i] from keyboard FOR i IS 0 TO 9 DO print i, array[i] to screen END • Calculating average of an array of numbers: Set sum = 0 FOR i IS 0 TO ( size – 1 ) DO Set sum = sum + array[i] print “Average is “, (sum / size) to screen

  21. WHILE Loop • Most general of the loop types • can be used to construct both of the other loops (FOR, REPEAT) • continues to loop while an expression is TRUE • loop guard is checked at beginning of each iteration of the loop • loop body must modify this expression in some way for the loop to terminate! • Syntax: WHILE ( expr ) DO statement1 statement2 …

  22. WHILE Loop N expr = TRUE? Y loop body loop body

  23. WHILE Loop Examples WHILE ( programming doesn’t make sense ) DO read the notes again annoy the lecturer practice Set total = 0 Set decision = “hit” WHILE ( total < 21 AND decision != “stay” ) DO deal another card total = total + card display card, total to screen IF ( total < 21 ) THEN write “Hit or stay?” to screen read decision from keyboard ELSE IF ( total = 21 ) THEN write “You have 21!” ELSE write “You Bust!” to screen Note that the loop body in these examples can change the value of the guard expression!

  24. REPEAT Loops • Almost identical to WHILE loops, except: • condition is checked at end of loop, not start • thus, loop MUST execute at least once! • repeats until condition becomes TRUE, not while condition is TRUE • Syntax: REPEAT statement1 statement2 … UNTIL ( expression )

  25. REPEAT Loops loop body loop body N expr = TRUE? Y

  26. REPEAT Loops • Appropriate when loop must occur at least once: • entering a menu option (repeat until quit) REPEAT display menu to screen get user choice from keyboard UNTIL ( choice is valid )

  27. Defining Modules • Top-down design process identifies modules which perform certain tasks • These are defined in pseudocode by: MODULE my_module ( IN: a, b, c OUT: x, y ) BEGIN module body.. END • All outputs should be defined in EVERY branch of execution • no matter what loops, conditionals, etc, are triggered • inputs do not necessarily have to be used • input variables should not be modified

  28. Using Modules • The calling module or program specifies the variables to be used • for both inputs and outputs • the ordering of the arguments is very important • The input variables are copied to the corresponding variables in the module definition • even if the names are the same in calling module and called module, the variables are different! • each module is a different page of the notebook, thus all the variables are separate and cannot be accessed from each other • passing the variables means copying them between pages • The output variables are copied back in a similar way

  29. Module Example PROGRAM quadratic BEGIN read a, b, c from keyboard calc_quad ( IN: a, b, c OUT: num, r1, r2) IF ( num = 0 ) THEN write “No roots” to screen ELSE IF ( num = 1 ) THEN write “One root: “, r1 to the screen ELSE write “Two roots: “, r1, r2 to the screen END

  30. Module Example MODULE calc_quad ( IN: a, b, c OUT: num_roots, root1, root2 ) BEGIN Set root1 = 0 Set root2 = 0 Set det = b^2 – 4*a*c IF ( det < 0 ) THEN num_roots = 0 ELSE IF ( det = 0 ) THEN num_roots = 1 root1 = -b / ( 2*a ) ELSE num_roots = 2 root1 = ( -b + det^0.5 ) / (2*a) root2 = ( -b – det^0.5 ) / (2*a) END

  31. Module Example PROGRAM quadratic MODULE calc_quad a a det 1 1 0 r1 -1.5 root1 b b -1.5 3 3 r2 c c 0 root2 9 9 0 num_roots num 1 1

More Related