burolf
При помощи какой информации можно осознать действия описываемые в коде?
Надо провести анализ, в результате которого выявить алгоритм. Для начала делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. Потом берёшь каждую из этих частей и с ней проделываешь то же самое. Делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. Потом берёшь каждую из этих частей и с ней проделываешь то же самое. Делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. И так ты делаешь, пока не дойдёшь до мелчайших конструкций. Должна получиться такая структура действий, которую можно словами описать.
Например
Берёшь большую часть, полученную после первого разделения:
print('проверка ...', flush=True)
for key in mass:
if key in t:
with open(profit,'a') as out:
out.write('{},{}\n'.format(key,mass))
print('что-то нашли ...', flush=True)
Описываешь её словами:
Вывести сообщение о начале проверки
Для каждого ключа в массиве выполнять
что-то
Дальше берёшь содержимое вложенного блока:
if key in t:
with open(profit,'a') as out:
out.write('{},{}\n'.format(key,mass))
print('что-то нашли ...', flush=True)
Описываешь его словами:
Если ключ в массиве строк, то
что-то
Дальше берёшь содержимое вложенного блока:
with open(profit,'a') as out:
out.write('{},{}\n'.format(key,mass))
print('что-то нашли ...', flush=True)
Описываешь его словами:
Открыть файл для вывода
что-то
Вывести сообщение о найденном ключе
Дальше берёшь содержимое вложенного блока:
out.write('{},{}\n'.format(key,mass))
Описываешь его словами:
Записать в файл для вывода ключ и массив в виде одной строки
В итоге получается такое словесное описание:
Вывести сообщение о начале проверки
Для каждого ключа в массиве выполнять
Если ключ в массиве строк, то
Открыть файл для вывода
Записать в файл для вывода ключ и массив в виде одной строки
Вывести сообщение о найденном ключе
Вот это словесное описание, когда оно у тебя появляется постепенно, ты можешь варьировать как угодно, потому что это псевдокод. Функция или задача псевдокода состоит в том, чтобы облегчить работу с кодом, не заморачиваясь на синтаксисе.
Так ты описываешь всю программу, подравниваешь её и после этого понимаешь её в целом гораздо проще. Также, меняя псевдокод, улучшая его, ты можешь следом за ним и сам код улучшить, чтобы он стал более хорошим и в нём стало меньше запутанных моментов.
tags: analysis reverse engineering