SlideShare a Scribd company logo
http://www.comp.nus.edu.sg/~cs1010/
UNIT 2
Algorithmic Problem Solving
Unit 2: Algorithmic Problem Solving
1. Problem Solving Process
2. Algorithm
3. Control Structures
4. Examples of Pseudocodes
5. Euclid’s Algorithm
CS1010 (AY2014/5 Semester 1) Unit2 - 2© NUS
Problem Solving Process
CS1010 (AY2014/5 Semester 1) Unit2 - 3© NUS
Analysis
Design
Implementation
Testing
Iterative
process
Problem Solving Process
CS1010 (AY2014/5 Semester 1) Unit2 - 4© NUS
Analysis
Design
Implementation
Testing
Iterative
process
Problem Solving Process
CS1010 (AY2014/5 Semester 1) Unit2 - 5© NUS
Analysis
Design
Implementation
Testing
Iterative
process
Algorithmic
Determine
problem
features
Write
algorithm
Produce
code
Check for
correctness and
efficiency
What is an
algorithm?
Algorithm (1/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 6
 An algorithm is a well-defined computational
procedure consisting of a set of instructions,
that takes some value or set of values as
input, and produces some value or set of
values as output.
© NUS
Input Algorithm Output
‘Algorithm’ stems from ‘Algoritmi’, the Latin form of al-
Khwārizmī, a Persian mathematician, astronomer and geographer.
Source: http://en.wikipedia.org/wiki/Algorithm
Algorithm (2/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 7
 An algorithm has these properties:
© NUS
Exact Terminate
Effective General
Each step
must be exact.
(Or it will not be
precise.)
The
algorithm
must
terminate.
(Or no solution
will be obtained.)
The
algorithm
must be
effective.
(i.e. it must solve
the problem.)
The algorithm
must be
general.
(Within the
constraints of the
system/language.)
Algorithm (3/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 8
 Ways of representing an algorithm:
© NUS
Flowchart Pseudocode
lynda.com
Algorithm: Example #1
CS1010 (AY2014/5 Semester 1) Unit2 - 9© NUS
Algorithm: Example #2 (1/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 10© NUS
 Find maximum and average of a list of numbers:
Flowchart
start
sum  count  0
max  0
end of
input?
Enter num
increment count
sum  sum + num
Yes
No
num > max?
Yes
No
max  num
ave  sum/count
end
Terminator box
Process box
Decision box
print max, ave
Algorithm: Example #2 (2/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 11© NUS
 Find maximum and average of a list of numbers:
sum  count  0 // sum = sum of numbers
// count = how many numbers are entered?
max  0 // max to hold the largest value eventually
for each num entered,
count  count + 1
sum  sum + num
if num > max
then max  num
ave  sum / count
print max, ave Are there any errors
in this algorithm?
The need to initialise variables.
The need to indent.
Pseudocode
Algorithm: Pseudocode
CS1010 (AY2014/5 Semester 1) Unit2 - 12© NUS
 We will write algorithms in pseudocode instead
of flowchart as the former is more succinct
 However, there are no standard rules on how
pseudocodes should look like
 General guidelines:
 Every step must be unambiguous, so that anybody is
able to hand trace the pseudocode and follow the
logic flow
 Use a combination of English (keep it succinct) and
commonly understood notations (such as  for
assignment in our previous example)
Control Structures (1/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 13
 An algorithm is a set of instructions, which are
followed sequentially by default.
 However, sometimes we need to change the
default sequential flow.
 We study 3 control structures.
© NUS
Control Structures (2/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 14© NUS
• DefaultSequence
• Also called
branchingSelection
• Also called
loopRepetition
True False
?
True
False ?
Data Representation
CS1010 (AY2014/5 Semester 1) Unit2 - 15
 Internal representation: bits (binary digits) 0 and 1
 1 byte = 8 bits
 In programming, we need variables to hold data. A
variable has an associated data type and occupies
memory space. In the following slides, variables are
shown as boxes.
 Some data types in C (list is not exhaustive)
 Integers: int, short, long (int is most common)
 Real numbers: float, double
 Characters: char
 Self-reading: Lesson 1.4 in reference book
© NUS
Control Structures: Sequence (1/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 16
 Task: Compute the average of three integers
© NUS
Each box represents a variable.
Important concepts: Each variable has
a unique name and contains a value.
A possible algorithm:
enter values for num1, num2, num3
ave  ( num1 + num2 + num3 ) / 3
print ave
Variables used:
num1 num2 num3
ave
Another possible algorithm:
enter values for num1, num2, num3
total  ( num1 + num2 + num3 )
ave  total / 3
print ave
Variables used:
num1 num2 num3
ave
total
Control Structures: Sequence (2/2)
CS1010 (AY2014/5 Semester 1) Unit2 - 17
 Task: Compute the average of three integers
 How the program might look like
© NUS
// This program computes the average of 3 integers
#include <stdio.h>
int main(void) {
int num1, num2, num3;
float ave;
printf("Enter 3 integers: ");
scanf("%d %d %d", &num1, &num2, &num3);
ave = (num1 + num2 + num3) / 3.0;
printf("Average = %.2fn", ave);
return 0;
}
Unit2_prog1.c
Control Structures: Selection (1/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 18
 Task: Arrange two integers in ascending order (sort)
© NUS
Algorithm A:
enter values for num1, num2
// Assign smaller number into final1,
// and larger number into final2
if (num1 < num2)
then final1  num1
final2  num2
else final1  num2
final2  num1
// Transfer values in final1, final2 back to num1, num2
num1  final1
num2  final2
// Display sorted integers
print num1, num2
Variables
used:
num1 num2
final1 final2
True False
?
Control Structures: Selection (2/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 19
 Task: Arrange two integers in ascending order (sort)
© NUS
Algorithm B:
enter values for num1, num2
// Swap the values in the variables if necessary
if (num2 < num1)
then temp  num1
num1  num2
num2  temp
// Display sorted integers
print num1, num2
Variables
used:
num1 num2
temp
Compare Algorithm A with Algorithm B.
True False
?
Control Structures: Selection (3/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 20
 How the program might look like for Algorithm B
© NUS
// This program arranges 2 integers in ascending order
#include <stdio.h>
int main(void) {
int num1, num2, temp;
printf("Enter 2 integers: ");
scanf("%d %d", &num1, &num2);
if (num2 < num1) {
temp = num1; num1 = num2; num2 = temp;
}
printf("Sorted: num1 = %d, num2 = %dn", num1, num2);
return 0;
}
Unit2_prog2.c
True False
?
Control Structures: Repetition (1/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 21
 Task: Find sum of positive integers up to n (assume n>0)
© NUS
Algorithm:
enter value for n
// Initialise a counter count to 1, and ans to 0
count  1
ans  0
while (count <= n) do
ans  ans + count // add count to ans
count  count + 1 // increase count by 1
// Display answer
print ans
Variables
used:
n
count
ans
Initialisation is
very important!
True
False
?
Control Structures: Repetition (2/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 22
 Important to trace pseudocode to check its correctness
© NUS
Algorithm:
enter value for n
count  1
ans  0
while (count <= n) do
ans  ans + count
count  count + 1
// Display answer
print ans
count ans(count <= n)?
Assume user enters 3 for n.
1 0
true 12
true 33
true 64
false
Output: 6
True
False
?
Control Structures: Repetition (3/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 23
 How the program might look like
© NUS
// Computes sum of positive integers up to n
#include <stdio.h>
int main(void) {
int n; // upper limit
int count=1, ans=0; // initialisation
printf("Enter n: ");
scanf("%d", &n);
while (count <= n) {
ans += count;
count++;
}
printf("Sum = %dn", ans);
return 0;
}
Unit2_prog3.c
True
False
?
Euclid’s Algorithm (1/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 24
 To compute the greatest common divisor
(GCD) of two integers
 First documented algorithm by Greek
mathematician Euclid in 300 B.C.
 Also known as Euclidean Algorithm
© NUS
1. Let A and B be integers with A > B ≥ 0.
2. If B = 0, then the GCD is A and algorithm ends.
3. Otherwise, find q and r such that
A = q.B + r where 0 ≤ r < B
4. Replace A by B, and B by r. Go to step 2.
Euclid’s Algorithm (2/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 25© NUS
 q is not important;
r is the one that
matters.
 r could be obtained
by A modulo B (i.e.
remainder of A / B)
 Assumption on A > B
unnecessary
1. Let A and B be integers with A > B ≥ 0.
2. If B = 0, then the GCD is A and algorithm ends.
3. Otherwise, find q and r such that
A = q.B + r where 0 ≤ r < B
4. Replace A by B, and B by r. Go to step 2.
 We will rewrite the
algorithm
Euclid’s Algorithm (3/3)
CS1010 (AY2014/5 Semester 1) Unit2 - 26
 Euclid’s algorithm rewritten in modern form
© NUS
// Assume A and B are non-negative
// integers, but not both zeroes.
Algorithm GCD(A, B) {
while (B > 0) {
r  A modulo B
A  B
B  r
}
result is A
}
Let’s trace GCD(12, 42)
B(B > 0)? Ar
12
true
42
42 1212
true 12 66
true 6 00
false
Result: 6
Summary
CS1010 (AY2014/5 Semester 1) Unit2 - 27
 In this unit, you have learned about
 The process of algorithmic problem solving
 The properties of an algorithm
 The three control structures
 How to write algorithms in pseudocode
 Tracing algorithms to verify their correctness
© NUS
End of File
CS1010 (AY2014/5 Semester 1) Unit2 - 28© NUS

More Related Content

PPT
how to calclute time complexity of algortihm
PPT
Fundamentals of the Analysis of Algorithm Efficiency
PPT
Analysis Of Algorithms I
PPTX
Design and Analysis of Algorithms
PPT
Analysis of Algorithum
PPT
DESIGN AND ANALYSIS OF ALGORITHMS
PPTX
Daa unit 6_efficiency of algorithms
PDF
Data Structure: Algorithm and analysis
how to calclute time complexity of algortihm
Fundamentals of the Analysis of Algorithm Efficiency
Analysis Of Algorithms I
Design and Analysis of Algorithms
Analysis of Algorithum
DESIGN AND ANALYSIS OF ALGORITHMS
Daa unit 6_efficiency of algorithms
Data Structure: Algorithm and analysis

What's hot (20)

PPTX
Performance analysis and randamized agoritham
PPTX
Daa unit 2
PDF
MLE Example
PPT
Complexity Analysis
PPT
02 order of growth
PPTX
Electrical Engineering Exam Help
PPTX
Data Structures- Hashing
PDF
01. design & analysis of agorithm intro & complexity analysis
PPTX
Analysis of algorithn class 2
PDF
Algorithm chapter 2
PDF
Anlysis and design of algorithms part 1
PPTX
3 analysis.gtm
PPT
CS8451 - Design and Analysis of Algorithms
PPT
multi threaded and distributed algorithms
DOC
algorithm Unit 2
PDF
20BCE1734.pdf
PPTX
Algorithm Homework Help
PPTX
Control System Homework Help
Performance analysis and randamized agoritham
Daa unit 2
MLE Example
Complexity Analysis
02 order of growth
Electrical Engineering Exam Help
Data Structures- Hashing
01. design & analysis of agorithm intro & complexity analysis
Analysis of algorithn class 2
Algorithm chapter 2
Anlysis and design of algorithms part 1
3 analysis.gtm
CS8451 - Design and Analysis of Algorithms
multi threaded and distributed algorithms
algorithm Unit 2
20BCE1734.pdf
Algorithm Homework Help
Control System Homework Help
Ad

Viewers also liked (6)

PPTX
Algorithm and Data Structures - Basic of IT Problem Solving
PPTX
Trees and graphs
PPT
17 Trees and graphs
PPTX
Introduction to Genetic Algorithms
PPTX
Trees data structure
PDF
How to Become a Thought Leader in Your Niche
Algorithm and Data Structures - Basic of IT Problem Solving
Trees and graphs
17 Trees and graphs
Introduction to Genetic Algorithms
Trees data structure
How to Become a Thought Leader in Your Niche
Ad

Similar to Unit2 algorithmic problem_solving (20)

PPTX
CSE115 C Programming Introduction North south university
PPTX
UNIT 1.pptx Programming for Problem Solving
PDF
Programming For Problem Solving Lecture Notes
PDF
Arithmetic instructions
DOCX
OverviewThis hands-on lab allows you to follow and experiment w.docx
PDF
L- 14. 0 Algorithm_Flowchart_Example.pdf
PDF
C Programming Slides for 1st Year Engg students
PPT
Pengenalan kepada pengaturcaraan berstruktur
PPTX
Basic pogramming concepts
PDF
CP4151 Advanced data structures and algorithms
PPTX
Unit 1 Introduction Part 3.pptx
PPT
Programming.pptVBVBBMCGHFGFDFDHGDFKJKJKKJ;J
PDF
C and Data structure lab manual ECE (2).pdf
PPSX
Problem solving and design
PDF
chapter-5: C-Programming by "Ratul Rana Sir", Ullapara, Sirajganj
PPTX
Data structures using C
PPTX
Ds12 140715025807-phpapp02
PDF
2021 CSE031.Lecture 6.Flow_Charts_Pseudocode.pptx.pdf
PDF
C language algorithms
PPTX
Learn C LANGUAGE at ASIT
CSE115 C Programming Introduction North south university
UNIT 1.pptx Programming for Problem Solving
Programming For Problem Solving Lecture Notes
Arithmetic instructions
OverviewThis hands-on lab allows you to follow and experiment w.docx
L- 14. 0 Algorithm_Flowchart_Example.pdf
C Programming Slides for 1st Year Engg students
Pengenalan kepada pengaturcaraan berstruktur
Basic pogramming concepts
CP4151 Advanced data structures and algorithms
Unit 1 Introduction Part 3.pptx
Programming.pptVBVBBMCGHFGFDFDHGDFKJKJKKJ;J
C and Data structure lab manual ECE (2).pdf
Problem solving and design
chapter-5: C-Programming by "Ratul Rana Sir", Ullapara, Sirajganj
Data structures using C
Ds12 140715025807-phpapp02
2021 CSE031.Lecture 6.Flow_Charts_Pseudocode.pptx.pdf
C language algorithms
Learn C LANGUAGE at ASIT

Recently uploaded (20)

PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PPTX
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
PPTX
Cell Structure & Organelles in detailed.
PDF
Module 3: Health Systems Tutorial Slides S2 2025
PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PPTX
Introduction and Scope of Bichemistry.pptx
PPTX
Revamp in MTO Odoo 18 Inventory - Odoo Slides
PPTX
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
Open folder Downloads.pdf yes yes ges yes
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
Cardiovascular Pharmacology for pharmacy students.pptx
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
UNDER FIVE CLINICS OR WELL BABY CLINICS.pptx
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
Insiders guide to clinical Medicine.pdf
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Week 4 Term 3 Study Techniques revisited.pptx
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
Cell Structure & Organelles in detailed.
Module 3: Health Systems Tutorial Slides S2 2025
Anesthesia in Laparoscopic Surgery in India
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Introduction and Scope of Bichemistry.pptx
Revamp in MTO Odoo 18 Inventory - Odoo Slides
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
102 student loan defaulters named and shamed – Is someone you know on the list?
Open folder Downloads.pdf yes yes ges yes
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Cardiovascular Pharmacology for pharmacy students.pptx
STATICS OF THE RIGID BODIES Hibbelers.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
UNDER FIVE CLINICS OR WELL BABY CLINICS.pptx
3rd Neelam Sanjeevareddy Memorial Lecture.pdf

Unit2 algorithmic problem_solving

  • 2. Unit 2: Algorithmic Problem Solving 1. Problem Solving Process 2. Algorithm 3. Control Structures 4. Examples of Pseudocodes 5. Euclid’s Algorithm CS1010 (AY2014/5 Semester 1) Unit2 - 2© NUS
  • 3. Problem Solving Process CS1010 (AY2014/5 Semester 1) Unit2 - 3© NUS Analysis Design Implementation Testing Iterative process
  • 4. Problem Solving Process CS1010 (AY2014/5 Semester 1) Unit2 - 4© NUS Analysis Design Implementation Testing Iterative process
  • 5. Problem Solving Process CS1010 (AY2014/5 Semester 1) Unit2 - 5© NUS Analysis Design Implementation Testing Iterative process Algorithmic Determine problem features Write algorithm Produce code Check for correctness and efficiency What is an algorithm?
  • 6. Algorithm (1/3) CS1010 (AY2014/5 Semester 1) Unit2 - 6  An algorithm is a well-defined computational procedure consisting of a set of instructions, that takes some value or set of values as input, and produces some value or set of values as output. © NUS Input Algorithm Output ‘Algorithm’ stems from ‘Algoritmi’, the Latin form of al- Khwārizmī, a Persian mathematician, astronomer and geographer. Source: http://en.wikipedia.org/wiki/Algorithm
  • 7. Algorithm (2/3) CS1010 (AY2014/5 Semester 1) Unit2 - 7  An algorithm has these properties: © NUS Exact Terminate Effective General Each step must be exact. (Or it will not be precise.) The algorithm must terminate. (Or no solution will be obtained.) The algorithm must be effective. (i.e. it must solve the problem.) The algorithm must be general. (Within the constraints of the system/language.)
  • 8. Algorithm (3/3) CS1010 (AY2014/5 Semester 1) Unit2 - 8  Ways of representing an algorithm: © NUS Flowchart Pseudocode lynda.com
  • 9. Algorithm: Example #1 CS1010 (AY2014/5 Semester 1) Unit2 - 9© NUS
  • 10. Algorithm: Example #2 (1/2) CS1010 (AY2014/5 Semester 1) Unit2 - 10© NUS  Find maximum and average of a list of numbers: Flowchart start sum  count  0 max  0 end of input? Enter num increment count sum  sum + num Yes No num > max? Yes No max  num ave  sum/count end Terminator box Process box Decision box print max, ave
  • 11. Algorithm: Example #2 (2/2) CS1010 (AY2014/5 Semester 1) Unit2 - 11© NUS  Find maximum and average of a list of numbers: sum  count  0 // sum = sum of numbers // count = how many numbers are entered? max  0 // max to hold the largest value eventually for each num entered, count  count + 1 sum  sum + num if num > max then max  num ave  sum / count print max, ave Are there any errors in this algorithm? The need to initialise variables. The need to indent. Pseudocode
  • 12. Algorithm: Pseudocode CS1010 (AY2014/5 Semester 1) Unit2 - 12© NUS  We will write algorithms in pseudocode instead of flowchart as the former is more succinct  However, there are no standard rules on how pseudocodes should look like  General guidelines:  Every step must be unambiguous, so that anybody is able to hand trace the pseudocode and follow the logic flow  Use a combination of English (keep it succinct) and commonly understood notations (such as  for assignment in our previous example)
  • 13. Control Structures (1/2) CS1010 (AY2014/5 Semester 1) Unit2 - 13  An algorithm is a set of instructions, which are followed sequentially by default.  However, sometimes we need to change the default sequential flow.  We study 3 control structures. © NUS
  • 14. Control Structures (2/2) CS1010 (AY2014/5 Semester 1) Unit2 - 14© NUS • DefaultSequence • Also called branchingSelection • Also called loopRepetition True False ? True False ?
  • 15. Data Representation CS1010 (AY2014/5 Semester 1) Unit2 - 15  Internal representation: bits (binary digits) 0 and 1  1 byte = 8 bits  In programming, we need variables to hold data. A variable has an associated data type and occupies memory space. In the following slides, variables are shown as boxes.  Some data types in C (list is not exhaustive)  Integers: int, short, long (int is most common)  Real numbers: float, double  Characters: char  Self-reading: Lesson 1.4 in reference book © NUS
  • 16. Control Structures: Sequence (1/2) CS1010 (AY2014/5 Semester 1) Unit2 - 16  Task: Compute the average of three integers © NUS Each box represents a variable. Important concepts: Each variable has a unique name and contains a value. A possible algorithm: enter values for num1, num2, num3 ave  ( num1 + num2 + num3 ) / 3 print ave Variables used: num1 num2 num3 ave Another possible algorithm: enter values for num1, num2, num3 total  ( num1 + num2 + num3 ) ave  total / 3 print ave Variables used: num1 num2 num3 ave total
  • 17. Control Structures: Sequence (2/2) CS1010 (AY2014/5 Semester 1) Unit2 - 17  Task: Compute the average of three integers  How the program might look like © NUS // This program computes the average of 3 integers #include <stdio.h> int main(void) { int num1, num2, num3; float ave; printf("Enter 3 integers: "); scanf("%d %d %d", &num1, &num2, &num3); ave = (num1 + num2 + num3) / 3.0; printf("Average = %.2fn", ave); return 0; } Unit2_prog1.c
  • 18. Control Structures: Selection (1/3) CS1010 (AY2014/5 Semester 1) Unit2 - 18  Task: Arrange two integers in ascending order (sort) © NUS Algorithm A: enter values for num1, num2 // Assign smaller number into final1, // and larger number into final2 if (num1 < num2) then final1  num1 final2  num2 else final1  num2 final2  num1 // Transfer values in final1, final2 back to num1, num2 num1  final1 num2  final2 // Display sorted integers print num1, num2 Variables used: num1 num2 final1 final2 True False ?
  • 19. Control Structures: Selection (2/3) CS1010 (AY2014/5 Semester 1) Unit2 - 19  Task: Arrange two integers in ascending order (sort) © NUS Algorithm B: enter values for num1, num2 // Swap the values in the variables if necessary if (num2 < num1) then temp  num1 num1  num2 num2  temp // Display sorted integers print num1, num2 Variables used: num1 num2 temp Compare Algorithm A with Algorithm B. True False ?
  • 20. Control Structures: Selection (3/3) CS1010 (AY2014/5 Semester 1) Unit2 - 20  How the program might look like for Algorithm B © NUS // This program arranges 2 integers in ascending order #include <stdio.h> int main(void) { int num1, num2, temp; printf("Enter 2 integers: "); scanf("%d %d", &num1, &num2); if (num2 < num1) { temp = num1; num1 = num2; num2 = temp; } printf("Sorted: num1 = %d, num2 = %dn", num1, num2); return 0; } Unit2_prog2.c True False ?
  • 21. Control Structures: Repetition (1/3) CS1010 (AY2014/5 Semester 1) Unit2 - 21  Task: Find sum of positive integers up to n (assume n>0) © NUS Algorithm: enter value for n // Initialise a counter count to 1, and ans to 0 count  1 ans  0 while (count <= n) do ans  ans + count // add count to ans count  count + 1 // increase count by 1 // Display answer print ans Variables used: n count ans Initialisation is very important! True False ?
  • 22. Control Structures: Repetition (2/3) CS1010 (AY2014/5 Semester 1) Unit2 - 22  Important to trace pseudocode to check its correctness © NUS Algorithm: enter value for n count  1 ans  0 while (count <= n) do ans  ans + count count  count + 1 // Display answer print ans count ans(count <= n)? Assume user enters 3 for n. 1 0 true 12 true 33 true 64 false Output: 6 True False ?
  • 23. Control Structures: Repetition (3/3) CS1010 (AY2014/5 Semester 1) Unit2 - 23  How the program might look like © NUS // Computes sum of positive integers up to n #include <stdio.h> int main(void) { int n; // upper limit int count=1, ans=0; // initialisation printf("Enter n: "); scanf("%d", &n); while (count <= n) { ans += count; count++; } printf("Sum = %dn", ans); return 0; } Unit2_prog3.c True False ?
  • 24. Euclid’s Algorithm (1/3) CS1010 (AY2014/5 Semester 1) Unit2 - 24  To compute the greatest common divisor (GCD) of two integers  First documented algorithm by Greek mathematician Euclid in 300 B.C.  Also known as Euclidean Algorithm © NUS 1. Let A and B be integers with A > B ≥ 0. 2. If B = 0, then the GCD is A and algorithm ends. 3. Otherwise, find q and r such that A = q.B + r where 0 ≤ r < B 4. Replace A by B, and B by r. Go to step 2.
  • 25. Euclid’s Algorithm (2/3) CS1010 (AY2014/5 Semester 1) Unit2 - 25© NUS  q is not important; r is the one that matters.  r could be obtained by A modulo B (i.e. remainder of A / B)  Assumption on A > B unnecessary 1. Let A and B be integers with A > B ≥ 0. 2. If B = 0, then the GCD is A and algorithm ends. 3. Otherwise, find q and r such that A = q.B + r where 0 ≤ r < B 4. Replace A by B, and B by r. Go to step 2.  We will rewrite the algorithm
  • 26. Euclid’s Algorithm (3/3) CS1010 (AY2014/5 Semester 1) Unit2 - 26  Euclid’s algorithm rewritten in modern form © NUS // Assume A and B are non-negative // integers, but not both zeroes. Algorithm GCD(A, B) { while (B > 0) { r  A modulo B A  B B  r } result is A } Let’s trace GCD(12, 42) B(B > 0)? Ar 12 true 42 42 1212 true 12 66 true 6 00 false Result: 6
  • 27. Summary CS1010 (AY2014/5 Semester 1) Unit2 - 27  In this unit, you have learned about  The process of algorithmic problem solving  The properties of an algorithm  The three control structures  How to write algorithms in pseudocode  Tracing algorithms to verify their correctness © NUS
  • 28. End of File CS1010 (AY2014/5 Semester 1) Unit2 - 28© NUS