I. A. How to communicate with computers Plan what to say Chose the best phrasing Actually say it (encode it) Wait for response Computers follow instructions created by programmers Deterministic No options Very methodical No free will Given the same data, exactly the same results will occur every run
Humans write in programming languages, these get translated into binary. A separate program does the translation
II. Difference between human talk and machine talk Def: Programming language: a series of specifically defined commands designed by human programmers to give directions to digital computers. Each program solves a particular problem or performs a specific task A. Def: Semantics – meaning: Commands we want the computer to perform, the meaning of these commands. Each line of a computer language command can have ONE meaning only. What does it mean to perform an add, it means the contents of memory are added to the contents of the accumulator B. Def: Syntax: Grammatical form or structure of a language. Rules governing the language, in English = spelling and punctuation Syntax in computers is very strict EX. in Java must have a semi-colon ; after every instruction C. Participants Humans -----> Machines
EX: Add two numbers together and store them. Load register 1 from position 9 5 8 1 9 MachineCode: 0101 1000 0001 1001 Assembly L R1 9 A R1 57 ST R1 1024
Computer Clock Computers do one instruction per cycle (either fetch or execute) The number of cycles the computer does in one second is determined by the computer’s clock Clock measures in megahertz Mega of cycles per hertz Mega is millions Hertz is seconds Example, a 1000 MHz ticks a billion times per second One gigahertz is 1000 MHz or a billion times per second
An assembler program was used to translate: Programmers wrote “Source” code and the Assembler created “Object” or machine code. Data \\/ Humans --> Programming language --> Compiler/Assembler --> Binary Code --> Computer \\|/ SOURCE TRANSLATOR OBJECT Results
Give Example of Hi level languages =========================================================== Second generation First Generation Hi-level language VS Assembler sum = subtotal + tax; VS L subtotal A tax St sum Data \\/ Humans --> Programming language --> Compiler/Assembler --> Binary Code --> Computer \\|/ SOURCE TRANSLATOR OBJECT Results
Object Oriented Programming – data and instructions together Object Oriented design tries to mirror the underlying structure of the real world Objects are the nouns (or entities ) of any situation EXAMPLE: . Take for example, a company. Nouns might be: Company, Department, Employees Products We take each noun and say what the data and behavior is of that noun EXAMPLE: _______________ Class-section Classes-section # Professor name Class room # Give Lecture Give Lab ______________ | Students | Student Grade Student SS# Class-section Mid Grade Final Grade Record Grades | | | name | | address | | year | | ss# | | | | | | take classes | | get grades | | | Each of these Objects relate to other objects in the system. So for example: Student <--------------------------------------->Class-sections one Student may relate to many Class-sections one Class-section may have many students relating to it.
ADVANTAGES of OO 1. Close to the way people think – OO mirrors the underlying structure of the real world Look for the underlying structure within a situation that will always be true, not just for one system. 3. Uses the idea of abstraction: Black Box. If I know how to use the Object, I do not needed to know the details of how it does what it does. If you know the Goes intos and the Goes out ofs, you do not need to know the details of how it is done 4. There are libraries of code that the programmer can use. Especially handy for Graphical User Interface = GUI Each of the “Objects” of the system is coded up and then they can be re-used in many situations. >>>> Henry Ford and Deusenberg (1920s) RE-use is a big OO phrase and reason why people go to the OO technique
. WOW – looks good on the surface, why not do this all the time? Reads a line and performs it 4. NO Free Lunch -- (I wrote an interpreter. To do 10 different instructions it took 2500 instructions) 5. Interpreted performance is Much slower a. Useful when running once or twice b. Production jobs, a job run over and over again – should NOT BE INTERPRETED, but compiled into efficient machine code Translation: assembler – entire program translated before execution compiler – entire program translated before execution interpreter – each line is translated and executed one by one
A. Macros Def: A set of operations that has been recorded for later use. Once checked out and saved, the macro can be used many times by different applications. Example: in Java we are printing out our Name in a box in each program. my print routine. We use this in every program
We will learn more about HTML next week and will write our own tag – almost every line of HTML contains a tag. A tag is a formatting instruction in HTML. The language that specifies the design and layout of the Web pages. Each tag is delineated by an < > both before and after to set it apart. <title> .....</title>
Use: Loaf of Bread Jar of Peanut Butter Jar of Jam Have students write an algorithm in teams of 2 people Chose 5 teams to write algorithm on the board. Start with poorest algorithm and act out making of a PB&J sandwich. Student will gain the knowledge of why a detailed algorithm is needed.
Understand the Problem: EXAMPLE – write out names of students in class = Questions arise: Where do we get the names How many names Do the names change from year to year Do we save the names for future use or do we just print them and then delete them In what order do we want to print the names Do I want to know the number of names that I read in? ==========================================
Detailed description of exact methods used for solving the problem Logical can be in the form of a flow chart or in pseudocode (English like description) Play computer after the diagram is done Try some sample numbers
Write the Program – code according to the block diagram in the assembler language or the hi-level language that suits your computer and your company’s standards Make certain that comments are added to the program Make certain that the pseudo code or flow charts requirements, user acceptance tests are all part of the package so that someone else can pick up the program and you can get promoted People have been held back from promotions because no one could take over their programs
Test and Debug program Syntax Errors – Compiler / assembler catches these. Each language has its own rules. For example at the end of each instruction in JAVA you must have a semi-colon. Without this the compiler tells you it can not produce machine code. Logic error. Test with different sets of data -- wanted to print out Barb Zimmerman but printed out ZZZZZZ Zimmerman. Try bad data. What happens if you put in numbers instead of letters. Does the program give you an error message or does it blow up? How long a name will it accept. – is it long enough Try boundary conditions. one student. no students, 100 students. Make certain it still works User Acceptance testing. When you first get the requirements for a job. You need to decide with the people that will use the program what exactly will constitute acceptance on their part. They may say that they will want to see the program run, run it themselves for 1 week – Once the user accepts the job, they need to sign off that you delivered what you promised.
We discussed assemblers, compilers, and interpreters and explained why interpreted code was slower than compiled coded We talked about algorithms and how detailed they must be
Algorithms and Program Development By: Ashutosh Kasera