Примечание

Данные действия желательно выполнять из сеанса администратора, чтобы студенты не могли изменить или удалить контролирующую программу или используемые ей файлы.

Приложение 2. Контролирующая программа

if! test –f $3_exp

then echo Отсутствует файл с примером.; exit

#Проверка существования файла с исходными данными

fi

if! test –f $3_pat

then echo Отсутствует файл с образцом.; exit

#Проверка существования файла с контрольными результатами

fi

if! test –f $1

then echo Отсутствует файл с программой $1.; exit

#Проверка существования файла со сценарием, написанным студентом

fi

if! test –r $1

then echo Ошибка: нет доступа по чтению к файлу с программой $1.; exit

#Проверка правильности установки доступа к файлу с программой

fi

mv $2 temp.txt 2>/dev/null

#Сохранение исходного файла с результатами работы программы студента под другим именем с перенаправлением стандартного вывода ошибок

if! test –x $1

then echo Ошибка: файл с программой $1 не является исполняемым.

#Проверка правильности установки доступа к файлу с программой

fi

sh $1 <$3_exp >/dev/null 2>/dev/null

#Выполнение проверяемой программы с перенаправлением на её вход файла с исходными данными (не выводя сообщения этой программы)

if! test –f $2

then echo Файл результата $2 не найден.; mv temp.txt $2 2>/dev/null; exit

#Проверка существования файла с результатами

fi

if diff $2 $3_pat –q >/dev/null 2>/dev/null

#проверка идентичности результата выполнения программы и контрольного варианта

then echo Результат выполнения программы верен!

else echo Ошибка: неверный результат выполнения программы!

fi

mv temp.txt $2 2>/dev/null

#восстановление под прежним именем ранее созданного файла с результатом работы программы

Приложение 3. Указания к использованию контролирующей программы

Данная программа (labcontrol) написана на BASH как исполняемый файл. Формат: <путь> labcontrol name1 name2 num

где name1 – имя проверяемой программы;

name2 – имя файла результатов проверяемой программы;

num – номер задания;

<путь> – путь к файлу с контролирующей программой.

Пример

$./ labcontrol prog res2 – вызов контролирующей программы, если она находится в текущей директории для проверяемой программы prog с файлом результата res для задания №2.

Для работы программы необходимы файлы с именами <номер задания> _exp (файл входных данных) и <номер задания> _pat (образцовый файл результатов).

Перед началом контроля программа осуществляет проверку существования двух вышеуказанных файлов, файла с проверяемой программой и файла результатов (проверка на его наличие осуществляется после выполнения проверяемой программы) и выдаёт сообщение, если они не найдены. В программе «заглушены» все выводы стандартных процедур и после её выполнения выдаются лишь результаты проверки на наличие требуемых файлов и результаты контроля.

Результатом работы программы являются:

· сообщения об отсутствии необходимых файлов (если они не найдены);

· результат проверки на то является ли проверяемая программа исполняемым файлом;

· результат проверки на наличие доступа по чтению к проверяемой программе;

· результат сверки файла результатов проверяемой программы с эталонным файлом результатов.

Программа не производит проверки содержания и правильности работы проверяемой программы, а только сверяет файл результатов с эталонным для заданного примера, поэтому в задании должны быть строго оговорены требования к входным и выходным данным проверяемой программы.

Контрольные вопросы

1. Перечислите основные функции командного интерпретатора Shell.

2. Как осуществляется вход и выход из оболочки?

3. Расскажите о метасимволах используемых в Shell и опишите их основные функции.

4. Опишите механизм создания и запуска программ в Shell.

5. Расскажите о позиционных и специальных параметрах.

6. Расскажите об именованных параметрах, опишите механизм их создания.

7. Как удалить именованные переменные?

8. Как изменить значение зарезервированным переменным?

9. Опишите известные вам способы присвоения значений переменным.

10. Расскажите о том, как можно производить вычисления в Shell.

11. Расскажите об известных вам конструкциях языка программирования Shell.

12. Опишите механизм отладки программ в Shell.

Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 7


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: