Рубрики

ВОРОТА | GATE-CS-2015 (набор 1) | Вопрос 65

Рассмотрим следующий сегмент C-программы.

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) not Present = True;

Цикломатическая сложность сегмента программы __________.

(А) 3
(Б) 4
(С) 5
(D) 6

Ответ: (с)
Пояснение: цикломатическая сложность структурированной программы [a] определяется со ссылкой на граф потока операций программы, ориентированный граф, содержащий основные блоки программы, с ребром между двумя базовыми блоками, если управление может перейти от первого ко второму. Сложность М тогда определяется как


    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.  

Источник: http://en.wikipedia.org/wiki/Cyclomatic_complexity

Для одной программы (или подпрограммы или метода) P всегда равен 1. Таким образом, более простая формула для одной подпрограммы

    M = E − N + 2 

Для данной программы график потока управления:

 E = 13, N = 10.

Therefore, E - N + 2 = 5. 

Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE-CS-2015 (набор 1) | Вопрос 65

0.00 (0%) 0 votes