Commit 64dd5cba authored by Denis Khachko's avatar Denis Khachko

no message

parent 712aab3d
...@@ -27,18 +27,24 @@ ...@@ -27,18 +27,24 @@
Требования к механизму тестирования заданий Требования к механизму тестирования заданий
=========================================== ===========================================
//Сейчас код системы поддержки практикумов (для Кумира и Питона) совпадает, если не на 100%, то на 98 точно. Хотим ли мы и дальше поддерживать
//единство кода? И делать его модульным? Нужно понять насколько ситемы практикумов для Питона и Кумира должны быть похожи.
В Python есть механизм для Unit-testinga, но я не разу не встречал ни одного учебного курса, где используется или хотя бы упоминается юнит-тестирование. Таким образом, перед нами не ставятся жесткие рамки на формат тестирующих программ и их возможностей. В Python есть механизм для Unit-testinga, но я не разу не встречал ни одного учебного курса, где используется или хотя бы упоминается юнит-тестирование. Таким образом, перед нами не ставятся жесткие рамки на формат тестирующих программ и их возможностей.
В отличии от языка Кумир, где есть прибитый гвоздями главный алгоритм с входными и выходными параметрами, мы должны допускать тестирование *произвольной* Python-программы. Таким образом, для проверки заданий нужно уметь: В отличии от языка Кумир, где есть прибитый гвоздями главный алгоритм с входными и выходными параметрами, мы должны допускать тестирование *произвольной* Python-программы. Таким образом, для проверки заданий нужно уметь:
1) перехватывать вывод программы для дальнейшего анализа; 1) перехватывать вывод программы для дальнейшего анализа;
// Возможно это нужно и для Кумира.
2) имитировать ввод с клавиатуры входных данных; 2) имитировать ввод с клавиатуры входных данных;
3) уметь работать вообще без ввода-вывода: изменять на лету значения определенных переменных и уметь получать их значения. 3) уметь работать вообще без ввода-вывода: изменять на лету значения определенных переменных и уметь получать их значения.
//Это делает не система поддержки практикума а проверяющая программа.
Замечание: это все уже реализовано. Замечание: это все уже реализовано.
Кроме того, часто требуется не только анализ работы программы, но и анализ ее исходного текста. Механизм проверки заданий должен уметь общаться с синтаксическим анализатором, и на усмотрение автора задания, требовать, чтобы текст программы соответствовал определенным требованиям. Кроме того, часто требуется не только анализ работы программы, но и анализ ее исходного текста. Механизм проверки заданий должен уметь общаться с синтаксическим анализатором, и на усмотрение автора задания, требовать, чтобы текст программы соответствовал определенным требованиям.
Например, у меня по 10-бальной шкале, за домашнее задание снималось 3 балла, если программа содержала ошибку анализатора PyLint, и 1 балл, если ошибка PEP-8. При этом программа могла работать и выдавать корректный результат. Эту проверку хочется автоматизировать. Например, у меня по 10-бальной шкале, за домашнее задание снималось 3 балла, если программа содержала ошибку анализатора PyLint, и 1 балл, если ошибка PEP-8. При этом программа могла работать и выдавать корректный результат. Эту проверку хочется автоматизировать.
//Это, скорее всего, совсем не сложно. Но нужно понять насколько сильно этот функционал должен быть настраевыемым учителем.
Требования к организации взаимодействия преподавателя с учениками (Практикум) Требования к организации взаимодействия преподавателя с учениками (Практикум)
......
...@@ -595,6 +595,9 @@ ...@@ -595,6 +595,9 @@
<height>41</height> <height>41</height>
</rect> </rect>
</property> </property>
<property name="toolTip">
<string>Сбросить</string>
</property>
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
......
...@@ -182,7 +182,7 @@ int tasks=course->loadCourse(fileName); ...@@ -182,7 +182,7 @@ int tasks=course->loadCourse(fileName);
course->setTeacher(isTeacher); course->setTeacher(isTeacher);
if(tasks==-1) if(tasks==-1)
{ {
QMessageBox::information( 0, "", trUtf8("course->loadCourse : Ошибка открытия файла: ") + fileName, 0,0,0); QMessageBox::information( 0, "", trUtf8("Ошибка открытия файла: ") + fileName, 0,0,0);
return; return;
}; };
ui->treeView->setModel(course); ui->treeView->setModel(course);
...@@ -247,7 +247,7 @@ if(cursFile!=krsFile){//Esli ne udalos po puti - ishem v toyje direktorii ...@@ -247,7 +247,7 @@ if(cursFile!=krsFile){//Esli ne udalos po puti - ishem v toyje direktorii
QString fileN=fileEl.attribute("fileName"); QString fileN=fileEl.attribute("fileName");
//qDebug()<<"KURS ZAGRUZILI"; //qDebug()<<"KURS ZAGRUZILI";
if(cursFile!=krsFile){ if(cursFile!=krsFile){
QMessageBox::information( 0, "", trUtf8("Не наеден файл курса:") + fileEl.attribute("fileName"), 0,0,0); QMessageBox::information( 0, "", trUtf8("Не найден файл курса:") + fileEl.attribute("fileName"), 0,0,0);
fileN=getFileName(krsFile); fileN=getFileName(krsFile);
loadCourseData(fileN); loadCourseData(fileN);
if(cursFile!=fileN)return; if(cursFile!=fileN)return;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment