Սպորտային ծրագրավորում

մինի|270пкс|Սպորտային ծրագրավորման բաց առաջնություն Յանդեքս․Ալգորիթմ, Օգոստոսի 22, 2013թ․
**Ծրագրավորման օլիմպիադա,** ինտելեկտուալ մրցում, որի ընթացքում լուծվում են բազմաթիվ խնդիրներ էլեկտրոնային հաշվիչ համակարգով՝ օգտագործելով տարբեր ծրագրավորման լեզուների ալգորիթմեր կամ ծրագրեր։ Սովորաբար մասնակիցներին բաժանում են խնդիրների կոմպլեկտ։ Խնդիրը համարվում է լուծված միայն այն ժամանակ, երբ ծրագիրը կարողանում է ճիշտ անցնել ժուրիի կազմած թեստը։ Մասնակիցներին թեստի պարունակությունը մնում է անհայտ։

Սպորտային ծրագրավորումը համարվում է գիտելիքի սպորտ, երբ  հավաքվում են աշխարհի տարբեր ծայրերից ծրագրավորողները ( կամ ապագա ծրագրավորողները ) և հիմնականում ինտերնետի միջոցով  անց է կացվում տարբեր մրցույթներ, քննարկումներ և գիտելիքի փոխանակումներ։ Սպորտային ծրագրավորումը ընդհանուր ծրագրավորման հիմնական ռեսուրսներից մեկն է, որը տրամադրում է մրցունակ ծրագրավորողներ տարբեր ընկերությունների և ստեղծում ավելի ակտիվ համակարգեր։ Այս ամենը ծագում է այն մտքից, որ սպորտային ծրագրավորումը հնարավորություն է տալիս ստեղծել առողջ մրցակցություն տարբեր կայքերի և մրցույթների միջոցով։

Ծրագրավորման օլիմպիադաները բաժանվում են երկու ձևաչափի։ Առաջին ձևաչափում ընդգրկված են թիմային օլիմպիադաները, այդ օլիմպիադային թիմին տրվում է ընդամենը մեկ համակարգիչ խնդիրները լուծելու համար։ Այդ մրցույթների անցկացման համար օգտագործվում են տարբեր մասնագիտացված ծրագրային համակարգեր։
Սպորտային ծրագրավորման խնդիրները հիմնականում լինում են 3 տեսակի՝ *ալգորիթմային***,** *օպտիմալային***,** *հետազոտական*․

**Ալգորիթմային* են կոչվում այն խնդիրները, որոնք առաջադրվում են մրցույթների ժամանակ և մասնակիցների կողմից լուծվում են լիովին կամ մասնակի։ Մասնակիցը պետք է գրի ալգորիթմներ՝ առաջադրված ծրագրավորման լեզուներով։ Սերվերին ուղարկելուց հետո, սերվերը աշխատեցնում է մասնակցի գրած ծրագիրը իր թեստերով, յուրաքանչյուր թեստի, ծրագրի կողմից ճիշտ արտածած պատասխանի համար մասնակիցը ստանում է համապատասխան միավոր։
**Օպտիմալային* են կոչվում այն ծավալուն խնդիրները, որոնց համար լիարժեք լուծում գոյություն չունի։ Գնահատվում է, թե որքան օպտիմալ է մասնակցի (ների) որոշումը տվյալ խնդիրը լուծելու համար։ Որոշ խնդիրների մեջ մասնակիցների որոշումները տվյալ խնդիրը լուծելու համար փոխկապակցված են (խաղեր)։
**Հետազոտական* են կոչվում այն խնդիրները, որոնք առաջադրվում են ինտերնետային մրցույթների ժամանակ։ Մասնակիցը պետք է գրի ծրագիր՝  առաջադրված ծրագրավորման լեզուներից մեկով և այն ուղարկի սերվերին, որը այնտեղ կոմպիլացվում է և ուղարկում է համապատասխան պատասխան։ Օրինակ՝ բոլոր առաջադրված թեստերի պատասխանները ճիշտ է արտածել՝ մասնակցի կողմից գրված ծրագիրը, թե թերի, կամ կարող են լինել կոմպիլացիոն սխալներ։

