Մաթեմատիկական միջամտություն՝ ծրագրավորման աշխարհ

Ծրագրավորում և մաթեմատիկա

Lia
Picsart Academy
6 min readOct 1, 2021

--

Ծրագրավորումը, որոշակի կանոնների և սկզբունքների օգտագործմամբ, համակարգչին կամայական գործողության կատարման ուղղորդելու արվեստն է, որի արդյունքում ի հայտ են գալիս մի շարք օգտակար հավելվածներ, վեբ կայքեր, ծրագրային ապահովումներ, օպերացիոն համակարգեր և այլն։
Ինչպես գիտենք, գոյություն ունեն ծրագրեր գրելու տարբեր ոճեր, ինչն էլ ենթադրում է, որ ցանկացած խնդիր պահանջում է համապատասխան ոճով մոտեցում։
Ոճը բոլորիս հայտնի պարադիգման է (paradigm):
Ստորև ներկայացված են մի քանի մոտեցումներ, որոնց մասին կխոսենք առանձին՝

  • Օբյեկտ կողմնորոշված (Object oriented)
  • Ֆունկցիոնալ (Functional)
  • Տրամաբանական (Logical)
  • Ընթացակարգային (Imperative)

Oբյեկտ կողմնորոշված ծրագրավորումը թույլ է տալիս ունենալ օբյեկտներ, որոնցից յուրաքանչյուրն ունի իր մեթոդները: Ֆունկցիոնալ մոտեցումը թույլ է տալիս ծրագրեր գրել մաթեմատիկական հավասարումների կամ գործառույթների տեսքով, իսկ տրամաբանական ծրագրավորումը պարադիգմ է՝ հիմնված ավտոմատ թեորեմի ապացուցման վրա և հանդիսանում է մաթեմատիկայի առանձին մի հատված, որն էլ ուսումնասիրում է տեղեկատվության տրամաբանական սկզբունքները` տվյալ փաստերի և եզրակացության կանոնների հիմքով:
Ինչ վերաբերում է ընթացակարգային մոտեցմանը, այն թույլ է տալիս քայլ առ քայլ կառուցել ծրագիրը՝ իրականացնելով համաժամանակյա փոփոխություններ։ Թվարկված բոլոր մոտեցումներն այս կամ այն կերպով առնչվում են մաթեմատիկայի հետ։

Մաթեմատիկան սովորեցնում է օգտվել և կիրառել այնպիսի ալգորիթմներ, որոնք հրաշալի մեկնարկ են՝ տրամաբանության զարգացման համար։

Տարատեսակ խնդիրների օպտիմալ լուծումների վերաբերյալ փնտրտուքներում վերլուծական մտածողությունը (analytical thinking) այն գործիքներից է, որը հենց ձեռք է բերվում մաթեմատիկայի ուսումնասիրման արդյունքում։
Իսկ ի՞նչ է ալգորիթմը։
Այն գործողություն է, կանոնների համախումբ, որը թույլ է տալիս գտնել լուծումներ՝ մինչև անգամ ամենաբարդ խնդիրների համար։ Լուծելով մաթեմատիկական խնդիրներ, մենք զարգացնում ենք տրամաբանությունն ու վերլուծական մտածելակերպը, ինչն էլ օգնում է ամենատարբեր լուծումներ գտնել տվյալ խնդրի համար՝ բաժանելով այն փոքր մասերի և հաջորդաբար վերլուծելով։

Վերլուծական մտածելակերպը ենթադրում է հետևյալը՝

  • Հասկանալ խնդրի պահանջը,
  • Մանրամասնորեն դիտարկել հնարավոր բոլոր մանրամասները, որոնք կարող են նպաստել խնդրի լուծմանը,
  • Առկա տեղեկատվության հիման վրա գտնել խնդրի լուծման օպտիմալ տարբերակը։

Սկսել ինչ-որ բան անել՝ առանց թվարկված երեք կետերի շուրջ մտածելու, այդքան էլ նպատակահարմար չէ, քանի որ վտանգ է ստեղծում բախվել այնպիսի խնդիրների, որոնց ուղղման համար անհրաժեշտ կլինի սկսել սկզբից՝ կատարելով հիմնաքարային փոփոխություններ լուծման ողջ տրամաբանության մեջ։
Հաշվի առնելով այս ամենը, փորձենք հասկանալ, թե համակարգչային գիտության մեջ ինչպե՞ս և որտե՞ղ է այս ամենը կիրառվում։
Սկսենք խաղերի ծրագրավորումից (game development), որտեղ մաթեմատիկական գիտելիքների առկայությունը խիստ անհրաժեշտ է խաղեր ստեղծելիս` տարբեր ֆունկցիոնալ հնարավորությունների ապահովման գործում։
Այն բոլոր խաղերը, որտեղ հերոսները ակտիվ գործողություններ են իրականացնում՝ շարժվում են, վազում, պայքարում և այլն, պահանջում են մաթեմատիկական և եռանկյունաչափական այնպիսի գիտելիքներ, որոնք թույլ կտան կազմակերպել հերոսների ճիշտ շարժումները՝ ճիշտ հաշվարկներ կատարելու միջոցով։

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

