Компилатори, редактори и справочници за състезанията по програмиране

за инсталиране преминете направо към подчертания раздел


Увод  •  Компилатори и редактори  •  Справочници  •  Инсталиране  •  Използване

Увод

Следният текст описва работните средства – компилатори, редактори и справочна информация – за използване на националните и други състезания по информатика и посочва как да бъдат инсталирани за правилна работа. Програмите и справочниците са окомплектовани по такъв начин, че с възможно най-малко усилия да се разполагат на един или повече компютъра.

Всичко описано тук се отнася за операционната система Windows. Там, където има възможност да се използва Linux, е добре това да бъде инсталацията, подготвена за международната ОИ 2009 г. или близка до нея конфигурация (по този начин ще бъдат на разположение същите като за Windows програми и някои други).

Избраните тук компилатори и пр. програми:

  • са съвременни, надеждни, широкоизползвани по света инструменти за програмиране;
  • имат реализации и за Windows, и за Linux;
  • се развиват активно и периодично ще бъдат обновявани тук;
  • са неголеми по обем, прости за употреба и същевременно с богати възможности;
  • са представени тук във видоизменен, в някои отношения опростен, а в други обогатен вид;
  • предоставят известно разнообразие от възможности.

Това програмите да не са уникални за Windows, а такива, които се използват и в Linux е важно, за да се постигне еднообразност на работната среда за тези, които ползват и двете системи или имат готовност да преминат към Linux. Във връзка с това да напомним, че на международните олимпиади се ползва единствено Linux.

Както се вижда по-долу, предлагат се два компилатора – и двата производни на компилатора за Linux gcc. Това е съществено за осигуряване на съвместимост: проверяването на решенията на състезания става именно на Linux и именно с gcc, така че е повече от желателно състезателите да ползват идентичен или възможно най-близък компилатор.

Предлагането на „доработени“ варианти вместо съответните оригинали е важно по две причини:

  • да се повиши полезността им за състезателите;
  • да се опрости и автоматизира (и заобиколят известни грешки при) разполагането на програмите на нов компютър или повече такива.

Настоятелно се препоръчва да се ползват предоставените тук версии на всички програми, а не оригиналните!

Предоставянето на няколко възможности за избор на компилатор/редактор има за цел да отговори на различни степени на подготвеност и вкусове, като заедно с това се избягва претрупване.

За интересуващите се – изборът на компилатори и редактори и някои свързани с тях особености е по-подробно обяснен тук. В същия текст се напомнят и някои съществени страни на използване на програмните средства при състезания, на които – в своя вреда – малко от състезателите обръщат внимание.

Компилатори и редактори

Code::Blocks

Типична т.нар. интегрирана среда: текстов редактор + компилатор, дебъгер и др. + средства за управление на създаването и изпълняването на програми. Тук е комплектована да работи с компилатора MinGW/gcc. (MinGW и Code::Blocks са напълно независими един от друг, самостоятелно развиващи се проекти. Единственото, което ги свързва е, че обичайно (макар не непременно) Code::Blocks се използва именно с екземпляр от MinGW.)

DJGPP/gcc

Компилатор gcc за MS DOS, команден интерпретатор bash, програми за манипулации с файлове и справочна документация за всички тях във формати info и man (четат се в конзолен прозорец с програмите info и man, които също са в архива).

Трябва да се има предвид, че 64-разредните Windows Vista не могат да изпълняват програми за DOS. Следователно, ако о.с. е именно 64-разредна Windows Vista, DJGPP/gcc не може да бъде използван; единствената възможност тогава е Code::Blocks.

Архивът с DJGPP/gcc съдържа и файла djgpp-intro.html, в който има разнообразна полезна информация, отнасяща се до системата DJGPP (не само до компилатора).

SciTE

Малък по обем и много прост за употреба, но заедно с това удобен и за начинаещи, и за напреднали текстов редактор. Тук е пригодѐн да взаимодейства с компилатора DJGPP/gcc и да предоставя няколко удобни начина за пускане на програма – вж. следните кратки сведения за използване на SciTE.

Vim

Изключително мощен текстов редактор. В тази му версия е програмиран (мой скрипт, също №2434) да взаимодейства с компилатора DJGPP/gcc, да предоставя няколко удобни начина за пускане на програма и да осигурява някои други полезни за програмиращия на C или C++ функции. Снабден е и с подробни справочници (интегрирани в собствената му справочна система) за езика C и за библиотеката STL. За тези добавки и за друго, свързано изобщо с употребата на редактора, вж. следните кратки сведения за използване на Vim.