Ալգորիթմային և հետզոտական խնդիրները շատ նման են իրար, սակայն տարբերվում են գնահատման սիստեմներով։
Խնդիրների լուծման համար անհրաժեշտ է տիրապետել առնվազն 1 ծրագրավորման լեզվի։ Հիմնական օգտագործվող լեզուներն են՝ C, C++, Java, Python, Pascal,  #C։ Այնուամենայնիվ որոշ կայքեր թույլատրում են 20 և ավելի ծրագրավորման լեզուներ։ 
Համեմատաբար բարդ խնդիրների լուծման համար անհրաժեշտ է իմանալ նաև դասական ալգորիթմներ և խնդիրների մոտեցումներ։

## ACM International Collegiate Programming Contest

Ծրագրավորման միջազգային ուսանողական մրցույթը խոշորագույն միջազգային ուսանողական թիմային ծրագրավորման օլիմպիադա է։

ICPC-ն թիմային մրցույթ է։ Ներկայիս կանոններով՝ յուրաքանչյուր թիմ պետք է ունենա երեք ուսանող։ Մասնակիցները պետք է լինեն համալսարանի ուսանող, որոնց համալսարանական կրթությունը տևել է հինգ տարուց պակաս։ Ուսանողները, ովքեր երկու անգամ մասնակցել են Աշխարհի եզրափակչին կամ հինգ մարզային փուլերի, այլևս իրավունք չունեն մասնակցել մրցույթին։
Առաջնության գլխավոր հովանավորներից երկուսը '''Մայքրոսոֆթն''' ու **[[IBM|IBM-ն]]** են։ 2004 թվականին այդ մրցույթին մասնակցում էին 3150 թիմ 75 երկրներից։ Ռուսաստանի թիմը բազում անգամներ հաղթել է օլիմպիադայում։ Այդ ուսանողները հանդիպել են Ռուսաստանի դաշնության նախագահի հետ։

## Օլիմպադաներ ԽՍՀՄ-ում և Ռուսաստանում
### Դպրոցականների միջև
Առաջին օլիմպիադան ԽՍՀՄ-ում (ինֆորմատիկայի օլիմպիադա անվանմամբ) կայացավ դպրոցականների միջև 1998 թվականին Սվերդլովսկում։ Հետագայում ինֆորմատիկայի օլիմպիադաները դարձան համամիութենական (այնուհետև ԽՍՀՄ-ի փլուզումից հետո համառուսաստանյան) առարկայական օլիմպիադա։ Համառուսաստանյան ինֆորմատիկայի օլիմպիադան դպրոցականների միջև անցկացվեց 2011 թվականին Պերմում։

Սովորաբար դպրոցականների անհատական ձևաչափով առաջնությունները անցկացվում են մի քանի փուլերով՝ **շրջանային**, **քաղաքային**, **տարածաշրջանային** և **ազգային**։ Համառուսաստանյան օլիմպիադան հաղթողները իրավունք են ստանում մասնակցելու '''միջազգային ինֆորմատիկայի օլիմպիադային'''։

Բարձր արդյունքներ ցուցաբերելը որոշակի առավելություն կտա տվյալ ուսանողին բուհ ընդունվելուց։

### Դպրոցականների թիմային մրցույթ
Նաև անցկացվում են դպրոցականների թիմային առաջնություն, ուսանողների միջազգային օլիմպիադայի նույնատիպ օրենքներով։

Առավել հայտնի թիմային օլիմպիադան դա Համառուսաստանյան ինֆորմատիկայի թիմային օլիմպիադան է դպրոցականների միջև։ Այդ օլիմպիադան սովորաբար անցկացվում է դեկտեմբերի սկզբին, Ռուսաստանի տարբեր քաղաքներում։ Այդ օլիմպիադային մասնակցելու համար պետք է ընտրվել շրջանում, Մոսկվայից սովորաբար գալիս են 10-20 թիմ, իսկ Սանկտ-Պետերբուրգից համեմատ քիչ։

