7,959 views

Consider the following C program segment.

while (first <= last)
{
if (array[middle] < search)
first = middle + 1;
else if (array[middle] == search)
found = TRUE;
else
last = middle - 1;

middle = (first + last)/2;
}

if (first > last)
notpresent = TRUE;

The cyclomatic complexity of the program segment is_______________.

Is this topic out of  syllabus now ??
I also want to know, because in my study material it is not there...

Number of predicates $= 4,$ if, else if, while and if.

Cyclomatic complexity $=$ No. of predicates $+ 1 = 5.$
by

Why else is not considered as predicate??
predicate nodes with has out degree more than 2. else has only one

Can you please explain "out degree more than 2" ? Also why last "if" is included?

I think it is a part of software engineering and it is now out of syllabus ?

Right ??

The cyclomatic complexity of a structured program[a] is defined with reference to the control flow graph of the program, a directed graph containing the basic blocks of the program, with an edge between two basic blocks if control may pass from the first to the second. The complexity M is then defined as

M = E − N + 2P,
where
E = the number of edges of the graph.
N = the number of nodes of the graph.
P = the number of connected components.

Source: http://en.wikipedia.org/wiki/Cyclomatic_complexity For a single program (or subroutine or method), P is always equal to 1. So a simpler formula for a single subroutine is

M = E − N + 2

For the given program, the control flow graph is:

E = 13, N = 10.

Therefore, E - N + 2 = 5.

Can you please explain how you got this control flow graph?

Thank you.

But Im not getting the graph as you got. Can you name the nodes with variables please?