DelphiВопросы по дельфи
#62
Отправлено 17.06.2009, 17:52:35
А проверяться код будет? Или что?Я хочу сделать электронный учебник по Паскаль. на дельфях конечно. Можно ли такое замутить: прога дает студенту задание, он решает и дает ответ в виде кода. Прога проверяет и определяет правильно ли ответ.
Сообщение отредактировал Zulkar: 17.06.2009, 17:54:20
#64
Отправлено 17.06.2009, 17:57:16
Вы сможете это сделать? Просто я лично не представляю, как писать смесь компилятора с валидатором кода, который будет проверять не только лексическую корректность, но и правильность работы программы. Я такого никогда не видел, хотя такая вещь оочень сильно бы пригодилась. Это чуть ли не революция была бы в мире программирования. Проверка правильности работы кода на этапе компиляции.... Чудо.легко
Сообщение отредактировал Zulkar: 17.06.2009, 17:58:11
#70
Отправлено 17.06.2009, 18:20:32
читать в справке про dcc32. Там все просто. Нужно сформировать правильную командную строку (правильно указать пути ко всем подключаемым модулям), вызвать компилятор, перенаправить его стандартные потоки входа/выход в свои пайпы, прочитать код возврата, и будет ясно - верен код, или нет.Ладно. А как использовать компилятор дельфи? ну, просто проверить синтаксис кода...
#71
Отправлено 18.06.2009, 09:18:17
Можно. Для этого код ответа надо распарсить в Abstract syntax tree (AST), оптимизировать/свернуть AST до максимально упрощеного вида и сравнить с AST'ами (2-3 должно хватить) правильного ответа.Я хочу сделать электронный учебник по Паскаль. на дельфях конечно. Можно ли такое замутить: прога дает студенту задание, он решает и дает ответ в виде кода. Прога проверяет и определяет правильно ли ответ.
Сообщение отредактировал xxel: 18.06.2009, 09:18:43
#72
Отправлено 18.06.2009, 10:09:29
можно хотяб прототип, как это должно выглядеть .Можно. Для этого код ответа надо распарсить в Abstract syntax tree (AST), оптимизировать/свернуть AST до максимально упрощеного вида и сравнить с AST'ами(2-3 должно хватить) правильного ответа.
Zulkar - вот пусть компилятор делфи и проверяет конеч. результат. Варианты написания проверять незачем. Сорри если чё не так пишу,спросоня мог не понять
Сообщение отредактировал "0x0000": 18.06.2009, 10:13:21
#73
Отправлено 18.06.2009, 10:25:35
Во-первых я не говорил что это будет выглядеть и/или реализовываться просто.можно хотяб прототип, как это должно выглядеть .Можно. Для этого код ответа надо распарсить в Abstract syntax tree (AST), оптимизировать/свернуть AST до максимально упрощеного вида и сравнить с AST'ами(2-3 должно хватить) правильного ответа.
В грубом прикиде при использовании дельфей уйдет не один месяц, если вообще закончится
Во-вторых прототип чего из перечисленого и для чего ?
В инете этих прототипов как грязи, осталось только в кучу собрать.
Посторение AST - для начинающих YACC/BISON и пр.
Оптимизация AST - зависит от конретного AST + Graph Rewriting + общие техники оптимизации
Сравнение двух AST - вообще задача лабораторной работы студента
Кому надо найдет без труда.
А вот на допиливание этого прототипа уйдет уже непрогнозируемое кол-во времени
#74
Отправлено 18.06.2009, 10:34:09
Требовалось изначально именно вариант написания. Хотя никогда в универе преподаватели код не проверяли. Зачем?Zulkar - вот пусть компилятор делфи и проверяет конеч. результат. Варианты написания проверять незачем. Сорри если чё не так пишу,спросоня мог не понять
#75
Отправлено 18.06.2009, 11:15:28
Zulkar - если бы мне вдруг прям действительно нужно было бы проверять варианты написания, то замутил бы шаблон варианта ответа.Т.е. какая то основа всё равно вроде будет,прог-ма проверяет большие и небольшие отклонения от шаблона с автом. компиляцией и проверкой output программы
Ну типа того,вообщем ;((
Сообщение отредактировал "0x0000": 18.06.2009, 11:18:11
#76
Отправлено 18.06.2009, 11:23:24
Ок, первое что взбрело в голову. ПРостейшая программа. Принимает входные данные (числа с клавы), пока не введен 0. Выводит максимальное, минимальное, и среднее число. Сколько вариантов такой программы? Вы сможете гарантировать что они все будут признаны правильными и что она отсеет неправильные?Zulkar - если бы мне вдруг прям действительно нужно было бы проверять варианты написания, то замутил бы шаблон варианта ответа.Т.е. какая то основа всё равно вроде будет,прог-ма проверяет большие и небольшие отклонения от шаблона с автом. компиляцией и проверкой output программы
Ну типа того,вообщем ;((
#78
Отправлено 18.06.2009, 11:50:33
Можно далеко отклониться от шаблона при этом написать правильный и рабочий код. Глупо это.
несогласен,вариантов решения конечное число. Да сама задача глупая, я ж просто думаю о теорет. решении
Уточним. Программа должна даже не компилируясь решать правильно или нет? С погрешностями думаю можно сделать, величина погрешности будет зависеть от каких нибудь параметров,например степени отхождения от шаблона-стандарта.Принимает входные данные (числа с клавы), пока не введен 0. Выводит максимальное, минимальное, и среднее число. Сколько вариантов такой программы? Вы сможете гарантировать что они все будут признаны правильными и что она отсеет неправильные?
Я не думаю что вариантов решения прям такое огромное число.
Спорить желания нету,детально разбираться тоже.Я не говорю что вы не правы,просто думаю что теорет-ки решаемо
Сообщение отредактировал "0x0000": 18.06.2009, 11:52:02
#79
Отправлено 18.06.2009, 11:59:59
Конечное. А толку с того? Число возможных программ на С++ размером до 1 мб кода тоже конечное.несогласен,вариантов решения конечное число. Да сама задача глупая, я ж просто думаю о теорет. решении
Да, именно. Единственное что приходит в голову - это компилятор+линкер+тулза для юнит тестов. Если прямо на коде разбор - вот честно, плагин к студии я бы купил с удовольствием. Логические ошибки на этапе компиляции отловить - это стоит того.Уточним. Программа должна даже не компилируясь решать правильно или нет?
Ну, в теории да. А на практике?Спорить желания нету,детально разбираться тоже.Я не говорю что вы не правы,просто думаю что теорет-ки решаемо
Сообщение отредактировал Zulkar: 18.06.2009, 12:02:57
#80
Отправлено 18.06.2009, 12:22:00
Допустим нужно написать a + b
z := a + b;
z := (a) + (b);
z := (a + b) - b + b;
z := (a + b) - b + b - b + b итд, тупо но конечный результат будет правильным.
Сообщение отредактировал Big Joe: 18.06.2009, 12:22:16
Количество пользователей, читающих эту тему: 3
пользователей: 0, неизвестных прохожих: 3, скрытых пользователей: 0