Chapter 1:
Introduction to algorithmic
and programming in C
language
1
Chapter outcomes
• By the end of this chapter, the students will
• understand what an algorithm is used for and be able to tell
the differences between an algorithm and a program,
• be able to write a basic algorithm to solve a simple
problem,
• understand what a program is used for,
• learn what the compilation process consists of and the
different steps composing it.
2
Introduction
Computer Science
• Computer Science
• is not limited to the study of computers.
• is also the study of problems, problem-solving, and the
solutions that come out of the problem-solving
process.
3
Introduction
Problem solving phases
Analysis and specification
o Understand (define) the problem and what the
solution must do.
General solution
o Specify the required data types and the logical
sequence of steps that describe one possible solution
of the problem an algorithm
Verification
o Follow the steps exactly to see if the proposed
algorithm really does solve the problem.
Implementation
o Implement that algorithm in one (or more) 4
programming language a program
Introduction
From a problem to programs
5
What is an algorithm?
6
What is an algorithm?
• The word algorithm comes from the name of a Persian
mathematician Abu Ja’far Mohammed ibn-i Musa al
Khawarizmi.
• An algorithm is a step-by-step procedure, which defines a set
of instructions to be executed in a certain order to get the
desired output in a finite amount of time.
7
Example of an algorithm
8
Characteristics of an algorithm
• An algorithm should have the following characteristics:
• Unambiguous
• Each of its steps (or phases), and their inputs/outputs
should be clear and must lead to only one meaning.
• Input
• It should have 0 or more well-defined inputs.
• Output
• It should have 1 or more well-defined outputs, and should
match the desired output.
• Finiteness
• It must terminate after a finite number of steps.
• Feasibility
• Should be feasible with the available resources.
• Independent 9
• An algorithm should have step-by-step directions, which
should be independent of any programming code.
How to write an algorithm
• There are NO well-defined standards for writing
algorithms
• Algorithms are NEVER written to support a particular
programming code.
• As we know that all programming languages share basic
code constructs like loops (do, for, while), flow-control
(if-else), etc. These common constructs can be used to
write an algorithm.
• We write algorithms in a step-by-step manner, but it is
not always the case.
10
Algorithm general structure
11
Example
• Problem − Design an algorithm to add two numbers and
display the result.
12
Example
• Problem − Design an algorithm to add two numbers and
display the result.
Algorithm ADD Algorithm ADD
Step 1 − START Var a, b, c: integer
Step 2 − declare three integers a, b & c
Step 3 − define values of a & b BEGIN
Step 4 − add values of a & b 1− read(a , b )
Step 5 − store output of step 4 to c 2−c←a+b
Step 6 − print c 3 − write(c )
Step 7 − STOP END
A correct algorithm Another correct algorithm 13
What is a program ?
• Programming is the implementation of an algorithm in a
programming language.
• It is the process of taking an algorithm and encoding it
into a notation (programming language), so that it can be
executed by a computer.
• There are many programming languages: Pascal, C, C++,
Cobol, Fortran, Java, Python, Delphi, etc.
This course will focus on learning programming using the
C programming language 14
Example
From an algorithm to a C program
Algorithm ADD
Var a,b,c: integer
BEGIN
1− read( a , b)
2−c←a+b
3 − write( c)
END
15
Creating and running a C program
• Compiling:
• The process of transforming a high level language (source
code (human readable)) into a low level language (machine
code or executable (computer language)).
• Compiling a C program is a multi-stage process. It can be split
into 3 main stages: preprocessing, compilation and linking.
16
Creating and running a C program
• Preprocessing: this phase includes
• Removal of Comments
• Expansion of Macros
• Expansion of the included files.
• Compiling: making the object file
• Translate the filename.c and produce an intermediate
compiled output file [Link]. This file contains
machine level instructions.
• Linking: putting it all together
• All the linking of function calls with their definitions are
done. Linker knows where all these functions are
17
implemented (in other .obj files or in header files .h).
• The output of this step is an executable file .exe.
Creating and running a C program
18
Creating and running a C program
• The compiler
• ensures that your program is TYPE correct.
• For example, you are not allowed to assign a string to an
integer variable.
• ensures that your program is syntactically correct.
• For example, "x * y" is valid, but "x @ y" is not.
• does NOT ensure that your program is logically correct.
19