static void Main(string[] args)
        {
            string codeString;
            structForGlobalArrayAndCount structArrayOfGlobalVars = new structForGlobalArrayAndCount();

            variableOfGlobalNames[] arrayOfGlobalVars = new variableOfGlobalNames[MAX_COUNT_GLOBAL_VARS];

            codeString = readCodeFromFile();
            codeString = deleteStringLiterals(codeString);
            codeString = deleteComments(codeString, multiLineCommentRegEx);
            codeString = deleteComments(codeString, singleLineCommentRegEx);
            codeString = deleteCompilerInstructions(codeString, compilierInstructions);
            structArrayOfGlobalVars = getCountAndArrayOfGlobalVars(codeString, arrayOfGlobalVars, signatureFunctionRegEx);
            Console.WriteLine(getCountOfFuncFieldView(codeString, structArrayOfGlobalVars));
            Console.WriteLine(getCountAccessFuncToGlobalVars(codeString, structArrayOfGlobalVars));
            Console.WriteLine((float)getCountAccessFuncToGlobalVars(codeString, structArrayOfGlobalVars) / (float)getCountOfFuncFieldView(codeString, structArrayOfGlobalVars));
            Console.ReadLine();
        }
        // get number of global params
        public static structForGlobalArrayAndCount getCountAndArrayOfGlobalVars(String codeString, variableOfGlobalNames[] arrayOfGlobalVars, String pattern)
        {
            int countOfGlobalVars = 0;
            int additionalCounter = 0;
            int countOfCurvedBrackets = 0;
            int index;
            String signatureFunction;
            structForGlobalArrayAndCount structForReturning = new structForGlobalArrayAndCount();
            StringBuilder additionalCodeString = new StringBuilder(emptyString,codeString.Length);
            Regex regularExpression = new Regex(pattern);
            Match match = regularExpression.Match(codeString);

            while (match.Success)               // delete all functions in our code
            {
                signatureFunction = match.Groups[0].Value;
                index = codeString.IndexOf(signatureFunction);
                additionalCodeString.Append(codeString.Substring(additionalCounter, index - additionalCounter));

                while (codeString[index] != openCurvedBracket)
                    index++;

                while (countOfCurvedBrackets >= 0)
                {
                    if (codeString[index] == openCurvedBracket)
                        countOfCurvedBrackets++;
                    else if (codeString[index] == closeCurvedBracket)
                        countOfCurvedBrackets--;
                    if (countOfCurvedBrackets == 0)
                        countOfCurvedBrackets = -1;
                    index++;
                }
                    additionalCounter = index;
                    countOfCurvedBrackets = 0;
                match = match.NextMatch();
            }

            additionalCodeString.Append(codeString.Substring(additionalCounter, codeString.Length - additionalCounter));
            codeString = additionalCodeString.ToString();

            // create new RegEx fo finding all variables in codeString(all code after deliting comments, strings, functions)

            pattern = identifierRegEx + pointerRegEx + identifierRegEx;
            regularExpression = new Regex(pattern);
            match = regularExpression.Match(codeString);

            index = 0;
            while (match.Success)
            {
                if (isStandartType(match.Groups[1].Value))
                {
                    arrayOfGlobalVars[index].typeOfVariable = match.Groups[1].Value;
                    arrayOfGlobalVars[index].nameOfVariable = match.Groups[2].Value;
                    index++;
                    countOfGlobalVars++;
                }
                match = match.NextMatch();
            }

            structForReturning.countOfGlobalVars = countOfGlobalVars;
            structForReturning.arrayOfGlobalVars = arrayOfGlobalVars;

            return structForReturning;
        }