Programming and Design Principles Software Development programme Muhammad ibn Musa Al'Khowarizmi, a Tashkent cleric who in the twelfth century developed the concept of a written process to be followed to achieve some goal, and published a book on the subject that gave it is modern name - algorithm. An algorithm is merely the sequence of steps taken to solve a problem ◦ Two parts Actions to be executed Order in which those actions are to be done ◦ Computational steps that transform the input data into useful output data. Algorithms are not programs ◦ They need to be coded in a programming language like C++ Programmers arrive at these solutions by using one or more of these devices: Logic flowcharts Structure charts Pseudocode (sue-dough'-code) Structured Programming Solutions to problems need to be developed before code is written C++ syntax can obscure understanding ◦ Write out solutions intuitively – on paper ◦ Use flowcharts or pseudocode ◦ Translate ideas to C++ syntax on paper Try to NEVER compose code at the terminal Don't try to crate the perfect solution on the first try – it's too difficult ◦ Begin with a partial solution that runs ◦ Make it better iteratively through refinement Prototyping Spend a little more on an organized software development approach to save a lot during testing, maintenance, and support phases Pseudocode – ◦ Make a detailed description of your algorithm’s logic before worrying about C++ syntax and data layout. ◦ An algorithm you develop using pseudocode should be capable of implementation in any procedural programming language Pseudocode is generally independent of the implementation language Flowcharts – ◦ A graphical layout of the algorithm is often very useful in spotting “illogical” logic! Forms of documentation used to build and communicate the detailed parts your structured designs A graphical representation of an algorithm. Drawing a flowchart gives the programmer a good visual reference of what the program will do Flowcharts serve as program documentation Flowcharts allow a programmer to test alternative solution to a problem before coding Flowcharts provide a method for easy desk checking These represent the flow of logic in a program and help programmers “see” program design. Common Flowchart Symbols Terminator. Shows the starting and ending points of the program. A terminator has flow lines in only one direction, either in (a stop node) or out (a start node). Data Input or Output. Allows the user to input data and results to be displayed. Processing. Indicates an operation performed by the computer, such as a variable assignment or mathematical operation. With a heading – an internal subroutine Decision. The diamond indicates a decision structure. A diamond always has two flow lines out. One flow lineout is labeled the “yes” branch and the other is labeled the “no” branch. Predefined Process. One statement denotes a group of previously defined statements. Such as a function or a subroutine created externally Connector. Connectors avoid crossing flow lines, making the flowchart easier to read. Connectors indicate where flow lines are connected. Connectors come in pairs, one with a flow line in and the other with a flow line out. Off-page connector. Even fairly small programs can have flowcharts that extend several pages. The off-page connector indicates the continuation of the flowchart on another page. Just like connectors, off-page connectors come in pairs. Flow line. Flow lines connect the flowchart symbols and show the sequence of operations during the program execution. Top to bottom and left to right ◦ Draw the flowchart the way you like to read ◦ Use arrowheads on flow lines whenever the flow is not top to bottom, left to right Be neat ! Use graphics software Avoid intersecting lines Start or Preparation Symbol sum= Input price sum=sum+price Yes Terminal Symbol More items? No tax=sum x 0.0725 total=sum+tax Output sum, tax, and total Stop I/O Symbol Process Symbol Decision Symbol Time consuming A program flowchart shows how the input becomes output, but it does not show why a particular step is done Flowcharts are subjective Pseudocode is an artificial and informal language that helps programmers develop algorithms. ◦ Pseudocode is a "text-based" detail (algorithmic) design tool. ◦ An English description of an algorithm in sufficient detail to allow its implementation to be easily written. This device is not visual but is considered a “first draft” of the actual program. Pseudocode is written in the programmer’s native language and concentrates on the logic in a program—not the syntax of a programming language. There is no standard pseudocode The rules of Pseudocode are generally straightforward ◦ Should be easily read and understood by nonprogrammers ◦ All statements showing "dependency" are to be indented. These include while, do, for, if, switch You need to reach a balance between excessive and insufficient detail. ◦ In some cases you only need a skeleton of the logic and in other cases you may want to show the intricacies of your algorithm ◦ Write what is necessary to understand and communicate the essential parts of your algorithm without becoming bogged down in detail ◦ Statements are written in a simple English-like language ◦ Each instruction is started on a separate line ◦ Logic-showing keywords are written in UPPER CASE or typed in BOLD UPPERCASE (e.g. IF, THEN, FOR, DO etc.) These are the only uppercase words in this form of pseudocode. ◦ Indentation is used to show structure ◦ Instructions are written from top to bottom, with only one entry point and one exit point ◦ Logically related groups of instructions can be formed into modules and given a name sum=0 While More items do Input price sum=sum+price End While tax=sum x 0.0725 total=sum+tax Output sum, tax, total 1. 2. 3. 4. 5. 6. 7. 8. Make the pseudocode languageindependent Indent lines for readability Make key words stick out by showing them capitalized, in a different color or a different font Punctuation is optional End every IF with ENDIF Begin loop with LOOP and end with ENDLOOP Show MAINLINE first; all others follow TERMINAE all routines with an END instruction Structured program languages lend themselves to flowcharts, structure charts, and pseudocode. Structured programming languages work best where the instructions have been broken up into small, manageable parts. Structure charts illustrate the structure of a program by showing independent hierarchical steps. Major divisions are subdivided into smaller pieces of information.