Да отбележа, че сред изброените тук, а и много други, Vim е единственият текстов редактор, чрез който няколко файла (напр. програма, входни данни за нея и резултат) могат да се виждат едновременно на екрана, в един работен сеанс на редактора и без единия да закрива всички останали.

Тъй като Vim е доста различен от другите редактори, на начинаещите препоръчвам да го стартират в т.нар. лесен режим (вж. по-долу), в който той се използва по по-обичаен начин (вкл. с познатата отдругаде употреба на основните клавиши и клавишни комбинации).

Справочници

В архивния файл (вж. по-долу) са събрани следните справочници на английски език:

— справочник по C++ и входноизходната му библиотека
от http://www.cplusplus.com/doc/tutorial;
— справочник по стандартната библиотека на C
от http://www.gnu.org/software/libc/manual (част от документацията на GCC);
— справочник по C, C++ и стандартните им библиотеки
от http://cppreference.com;
— справочник по библиотеката STL на C++
от http://www.sgi.com/tech/stl.

Документите са във формати HTML и PDF (за ползването им се предполага наличието на уеббраузър и четец за PDF) и са събрани под общ заглавен файл, откъдето да се стига лесно до всичките.

Инсталиране

Указанията тук са за Windows NT или по-късен.

Истинско инсталиране, в смисъла, в който това се разбира в Windows, няма – по същество „инсталирането“ се свежда до разархивиране. Това е за предпочитане по няколко причини. Например за разполагане на програмите не се изискват права на администратор. Освен това самият процес на разполагане и настройване се поддава на програмиране, така че да може при нужда да се извършва в една или друга степен автоматично, вкл. и без участие на човек.

Следва описанието на два начина за инсталиране.

1. „Ръчна“ процедура

Показвам този вариант само за информация. По-удобен, а и с повече възможности е описаният в следващата точка автоматичен метод.

При ръчното инсталиране е необходимо да се изпълнят следните действия.

  1. Копирайте архивните файлове и ги разархивирайте в съответните директории, както е посочено (ако дадена директория съществува, опразнете я; ако не съществува – създайте я):
    codeblocks.tbz  ⇒  c:\codeblocks
    djgpp.tbz  ⇒c:\djgpp
    scite.tbz  ⇒c:\scite
    gvim.tbz  ⇒c:\vim
    doc.tbz  ⇒c:\ccdoc
  2. Идете в Control PanelSystemAdvancedEnvironment variables, където:
        на променливата DJGPP задайте стойност c:\djgpp\djgpp.env, а
        към стойността на променливата PATH в края добавете ;c:\djgpp;c:\djgpp\bin.
  3. Направете препратка (shortcut) на работния плот на компютъра към файла c:\ccdoc\index.html.

Всяка от горните програми може да се разположи и в коя да е друга директория. В този случай обаче трябва съответно да се промени всичко свързано с местоположенията, вкл. посочените настройки на променливи и установките за повикване на SciTE и Vim от конзолата, за които става дума в следващия раздел – Използване на програмите.

2. Автоматична процедура

Необходимите при ръчното инсталиране действия биха отнели значително време и внимание, ако се извършват многократно, както е например при подготвяне на учебни и състезателни зали. За да се облекчи този процес, като заедно с това се осигури възможност за избор на различни директории за разполагане на програмите и справочниците, е предвидена автоматизирана процедура за инсталиране.

Процедурата най-напред проверява и показва кой е текущият потребител (според Windows) и дава възможност да бъде прекратена, ако той е неподходящо избран. Ако не, инсталирането продължава, като в диалог биват посочвани директории за разполагане на всеки от архивите. След като разархивира всичко на посочените места, процедурата присвоява съответни стойности на променливите DJGPP и PATH и поставя на потребителския работен плот препратки (shortcuts) към инсталираните програми и справочници.

За да използвате процедурата, направете следното.

  1. Копирайте архивните файлове
    setup.zip
    codeblocks.tbz
    djgpp.tbz
    scite.tbz
    gvim.tbz
    doc.tbz
    в някоя работна директория – най-добре празна.
  2. Разархивирайте първия (setup.zip) в същата директория.
  3. Отворете конзолен (DOS) прозорец и направете работната директория текуща в него.
  4. В командния ред на конзолата изпълнете едно от трите:
              setup,
              setup - или
              setup име-на-файл
    (вж. по-долу кое за каква цел е).
  5. Затворете прозореца на DOS.

След като инсталирането завърши, проверете работоспособността на инсталираните програми, вкл. и чрез препратките, както и достъпността на справочниците.
Накрая съдържанието на работната директория може да бъде изтрито.

Трите варианта на изпълняване на setup се използват както следва:

