// noproblem.txt
// Программа подсчёта собственных циклов и условий
void main(){
	f=getFunction(getThisFunctionName()); // доступ к себе
	tree=f.export(); // преобразовать в дерево алгоритма
	counterIF=0;
	counterWHILE=0;
	counterDO=0;
	counterFOR=0;
	// организация обхода дерева вложенных циклов и условий
	access={};
	do{
		n=tree.getRowSize(access);
		access.push(n);
		while(access.size()){
			n=access.pop();
			--n;
			if(n<0)continue;
			access.push(n);
			sub=tree.getSub(access);
			type="";
			if(typeof(sub)=="program")type=sub.typeof();
			if(type=="if")++counterIF;
			if(type=="while")++counterWHILE;
			if(type=="do")++counterDO;
			if(type=="for")++counterFOR;
			break;
			}
		}while(access.size());
	trace("В алгоритме функции " + f.getName().export() + " содержится:");
	trace("Условных ветвлений: "+counterIF);
	trace("Циклов while: "+counterWHILE);
	trace("Циклов do: "+counterDO);
	trace("Циклов for: "+counterFOR);
	getstring();
}