AI-ի (Artificial Intelligence) և ML-ի (Machine Learning) նման առաջադեմ ծրագրավորման ոլորտներում առանց մաթեմատիկական գիտելիքների կողմնորոշվելը գրեթե անհնար է:
AI-ի և ML-ի մաթեմատիկական ընդլայնվող հատվածը վիճակագրությունն է։
Այս երկու ուղղություններում տվյալները հանդիսանում են առաջնային հիմք, իսկ թե ինչպես են այդ տվյալները վերլուծվում և սպառվում՝ դա արդեն վիճակագրություն է։
Այստեղ կարևոր են նաև մոդելավորման և կրիպտոգրաֆիայի մասին գիտելիքները։ Մոդելավորման, ինչպես նաև կրիպտոգրաֆիայի մեջ օգտագործվում են կամայական թվեր, որոնց գեներացման համար էլ հենց անհրաժեշտ է լինում գործի դնել մաթեմատիկական և տրամաբանական մտածելակերպը։
Ծրագրավորման ոլորտում շատ տարածված են նաև տրամաբանական խնդիրները՝ հատկապես հարցազրույցների ժամանակ։ Խոշորագույն այնպիսի ընկերություններ, ինչպիսիք են Google-ը, Microsoft-ը կամ Facebook-ը, աշխատակիցներ ընտրելիս հաճախ են դիմում նման հարցերի օգնությանը։
Ծանոթանանք դրանցից մի քանիսին՝

Խնդիր 1: Ինչու՞ են դիտահորերի ծածկերը շրջանաձև։

Լուծում։

Շրջանի կառուցվածք ունեցող դիտահորի մեջ կափարիչի ընկնելու հավանականությունը բավականին փոքր է` վերջինիս տրամագծի պատճառով։

Խնդիր 2։ Սեղանին ունեք արտաքնապես միանման դեղահաբերով լցված հինգ տարա, որոնցից յուրաքանչյուրի քաշը տասը գրամ է՝ բացառությամբ թունավոր դեղահաբերով լցված տարայի: Օգտվելով կշռման միայն մեկ հնարավորությունից , գտեք թունավոր հաբերով լցված տարան, եթե մեկ թունավոր հաբի զանգվածը 9 գրամ է։

Լուծում։

Առաջին քայլը, որը պետք է անել, տարաների համարակալումն է: Հաջորդիվ անհրաժեշտ է յուրաքանչյուր տարայից վերցնել տարբեր քանակի հաբեր (օրինակ` թիվ 1-ից` 1 հատ, թիվ 2-ից` 2 հատ և այդպես շարունակ) ու դնել դրանք կշեռքին. ենթադրենք կշեռքին պատկերվում է 141 թիվը։ Տասը գրամանոց բոլոր հաբերի առավելագույն քաշը կլինի 150 գրամ (բազմապատկեցինք հաբերի ընդհանուր թիվը 10-ով): Ստացված թվով կատարում ենք հետևյալ գործողությունը՝ 150–141=9 և պարզում մեկ թունավոր դեղահաբի քաշը: Արդյունքում ստացվում է, որ թունավոր հաբերը գտնվում են թիվ մեկ տարայում, քանի որ նշված համարակալմամբ տարայից վերցվել էր ընդամենը մեկ հաբ։

Խնդիր 3։ Ունենք երկու դատարկ դույլ, որոնցից մեկի ծավալը 5 լիտր է, մյուսինը՝ 3 լիտր: Ինչպե՞ս լցնել հինգ լիտրանոց դույլը չորս լիտր ջրով։

Լուծում։

Լուծումները բազմաթիվ են, դիտարկենք դրանցից մեկը։
Նախ, եկեք մեծ դույլն ամբողջովին լցնենք ջրով, որից հետո ընկղմենք դրա մեջ փոքր դույլը: Սա կօգնի մեզ դատարկել մեծ դույլը երեք լիտրով՝ թողնելով երկուսը: Անմիջապես հետո ստացված երկու լիտրը կլցնենք փոքր դույլի մեջ և կկրկնենք գործողությունը: Արդյունքում կրկին կստանանք երկու լիտր, որին էլ կավելացնենք երեք լիտրանոցում ստացված երկու լիտր ջուրը:

Խնդիր 4։ Ինչպե՞ս բաժանել տորթը ութը մասի՝ կտրելով ընդամենը երեք անգամ։

Լուծում։

Տորթը բաժանում ենք չորս հավասար մասերի երկու կտրումով, այնուհետև կատարում երրորդ հորիզոնական կտրումը անմիջապես տորթի մեջտեղից: Թեև տորթի տեսքը դրանից հետո այնքան էլ ախորժելի չի լինի, բայց խնդիրը կարող ենք համարել լուծված։

