30
Introduction Algorithms and Programming

Introduction Algorithms and Programming. Computer Programming A form of problem solving Or, more accurately, a way to solve problems What we will

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Introduction

Algorithms and Programming

Page 2: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Computer Programming

A form of problem solving Or, more accurately, a way to solve

problems What we will be studying is “How to

solve problems” using computers

Page 3: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

What’s a Problem?

A question that someone wants an answer to

A problem usually has information that represents a starting point, initial assumptions, facts, or data that will be needed in answering the question

For example, “What is my grade point average?”

Page 4: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

How Do We Solve the Problem?

With pencil and paper we can compute our grade point average if we know all of our grades and the units for each of the courses taken

What are the advantages of writing a computer program to compute our grade point average?

Page 5: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

How Do We Solve Problems?

Four Steps1. Understand the problem

2. Devise a plan to solve the problem

3. Implement the plan

4. Evaluate the solution

From George Polya’s book, “How to Solve It” written in 1945.

Page 6: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

What is an Algorithm?

A plan for solving a problem A series of steps to follow to arrive at a

solution A highly technical and precise “recipe” for

solving a problem A “good” algorithm is “correct”, “complete”,

and “unambiguous” “Good” algorithms are also general rather

than specific

Page 7: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Algorithm Definition

From mathworld.wolfram.com/Algorithm.html A specific set of instructions for carrying out a

procedure or solving a problem, usually with the requirement that the procedure terminate at some point

Specific algorithms sometimes also go by the name “method”, “procedure”, or “technique”

The word “algorithm” is a distortion of

al-Khwarizmi, a Persian Mathematician who wrote an influential treatise about algebraic methods

Page 8: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

What Does an Algorithm Look Like?

It can be written in (precise) English It can be drawn as a diagram (e.g., a

flowchart) with steps and a path to follow from one step to the next

To make it precise (and computer executable) algorithms are translated into a computer understandable form (e.g., machine language)

Page 9: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

A Simple Example

Problem: Calculate the average of a list of numbers. Let the number of numbers in the list be n Assume n is greater than or equal to 1 Calculate the sum of the n numbers Call this sum s Then the average is given by s/n

Page 10: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Example Expanded

Problem: Calculate the average of a list of numbers. Let the number of numbers in the list be n. Assume n is greater than or equal to 1. Pick off the first number on the list and place it on

the blackboard. As long as there are more numbers on the list, pick

the next number off the list and add it to the number on the blackboard and replace the number on the blackboard with this sum. (Repeat this step until the list is empty.)

Call the number on the blackboard s. Then the average is given by s/n.

Page 11: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Final Note about Algorithms

To qualify as an algorithm, the instructions must be expressed so completely and precisely that somebody could follow the instructions without having to make any assumptions or ask for more information or help of any kind.

Page 12: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Computer Basics

Hardware and Memory Programs Programming Languages Compilers

Page 13: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Hardware and Memory

The processor or CPU (Central Processing Unit) Executes instructions

Memory Main memory (RAM) Secondary (auxiliary) memory

Disk drives (hard drives) Diskettes (floppies) Compact disks (and DVDs) USB Flash Drives

Page 14: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Bits, Bytes, and Memory Organization A bit is a single binary digit (i.e., it can

assume the value 0 or 1) A byte is a string of 8 bits (enough to

hold the representation of a character) The number of a byte is called its

“address” or “memory location” When more than one byte is needed to

store information the computer uses a string of adjacent bytes

Page 15: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Why Do Computers Use Just Zeros and Ones?

It’s easier to make a physical device that has only two physical states (e.g., “on” and “off”).

There is nothing special about zero and one. The only important thing is that the physical device have two stable states.

Page 16: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Programs

A program is simply a set of instructions for a computer to follow.

A computer “executes” the instructions in the program to process the “data” or information provided as input in order to produce the results or output desired.

It is actually the “operating system” (just another program) running on the computer that executes your program.

Page 17: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Programming Languages

High level languages (languages designed for people to use) Pascal, FORTRAN, C, C++, Visual Basic,

Lisp, Java Low level languages (languages that

computers can understand) Machine languages, assembly languages

Page 18: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Compilers

Compilers are programs that translate high level languages into low level languages

Compilers are generally machine dependent because different machines have different machine languages

The input to the compiler is called the “source code” and the output is called the “object code”

Page 19: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Designing Programs – An Object-Oriented Approach

An Object is a software package that contains a collection of related procedures and data.

The procedures in an object-oriented approach are called methods.

One object interacts with another by sending it a message asking it to carry out one of its methods.

Page 20: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Designing Programs – An OO Approach Cont’d A class is a template that defines the methods

and variables to be included in a particular type of object.

The objects that belong to a class, called instances of the class, contain only their particular values for the variables.

Inheritance is a mechanism whereby one class of objects can be defined as a special case of a more general class, automatically including the method and variable definitions of the general class.

Page 21: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Designing Programs – An OO Approach Cont’d

A special case of a class is known as subclass of that class.

Encapsulation is a technique in which data is packaged together with its corresponding procedures in a way that the details of implementation are hidden.

Polymorphism is the ability to use one name for several different implementations of a method.

Page 22: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Testing and Debugging

A mistake in a program is called a bug. The process of removing bugs from a

program is called debugging. There are three main classes of bugs or

errors in programs: Syntax errors Runtime errors Logic errors

Page 23: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Syntax Errors

A syntax error is a grammatical mistake in a program.

There are strict grammatical rules for writing programs including required punctuation marks.

The compiler will catch syntax errors and give its best guess as to the problem, but is often wrong regarding the actual mistake made.

Page 24: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Run-Time Errors

Errors caught when the program is run. The computer will give an error

message, but such messages are often hard to understand.

You can be sure that there is an error in your program but it may take some time to find.

Page 25: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Logic Errors

If the program runs successfully to completion but produces the wrong result, you have a logic error.

What you have written is a valid program, but it doesn’t do what it is supposed to do.

These are the most difficult errors to find.

Page 26: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

The History of Java

Java had its beginnings in an effort by James Gosling in 1991 at Sun Microsystems to develop a new language for programming home appliances.

That’s where the idea of translating programs into an intermediate language that was the same for all appliances (computers) came from (Java byte-code).

Page 27: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

The History of Java Cont’d

In 1994 Gosling realized that his language would be ideal for developing a Web browser that could run programs over the Internet.

The original name of the language was “Oak” but they found that that name was already taken.

Rumor has it that the name resulted from a trip for coffee after a fruitless meeting to come up with a new name.

Page 28: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Two Types of Java Programs

Applications – regular programs meant to be run directly on peoples computers.

Applets – “little” applications meant to be sent to another location on the Internet and run there.

Page 29: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Sample Java Program

public class Hello {

public static void main(String [] args) {

System.out.println("Hello, world!");

}

}

Page 30: Introduction Algorithms and Programming. Computer Programming  A form of problem solving  Or, more accurately, a way to solve problems  What we will

Solution to the Eight Queens Problem (one of twelve)