Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS-150 Problem Solving & Programming I with C++ Week 1: Overview Tue/Thur January 13,15 2015 Textbook materials: C++ Programming: From Problem Analysis.

Similar presentations


Presentation on theme: "CS-150 Problem Solving & Programming I with C++ Week 1: Overview Tue/Thur January 13,15 2015 Textbook materials: C++ Programming: From Problem Analysis."— Presentation transcript:

1 CS-150 Problem Solving & Programming I with C++ Week 1: Overview Tue/Thur January 13, Textbook materials: C++ Programming: From Problem Analysis to Program Design, 7 th Edition ( 6th Ed.? )

2 New materials are being updated to our cs150 site,… 2

3 CS-150 Catalog Course Description: Lecture 3 hours; Laboratory 2.5 hours; 4 credits Introduction to computer-based problem solving and programming in C++. Topics include problem solving methodologies, program design, algorithm development, and testing. C++ language concepts include variables, data types and expressions, assignment, control-flow statements, arrays, sorting, functions, pointers, and linked lists. Lecture – twice a week. Lab - once a week… required weekly, assignments. Recitation – 3

4 Textbook Malik, C++ Programming: from Problem Analysis to Programming Design, 7 th edition Cengage Course Technology, Info on CS web site and ODU bookstore site.CS web site 4

5 Spring 2015 Session Dates: 5

6 Lab this week! 1) REGISTER for YOUR CS accounts. You will need to log in using the guest account for the first lab. The Lab instructor will provide this information. 2) Demo: how to download a CPP file for lab, create a CS150 folder in the Z drive, and create an organized structure so it’s easy to keep track of your work throughout the semester, e.g.: 3) Practice opening, reviewing, compiling, & running a CPP file 6 z:\ z:\CS150\lab-assignment-1\lab-assignment-1.cpp

7 ******************************************************************************** CS150: Spring Lab Assignment Example ******************************************************************************** Enter your first name: Stewie Enter your last name: Griffin Please confirm: Is your name Stewie Griffin? (Y/N): Y ******************************************************************************** Enter today's date any way you like: Tuesday, 26 August 2014 Enter the year you were born: 2012 ******************************************************************************** Your CS username is most likely: sgriffin You are probably turning 2 this year. Writing output to sgriffin-lab-assignment-1.txt. You can find it in the same folder as the CPP. 7

8 Teaching Assitants 8

9 Programming Why?Fun! Why? 9

10 A Brief Overview of the History of Computers Early calculation devices −Abacus, Pascaline −Leibniz device −Babbage machines: difference and analytic engines −Hollerith machine C++ Programming: From Problem Analysis to Program Design, Fourth, Fifth & Sixth Edition10

11 Terminology Algorithm: A set of steps that defines how a task is performed Program: A representation of an algorithm Programming: The process of developing a program Software: Programs and algorithms Hardware: Equipment

12 History of Algorithms The study of algorithms was originally a subject in mathematics. Early examples of algorithms −Long division algorithm −Euclidean Algorithm Gödel's Incompleteness Theorem: Some problems cannot be solved by algorithms.

13 The Euclidean algorithm

14 Origins of Computing Machines Greece, Ancient Assyria, Egypt,….. The ABACUS most likely existed in Babylonia around 3000 B.C. −Abacus: positions of beads represent numbers

15 An Abacus

16 Early calculation devices −Abacus, Pascaline −Leibniz device −Jacquard’s weaving looms −Babbage machines: difference and analytic engines −Hollerith machine Early computer-like machines −Mark I −ENIAC −Von Neumann architecture −UNIVAC −Transistors and microprocessors 16

17 Origins of Computing Machines Gear-based machines (1600s-1800s) Positions of gears represent numbers Blaise Pascal, Wilhelm Leibniz, Charles Babbage 1622: invention of slide rule 1642: invention of mechanical calculator by Blaise Pascal 1694: Leibniz Wheel expands arithmetic operations

18 Charles Babbage Invents Difference Engine in 1823 −Device adds, subtracts, multiplies, divides Designs Analytical Engine −Incorporated components akin to modern computer systems: I/O devices, memory, CPU −Storage of programs in Babbage’s Analytical Engine - Gear positions Ada Lovelace Byron −First programmer! −Program loop concept −Ada programming language namesake

19 Early Data Storage Joseph Jacquard −First used in Jacquard Loom (1801) to store patterns for weaving cloth −Allows the operator to input and store parameters through use of punch cards that are oriented with selection pins. −Popular through the 1970’s Stored Program Concept!

20

21

22 Early Data Storage Herman Hollerith Invented an electromechanical counter in 1880s. −Designed as a single-purpose machine, it was used in tabulating the 1890 US census. −Used punch cards as input

