OberonCore
https://forum.oberoncore.ru/

Использование Компонентного Паскаля в школьных олимпиадах
https://forum.oberoncore.ru/viewtopic.php?f=8&t=2298
Страница 2 из 3

Автор:  Info21 [ Воскресенье, 31 Январь, 2010 18:05 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Иван Горячев писал(а):
Info21 писал(а):
BlackBox Express Edition, которая просто делает exe из текста модуля.
Подразумевая текстовые данные на входе и текст на выходе.

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

Не нужна там никакая среда -- по определению версии Express :)

Иван Горячев писал(а):
Цитата:
А вот это вряд ли выйдет. Слишком сложно, и слишком обязывающе для Ominc.
Ну так оно уже по факту есть. От ОМС только высочайший одобрямс нужен.
Любой одобрямс -- это определенные обязательства, даже если они неявные.
Если что -- тень всё равно падёт, а кому это надо.
Не будут они брать на себя такие обязательства.

А вот про обрубленный BlackBoxExpress.exe говорить реально.

Автор:  Trurl [ Воскресенье, 31 Январь, 2010 20:50 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Albertum писал(а):
В олимпиадных задачах я ни разу не встречал требования вывода/ввода на языке отличном от английского.


Я не о вводе/выводе, а об исходниках. Вряд-ли тексты ББ будут признаны "текстовыми файлами".

Автор:  Albertum [ Воскресенье, 31 Январь, 2010 21:02 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Trurl писал(а):
Albertum писал(а):
В олимпиадных задачах я ни разу не встречал требования вывода/ввода на языке отличном от английского.


Я не о вводе/выводе, а об исходниках. Вряд-ли тексты ББ будут признаны "текстовыми файлами".

Предполагаю, что должно быть что-то вроде: File->Save as Plaintext (.cp) / Open as PlainText
Программа (простая, как и все олимпиадные решения) от этого работать не перестанет, а красивости в данном случае не важны.

Автор:  Info21 [ Воскресенье, 31 Январь, 2010 21:03 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Trurl писал(а):
Вряд-ли тексты ББ будут признаны "текстовыми файлами".
BlackBoxExpress.exe должен брать на входе программу в текстовом файле, вот и всё.
Решается включением туда соотв. конвертера.
Не видно проблемы, только задачка :)

Автор:  Trurl [ Понедельник, 01 Февраль, 2010 09:55 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Понятно, что все решается. Но надо же учесть, что
Цитата:
Кроме того, какие-либо доработки явно запрещены – можно использовать только то, что поставляется в стандартном комплекте среды.

Автор:  Евгений Темиргалеев [ Понедельник, 01 Февраль, 2010 10:33 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Конвертер для ASCII текста в стандартной поставке...

Автор:  Иван Горячев [ Понедельник, 01 Февраль, 2010 11:13 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Info21 писал(а):
Я говорю о ББ.exe, слинкованном и сконфигурированном определенным образом вместе с компилятором и модулями ввода-вывода текста.

Не нужна там никакая среда -- по определению версии Express :)

А программы писать в Блокноте? Можно конечно, хотя та же микрософтовская студия всё необходимое имеет даже в варианте Express.

И если без одобрения ОМС, то вот с этим:
Цитата:
Для BB придётся добиваться приведения в приличный вид компанией-разработчиком или (если позволяет лицензия) делать официальный fork, который будет признан мировым сообществом.

могут возникнуть проблемы. Хотя бы и формальные

Автор:  Евгений Темиргалеев [ Понедельник, 01 Февраль, 2010 12:09 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Albertum писал(а):
1. Точное указание названия среды (сборки) и способ её получения
Пример:
Цитата:
FreePascal 2.4, приложение являются свободно распространяемым и доступно на сайте: http://freepascal.org

2. Строка компиляции, для получения исполняемого файла
Пример:
Цитата:
Free Pascal 2.4: fpc <исходный файл>
Поясните пожалуйста, допустим ли такой вариант:
- среда разработки - обычный Блэкбокс (из которого сохраняется итоговый исходник в ASCII формате). Возможно урезанная в плане подсистем с примерами Obx, и т.п...
- на проверочном сервере работает компилятор ком. строки. Который ограничивает (линкует только) допустимые правилами модули ввода-вывода и пр. Про этот компилятор (как я понимаю) и говорит info21: viewtopic.php?p=41552#p41552

Автор:  Info21 [ Понедельник, 01 Февраль, 2010 12:13 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Иван Горячев писал(а):
А программы писать в Блокноте?
Вот и надо выяснять, как там у них всё устроено. Там же как-то дистанционно в том числе -- через браузер? Типа решаешь у себя, а решение сдаешь в окошко копипастом.

---
А что стандартная -- так любой Express с сайта производителя будет автоматом "стандартом". И никто уже дорабатывать его не будет :)

Автор:  Albertum [ Понедельник, 01 Февраль, 2010 12:52 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Евгений Темиргалеев писал(а):
Поясните пожалуйста, допустим ли такой вариант:
- среда разработки - обычный Блэкбокс (из которого сохраняется итоговый исходник в ASCII формате). Возможно урезанная в плане подсистем с примерами Obx, и т.п...
- на проверочном сервере работает компилятор ком. строки. Который ограничивает (линкует только) допустимые правилами модули ввода-вывода и пр. Про этот компилятор (как я понимаю) и говорит info21: viewtopic.php?p=41552#p41552

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

Info21 писал(а):
Вот и надо выяснять, как там у них всё устроено. Там же как-то дистанционно в том числе -- через браузер? Типа решаешь у себя, а решение сдаешь в окошко копипастом.

Встречал две реализации - ASCII файл (и не важно как он сдается, хоть на флешке) или копипаст в форму браузера.

Автор:  Albertum [ Понедельник, 01 Февраль, 2010 13:23 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Посмотрел на XDS-x86-251-enduser-win32.

Документация расходится с реальными функциями, например SWholeIO.ReadInt просит параметр INTEGER, но на INTEGER ругается "incompatible types: INT32 и INT16", понятно чего он хочет, но так же нельзя выражаться, особенно при детях...

Для того, чтобы ускорить этот процесс, прошу человека, знакомого с XDS Oberon-2 написать небольшой идеологически правильный пример по текстовому вводу/выводу.

На входе текстовый файл (input.txt):
Код:
30000 5000 -111
Text String


3.123522 4.2131234


На выходе - т.е. сложить, заменить пробел на "_", пустые строки пропустить, сложить и округлить (output.txt):
Код:
34889
Text_String
7.34

Автор:  id_ler [ Понедельник, 01 Февраль, 2010 16:51 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Albertum писал(а):
Да, нужно собрать все возможные варианты, чтобы можно было выбирать.
Для полноты вариантов. Если ВВ может быть собран библиотекой или динамической библиотекой, то к нему можно обращаться из внешнего файла. Т.е. скрипта, bat-файла, com-файла…

Автор:  id_ler [ Понедельник, 01 Февраль, 2010 19:15 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Извиняюсь, если не в тему. Не совсем понял проблемы. Если нужно получить exe-файл, запускаемый без среде ВВ, то посмотрите в документации пример Simple -простое приложение Windows. В нем достаточно WinApi-функций для самостоятельного запуска. Попробуйте заменить вызов строки “Hello World” нужными Вам процедурами.

Автор:  id_ler [ Вторник, 02 Февраль, 2010 09:59 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Если правильно начинаю понимать последовательность действий жюри в отношении ВВ. Они получают текст модуля с решением задачи и список линкуемых модулей в одном листинге, вставляют его копипастом в ВВ, компилируют, добавляют маркер перед DevLinker, собирают и запускают приложение без открытия среды. Тогда возвращаюсь к теме «Проблема содания exe: illegal memory read при вып-и»

Автор:  Albertum [ Вторник, 02 Февраль, 2010 10:11 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

id_ler писал(а):
Если правильно начинаю понимать последовательность действий жюри в отношении ВВ. Они получают текст модуля с решением задачи и список линкуемых модулей в одном листинге, вставляют его копипастом в ВВ, компилируют, добавляют маркер перед DevLinker, собирают и запускают приложение без открытия среды. Тогда возвращаюсь к теме «Проблема содания exe: illegal memory read при вып-и»

Жюри ничего "ручками" делать не будет. Этот процесс полностью - от получения исходного текста решения до создания исполняемого файла обязан быть полностью автоматическим.

Автор:  id_ler [ Вторник, 02 Февраль, 2010 11:28 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Ну вот, обозвал Commander маркером )нет мне смайлика)
Albertum писал(а):
id_ler писал(а):
Если правильно начинаю понимать последовательность действий жюри в отношении ВВ. Они получают текст модуля с решением задачи и список линкуемых модулей в одном листинге, вставляют его копипастом в ВВ, компилируют, добавляют маркер перед DevLinker, собирают и запускают приложение без открытия среды. Тогда возвращаюсь к теме «Проблема содания exe: illegal memory read при вып-и»
Жюри ничего "ручками" делать не будет. Этот процесс полностью - от получения исходного текста решения до создания исполняемого файла обязан быть полностью автоматическим.
Не вижу принципиальной разницы между нажать меню мышкой, как это делается в других средах или установить и нажать коммандер в ВВ. Другое дело, что список для линкера не является частью программы.

Автор:  Иван Горячев [ Вторник, 02 Февраль, 2010 12:00 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Жюри ни одну среду даже открывать не будет. Им приносят текстовый файл, они запускают на него некий compile.bat, который выдаёт либо exeшник, либо ошибку. Потом они на этот exeшник натравливают другой bat-файл, который говорит, пройден тест или нет. По крайней мере я понимаю процесс именно так. Вместо bat-файлов могут быть web-формы или ещё какая автоматизация, не суть важно.

Но им требуется гарантия, что используемый ими компилятор не содержит никаких "олимпиадных" оптимизаций - именно поэтому нужно так или иначе договариваться с ОМС.

Автор:  Димыч [ Среда, 03 Февраль, 2010 14:33 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Albertum писал(а):
Посмотрел на XDS-x86-251-enduser-win32.

Документация расходится с реальными функциями, например SWholeIO.ReadInt просит параметр INTEGER, но на INTEGER ругается "incompatible types: INT32 и INT16", понятно чего он хочет, но так же нельзя выражаться, особенно при детях...

Для того, чтобы ускорить этот процесс, прошу человека, знакомого с XDS Oberon-2 написать небольшой идеологически правильный пример по текстовому вводу/выводу.

На входе текстовый файл (input.txt):
Код:
30000 5000 -111
Text String


3.123522 4.2131234


На выходе - т.е. сложить, заменить пробел на "_", пустые строки пропустить, сложить и округлить (output.txt):
Код:
34889
Text_String
7.34


Можно, например, так.
Код:
<*+MAIN*>
<*+O2EXTENSIONS*>
MODULE olimp;
IMPORT
  SeqFile, TextIO, WholeIO, RealIO;

VAR
  in, out: SeqFile.ChanId;
  res: SeqFile.OpenResults;
  sum_i: LONGINT;
  sum_r: REAL;
  i, n: LONGINT;
  r: REAL;
  txt: ARRAY 50 OF CHAR;

BEGIN
  SeqFile.OpenRead(in, "input.txt", SeqFile.read+SeqFile.old+SeqFile.text, res);
 
  IF res = SeqFile.opened THEN
    SeqFile.OpenWrite(out, "output.txt", SeqFile.write+SeqFile.text, res);

    sum_i := 0;
    i := 0;
    WHILE i < 3 DO
      WholeIO.ReadInt(in, n);
      sum_i := sum_i + n;
      INC(i);
    END;

    WholeIO.WriteInt(out, sum_i, 5);
    TextIO.WriteString(out, txt); TextIO.WriteLn(out);

    TextIO.SkipLine(in);
    TextIO.ReadToken(in, txt);
   
    TextIO.WriteString(out, txt);
    TextIO.WriteChar(out, '_');

    TextIO.ReadToken(in, txt);
    TextIO.WriteString(out, txt);
    TextIO.WriteLn(out);

    TextIO.SkipLine(in);
    TextIO.SkipLine(in);
    TextIO.SkipLine(in);

    i := 0;
    sum_r := 0;
    WHILE i < 2 DO
      RealIO.ReadReal(in, r);
      sum_r := sum_r + r;
      INC(i);
    END;
   
    RealIO.WriteReal(out, sum_r, 4);
    TextIO.WriteLn(out);
  END;
 
END olimp.

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

Автор:  Trurl [ Среда, 03 Февраль, 2010 17:41 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Albertum писал(а):
Жюри ничего "ручками" делать не будет. Этот процесс полностью - от получения исходного текста решения до создания исполняемого файла обязан быть полностью автоматическим.


Это в теории. А на практике - ещё как делают.

Автор:  Info21 [ Среда, 03 Февраль, 2010 18:35 ]
Заголовок сообщения:  Re: Использование Компонентного Паскаля в школьных олимпиадах

Trurl писал(а):
Albertum писал(а):
Жюри ничего "ручками" делать не будет. Этот процесс ... обязан быть полностью автоматическим.
Это в теории. А на практике - ещё как делают.
Это, вероятно, от уровня соревнований зависит?

Внизу -- наверняка. А повыше?

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/