setup
Ако искате да задавате директориите за разполагане непосредствено. Програмата се стартира в диалогов режим – следвайте въпросите.
setup -
За недиалогово инсталиране, подразбирайки директории, каквито бяха посочени за ръчната процедура.
setup име-на-файл
За недиалогово инсталиране, но променяйки подразбиращите се директории. Във всеки ред на файла, аргумент на setup, се задава по една от тях, последователно за:
               Code::Blocks,
               DJGPP,
               SciTE,
               Vim и
               справочниците
– именно в този ред.

 

Забележки.

  • Без значение дали непосредствено или чрез файл, задаването на имена на директории може да бъде както абсолютно (пълна пътека, започваща с името на устройството), така и относително – спрямо текущата директория. Последното може да бъде много удобно; например, ако посочим само прости имена, без родителски директории, архивите ще се разположат в директории с тези имена, вложени в работната, където е стартирана setup.
  • Ако някои от посочените за инсталация директории съществуват отпреди, старото им съдържание бива изтрито.
  • Може да бъде посочена целева директория, вложена в други, като целевата и евентуално някои от другите не съществуват към момента на инсталирането – тогава всички те се създават автоматично.
  • Можем да избегнем инсталиране на кой да е архив като вместо целева директория (задавана от клавиатурата или чрез файл) посочим * (знак звездичка). Това дава възможност например за частични промени на вече направена инсталация.

Използване на програмите

Ако инсталирането е направено чрез автоматичната процедура, Code::Blocks, SciTE и Vim могат да се стартират чрез препратките от работния плот. При ръчното инсталиране такива препратки могат да се направят допълнително. За целта трябва да се има предвид следното.

Файлът, с който се стартира Code::Blocks, е codeblocks.exe в директорията, където е направено разархивирането (по подразбиране c:\codeblocks). Тази програма следва да се стартира с командата codeblocks --personality=prounity (а не само codeblocks); ако не се направи така, може да се случи Code::Blocks да използва съвсем друга, неподходяща конфигурация, включително да използва друг компилатор, а така също да не намира нужните му програми.

Файловете, с които се стартират SciTE и Vim са съответно SciTE.exe и vim??\gvim.exe – в техните директории. (На мястото на ?? във vim?? стои код на съответната версия на редактора, напр. 73 – вж. съответната директория след завършване на инсталирането.)

Тъй като DJGPP/gcc и двата редатора, SciTE и Vim, често е удобно да бъдат стартирани от прозорец на DOS, това също е осигурено.

Установката на променливите DJGPP и PATH, чрез автоматичната процедура или ръчно както бе описано, прави компилаторите от DJGPP – gcc за C и gxx за C++ – достъпни отвсякъде (която и да е текущата директория) в DOS. За да компилирате и свържете програма на C, напр. prog.c, може да напишете

gcc -o prog.exe prog.c

За програма на C++, напр. prog.cpp, аналогично:

gxx -o prog.exe prog.cpp

По-удобно от горното е да ползвате предварително подготвените командни файлове за компилиране и свързване cl и clp – изпълнява се съответно

cl prog    (за програми на C)  и
clp prog   (за програми на C++).

Освен че съкращава писането, посоченият начин включва и режима на подробно съобщаване на грешки (-Wall), а за C++ – и съобразяване със стандарта от 2011 г. (-std=c++0x).

При задаване на стойност за променливата PATH както по-горе (на ръка или автоматично) редакторите SciTE и Vim също могат да бъдат стартирани в прозорец на DOS от която и да е текуща директория:

scite.lnk име-на-файл
gvim.lnk име-на-файл
gvim-easy.lnk име-на-файл  (за „лесния“ режим на Vim)

При това тази директория става текуща и за редактора, т.е. файловете, които той чете или създава, попадат именно в нея (освен ако изрично не се посочи друго място, разбира се).

Файловете scite.lnk, gvim.lnk и gvim-easy.lnk се намират в основната директория на DJGPP, напр. c:\djgpp. Настроени са да повикват съответно c:\scite\SciTE.exe, c:\vim\vim??\gvim.exe и c:\vim\vim??\gvim.exe -y (или същите програми отдругаде чрез автоматичното инсталиране) и имат зададена работна директория .\, т.е. текущата за DOS, която и да е тя. (Знаците ?? имат смисъл както по-горе.) Ако поставяте SciTE или Vim другаде, за да може да ги повиквате с команда от конзолен прозорец по описания начин, трябва или да използвате автоматичното инсталиране, или, съответно на местата на програмите, ръчно да промените съдържанието на файловете .lnk посредством техните Properties.

Бойко Банчев