320 likes | 344 Views
Learn about structured program development and program control, including the sequential and non-sequential nature of instruction logic, control structures, repetition, decision-making, and selection. Understand the importance of formal language control structures in programming.
E N D
Structured Program Development& Program Control 60-140 Lecture 2b Dr. Robert D. Kent
Lecture 2b: Outline • Structured program development • Program control
Lecture 2C: Outline • Structured program development • Sequential nature of instruction logic • Non-sequential instruction logic • Control structures • Repetition • Decision • Selection
Structured program development • Previously, we discussed program design from the perspectives of • Top-Down Bottom-UpStepwise-Refinement • In practice, all of these techniques are used • However, the Top-Down approach emphasizes the recognition of processing modules, or units of logic, that must always be processed as complete units • Sometimes these units may be single statements • Usually they are expressed as compound statements { } • The goal of structured programming is to apply formal language control structures that determine the execution of processing units.
Sequential nature of instruction logic • At the level of the machine (CPU hardware) • The RAM address of the next instruction to be executed is stored in a CPU register (storage unit) called the Program Counter (PC) • Machine language instructions (encoded bit strings) are loaded from RAM, using the address stored in the PC, to an Instruction Register (IR) in the CPU • While the IR is being decoded, the PC is incremented by the length (in bytes) of the current instruction. • This last step assumes that the next instruction (in sequence) automatically follows the current instruction in RAM. The DEFAULT mode of process execution is SEQUENTIAL. Statement_1 ; Statement_2 ; ..... Statement_N-1 ; Statement_N ;
Non-sequential instruction logic • Hardware designers have long understood the need to perform logical steps “out of order” • This is called non-sequential logic • Must be able to change the value stored in the CPU Program Counter (PC) register • Requires hardware instructions for this purpose • This is called branching logic
Non-sequential instruction logic • Forward Branch • if cond FALSE TO DO or NOT TO DO ? That is the question! TRUE process
Non-sequential instruction logic • Forward Branch • if else cond FALSE TRUE Fprocess Tprocess EITHER OR
Non-sequential instruction logic • Backward Branch (Code repetition) • Pre-Form: while / for FALSE cond Do ONCE or REPEATEDLY TRUE process
Non-sequential instruction logic • Backward Branch (Code repetition) • Post-Form: do while process TRUE cond FALSE
Control structures • In the C language, several formal control structures have been designed • Repetition • while do-while for • Decision • if if-else • Selection • if-else if-else switch • Each of these structures guide how the compiler generates proper machine language codes that preserve the semantics of the control logic
2D : Program control Multiple selection and For control structures
Lecture 2D: Outline • Program control • Multiple selection • If-else if-else • switch • Repetition • do-while • for • Break and Continue
Multiple selection • Multiple selection logic arises when a choice between more than two possible outcomes may happen • C provides two control structures to deal with these situations • if-else if-else • switch
Multiple selection • Problem: • Part of a calculator program requires the user to input a value from 1 to 4 indicating his/her choice of the operation to perform on two values A and B (assume A, B already entered) • RESULT: C = A operation B ; • The interpretation of the inputs is defined as • 1 - Add • 2 - Subtract • 3 - Multiply • 4 - Divide
Multiple selection : if-else if • Solution using if-else if-else : • printf ( “Enter operation code >” ) ; scanf ( “%d”, &Code ) ; if ( Code == 1 ) C = A + B ; else if ( Code == 2 ) C = A – B ; else if ( Code == 3 ) C = A * B ; else C = A / B ; A bit difficult to understand.
Multiple selection : if-else if • Solution using if-else if-else : • printf ( “Enter operation code >” ) ; scanf ( “%d”, &Code ) ; if ( Code == 1 ) C = A + B ; else if ( Code == 2 ) C = A – B ; else if ( Code == 3 ) C = A * B ; else C = A / B ; Much easier. REMEMBER ! Indentation is only for programmers, compilers do not understand indents.
Multiple selection : switch • Solution using switch : • printf ( “Enter operation code >” ) ; scanf ( “%d”, &Code ) ;switch ( Code ) { case 1 : C = A + B ; break ; case 2 : C = A – B ; break ; case 3 : C = A * B ; break ; case 4 : C = A / B ; break ; default : printf ( “Error in input\n” ) ; break ; }
Multiple selection : switch • Solution using switch : • printf ( “Enter operation code >” ) ; scanf ( “%d”, &Code ) ; switch ( Code ) { case 1 : C = A + B ; break ; case 2 : C = A – B ; break ; case 3 : C = A * B ; break ; case 4 : C = A / B ; break ;default : printf ( “Error in input\n” ) ; break ; }
Repetition • Repetition logic may be of two forms • Pre-condition testing : enter, or re-enter, the loop body if the condition is true. • Post-condition testing : enter the loop body in all cases (performing the body a minimum of once), then repeat the loop body only if the condition is true. • C supports three forms of repetition control structures • while • do-while • for
Repetition : while • while ( condition_expression ) statement ; • while ( condition_expression ) { statement1 ; ...... statementN ; }
Repetition : do-while • do statement ; while ( condition_expression ) ; • do { statement1 ; ...... statementN ; } while ( condition_expression ) ;
Repetition : for • for ( init_stmt ; cond_expr ; update_stmt ) statement ; • for ( init_stmt ; cond_expr ; update_stmt ) { statement1 ; ...... statementN ; }
Repetition : for • Example: Find the sum of all integers from 1 to 10. • int Sum = 0, k ; for ( k = 1 ; k <= 10 ; k++ ) Sum = Sum + k ;
Repetition : for • Example: Find the sum of all integers from 1 to 10. • int Sum, k ; for ( k = 1, Sum = 0 ; k <= 10 ; k++ ) Sum = Sum + k ;
Break and Continue • C defines two instruction statements that cause immediate, non-sequential alteration of normal sequential instruction processing • Break Logic • Execution of a break ; statement at any location in a loop-structure causes immediate exit from the loop-structure • Continue Logic • Execution of a continue ; statement at any location in a loop-structure causes execution to continue at the beginning of the loop structure (at the next loop iteration) while skipping the remaining statements.
Break and Continue • Break Logic • Execution of a break ; statement at any location in a loop-structure causes immediate exit from the loop-structure • for ( k = 0 ; k < 10 ; k++ ) { if ( k == 5 ) break ; printf ( “%d, ”, k ) ; } • Produces output : 0, 1, 2, 3, 4
Break and Continue • Continue Logic • Execution of a continue ; statement at any location in a loop-structure causes execution to continue at the beginning of the loop structure (at the next loop iteration) while skipping the remaining statements. • for ( k = 0 ; k < 5 ; k++ ) { if ( k == 3 ) continue ; printf ( “%d, ”, k ) ; } • Produces output : 0, 1, 2, 4
Lecture 2: Summary • Data • Types, Declarations, Literal values • Input/Output specification codes • Operators • Structured program development • Selection / Decision control logic • If If – else • Switch • Control structures • Repetition (Loop) control logic • Counters Sentinels • While Do-While • For
Lecture 2: Summary • Reading • Chapters 1 – 4 (All sections) • Midterm Examination 1 will focus on concepts and techniques from • Chapters 1-3, completely • Chapter 4.1 – 4.4 , 4.7, 4.8 • Some material presented in Lecture 2 slides may not be tested at this time, but will be tested later • Students are responsible for all material presented in the Lecture slides, as well as all assigned reading and Laboratory exercises and Examinations.