What is an algorithm and what is a program?

What is an algorithm?

 

 

 

 

exampleFlowChartAlgorithm

Flowcharts

It is a graphic description of an algorithm using different shapes and arrows that connect them. Convenient for simple algorithms.

When they get bigger they become a "spaghetti diagram" difficult to follow.

Nowadays they are not commonly used.

 

 

 

Pseudocode

The idea is to use an intermediate way of communication between natural language and programming language. It does not have a formal syntax but it usually has the following structure:

  1. The concept of variable and assignment is used. Eg: "a <- 5" means that the variable a has the constant 5 assigned.
  2. The input and output data are shown.
  3. Conditional statements are used: E.g: "if <condition> then <instructions>
  4. Cycle instructions like "repeat until ..." are used

Algorithm example:

Algorithm to define if a triangle is scalene, isosceles or equilateral
Input data: side1, side2, side3
Output data: triangle type

if side1 = side2 and side1 = side3
then 
	type <- equilateral
else
	if (side1 = side2) or (side1 = side3) or (side2 = side3)
	then 
		type <- isosceles 
	else
		type <- scalene

What is a program?

A program is intrinsically linked to the existence of a computer. Computers run programs. The programs read data from files, databases, networks, keyboards and write data to files, databases, networks, screens, etc..

Programs are executed by the computer processor. For this, they must be loaded onto the main memory RAM.

The loading of the programs onto the memory is carried out by a special type of software or program called operating system.

Differences between Algorithm and Program

Although they may be mixed up because they are both a set of instructions, they represent two very different concepts. An algorithm is more like an idea, a way to solve a problem, while a program is more linked to the execution of one or more tasks by a computer.

A program can implement one or more algorithms, or it may be so simple that we don´t have to use an algorithm.

The task of a developer usually starts by designing algorithms to solve the problems and then implement them and include them in a program.

When we talk about a program there is always the idea that it will be executed by a computer while an algorithm could be executed by a person.

A program is written in machine language or at least in a language that can be compiled or interpreted by some kind of machine (sometimes a virtual machine).