Главная страница

Практическое задание 1. Задание Для участка кода, выбранного в соответствии со своим вариантом (либо можно взять свой собственный код), получить граф потока управления (блоксхему укрупненную!


Скачать 55 Kb.
НазваниеЗадание Для участка кода, выбранного в соответствии со своим вариантом (либо можно взять свой собственный код), получить граф потока управления (блоксхему укрупненную!
Дата11.06.2022
Размер55 Kb.
Формат файлаdoc
Имя файлаПрактическое задание 1.doc
ТипДокументы
#585750

Задание 1.

Для участка кода, выбранного в соответствии со своим вариантом (либо можно взять свой собственный код), получить граф потока управления (блок-схему укрупненную!). Можно использовать инструменты вроде https://app.code2flow.com/. Подобрать наборы комбинаций значений переменных, используемых в данном коде, так, чтобы они покрывали логику данного участка кода в соответствии с критериями, приведенными в вашем варианте.


Вариант 1

Листинг 1

Покрытие решений/условий
Комбинаторное покрытие условий

Вариант 2

Листинг 1

Покрытие операторов

Покрытие решений

Покрытие условий

Вариант 3

Листинг 2

Покрытие решений/условий
Комбинаторное покрытие условий

Вариант 4

Листинг 2

Покрытие операторов

Покрытие решений

Покрытие условий

Вариант 5

Листинг 3

Покрытие решений/условий
Комбинаторное покрытие условий

Вариант 6

Листинг 3

Покрытие операторов

Покрытие решений

Покрытие условий

Вариант 7

Листинг 4

Покрытие решений/условий
Комбинаторное покрытие условий

Вариант 8

Листинг 4

Покрытие операторов

Покрытие решений

Покрытие условий



Листинг 1
public int symmetricTraversal(Node _node, int alpha, int beta)

{

if (_node.Children != null)

{

foreach (Node link in _node.Children)

{

if (alpha <=beta)
symmetricTraversal(link, alpha, beta);
if (link.order == 0)

{

Console.WriteLine(_node.getPosition());

if (link.Value > beta)

{

_node.Value = beta;

break;

}

if (link.Value > _node.Value) _node.Value = link.Value;

}
if (link.order == 1)

{

Console.WriteLine(_node.getPosition());

if (link.Value < alpha)

{

_node.Value = alpha;

break;

}

if (link.Value < _node.Value) _node.Value = link.Value;

}
}

}

}

else

{
Console.WriteLine(_node.getPosition());// _
}
findMin(_node);
return 0;
}

Листинг 2

if((i
{

x=B[k*l+i];

i++;
if((jsize/2)

{

y=C[k*l+j];

j++;
if(x
{

D[m]=x;

D[m+1]=y;

m=m+2;
}

else

{

D[m]=y;

D[m+1]=x;

m=m+2;
}

}

else

{///++
if((isize/2)

{

y=B[i];

i++;
if(x
{

D[m]=x;

D[m+1]=y;

m=m+2;
}

else

{

D[m]=y;

D[m+1]=x;

m=m+2;
}
}
else

{

D[m]=x;

m=m+1;

}


}

Листинг 3

while ( ++rootDepth < MAX_PLY && !Threads.stop && !(Limits.depth && mainThread && rootDepth > Limits.depth))

{

if (mainThread)

totBestMoveChanges /= 2;

for (pvIdx = 0; pvIdx < multiPV && !Threads.stop; ++pvIdx)

{

if (pvIdx == pvLast)

{

pvFirst = pvLast;

for (pvLast++; pvLast < rootMoves.size(); pvLast++)

if (rootMoves[pvLast].tbRank != rootMoves[pvFirst].tbRank)

break;

}

selDepth = 0;

if (rootDepth >= 4)

{

Value prev = rootMoves[pvIdx].previousScore;

delta = Value(17);

alpha = std::max(prev - delta,-VALUE_INFINITE);

beta = std::min(prev + delta, VALUE_INFINITE);

int dct = ct + (105 - ct / 2) * prev / (abs(prev) + 149);

contempt = (us == WHITE ? make_score(dct, dct / 2)

: -make_score(dct, dct / 2));

}

}

}

Листинг 4
==================

while (x)

{

from = PopLSB(x);

pin = GetPinMask(pos, from, K, occupied, opp) & mask1;

int row = Row(from);

to = from + fwd;

if (!pos[to])

{

if (row == second)

{

if (BB_SINGLE[to] & pin)

Add(from, to, piece);

to += fwd;

if (!pos[to] && (BB_SINGLE[to] & pin))

Add(from, to, piece);

}

else if (row == seventh)

{

if (BB_SINGLE[to] & pin)

{

Add(from, to, piece, NOPIECE, QW | side);

}

}

else if (BB_SINGLE[to] & pin)

Add(from, to, piece);

}

y = BB_PAWN_ATTACKS[from][side] & pos.BitsAll(opp) & pin;

while (y)

{

to = PopLSB(y);

captured = pos[to];

if (row == seventh)

{

Add(from, to, piece, captured, QW | side);

Add(from, to, piece, captured, RW | side);

Add(from, to, piece, captured, BW | side);

Add(from, to, piece, captured, NW | side);

}

else

Add(from, to, piece, captured);

}

}

=============================================================
Задание 2.

1. Для условного выражения, представляющего собой 4-х местный предикат, подобрать наборы значений условных переменных такие что, проверка их будет удовлетворять покрытию данных решений по критерию "модифицированное покрытие условий/решений" (MC/DC). Показать, что этот критерий сильнее критерия "покрытия условий/решений".

Вариант 1

If( A||B && C||D)

Вариант 2

If( A&&B || C&&D)

Вариант 3

If ((A||B||C )&&D)

Вариант 4

If( A||B|| (C&&D))

Вариант 5

If( A||(B&&C&&D))

Вариант 6

If(( ( A&&B)||C)&&D)

2. Добавляется условие: булевы переменные A и C связаны согласно следующей таблице сопряженности:


A

C

0

1

1

0

Для такого случая необходимо подобрать наборы значений условных переменных такие что, проверка их будет удовлетворять покрытию данных решений по критерию "маскирующий MC/DC".


написать администратору сайта