A Digital Signal Processor and Programming System for Parallel Signal Processing

Total Page:16

File Type:pdf, Size:1020Kb

A Digital Signal Processor and Programming System for Parallel Signal Processing A Digital Signal Processor and Programming System for Parallel Signal Processing David E. Van den Bout Center for Communications and Signal Processing Department of Electrical Computer Engineering North Carolina State University June 1987 ccsr-TR-87/6 Table of Contents Chapter 1. Introduction .................................................................................... 1 Chapter 2. Background 8 Chapter 3. My Thesis 46 Chapter 4. Algorithm Analysis 51 Chapter 5. Interprocessor Communications 69 Chapter 6. The DSP Architecture........................................................................ 90 Chapter 7. The PaLS Automated Programming System 127 Chapter 8. Conclusions and Areas for Further Work.............................................. 220 References 238 Appendix A. The Axe Hardware Simulation Language........................................... 248 Appendix B. Prediction of Simulated Annealing Curves for Graph Partitioning 278 Appendix C. The Approach to Thermal Equilibrium 299 VAN DEN BOUT, DAVID E. A Digital Signal Processor and Programming System for Paral- lei Signal Processing (Under the direction of T. K. Miller III.) This thesis describes an integrated assault upon the problem of designing high throughput, low cost digital signal processing systems. The dual prongs of this assault con- sist of: • the design of a digital signal processor (DSP) which efficiently executes signal processing algorithms in either a uniprocessor or multiprocessor configuration, • the PaLS programming system which accepts an arbitrary algorithm, partitions it across a group of DSPs, synthesizes an optimal communication link topology for the DSPs, and schedules the partitioned algorithm upon the DSPs. The results of applying a new quasi-dynamic analysis technique to a set of high-level sig- nal processing algorithms were used to determine the uniprocessor features of the DSP design. For multiprocessing applications, the DSP contains an inierprocessor communications port (IPe) which supports simple, flexible, dataflow communications while allowing the total communication bandwidth to be incrementally allocated to achieve the best link utilization. The net result is a DSP with a simple architecture that is easy to program for both uniprocessor and multiprocessor modes of operation (as was verified using the newly developed hardware simulation language, Axe). The PaLS programming system simplifies the task of parallelizing an algorithm for exe- cution upon a multiprocessor built with the DSP. PaLS differs from many other automatic programming systems in that it can map algorithms onto a group of processors while sintul- taneously deriving the interconnection topology for the processors. This is possible because PaLS incorporates a model of computation which accounts for the costs of partitioning, communica- tion link assignment, and scheduling. PaLS uses the method of simulated annealing coupled with the new technique of annealing curve prediction to adaptively control the optimization of the algorithm mapping. CHAPTER 1 Introduction The uses of signal processing are ubiquitous within our society, from the synthetic voice which reminds us to buckle our seatbelt to the enhanced pictures beamed to Earth from the Voyager spacecraft circling Jupiter. Before World War II, all signal processing was done in the analog domain (i.e. continuous-time, continuous-signal). With the advent of integrated circuits in the 1960's, many applications moved from the analog to the digital domain (i.e. discrete-time, quantized-signal). Digital techniques permit greater precision, repeatability, signal-to-noise ratio, and flexibility than their analog counterparts [AlleSS]. Programmable digital signal processors (DSPs) became widely available in the 1970's as large scale integra- tion (LSI) was introduced. Even greater flexibility is available to the user of these devices since their operation can be tailored merely by changing the signal processing program. As usually happens, such benefits are offset by disadvantages. In the case of digital sig- nal processing, the bandwidth of the signals which can be processed is much smaller than for analog techniques. Programmable DSPs can usually be applied to voice-frequency signals (~104 Hz) [Kawa80], while special-purpose digital systems can handle higher frequencies (::::106 Hz) [Lind85]. Analog systems have much higher throughput, and can process signals of ultra-high frequency (~1012 Hz). The operating physics of analog devices makes them faster for many common signal processing tasks. For example, determining the response y (t) of a linear system to a given input x (t) is expressed mathematically as: y (t) = f h (t - a )x (a)d 0: (1.1) -ex; 2 where h(t) expresses the impulse response of the given analog system. This convolution operation is a natural response of many types of analog systems. The digital form of Eqn. (1.1) is: N 1 Yk = L h, -~ I X, (1.2) 1-0 where Yk' hk , and Xk are the discrete, digital counterparts of the previously described analog signals. As can be seen, determining Yk for some value of k requires N multiplications and N -1 additions. This digital form of convolution is not a natural operation of digital systems, but must be explicitly provided for with hardware for performing multiplication and addition. Special-purpose digital systems can use many adders and multipliers in parallel to compute Eqn. (1.2), but to even approach the speed of analog convolution requires a large amount of hardware. Programmable DSPs, which typically have only one multiplier, are much slower than such hardware intensive systems. The flexibility and programmability of digital systems also exacerbates their throughput problem. New algorithms are being proposed which could not readily be performed with analog components but are easily programmed on digital hardware. These algorithms (such as linear system solution and eigenvalue decomposition) require even greater computational resources. In order to expand the range of applicability of programmable DSPs, the speed at which they execute signal processing algorithms must be increased. An increase in DSP speed can be achieved by: • increasing the speed of the circuit technology, • creating signal processing algorithms with reduced computational requirements, • enhancing the DSP architecture, • using multiple DSPs to perform computations in parallel. 3 The speed and density of silicon technology has steadily increased over time, and new technologies such as gallium-arsenide are becoming commercially feasible [Milu86]. How­ ever, quantum limits will eventually be reached beyond which further improvements are impossible [Mead80]. In any event, improvements in material technology can usually be applied independently of the other speed-up methods mentioned. Therefore, the effects of improved technology will not be considered here. Algorithms with reduced computational requirements (such as the Fast Fourier Transform (FFf) and Winograd FFf [Wino78]), can make digital signal processing practical for certain applications. However, these procedures are not easily discovered, nor do they pos­ sess the usual simplicity of the majority of general-purpose signal processing algorithms. Therefore, this speed-up technique will not be expanded upon further. Enhancing the architecture of a general-purpose computer in order to increase its perfor­ mance for specific algorithms is a common technique. The execution speed of an algorithm can be increased as much as 10000/0 [Abd-74], although gains of 10%-50% are probably more common. In the same manner, the architecture of a programmable DSP can be altered to effi­ ciently support common digital signal processing operations. The architectural enhancements will usually consume some additional circuit area and power, and since these two quantities are not in unlimited supply, a careful costlbenefit analysis is needed. Still, this is a likely area in which to improve the performance of DSPs. Executing signal processing software with multiple processors offers the best hope for massive performance increases. The throughput of the total system can be increased merely by adding more processing elements while avoiding the fundamental physical limits encoun­ tered when trying to improve the circuit technology. The need to develop algorithms with reduced computational needs is replaced with the (slightly easier) job of creating algorithms consisting of many concurrent tasks. Ideally, these changes make it possible to increase the 4 total system speed indefinitely, rather than just the 10%-500/0 performance improvement achieved from enhancing the architecture of a uniprocessor. The appraisal of parallel processing given above is overly optimistic from a practical point of view. Typical parallel processing systems have saturated their performance at 2-3 times the speed of an individual processing component [Fish83]. Such systems are usually victims of communications bottlenecks. In effect, a significant portion of the system processing time is spent passing data between the individual computing elements. In the worst case, the time spent servicing this communication overhead cannot be used to perform useful computa­ tions, thereby reducing the throughput of the system. Therefore, designers have spent con­ siderable effort in developing parallel systems which minimize this overhead. Probably the simplest multiprocessor network consists of a set of processing elements connected via a single global bus (Figure 1.1). The bus is used to transfer
Recommended publications
  • Autocoding Methods for Networked Embedded Systems
    University of Warwick institutional repository: http://go.warwick.ac.uk/wrap A Thesis Submitted for the Degree of PhD at the University of Warwick http://go.warwick.ac.uk/wrap/36892 This thesis is made available online and is protected by original copyright. Please scroll down to view the document itself. Please refer to the repository record for this item for information to help you to cite it. Our policy information is available from the repository home page. Innovation Report AUTOCODING METHODS FOR NETWORKED EMBEDDED SYSTEMS Submitted in partial fulfilment of the Engineering Doctorate By James Finney, 0117868 November 2009 Academic Supervisors: Dr. Peter Jones, Ross McMurran Industrial Supervisor: Dr. Paul Faithfull Declaration I have read and understood the rules on cheating, plagiarism and appropriate referencing as outlined in my handbook and I declare that the work contained in this submission is my own, unless otherwise acknowledged. Signed: …………………………………………………………………….James Finney ii Acknowledgements I would like to thank Rapicore Ltd and the EPSRC for funding this project. I would also like to offer special thanks to my supervisors: Dr. R.P. Jones, Dr. P. Faithfull, and R. McMurran, for their time, support, and guidance throughout this project. iii Table of Contents Declaration ....................................................................................................................... ii Acknowledgements ......................................................................................................... iii Figures
    [Show full text]
  • Basically Speaking
    '' !{_ . - -,: s ' �"-� . ! ' , ) f MICRO VIDEQM P.O. (.t�Box 7357 204 E. Washington St. · Ann Arbor, MI 48107 BASICALLY SPEAKING A Guide to BASIC Progratntning for the INTERACT Cotnputer MICRO VIDEqM P.O. �Box � 7357 204 E. Washington St. Ann Arbor, Ml 48107 BASICALLY SPEAKING is a publication of Micro Video Corporation Copyright 1980 , Micro Video Corporation Copyright 1978 , Microsoft All Rights Reserved First Printing -- December 1980 Second Printing -- April 1981 (Revisions) \. BASICALLY SPEAKING A Guide to BASIC Programming for the Interact Computer Table of Contents Chapter 1 BASIC Basics......................................................... 1-1 The Three Interact BASIC Languages ................................ 1-11 BASIC Dialects .................................................... 1-12 Documentation Convent ions ......................................... 1-13 Chapter 2 HOW TO SPEAK BASIC................................................... 2-1 DIRECT MODE OPERATION. 2-2 Screen Control 2-4 .........................................•....... Screen Layout .................................................. 2-5 Graphics Commands . ............................................. 2-6 Sounds and Music............................................... 2-8 Funct ions ...................................................... 2-9 User-defined Functions ......................................... 2-12 INDIRECT MODE OPERATION . 2-13 Program Listings............................................... 2-14 Mu ltiple Statements on a Single Line ..........................
    [Show full text]
  • The Formal Generation of Models for Scientific Simulations 1
    The formal generation of models for scientific simulations 1 Daniel Tang 2 September, 2010 1Submitted in accordance with the requirements for the degree of Phd 2University of Leeds, School of Earth and Environment The candidate confirms that the work submitted is his own and that appropriate credit had been given where reference has been made to the work of others. This copy has been supplied on the understanding that it is copyright mate- rial and that no quotation from the thesis may be published without proper acknowledgement The right of Daniel Tang to be identified as Author of this work has been asserted by him in accordance with the Copyright, Designs and Patents Act 1988. c 2010 Daniel Tang 1 I would like to thank Steven Dobbie for all his comments and suggestions over the last four years, for listening calmly to my long, crypto-mathematical rantings and for bravely reading through the visions and revisions that would become this thesis. I would also like to thank Nik Stott for providing much needed moti- vation and for his comments on the more important parts of this thesis. Thanks also to Jonathan Chrimes for supplying figures from the DYCOMS-II intercom- parison study, and to Wayne and Jane at Northern Tea Power for supplying the necessary coffee. Thanks go to Zen Internet for the loan of a computer for the stratocumulus experiment and to the Natural Environment Research Council for funding this research under award number NER/S/A/2006/14148. 2 Contents Preface 1 1 Introduction 2 1.1 Posing the question .
    [Show full text]
  • High Level Preprocessor of a VHDL-Based Design System
    Portland State University PDXScholar Dissertations and Theses Dissertations and Theses 10-27-1994 High Level Preprocessor of a VHDL-based Design System Karthikeyan Palanisamy Portland State University Follow this and additional works at: https://pdxscholar.library.pdx.edu/open_access_etds Part of the Electrical and Computer Engineering Commons Let us know how access to this document benefits ou.y Recommended Citation Palanisamy, Karthikeyan, "High Level Preprocessor of a VHDL-based Design System" (1994). Dissertations and Theses. Paper 4776. https://doi.org/10.15760/etd.6660 This Thesis is brought to you for free and open access. It has been accepted for inclusion in Dissertations and Theses by an authorized administrator of PDXScholar. Please contact us if we can make this document more accessible: [email protected]. THESIS APPROVAL The abstract and thesis of Karthikeyan Palanisamy for the Master of Science in Electrical and Computer Engineering were presented October 27, 1994, and accepted by the thesis committee and the department. COMMITfEE APPROVALS: Marek A. /erkowski, Chair 1, Bradford R. Crain Representative of the Office of Graduate Studies DEPARTMENT APPROVAL: Rolf Schaumann, Chair Department of Electrical Engineering ************************************************ ACCEPTED FOR PORTLAND STATE UNIVERSITY BY THE LIBRARY by on,b Y4r.£M;f:'' /7'96- T ~- ABSTRACT An abstract of the thesis of Karthikeyan Palanisamy for the Master of Science in Electrical and Computer Engineering presented October 27, 1994. Title:HIGH LEVEL PREPROCESSOR OF A VHDL-BASED DESIGN SYSTEM This thesis presents the work done on a design automation system in which high-level synthesis is integrated with logic synthesis. DIADESfa design automa­ tion system developed at PSU, starts the synthesis process from a language called ADL.
    [Show full text]
  • If Statement in While Loop Javascript
    If Statement In While Loop Javascript If aerolitic or petitionary Jerald usually sail his lemonade liberated hence or react pettishly and loud, how ungoverned is Weylin? CompartmentalLinguiform Winifield and arbitratessubvertical unremittently Chancey always while admonishes Dwayne always disastrously salary his and sensationists cackle his bolus.expelled lengthily, he whangs so contrapuntally. You need to give it runs again and then perform this site is used. Before executing and website in. This type counter flow is called a loop because the quality step loops back around to attain top data that tow the scoop is False upon first time through the assert the. If false and be incorrect value of code again, you must be no conditions. No issue what pristine condition evaluates to it otherwise always inspire the feast of code once In short the mental-while loop executes the oven of statements before checking if. Loops while lovely for JavaScript The Modern JavaScript. Loops can either true, you need to the value of the block shows a while loop is true. If they sound like if that? Do have loop & While necessary in JavaScript with break statement. Conditionals and Loops. How hackers are finding creative assets on an empty. No such as adding another python. Boolean expression in this blog post that we use of factorial x counter variable being used in between while expression increment or more in this image. Since different actions for each iteration, what else block as a whimsical field cannot select a volume given. It has saw a single condition that many true causes the code inside the sure to.
    [Show full text]
  • 50 | Control Flow
    50 j Control flow All Matlab commands considered thus far have been carried out one after the other, or, if documented in an .m file, line-by-line. This is a hallmark of imperative programming. Nevertheless, it is sometimes required to make certain commands dependent on pre-conditions, or to repeat certain commands many times for which writing them into the code many times would be tedious and error-prone. To take care of these requirements, imperative programming provides the concept of control flow. Control flow can be broken down into the interaction of essentially three components: (1) logical expressions, (2) conditional statements, and (3) loops. Logical expressions test whether certain pre-conditions hold, conditional statements then organize the evaluation of commands based on the conditional statements, and loops take care of carrying out certain commands many times. In Matlab, the most important conditional statements are if-statements, and to a lesser degree switch-statements, while the most important loops are for-loops, and two a lesser degree while-loops. We will discuss each of these concepts in turn. 50.1 Logical expressions In programming, binary logic, i.e., statements that can be either true or false (but not both or something in between), is represented by the integers 1 and 0, respectively. For example, if two scalar numerical variables x,y have been assigned a value each, one can perform a number of logical tests on them by means of the following logical expressions: x == y Is x equal to y? x ∼= y Is x not equal to y? x < y Is x smaller than y? x > y Is x larger than y? x <= y Is x smaller than or equal to y? x >= y Is x larger or or equal to y? Logical expressions can be combined by and and or operations, for which the symbols & and | are used.
    [Show full text]
  • The While Loop Purpose: to Learn How to Use a Conditional Loop
    Java Loops The while Loop Purpose: To learn how to use a conditional loop Conditional Repetition Many times we need repetition of unknown number in Java. A for loop is great for known repetition, but what if you don't know how many times you need to do something? That's where the while loop comes in. Here is the format: while(condition) { list of statments... } You will probably note that a while loop looks a lot like an if statement. In fact a while loop is an if statement that can repeat. In other words, it keeps asking the question until it gets an answer of false. So as long as the condition is true, it will continue to do the list of statements. Time for an example: Suppose we want to enter an unknown number of positive integers and then find the average of those integers. We can't use a for loop because we don't know how many numbers there are. We can use a while loop though, and have a negative value represent the signal to stop entering numbers. Here is how we will do it: int number=0, sum=0, count=0; while(number>=0) { System.out.println("Enter a positive integer: "); number = keybd.readInt(); if(number>=0){count++; sum+=number;} } double average = sum / (1.0 * count); In this example, once a negative number is entered, the condition number>=0 becomes false and the loop is terminated. The computer always checks the condition first before entering the loop. If the condition is true, the loop is entered.
    [Show full text]
  • The Increment and Decrement Operators
    TOPICS 5.1 Th e Increment and Decrement 5.7 Keeping a Running Total Operators 5.B Sentinels 5.2 Introduction to lOOps: 5.9 Using a l OOp to Read Data The while Loop from a I=i le 5.J Using the while l oop for Input 5.10 Focus on Software Engineering: Validation Deciding Which loop to Use 5.4 Counters 5.11 Nested Loops 5.5 The do- while l oop 5.12 Breaking Out of a Loop 5.6 The for l oop 5.13 The continue Statement The Increment and Decrement Operators CONCEPT: ++ and -- are operators that add and subtract 1 from their operands. To increment a value means to increase it by one, and to decrement a value mea ns to decrease it by one. Both of the fo llowing staremems increment the variable num: num = num + 1; num += 1; And num is decremented in both of the following statements: num = num - 1 ; nurn -;;: t; 24. 250 Chapter 5 Looping c++ provides a sec of simple unary operatOrs des igned just for incrementing and decre­ menting variables. The increment operator is ++ and the decremem operator is - - . The following statement uses the ++ o perator to increment num; nllm++; And the following statement decrements num: num-- j NOTE: The expression num++ is pronounced "num plus plus," and num- - is pronounced ()"-_ "_"_"_"'__ "' __ ' _"_"_,_"'__i" __" _, _.'_' ____________________________________________________________ -' Our examples so fa r show the increment and decrement operators used in postfix mode, whic h means the operator is placed after the variable.
    [Show full text]
  • Basic Programming Skills/ Foundations of Computer Programming DCAP102/DCAP401 Editor Dr
    Basic Programming Skills/ Foundations of Computer Programming DCAP102/DCAP401 Editor Dr. Anil Sharma www.lpude.in DIRECTORATE OF DISTANCE EDUCATION BASIC PROGRAMMING SKILLS/ FOUNDATIONS OF COMPUTER PROGRAMMING Edited By Dr. Anil Sharma ISBN: 978-93-87034-75-4 Printed by EXCEL BOOKS PRIVATE LIMITED Regd. Office: E-77, South Ext. Part-I, Delhi-110049 Corporate Office: 1E/14, Jhandewalan Extension, New Delhi-110055 +91-8800697053, +91-011-47520129 [email protected]/[email protected] [email protected] www.excelbooks.com for Lovely Professional University Phagwara CONTENTS Unit 1: Foundation of Programming Languages 1 Manmohan Sharma, Lovely Professional University Unit 2: Introduction to C Language 19 Kumar Vishal, Lovely Professional University Unit 3: Basics - The C Declaration 36 Anil Sharma, Lovely Professional University Unit 4: Operators 48 Yadwinder Singh, Lovely Professional University Unit 5: Managing Input and Output in C 61 Anuj Sharma, Lovely Professional University Unit 6: Decision-making and Branching 91 Balraj Kumar, Lovely Professional University Unit 7: Decision-making and Looping 126 Mandeep Kaur, Lovely Professional University Unit 8: Arrays 155 Kanika Sharma, Lovely Professional University Unit 9: Strings 168 Sarabjit Kumar, Lovely Professional University Unit 10: Pointers 187 Anil Sharma, Lovely Professional University Unit 11: Functions 209 Anil Sharma, Lovely Professional University Unit 12: Union and Structure 237 Sarabjit Kumar, Lovely Professional University Unit 13: File Handling in C 266 Anil Sharma, Lovely Professional University Unit 14: Additional in C 282 Avinash Bhagat, Lovely Professional University SYLLABUS Basic Programming Skills/Foundations of Computer Programming Objectives: It imparts programming skills to students. Students will be able to: Understand the structure of a C/C++ language program including the use of variable definitions, data types, functions, scope and operators.
    [Show full text]
  • Conditional Statement in C Language
    Conditional Statement In C Language Unexpressive Rem still parbuckles: unpent and vertebrated Rudie frenzies quite fluidly but gasp her puff offshore. Calvin is backbreaking and overdevelop intermediately while seismograph Ev expel and imbarks. Which Timothy panegyrizing so limitedly that Briggs guts her mellowing? Conditional statement here, the values match is conditional statement is enclosed within if i will Sorry, be you trade the chunk of horse if statement more visually clear. Using this statement an early exit from a loop day be achieved. Selection and repetition statements typically involve decision steps. Thus when you can call that two clip the relations are usually, prevent prepare respond to security incidents, not broken it. A conditional operator is so single programming statement while alone 'if-else' statement is a programming block loaf which statements come as the parenthesis A. He should consider four nested if there is amazing how do not have another language. It starts with our condition, you need to surround someone with grouping parentheses. It fix, and Apache logo are either registered trademarks or trademarks of the Apache Software Foundation. Review Logic and if Statements article Khan Academy. If our services or trademarks of languages can i first language. Both of condition! Have you learned about integer division and truncation? This condition goes wrong result of languages do so. How many languages that we can be too many of cases, each language here! Case labels must be constants. What finish the 3 types of conditional? How do competitive programming examples we can be a few important. Conditional EF. While condition body heal the body repair be enjoy a single statement or finally block of statements within curly braces Example int i 0 while i 5 printf i.
    [Show full text]
  • Control Structure: Repetition - Part 2 01204111 Computers and Programming
    Control structure: Repetition - Part 2 01204111 Computers and Programming Chalermsak Chatdokmaiprai Department of Computer Engineering Kasetsart University Cliparts are taken from http://openclipart.org Revised 2018-07-16 Outline ➢Definite Loops : A Quick Review ➢Conditional Loops : The while Statement ➢A Logical Bug : Infinite Loops ➢A Common Loop Pattern : Counting Loops ➢A Common Loop Pattern : Interactive Loops ➢A Common Loop Pattern : Sentinel Loops ➢One More Example : Finding the Maximum 2 Definite Loops : A Quick Review • We've already learned that the Python for- statement provides a simple kind of loops that iterate through a sequence of values. for variable in sequence : code_block more items in F sequence ? The number of times the code_block T is executed is precisely the number variable = next item of items in the sequence. Therefore the for-loop is also code_block called the definite loop because it repeats its loop body a definite number of times. 3 4 Fahrenheit-to-Celcius Table Revisited def fah_to_cel(start, end, step): print(f"{'Fahrenheit':>12}{'Celcius':>12}") print(f"{'----------':>12}{'-------':>12}") for fah in range(start, end, step): cel = (5/9)*(fah-32) print(f"{fah:12}{cel:12.1f}") print(f"{'----------':>12}{'-------':>12}") >>> fah_to_cel(40, 50, 3) >>> fah_to_cel(100,32,-20) Fahrenheit Celcius Fahrenheit Celcius ---------- ------- ---------- ------- 40 4.4 100 37.8 43 6.1 80 26.7 46 7.8 60 15.6 49 9.4 40 4.4 ---------- ------- ---------- ------- 5 Fahrenheit-to-Celcius Table Revisited What if we want to print the conversion table ranging from 40 F upto 50 F, progressing with the step of 0.5 F? >>> fah_to_cel(40, 50, 0.5) Fahrenheit Celcius ---------- ------- File "C:\Users\ccd\PyFi\fah2cel.py", line 5, in fah_to_cel for fah in range(start, end, step): TypeError: 'float' object cannot be interpreted as an integer We need another kind of The result is a run-time error loops that is more flexible because the range() function requires only integer arguments than the for-loop: but 0.5 is not an integer.
    [Show full text]
  • Chapter 2 the Imperative Programming Languages, C/C++
    Chapter 2 The Imperative Programming Languages, C/C++ As we discussed in Chapter 1, the imperative paradigm manipulates named data in a fully specified, fully controlled, and stepwise fashion. It focuses on how to do the job instead of what needs to be done. Imperative programs are algorithmic in nature: do this, do that, and then repeat the operation n times, etc., similar to the instruction manuals of our home appliances. The coincidence between the imperative paradigm and the algorithmic nature makes the imperative paradigm the most popular paradigm among all possible different ways of writing programs. Another major strength of the imperative paradigm is its resemblance to the native language of the computer (von Neumann machine), which makes it efficient to translate and execute the high-level language programs in the imperative paradigm. In this chapter, we study the imperative programming languages C/C++. We will focus more on C and the non-object-oriented part of C++. We will study about the object-oriented part of C++ in the next chapter. By the end of this chapter, you should x have a solid understanding of the imperative paradigm; x be able to apply the flow control structures of the C language to write programs; x be able to explain the execution process of C programs on a computer; x be able to write programs with complex control structures including conditional, loop structures, function call, parameter passing, and recursive structures; x be able to write programs with complex data types, including arrays, pointers, structures, and collection of structures. The chapter is organized as follows.
    [Show full text]