23

24 Early Data Storage Herman Hollerith The company created around this technology becomes International Business Machine: IBM −1944 – IBM Mark I computer

25 The Mark I computer

26 Early Computers Based on mechanical relays −1940: Stibitz at Bell Laboratories −1944: Mark I: Howard Aiken and IBM at Harvard Based on vacuum tubes − : Atanasoff-Berry at Iowa State −1940s: Colossus: secret German code-breaker −1940s: ENIAC: Mauchly & Eckert at U. of Penn.

27 Progress in Early Computers Charles Sanders Peirce −His work with electric switches extends the work of Boole by emulating the true/false conditions of Boolean algebra −Benjamin Burack implements concepts in 1936 logic machine −John Atanasoff and Clifford Berry build a computer using vacuum tubes

28 Categories of Computers Mainframe computers Midsize computers Micro computers (personal computers) Handheld devices Appliances ????? ??? drones? C++ Programming: From Problem Analysis to Program Design, 4 th & 6 th Edition28

29 Elements of a Computer System Hardware Software : programs that do specific tasks −System programs control the computer ex: Operating system −Application programs Word processors Spreadsheets Games 29 CPU Main memory: RAM Input/output devices Secondary storage

30 CPU (Central Processing Unit) CU (Control Unit): −Fetches and decodes instructions −Controls flow of information in and out of MM −Controls operation of internal CPU components PC (program counter): points to next instruction to be executed IR (instruction register): holds instruction currently being executed ALU (arithmetic logic unit): carries out all arithmetic and logical operations 30

31 Input devices feed data & programs into computers –Keyboard –Mouse –Secondary storage Output devices display results –Monitor –Printer –Secondary storage

32 Main Memory Directly connected to the CPU All programs loaded here before execution All data must be brought here before use Power off == data in main memory is lost 32

33 Secondary Storage Secondary storage: device that stores information permanently Examples of secondary storage: −Hard disks −Flash drives −Floppy disks −Zip disks −CD-ROMs −Tapes 33 ?

34 The Language of a Computer Digital signals are sequences of 0s and 1s Binary code: - A sequence of 0s and 1s Machine language: language of a computer Bit: (binary digit) : The digit 0 or 1 Byte : A sequence of eight bits 34

35 35

36

37 Coding Schemes ASCII (American Standard Code for Information Interchange) −128 characters −A is encoded as (66th character) −3 is encoded as C++ Programming: From Problem Analysis to Program Design, Fourth Edition37

38 Coding Schemes (continued) EBCDIC −Used by IBM −256 characters Unicode −65536 characters −Two bytes are needed to store a character C++ Programming: From Problem Analysis to Program Design, Fourth Edition38

39 39 Evolution of Programming Languages Early computers were programmed in machine language To calculate wages = rates * hours in machine language: //Load //Multiply //Store

40 40 Assembly Language Assembly language instructions are mnemonic Assembler: translates a program written in assembly language into machine language

41 High-Level Languages High-level languages include Basic, FORTRAN, COBOL, Pascal, C, C++, C#, and Java, ect.. Compiler: translates a program written in a high-level language into machine language The equation wages = rate hours can be written in C++ as: wages = rate * hours; 41

42 What? 42 Meanwhile,… back in class,….

43 43 Outline Computer Programming Process Algorithms and programming languages

44 44 Computer Programming Computer program A sequence of instructions to be performed by a computer Computer programming The process of planning a sequence of steps for a computer to follow Programming Process Problem-solving phase Implementation phase Maintenance phase

45 45 Programming Process 1/3 Problem-solving phase Analysis and specification ( understand and define problem, and what is expected of solution) General solution (algorithm: a logical sequence of steps that solves the problem) Verification (Follow steps to make sure solution solves the problem) Implementation phase Concrete solution (Program in a Programming language) Testing (make sure the program produces the desired results) Maintenance phase Use Program Maintain Program (meet changing requirements)

46 46 Programming Process 2/3 Analysis and Specification General solution (algorithm) Verification Concrete solution (Program) Testing Maintenance Phase In “Programming and Problem Solving with C++”, 3 rd Edition, Jones and Bartlett Publishers, 2002 Documentation: writing program documentation, and user manuals

47 47 Programming Process 3/3 How about we take a shortcut and start the programming process by the implementation phase? Costly shortcut Develop a general solution (algorithm) first Think first and code later!

48 48 Algorithm 1/3 Algorithm An ordered set of unambiguous executable steps, defining a terminating process A step-by-step procedure for solving a problem in a finite amount of time 1.Make a list of all positive integers 2.Arrange the list in descending order (from largest to smallest) 3.Extract the first integer from the list What are the problems with these instructions?

