Chapter 1 Lecture Notes Bill Tucker Austin Community College COSC 1315 Copyright © 2002 W. A. Tucker 1 Programming • Programming is Problem Solving • People use programs to “solve problems” • Designing a program is like “solving a problem” • Make a program run properly is also “solving a problem” Copyright © 2002 W. A. Tucker 2 My Favorite Phrase • The computer made a mistake! • Computers don’t make mistakes unless they are BROKEN • People make mistakes • People write programs • People write programs that make mistakes Copyright © 2002 W. A. Tucker 3 Computer Hardware • The main parts of a computer are – Memory • Main memory – RAM – Volatile memory • Secondary memory (secondary storage) – Files – Non-Volatile – Input / Output – Central Processing Unit Copyright © 2002 W. A. Tucker 4 Processing Data • Processing of data occurs within the CPU – Data must be moved from storage to the CPU for processing to occur – The CPU must be told where the data is located – All data stored in main memory is referenced by a memory address – Example: A = B + 12 • Get the contents of memory location 00BE34 (B) • Add 12 to the value • Store the value into memory location 00BE38 (A) Copyright © 2002 W. A. Tucker 5 Computer Software • Operating Systems manage and control the resources of a computer – EX: Windows 98, Windows 2000, Windows XP, UNIX, Lynix, MAC/OS, etc – Most operating systems provide a graphical user interface (except UNIX and Lynix) • Application Software – Programs written to perform a specific task – EX: Office 2000, Office XP, Quicken, etc. Copyright © 2002 W. A. Tucker 6 Computer Instructions • Programmers must “tell the computer what to do” • The computer will do exactly what the programmer tells the computer to do, nothing more and nothing less. Copyright © 2002 W. A. Tucker 7 Computer Language • Computers understand only the binary number system (zeros and ones) – All data stored in the computer is stored as a series of zeros and ones – All instructions telling the computer what to do are stored as a series of zeros and ones • People do not naturally think in terms of zeros and ones (the binary number system) Copyright © 2002 W. A. Tucker 8 Programming Languages • Programming languages allow a programmer to give the computer instructions in a manner that the programmer can understand • Assembly Language is a low level language, where the programmer uses a mnemonic (abbreviation) to communicate an instruction to the computer – EX: “A” or “add” for addition • This mnemonic is translated into machine language (binary) by a program called an assembler Copyright © 2002 W. A. Tucker 9 More on Programming Languages • Assembly language is a one for one mapping to the machine language and has to be rewritten for each machine (not all machine languages are the same) • An Assembler translates assembler code into machine language that a computer may execute • High level languages were created to allow programmers to write at a level where one programming instruction is converted into several machine language instructions and to avoid having to constantly rewrite the program • A compiler converts high level language into machine language that a computer may execute Copyright © 2002 W. A. Tucker 10 Examples of Languages • High Level Languages – BASIC, C, COBOL, FORTRAN, PASCAL • Object Enabled Languages – C++ • Object Oriented Languages – Java, C# Copyright © 2002 W. A. Tucker 11 Development Environment • Developing a program in a high level language requires certain tools – Editor – type in a program and save as a file (called the source program) – Compiler – converts source program into machine language (called the object program) – Linker – Combines object program with other programs (include files) to produce executable code (called the load module) – Loader – Loads executable code into memory Copyright © 2002 W. A. Tucker 12 Integrated Development Environment (IDE) Editor Source File .cpp extension Compiler Object File Syntax Errors Linker Linker Errors Object File Loader Copyright © 2002 W. A. Tucker .exe extension Loader Errors 13 Software Development Method 1) Specify the problem 2) Analyze the problem 3) Design the algorithm to solve the problem - Desk Checking 4) Implement the Algorithm - Coding 5) Test and verify the completed program - Compiling and Executing 6) Maintain and update the program Copyright © 2002 W. A. Tucker 14 Structured Programming • Dividing a larger problem into smaller parts – AKA: tops-down design, stepwise refinement, modular programming – Identify what steps need to be done, usually VERBS – (ie: calculate, process, get, display, etc) • Each smaller part is then solved using one of three types of programming structure – Sequential structure – Selection structure – Repetition (looping) structure Copyright © 2002 W. A. Tucker 15 Procedural Solutions • Using structured programming, most problems can be solved using the following general procedural steps – Get the input – Process the input – Display (output) the results Copyright © 2002 W. A. Tucker 16 Object Oriented Programming • Humans interact with objects every day – Driving a car – Purchasing groceries • OOP involves defining the attributes (data) and behaviors (operations) of objects (usually NOUNS) • Combining these attributes and behaviors into a class is called encapsulation Copyright © 2002 W. A. Tucker 17 Advantages of Objects • Once an object is designed, implemented and tested everyone can use it – Improves productivity – Supports portability or reuse of code – All of which reduce development time Copyright © 2002 W. A. Tucker 18