### Ուսանողներ
Ինֆորմատիկայի օլիմպիադա ուսանողների միջև ԽՍՀՄ-ում գլոբալ մասշտաբներով չի անցկացվել։ Սկսած 1996 թվականից ռուսական բուհերի ուսանողները սկսեցին մասնակցել մրցույթների, որոնք մտնում էին 
ուսանողների միջև թիմային ծրագրավորման համակարգի մեջ։

## Այլ հայտնի մրցույթներ
Վերջին ժամանակներում օգտագործվում է ավելի ընդհանուր տերմին  «սպորտային ծրագրավորում»։ Սպորտային ծրագրավորման մրցույթները կամ առաջնությունները ուղղակիորեն կապված չեն կրթական համակարգի հետ, այսինք այդ մրցումներին կամ առաջնություններին կարող են մասնակցել պրոֆեսիոնալ ծրագրավորողներ։ Սպորտային ծրագրավորման հայտնի մրցույթ է համարվում TopCoder ռեսուրսը, որտեղ պարբերաբար անցկացվում են տուրեր, որոնց շնորհիվ ձևավորվում է մասնակիցների վարկանիշը։ Նաև ամեն տարի անցկացվում է TopCoder Open մրցույթը։ Հետագայում հայտնվել է նաև ռուսական ռեսուրս Codeforces-ը, որը նույնպես անցկացնում է պարբերաբար տուրեր, որի արդյունքների հաշվին նույնպես ձևավորվում է մասնակիցների վարկանիշները։

Խոշորագույն ՏՏ ընկերությունները նույնպես անցկացնում են մրցույթներ ծրագրավորման ոլորտում, դրանց մեջ են մտնում՝ Google Code Jam-ը, Facebook Hacker Cup-ը և Russian Code Cup-ը։

## IOI

thumb|right|Ինֆորմատիկայի միջազգային օլիմպիադայի պատկերանիշը
Ստեղծվեցին մի շարք մրցույթներ, ինչպիսին է IOI – ը (ինֆորմատիկայի միջազգային օլիմպիադա ), որը առաջին անգամ տեղի է ունեցել 1989  թվականին Բուլղարիայում։ IOI – ը  դպրոցական անհատական օլիմպիադա է, որին մասնակցում են յուրաքանչյուր երկրից ամենաշատը 4 մասնակից։ Մրցույթը կազմված է 2 օրից և յուրաքանչյուր օր առաջադրվում է 3-ական խնդիր, որոնք մասնակիցը պետք է լուծի 5 ժամվա ընթացքում։ Յուրաքանչյուր տարի մրցույթը տեղի է ունենում տարբեր երկրներում և հնարավորություն է տալիս տարբերվել նախորդներից։ Խնդիրների բնույթը համեմատաբար տարբերվում է ICM-ICPC –ից իր հետաքրքրությամբ և բարդությամբ։

IOI-ին թույլատրվում է օգտագործել ծրագրավորման լեզուներից միայն C++, C, Pascal և Java: Բայց Pascal-ը կհեռացվի 2019-թվականին։

## Հայաստանի մասնակիցների արդյունքներն ԻՄՕ-ում
1996-2017 ժամանակաշրջանում հայաստանյան թիմերը արժանացել են 1 ոսկե, 4 արծաթե և 23 բրոնզե մեդալների։

## Մրցույթների համար նախատեսված կայքեր
### IZHO
Այս մրցույթը իրականացվում է IOI  -ի  նման ոճով, որին մասնակցում են նախկին Խորհրդային Միության պետությունների հիմնական մասը(նաև Հայաստանը)։ Մրցույթը անց է կացվում Ղազախստանում և մեկնարկել է 2005 թվականին։ Մրցույթի հաղթողներին տրվում են արտոնություններ հետագա կարիեիայի համար, ընդհուպ նաև համալսարանական արտոնություններ։

