Основные соглашения при написании программ на разрешенных языках программирования для поддерживаемых компиляторов
Язык Pascal (FreePascal)
При написании программ на языке Pascal допускается использование только стандартного модуля SysUtils
Язык С/C++ (Microsoft Visual Studio)
При написании программ на языках С/С++: - функция main обязательно объявляется как int main() и завершается оператором return 0. При несоблюдении данного требования тестирование программы на сервере будет возвращать результат "Ошибка выполнения на тесте № ххх"; - допускается использование только следующих библиотек: CRT (C Runtime Library) и STL (Standard Template Library). Модули STL типа iostream и string подключаются без ".h". Классы STL находятся в пространстве имен std; - при отправке решения на тестирование, оно не должно содержать подключение модуля stdafx.h (во время отладки решения на машине участника никаких ограничений на подключение модуля stdafx.h нет).
Язык Java (Sun Java)
При написании программ на языке Java точкой входа (основной запускаемой функцией) должна быть функция main класса Program, объявленная строго следующим образом:
import java.io.IOException; // обязательный импорт, // можно заменить на "import java.io.*;" … public class Program { public static void main (String[] argv) throws IOException { … } }
В программах на языке Java запрещается использование объекта Console, ссылка на который возвращается функцией System.console(), для организации ввода исходных данных и вывода результата работы программы. Попытка отправки задачи с использованием конструкций вида:
String s = System.console().readLine(); или System.console().printf("Result: %1$s", str);
всегда будет приводить к результату проверки решения "Ошибка исполнения на тесте 0". Это связано с особенностями реализации run-time библиотеки Java (при перенаправлении стандартных потоков ввода-вывода, а также при запуске Java-приложения не в стандартной консоли функция System.console() возвращает значение NULL). Корректная организация ввода может быть реализована через экземпляр системного класса InputStream, ссылка на который содержится в поле System.in. Чтение может быть реализовано как средствами класса InputStream (что менее удобно), так и, например, с использованием методов класса Scanner, обеспечивающего возможности удобного чтения данных различных типов, например:
import java.io.*; import java.util.*; … Scanner sin = new Scanner(System.in); String s = sin.nextLine(); // читает очередную строку int i = sin.nextInt(); // читает очередное целое число double f = sin.nextDouble(); // читает очередное число с плавающей запятой
Корректная организация вывода может быть реализована через экземпляр системного класса PrintStream, ссылка на который содержится в поле System.out. Запись реализуется средствами класса PrintStream, обеспечивающего возможности удобной записи данных различных типов, например:
import java.io.*; import java.util.*; … String s = "123"; int i = 456; double f = 789.432; System.out.print(s); // записывает строку System.out.print(i); // записывает целое число System.out.print(f); // записывает число с плавающей запятой System.out.println(); // перевод строки System.out.printf("Result: %1$s", s); // форматированный вывод
Языки C#, J#, VisualBasic (.NET Framework)
При использовании языков семейства.NET Framework, входящих в состав Microsoft Visual Studio 2005, ввиду использования этими языками алгоритмов автоматического управления памятью следует проявлять особое внимание при выделении памяти в ходе выполнения программы. Перед выделением нового объема памяти необходимо убедиться в том, что переменные программы не содержат ссылок на используемые ранее, но уже ненужные, блоки памяти. Ниже приведены примеры заготовок для программ на данных языках:
C#: using System; class Program { static void Main(String[] args) { } }
J#: package ConsoleApplication1;
public class Program { public static void main(String[] args) { } }
VB.NET: Module Module1 Sub Main()
End Sub End Module
Результаты II открытой олимпиады Южного федерального университета по программированию для студенческих команд вузов и колледжей (Таганрог, ТТИ ЮФУ, 28 – 31 марта 2008г.)
|