IDE

Казалось бы, к чему тут IDE? А вот к чему: компьютер, на котором Вы будете писать на ACM, будет совсем не ваш. И совсем такой же, как у ещё 9000 соревнующихся. И вполне возможно, что Вашей любимой, возможно экзотической, среды разработки там не будет. А будет там вот что:

  • Borland Delphi 7.0 — с 2009 года отсутствует
  • Microsoft Visual Studio 2005 Express Edition, C/C++
  • Java 2 SDK 6.0
  • Eclipse
  • Far Manager 1.7b5
  • MinGW (GNU C/C++)

Итак, выбор не велик. Морально устаревшая версия MS VS и Eclipse. Кстати, всегда последней версии. Ну и Far, но это не IDE. Поэтому я наберусь наглости и буду писать исключительно об Eclipse.

Пожалуй, первое, чему нас учили — создавать шаблон в Eclipse. Шаблоны позволяют быстро, очень быстро создать каркас для написания программы. Такой, что достаточно написать три-четыре буквы от имени шаблона, нажать сочетание кнопок(Ctrl + Spacebar) и обнаружить в окне редактора уже полностью готовый каркас для программы. О том, как их создавать, можно почитать тут .

Кнопочки + другие кнопочки ( + ещё другие кнопочки)

Комбинации клавиш — то, за что олимпиадники любят Eclipse. Всегда есть возможность нажать Ctrl + Spacebar и воспользоваться великой автоподстановкой (пользователи Visual Studio знают это под именем IntelliSense). Можно выделить код, нажать Ctrl + / И за/раскоментировать его. Можно нажать Ctrl + Alt + ↓ или чтобы скопировать текущую строку вверх или вниз, можно нажать Ctrl + D чтобы удалить текущую строчку… А можно залезть в настройки, отыскать там список сочетаний, и запомнить нужные.

Как и когда писать на Java

Первое, с чем нужно разобраться при олимпиадном программировании на Java — это захапать себе большой стек, для чего запускаться в отдельном потоке. Второе — научиться быстро читать и писать данные. Я приведу свой текущий шаблон для Eclipse, снабдив его предварительно комментариями. Если что-то непонятно, то я могу пояснить.

import java. io. BufferedReader;

import java. io. FileReader;

import java. io. FileWriter;

import java. io. IOException;

import java. io. PrintWriter;

import java. util. StringTokenizer;

// $ — имя класса, его подставляет Eclipse. Очень хорошая идея — создавать класс с именем входного и выходного файлов.

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

public class $ implements Runnable <

StringTokenizer st; // Этот класс быстро умеет разбивать скормленную ему строчку. По умолчанию разделитель — пробел

BufferedReader in ; // Этот класс ОЧЕНЬ быстро умеет считывать данные из какого-либо потока

PrintWriter out ; // Этот класс умеет писать данные, тоже быстро.

public static void main( String [] args) <

new Thread( new $()).start(); //Нам нужен большой стек, так что заведём новый поток.