49 49 Algorithm 2/3 Difference between an algorithm and its representation Analogous to difference between a story and a book An algorithm is abstract and can be represented in many ways Algorithm for converting from Celsius to Fahrenheit can be represented as 1. F = (9/5) C + 32 (algebraic equation) 2. “ Multiply the temperature reading in Celsius by 9/5 and then add 32 to the product” An algorithm can be represented using some sort of language 1950s, 1960s  represented using flowcharts pseudocode (precisely defined textual structures)

50 50 Algorithm 3/3 An algorithm for starting the car 1.Insert the key in ignition 2.Make sure transmission is in Park (or Neutral) 3.Depress the gas pedal 4.Turn key to start position 5.If engine starts within six seconds, release key to ignition position 6.If engine does not start in six seconds, release key and gas pedal, wait ten seconds, and repeat steps 3 through 6, but not more than five times 7.If the car does not start, call the garage

51 51 Programming Language 1/3 A set of rules, symbols, and special words used to construct a computer program. There are rules for syntax (grammar) and semantics (meaning) Machine language Binary-coded instructions Closely coupled with design of computer hardware Assembly language Low-level programming language in which a mnemonic is used to represent each of the machine language instructions We have seen an example in chapter 2 from Brookshear Text We need an assembler Translate an assembly language program into machine code

52 52 Programming Language 2/3 High-level language closer to English and other natural languages C++, Java, C, Fortran, Ada, Pascal, COBOL, BASIC We need a compiler Translate a high-level language program into machine code Source program Program written in a high-level language Object program Machine language version of a source program Difference between compilation and execution of a program

53 53 Programming Language 3/3 Some programming languages are translated by an interpreter (some versions of BASIC) Interpreter translates and executes each instruction in the source program Java uses both a compiler and interpreter

54 54 A C++ Program #include using namespace std; int main() { cout << "My first C++ program." << endl; cout << "The sum of 2 and 3 = " << 5 << endl; cout << "7 + 8 = " << << endl; return 0; } Sample Run: My first C++ program. The sum of 2 and 3 = = 15

55 55 Processing a Program To execute a C++ program: −Use an editor to create a source program in C++ −Preprocessor directives begin with # and are processed by the preprocessor −Use the compiler to: Check that the program obeys the rules Translate into machine language (object program) −Software Development Kit (SDK) may be used to create a program

56 56 Processing a Program (contd) To execute a C++ program (continued): −Linker: Combines object program with other programs provided by the SDK to create executable code −Loader: Loads executable program into main memory −The last step is to execute the program

57

58 58 Programming is a process of problem solving

59 59 Programming with the Problem Analysis–Coding– Execution Cycle Programming is a process of problem solving One problem-solving technique: −Analyze the problem −Outline the problem requirements −Design steps (algorithm) to solve the problem Algorithm: −Step-by-step problem-solving process −Solution achieved in finite amount of time

60 60 Programming with the Problem Analysis–Coding–Execution Cycle Step 1 - Analyze the problem −Outline the problem and its requirements −Design steps (algorithm) to solve the problem Step 2 - Implement the algorithm −Implement the algorithm in code −Verify that the algorithm works Step 3 - Maintenance −Use & modify the program if problem domain changes

61

62 Analyze the Problem Thoroughly understand the problem Understand problem requirements −Does program require user interaction? −Does program manipulate data? −What is the output? If the problem is complex, divide it into subproblems −Analyze each sub-problem as above 62

63 Design an Algorithm If problem was broken into subproblems −Design algorithms for each subproblem Check the correctness of algorithm −Can test using sample data −Some mathematical analysis might be required 63

64 64 Problem Solving Techniques You follow algorithms every day in your life We need to learn how to design algorithms not simply follow them Some Strategies to solve problems  Ask questions  Look for things that are familiar  Means-Ends Analysis  Divide and Conquer

65 65 Strategies: Ask Questions When you are given a problem, you ask questions (What, Why, When, and Where?) In the context of programming What do I have to work with (What is my data)? What do the data items look like? How much data is there? How will I know when I have processed all the data? What should my output look like? How many times is the process going to be repeated? What special error conditions might come up?

66 66 Strategies: Look for Familiar Things Never reinvent the wheel If a solution exists  USE IT Finding the daily high and low temperatures is really the same problem as Finding the highest and lowest grades on a test Both problems can be abstracted as being Find largest and smallest values in a set of numbers

67 67 Strategies: Means-Ends Analysis Beginning state and End state are often given You need to define a set of actions that can be used to get from one to the other Once you have a set of actions, you need to work out the details Translated to computer programming  Begin by writing down what the input is? (Beginning state)  What the output should be? (End state)  What actions can be performed to obtain results from input data?

