Na ovoj stranici su navedena precizno pravila državnog takmičenja informatičara Bosne i hercegovine BHOI, koja su gotovo u potpunosti identična pravilima na međunarodnim takmičenjima iz informatike.
Svi zadaci na BHOI takmičenjima su isključivo
programerski zadaci i težište je na dizajniranju ispravnog i efikasnog
algoritma.
Programski zadaci mogu se rješavati u bilo kojem ponuđenom programskom jeziku.
Ulazne i izlazne operacije ograničavaju se isključivo na najelementarnije
operacije (čitanje tekstualne datoteke i upis u tekstualnu datoteku), tako se
pažnja takmičara može usmjeriti na sam algoritam. Nikakve specifičnosti
programskih paketa nisu neophodne, niti se moraju koristiti. Slijedeće
specifičnosti se neće uzimati u obzir i ne preporučuje se njihovo korištenje:
Grafički izlaz;
Manipulacija sa mišem;
Napredna manipulacija sa datotekama;
Napredna numerička obrada;
Pozivi funkcija operativnog sistema.
Za programiranje se mogu koristiti programski jezici Pascal ili C/C++. Na svakom računaru će biti instalirana slijedeća integrirana razvojna okruženja za navedene programske jezike:
Borland Pascal 7.0
Borland C++ 3.0
Svi kompajleri će biti instalirani u potpunosti,
uključujući i help datoteke.
Programi se mogu pisati u bilo kojem ponuđenom programskom jeziku. Da bi se
omogućila automatska evaluacija (ocjenjivanje) programa, svi zadaci moraju biti
kompajlirani tako da na hard disku ostane izvršna verzija (EXE) programa.
Izvorni kod programa se ne pregleda!
Takmičari trebaju biti upoznati sa programskim paketom koji izaberu uključujući
i poznavanje biblioteka i modula koji se isporučuju uz kompajler. Neophodno je
vladati integriranim razvojnim okruženjem, a posebno ugrađenim editorom,
kompajlerom i debagerom. Dalje, potrebno je elementarno poznavanje MS DOS-a za
izvršavanje programa, mijenjanje radnog direktorija, i manipuliranje datotekama.
Za takmičenje se koriste Pentium PC računari, sa standardnom tastaturom, mišem i kolor monitorom. Takmičari će imati obezbijeđene diskete za pravljenje rezervnih kopija, bijeli papir i olovke. U takmičarsku sobu se ne smije unositi nikakva dodatna oprema, kao što su programske diskete, kalkulatori, uputstva, knjige i slično.
Takmičari dobijaju tri zadatka. Takmičenje traje 4 sata/časa (240 minuta) bez prekida. U slučaju da je plasman takmičara na kraju takmičenja izjednačen u smislu da se ne može odlučiti koji takmičari odlaze na međunarodno takmičenje, izbor se vrši na osnovu izrade rezervnog (četvrtog) zadatka, za koji takmičari imaju na raspolaganju 1 sat/čas.
Na hard disku svakog računara nalaziće se slijedeći radni direktorij u kome moraju biti rađeni zadaci:
C:\BHOI
Izvršna putanja (PATH) će biti postavljena tako da
se omogući pristup svim instaliranim kompajlerima za navedene programske jezike.
Jedine vanjske komunikacije koje su dozvoljene
tokom rada programa su čitanje ulaznih datoteka, pisanje izlaznih datoteka i,
eventualno, pozivi vanjskih funkcija u vanjskim bibliotekama, koje su
specificirane u opisu zadatka.
Posebno, nije dozvoljeno pisanje na ulazno-izlazne portove (poput serijskih
portova) ili pokušaj promjene sistemskog sata. Svaki pokušaj da se to uradi će
rezultirati diskvalifikacijom i dodjelom 0 bodova.
Svi programi treba da čitaju ulazne podatke
isključivo iz tekstualnih (ASCII) datoteka. Ovo je slučaj čak i ako program
treba samo jednu ulaznu vrijednost. Imena ulaznih datoteka su data u opisu
zadatka - nikakve izmjene imena nisu dozvoljene. Programi ne smiju čitati
nikakve podatke sa tastature.
Može se pretpostaviti da se ulazni podaci slažu sa opisom zadatka, tj. da će
format ulazne datoteke biti u skladu sa specifikacijama zadanim u tekstu
zadatka, tako da nije potrebno provjeravati ispravnost ulaznih podataka.
Ulazni podaci se sastoje od niza vrijednosti. Vrijednost je ili cijeli broj ili
neprazni niz znakova, kao što su slova ("a" do "z" i "A" do "Z") i cifre ("0" do
"9"). Vrijednosti su razdvojene ili jednim razmakom ili oznakom kraja linije
(end-of-line).
U pravilu, struktura ulazne datoteke je takva da ne morate brinuti o oznaci
kraja datoteke (end-of-file). Ipak, može biti izuzetaka, koji tada moraju biti
posebno navedeni u specifikacijama zadanim u tekstu zadatka.
Za svaki zadatak biće navedeni primjeri ulaznih datoteka, kako u opisu zadatka,
tako i u radnom direktoriju.
Izlazne podatke program treba da ispiše u
tekstualnu (ASCII) datoteku u skladu sa specifikacijama zadanim u opisu zadatka.
Imena izlaznih datoteka moraju biti potpuno ista kao što je naznačeno u tekstu
zadatka.
Nije potrebno da programi ispisuju bilo šta na ekran. U fazi razvoja programa
može se koristiti ispis na ekran (za potrebe debagiranja), ali prije nego što se
kreira konačna EXE verziju programa, potrebno je ukloniti sve ispise na ekran iz
programa. U svakom slučaju, bilo kakav eventualni ispis na ekran neće se
ocjenjivati.
Izlazni podaci se sastoje od niza vrijednosti. Vrijednost je ili cijeli broj ili
neprazni niz znakova, kao što su slova ("a" do "z" i "A" do "Z") i cifre ("0" do
"9"). Vrijednosti su razdvojene ili jednim razmakom ili oznakom kraja linije
(end-of-line).
Format izlazne datoteke mora biti tačno u skladu sa specifikacijama zadanim u
opisu zadatka.
Svi programi treba da se završavaju "normalno", a ne prijavom greške ili na neki drugi način koji ukazuje na nenormalan završetak. Dakle, C i C++ programeri treba da main funkciju obavezno završe sa iskazom
return 0;
Nije dozvoljeno main funkciju definirati kao funkciju bez povratne vrijednosti (tj. kao void funkciju).
Za vrijeme takmičenja svi takmičari će se nalaziti
u računarskom centru. Svi računari će već biti uključeni još prije ulaska
takmičara u računarski centar. Opisi takmičarskih zadataka će se nalaziti u
koverti ispod tastature. Svaki zadatak će biti odštampan na posebnom papiru, Za
svaki zadatak, na papiru će biti navedeno ime zadatka, detaljan opis zadatka,
opisi ulaznih i izlaznih datoteka, maksimalno vrijeme izvršavanja programa za
svaki test i maksimalni broj poena koji se mogu osvojiti za dati zadatak.
Zabranjeno je dirati koverte ili tastaturu prije nego se da znak za početak
takmičenja.
Pitanja je moguće postavljati isključivo u pisanoj formi, i to samo tokom prvih sat vremena. Pitanja smiju biti samo vezana za zadatke, i moraju biti iskazana u formi koja omogućava odgovor DA/NE tipa, stoga na svako od pitanja može biti ponuđen samo jedan od slijedeća tri odgovora:
Da;
Ne;
Bez komentara (tj. ne može se dati odgovor);
Takmičari mogu postavljati pitanja isključivo putem
obrazaca za pitanja, koji se mogu dobiti u računarskom centru.
Organizacioni komitet će odgovoriti na svako pitanje takmičara. Pošto
razmatranje pitanja može potrajati neko vrijeme, takmičar treba da nastavi rad
dok ne dobije odgovor. Takmičar neće biti uključen u diskusiju o pitanju.
Takmičari se za pomoć mogu obratiti i redarima u računarskom centru. Redari neće
davati nikakve odgovore koji se tiču zadataka, ali mogu dati obrasce za pitanja,
odvesti takmičara do toaleta, i, eventualno, pomoći kod tehničkih problema sa
računarom.
Svi takmičari će dobiti diskete za kreiranje rezervnih kopija (backup), što je poželjno raditi, s obzirom na eventualnu mogućnost problema sa računarom. Ako sistem padne sa nepopravljivim kvarom, takmičarima će biti nadoknađeno samo vrijeme koje je utrošeno za zamjenu računara.
Tokom takmičenja takmičari mogu tražiti da im se odštampa ASCII datoteka. Za tu svrhu potrebno je kopirati datoteku na poddirektorij A:\PRINT na radnoj disketi i dati disketu redaru. Disketa će biti vraćena zajedno sa odštampanom datotekom, dok će datoteka biti premještena u direktorij A:\TRASH poslije štampanja.
Svi takmičari će biti napomenuti o završetku takmičenja 15 i 5 minuta prije kraja takmičenja. Ovo vrijeme potrebno je iskoristiti za provjeru sljedećeg:
Da li su programi snimljeni pod ispravnim imenima u ispravnom direktoriju? (Nikakve druge datoteke niti direktoriji neće se razmatrati)
Da li su uklonjeno debagiranje u programima?
Da li je uklonjen izlaz na ekran?
Da li je kreirana izvršna (EXE) verzija programa korištenjem pravih opcija kompajlera?
Da li programi kreiraju izlazne datoteke u traženom formatu?
Na znak da je takmičenje završeno, takmičari moraju
odmah prestati sa radom. Tastaturu je po završetku potrebno staviti na monitor.
Računar se ne smije isključivati. Redari će napraviti kopije Vašeg rada.
Diskete se ne smiju iznositi iz takmičarske sobe. Koverte za zadacima mogu se
ponijeti sa sobom.
Ocjenjivanje počinje odmah nakon završetka
takmičenja. Ocjenjivač će pozvati takmičara i njegovog vođu da prisustvuju
ocjenjivanju na računaru na kojem je takmičar radio.
Ocjenjivanje programa vrši se na deset test primjera sa odgovarajućim ulaznim
podacima. Testiranje programa se sastoji od slijedećih koraka (ovi koraci se
izvode automatski pomoću posebnog programa za evaluaciju zadataka):
Takmičarov izvršni (EXE) program će biti kopiran u poseban ocjenjivački direktorij. Test podaci će biti kopirani u odgovarajuću testnu datoteku;
Izvršni program će biti pokrenut u ocjenjivačkom direktoriju bez ikakvih komandnih parametara.
Ako se program završava "normalno" (tj. bez grešaka i sa izlaznim statusom 0) u zadanom vremenu, tada se upoređuje izlaz koji je proizveo program sa unaprijed pripremljenim tačnim izlazima. U slučaju abnormalnog završetka programa, izlaz se ne provjerava.
Poeni dodijeljeni za svaki uspješno odrađeni testni primjer se sabiraju, čime se dobija konačni broj poena za taj zadatak (program).
Po završetku ocjenjivanja od vođe takmičara se zahtjeva da prihvati rezultate ili da argumentirano zahtjeva daljnji pregled. Vođi takmičara će biti uručena kopija diskete sa takmičarovim radom i korištenim test podacima.