Նման խնդիրներ լուծելիս պետք է ուշադրություն դարձնել մի քանի կարևոր կետերի վրա: Առաջինը՝ փորձեք ուշադրություն դարձնել մանրուքներին՝ դիտարկելով հնարավոր բոլոր տարբերակները։ Պահանջեք նաև լրացուցիչ մանրամասներ, քանի որ որոշ հարցեր կազմվում են այն ակնկալիքով, որ թեկնածուն կտա պարզաբանող հարցեր (օրինակ՝ խնդիրը վերլուծելիս կամ տրամաբանությունը կառուցելիս)։
Մոտեցեք խնդրին տարբեր տեսանկյուններից:
Խուսափե՛ք անհարմար լռությունից՝ բարձրաձայն վերլուծելով սխալ տարբերակները։
Տրամաբանական խնդիրներ լուծելիս միշտ չէ, որ մաթեմատիկական բանաձևերի օգտագործումը նպատակահարմար է. ամեն ինչ կախված է այն պաշտոնից, որի համար դիմում եք։ Հիշե՛ք, որ խնդիր լուծելու համար Ձեզ հարկավոր չէ որոշակի ոլորտում խորը գիտելիքների իմացությունը:

Իսկ ինչպե՞ս զարգացնել տրամաբանությունը և արդյո՞ք հնարավոր է այն զարգացնել։
Ճկուն տրամաբանություն ունենալու կամ մաթեմատիկոս դառնալու համար մի քանի ժամը բավական չէ։ Բոլոր նրանք, որոնց հաջողվել է հասնել նկատելի հաջողությունների այս բնագավառում, հասել են դրան աշխատասիրության և լարված աշխատանքի շնորհիվ՝ ծախսելով երկար ժամանակ այս կամ այն խնդրի լուծման վրա։
Խուսափեք նաև պարապելու ընթացքում Ձեր և այլոց հմտությունների ու կարողությունների համեմատումից. չէ՞ որ առավել կարևոր է գիտելիքի վերջնական և լիարժեք ընկալումը, քան դա անելու ժամանակը։

Մի քանի խորհուրդ, որոնք կօգնեն Ձեզ հաստատուն քայլերով շարժվել առաջ՝

  • Պարապելու համար ստեղծեք այնպիսի միջավայր, որտեղ ոչինչ և ոչ ոք Ձեզ չի շեղի. անջատեք բջջայինները և մոռացեք սոցիալական ցանցերի մասին։
  • Պարապեք ամեն օր, ցանկացած հնարավորության դեպքում և ամենուր։ Միշտ հիշեք, որ ժամանակը շատ թանկ է՝ այն անարդյունավետ օգտագործելու համար։
    Վերացրեք անիմաստ սովորությունները, որոնք Ձեզնից միայն ժամանակ են խլում։
  • Պարապելիս մի մոռացեք նաև փոքրիկ ընդմիջումների մասին։ Խուսափեք ժամեր շարունակ մեկ առաջադրանքի շուրջ մտածելուց, քանի որ դա կարող է հանգեցնել սթրեսի: Ընդմիջումները կօգնեն հանգստանալ և մոտենալ խնդրին այլ տեսանկյունից։
  • Կարևոր են նաև գործնական պարապմունքները, հետևաբար աշխատեք մշտապես կրկնել այն ամենն, ինչը սովորել եք և, որքան հնարավոր է, շատ խնդիրներ լուծել։ Նոր բան սովորելուց հետո գրեք, փորձեք և մտածեք լուծման այլ տարբերակների շուրջ։ Եթե մաթեմատիկական որոշ թեմաներ Ձեզ բարդ են տրվում, ապա մի՛ հապաղեք սկսել Ձեր ուսումասիրությունը հենց այդտեղից։
  • Երբ որևէ բան շարունակաբար չի ստացվում կամ լուծումը սխալ է, սկսեք ամենասկզբից. պե՛տք չէ արդարացումներ փնտրել և հետաձգել լուծման նոր տարբերակների փնտրտուքը։ Նման իրավիճակներում կարևոր է ոչ միայն գտնել ճիշտ պատասխանը, այլև հասկանալ, թե ինչու չստացվեց նախորդ անգամ։
    Հիշե՛ք, որ ժամանակը, որը ծախսում եք, ապարդյուն չէ։

Code Republic Research and Development LaboratoryPicsart Academy-ի ուսումնահետազոտական և գիտական նախագծերի լաբորատորիան է։

Միացեք ընթացիկ նախագծերին կամ ղեկավարեք դրանց անցկացումը Code Republic Lab-ում, եթե՝

  • պատրաստ եք եռանդուն աշխատանքի որևէ նախագծի շուրջ նվազագույնը երկու ամիս շարունակ,
  • նախագծի կամ պրոդուկտի ղեկավար եք և ցանկանում եք կոփել հմտությունները՝ բարդ ինժեներական խնդիրների վրա աշխատելով,
  • լավ ծրագրավորող եք, որը ձանձրացել է յուրահատուկ խնդիրների ու նախագծերի պակասից,
  • կարծում եք, որ կկարողանաք ղեկավարել մի ամբողջ թիմ ու ցանկանում եք ստուգել Ձեր հմտությունները մեր ուսանողական խմբերից որևէ մեկի օգնությամբ։

Ընթացիկ նախագծերին միանալու կամ սեփական նախագիծն առաջարկելու համար գրեք learn@coderepublic.am էլեկտրոնային հասցեին։

--

--