### CodeForces
Այս կայքը ստեղծվել է 2010 թվականին Ռուսաստանում և արդեն դարձել սպորտային ծրագրավորման հետ կապող ամենաէական փաստերից մեկը։ Կայքում անց է կացվում առցանց մրցույթներ և մասնակիցների ռեկորդակիր քանակը եղել է մինչև 9733 օգտատեր։ CodeForces-ը տիպիկ ալգորիթմային խնդիրներով հարուստ մրցույթների կայք է։

Կայքում կար ավելի քան 300000 օգտատեր 2015 թվականի տվյալներով, որոնց թիվը գնալով աճում է մինչև օրս։

Օգտատերերը բաժանված են 10 խմբերի, որոնց համար տեղի է ունենում 3 տարբեր մակարդակների մրցույթներ և մրցակցության հիմնական աղբյուրը, հանդիսանում է իրենց տեղը ընդհանուր օգտատերերի ցուցակում։

### TopCoder
Կայքը մեծ ընկերություն է ՝  նախատեսված դիզայներների, մշակողների, տվյալների փորցագետների և սպորտային ծրագրավորողների համար։ Կայքում օգտատերերի թիվը կազմում է մոտավորապես 1 200 000 (2018 - ի տվյալներով), որը ներկայումս համարվում է առաջատարը շուկայում։ Համակարգը ստեղծվել է 2001 թվականին Jack Hughes – ի  կողմից ԱՄՆ-ում։

## Վարժություններ
Ծրագրավորման դասական օլիմպիադաների ժամանակ մասնակիցներին առաջարկվում է մի շարք խնդիրներ, տարբեր բարդության։ Խնդրի լուծումը համարվում է ծրագիրը, որը գրված է թույլատրվող ծրագրավորման լեզուներից մեկի վրա։ Այդ ծրագիրը պետք է հստակ հաշվի տվյալ ձևաչափի ցանկացած մուտքի տվյալներ։ Եվ հստակ մշակել, խնդրի պահանջների համաձայն և դուրս բերել որոշակի ելքային հոսքով նշված տեսքով։

Բոլոր լուծումները ստուգվում է ավտոմատացված համակարգի շնորհիվ։ Այդ համակարգը մեկնարկում է տվյալ խնդրի բոլոր լուծումները, որոշ թեստերի լուծման համար։ Թեստերը լուծելուց հետո համակարգը դիտարկում է ելքային տվյալները և համեմատում է արդեն պատրաստի շաբլոնների հետ կամ կատարում է ավելի բարդ գործողություններ։

Օլիմպիադաների առանձնահատկությունը նրանումն է, որ պետք է խնդրին մոտենալ ավելի ստեղծագործ կերպով։ Այսինքն այդ մրցաշարերին հազվադեպ են հանդիպում խնդիրներ, որոնց մեջ պետք է օգտագործել միանման ալգորիթմներ կամ ծրագրեր։ Ավելի հաճախ խնդրի մեջ ներկայացվում է կարճ պատմություն իր սյուժեյով, հերոսներով և իրենց հակամարտությամբ։ Այսպիսով օլիմպիադայի խնդիրը լուծելու համար անհրաժեշտ է նախապես կազմել իրադարձությունների մաթեմատիկական մոդելը և արդեն ըստ դրա կառուցել համապատասխան ալգորիթմը կամ ծրագիրը։ Ալգորիթմը կարող է լինել հայտնի կամ կարող է ստեղծվել լրիվ նորը։ Դասական և շատ պարզ խնդրի օրինակ է A+B-ն։ Այդ խնդիրը սովորաբար տեղադրում են օլիմպիադաների փորձնական փուլում։

## Ծանոթագրություններ

Կատեգորիա:Ծրագրավորման մրցույթ