68 68 Strategies: Divide and Conquer Break up large problems into smaller problems that are easier to handle (Top-Down approach) Hard problem Easy subproblem Hard subproblem Easy subproblem

69 69 An Example 1/3 Compute the area of a circle Problem statement - We need an interactive program (user will input data) that computes the area of a circle. Given the circle radius, the circle area should be displayed on the screen Input/Output description Input  Circle radius Output  Circle area Algorithm development (set of steps, decomposition outline) 1.Read value of circle radius (r) 2.Compute circle area as pi * r 2 3.Print the value of circle area How do we represent more complex algorithms? Pseudocode, flowcharts (will introduce flowcharts later)

70 70 An Example 2/3 A divide and conquer block diagram of our problem Circle area Read radiusPrint circle areaCompute area Pseudocode Prompt the user for the circle radius (put a message on the screen) Read radius Assign Circle area the value pi * radius 2 Write Circle area on the screen Stop

71 71 An Example 3/3 Convert algorithm into a C++ program #include void main () { float pi = f; float radius, area; cout << "Enter the radius of the circle: "; cin >> radius; area = pi* radius * radius; cout << "The area of the circle is: " << area << endl; }

72 Write the Code Once the algorithm is designed and correctness verified −Write the equivalent code in high-level language Enter the program using text editor 72

73 Compiling and Linking Run code through compiler If compiler generates errors −Look at code and remove errors −Run code again through compiler If there are no syntax errors −Compiler generates equivalent machine code Linker links machine code with system resources 73

74 The Loader and Executing Once compiled and linked, loader can place program into main memory for execution The final step is to execute the program Compiler guarantees that the program follows the rules of the language −Does not guarantee that the program will run correctly 74

75 75 Example 1-1 Create a program to determine the perimeter and area of a rectangle

76 76 Example 1Analyze the Problem Design an algorithm to find the perimeter and area of a rectangle The perimeter and area of the rectangle are given by the following formulas: perimeter = 2 * (length + width) area = length * width

77 77 Example 1Design the Algorithm Algorithm: −Get length of the rectangle −Get width of the rectangle −Find the perimeter using the following equation: perimeter = 2 * (length + width) −Find the area using the following equation: area = length * width - Display the results:

78 78 Example 1Write the Code cin length // Input length cin width // Input width perimeter=2*(length + width)// Calc #1 area = length * width// Calc #2 cout perimeter // Output width cout area // Output width PsuedoCode

79 79 Compiling and Linking Codeblocks

80 80 Programming Methodologies Two popular approaches to programming design −Structured −Object-oriented

81 81 Structured Programming Structured design: −Dividing a problem into smaller subproblems Structured programming: −Implementing a structured design The structured design approach is also called: −Top-down (or bottom-up) design −Stepwise refinement −Modular programming

82 Object-Oriented Programming Identify components called objects Specify relevant data and possible operations to be performed on that data Each object consists of data and operations on that data An object combines data and operations on the data into a single unit 82

83 Object-Oriented Programming (continued) A programming language that implements OOD is called an object-oriented programming (OOP) language Learn how to represent data in computer memory, how to manipulate data, and how to implement operations Write algorithms and implement them in a programming language 83

84 Object-Oriented Programming (continued) Learn how to combine data and operations on the data into a single unit called an object C++ was designed to implement OOD OOD is used with structured design 84

85 ANSI/ISO Standard C++ C++ evolved from C C++ designed by Bjarne Stroustrup at Bell Laboratories in early 1980s C++ programs were not always portable from one compiler to another In mid-1998, ANSI/ISO C++ language standards were approved 85

86 Summary Computer: electronic device that can perform arithmetic and logical operations Computer system has hardware and software Central processing unit (CPU): brain Primary storage (MM) is volatile; secondary storage (e.g., disk) is permanent Operating system monitors the overall activity of the computer and provides services 86

87 87 Summary (continued) Various kinds of languages, such as machine language, assembly, high-level Algorithm: step-by-step problem-solving process; solution in finite amount of time Problem-solving process has three steps: −Analyze problem and design an algorithm −Implement the algorithm in code −Maintain the program

88 Summary (continued) Structured design: −Problem is divided into smaller subproblems −Each subproblem is solved −Combine solutions to all subproblems Object-oriented design (OOD): a program is a collection of interacting objects −Object: data and operations on those data 88


Download ppt "CS-150 Problem Solving & Programming I with C++ Week 1: Overview Tue/Thur January 13,15 2015 Textbook materials: C++ Programming: From Problem Analysis."

Similar presentations


Ads by Google