| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <title>Проверка нескольких файлов</title>
- </head>
- <body bgcolor="FFFFFF">
- <h1>Проверка нескольких файлов</h1>
- <p>В случае проведения занятий в классе у вас будет много файлов, которые вам нужно проверить на эквивалентность, и вам не захочется читать вывод для решения каждого учащегося.</p>
- <h2>Встраивание сравнения в схему</h2>
- <p>Один из подходов заключается в создании проверяющей схемы, которая непосредственно выполняет сравнение. В таком случае мы создаём дополнительную схему в проверяющем файле, содержащем схему с решением. Во всю нашу проверяющую схему мы включаем и подсхему из <tt>adder-master.circ</tt>, и подсхему из схемы с решением. Мы соединяем их так, что получается только один выход, на котором 1, пока две подсхемы дают на выходе согласованные значения.</p>
- <blockquote><img src="../../../../en/img-guide/verify-adder-test2.png" width="274" height="92"></blockquote>
- <p>Теперь мы можем просто запускать Logisim, подставляя каждый проверяемый файл. Для каждого правильного решения вывод будет состоять только из <q>1</q>.</p>
- <h2>Использование перенаправления и сценариев оболочки</h2>
- <p>Если вы ладите с командной строкой, вы можете создать свой собственный скрипт для решения этой задачи. Здесь мы будем использовать перенаправление (оператор >), чтобы сохранять вывод каждой схемы в файл. Например, мы могли бы ввести следующие две команды чтобы получить вывод эталонной схемы и проверяемой схемы.
- <blockquote><tt>java -jar logisim-filename.jar adder-test.circ -tty table > output-master.txt
- <br>java -jar logisim-filename.jar adder-test.circ -tty table -sub adder-master.circ adder-query.circ > output-query.txt</tt></blockquote>
- <p>Теперь мы создали два разных файла. Мы можем сравнить два файла с помощью программы, написанной для таких целей. Под Linux или MacOS X вы можете использовать утилиты командной строки <em>cmp</em> или <em>diff</em>. Под Windows вы можете использовать WinMerge.</p>
- <p>Для обработки нескольких проверяемых файлов вы можете написать простую программу типа сценария оболочки для поочерёдного прохода по файлам и их сравнения. Вот как бы я сделал это под Linux в <em>bash</em>:</p>
- <blockquote><tt>RUN_TEST="java -jar logisim-filename.jar adder-test.circ -tty table"<br>
- ${RUN_TEST} > output-master.txt<br>
- for QUERY_FILE in adder-query*.circ<br>
- do<br>
- if ${RUN_TEST} -sub adder-master.circ ${QUERY_FILE} | cmp -s output-master.txt<br>
- then<br>
- echo "${QUERY_FILE} OK"<br>
- else<br>
- echo "${QUERY_FILE} different"<br>
- fi<br>
- done</tt></blockquote>
- <p><strong>Далее:</strong> <em><a href="../index.html"><em>Руководство пользователя</em></a></em>.</p>
- </body>
- </html>
|