Սկիզբ » Հեղինակ ՝ armenbadal

Հեղինակի հոդվածները: armenbadal

Ժապավեն

Գրել է 27 հոդված:

Բաժինները ` Ծրագրավորում , Ուսումնական նյութեր , Go , Lisp և Common Lisp , Կոմպիլյատորներ , Ծրագրավորման լեզուներ , Ալգորիթմներ , C և C++ , Java , Վերլուծություն , PROLOG , Տվյալների բազաներ , Python , Հումոր , Լինուքս/Յունիքս հրամաններ

Հետաքրքրությունները` C++ , go , Common Lisp , Java , AST , Tcl , LISP , parsing , Scanner , Parser , interpreter

Տն. աշխ. #3: Նախապատվություններով հերթ

| Փետրվար 14, 2013 |
Տն. աշխ. #3: Նախապատվություններով հերթ

Հերթի այն տեսակը, որտեղ տարրերը կարող են ավելացվել կամայականորեն, բայց կարող են հեռացվել միայն ըստ նրանց մեջ սահմանված կարգի, կոչվում է նախապատվություններով հերթ։ Օրինակ, եթե որպես հերթի մեջ ավելացվող տարրեր դիտարկվում են թվերը, իսկ թվերի մեջ սահմանված կարգ է հանդիսանում “<” (փոքր է) գործողությունը, ապա ամեն անգամ հերթից որևէ տարր պահանջելով կստանանք այնտեղ եղած տարրերից [...]

Կարդալ ամբողջը

Տնային աշխատանք #2։ Սիմվոլիկ դիֆերենցում

| Փետրվար 8, 2013 |
Տնային աշխատանք #2։ Սիմվոլիկ դիֆերենցում

Մի քանի օր առաջ թերթում էի Structure and Interpretation of Computer Programs գիրքը և աչքովս ընկավ մի օրինակ, որտեղ հաշվում էր պարզագույն մաթեմատիկական արտահայտությունների դիֆերենցիալը (2.3.2 Example: Symbolic Differentiation)։ Փորձեցի այն վերարտադրել Tcl լեզվով ու ահա թե ինչ ստացվեց։ Նախապես ասեմ, որ արտահայտություները սահմանափակված են միայն գումարում, հանում, բազմապատկում և բաժանում բինար գործողություններով, իսկ դիֆերենցիալը [...]

Կարդալ ամբողջը

Չփոփոխվող տվյալների կառուցվածքների մասին

| Հունվար 30, 2013 |
Չփոփոխվող տվյալների կառուցվածքների մասին

Շարունակելով իմ նախորդ գրառման բինար որոնման ծառերի թեման, ուզում եմ նույն այդ օրինակով ցույց տալ, թե ինչպես կարելի է ծրագրեր գրել օգտագործելով միայն չփոփոխվող (immutable) տվյալների կառուցվածքներ։ Այս անգամ բինար որոնման ծառերի վարքը ծրագրավորել եմ Scheme լեզվով (այն Lisp ընտանիքի թերևս ամենահայտնի ներկայացուցիչն է)։ Ծառը ներկայացված է ցուցակի տեսքով, որի առաջին տարրը արմատի արժեքն է, [...]

Կարդալ ամբողջը

C++11: Բինար որոնման ծառեր

| Հունվար 24, 2013 |
C++11: Բինար որոնման ծառեր

Այս գրառման մեջ ես ներկայացնում եմ բինար որոնման ծառի (binary search tree, BST) դասի ծրագրավորումը C++11 լեզվով։ Բինար որոնման ծառերն առանձնանում են նրանով, ամեն մի հանգույցի պարունակած արժեքը ավելի փոքր է քան նրա ձախ ենթածառի արժեքները և ավելի մեծ է, քան նրա աջ ենթածառի արժեքները։ Քանի որ բինար ծառի ամեն մի հանգույցը կարող է ունենալ [...]

Կարդալ ամբողջը

Common Lisp: Պարզ ու կատարյալ թվերի մասին

| Հունվար 20, 2013 |
Common Lisp: Պարզ ու կատարյալ թվերի մասին

«N թիվը կոչվում է պարզ, եթե այն բացի մեկից և իրենից այլ բաժանարարներ չունի։» Եթե թվի պարզությունը որոշող ֆունկցիան գրենք ըստ այս սահմանման, ապա պետք է որ ստանանք մոտավորապես հետևյալը․ (defun is-prime-a (num) (loop for k from 2 to (1- num) never (zerop (mod num k)))) Սա իմպերատիվ լուծում է, որտեղ ցիկլի կազմակերպմամբ բացահայտորեն նկարագրված [...]

Կարդալ ամբողջը

Tcl ցուցակների հետ աշխատանքը

| Հունվար 17, 2013 |
Tcl ցուցակների հետ աշխատանքը

Ցուցակները Tcl լեզվում կառուցվում են list պրոցեդուրայով։ Այն ստանում է արգումենտների ցուցակ, հաշվարկում է դրանք և արդյունքներից կառուցվում է նոր ցուցակ։ Օրինակ, set a [list [expr 1 + 2] 7 [expr 34 * 2]] պրոցեդուրայի կատարումը a փոփոխականին կվերագրի {3 7 68} ցուցակը։ Հաստատուններից ցուցակ կարելի է կառուցել դրանք պարզապես թվարկելով “{” և “}” փախագծերի [...]

Կարդալ ամբողջը

Եզակի անձնանունների մասին

| Հունվար 13, 2013 |
Եզակի անձնանունների մասին

Նախագահական ընտրությունների հետ կապված ՀՀ ոստիկանության կայքում տեղադրվել են Հայաստանի բոլոր ընտրատեղամասերի ընտրողների ցուցակները` ըստ ընտրատարածքների։ Ես աչքի էի անցկացնում իմ ընտրատեղամասի ցուցակները և հանդիպեցի բավականին շատ հազվադեպ հանդիպող անձնանունների։ Միանգամից ցանկություն առաջացավ տեսնել, թե է՛լ ինչպիսի եզակի անուններ կան, օրինակ այն ընտրատարածքում, որում ես գրանցված եմ։ Այս գրառման մեջ կներկայացնեմ, թե ինչպես «լուծեցի» այդ խնդիրը։

Կարդալ ամբողջը

C++11: Կապակցված ցուցակներ (II)

| Հունվար 9, 2013 |
C++11: Կապակցված ցուցակներ (II)

Ժամանակ առ ժամանակ ինձ մոտ ցանկություն է առաջանում ծանոթանալ C++ լեզվի C++11 ստանդարտի հնարավորություններին։ Այս գրառման մեջ ես երկկապակցված ցուցակի (doubly linked list) իրականացման օրինակով փորձում եմ ծանոթանալ լեզվի այնպիսի նորամուծություններին, ինչպիսիք են զրոյական ցուցիչի nullptr արժեքը, տիպի դուրսբերման auto եղանակը, արժեքավորող ցուցակով կոնստրուկտորները, մի կոնստրուկտորում մեկ այլ կոնստրուկտորի օգտագործումը, և այլն։ * * * [...]

Կարդալ ամբողջը

Tcl: Օբյեկտներին կողմնորոշված ծրագրավորման օրինակ

| Դեկտեմբեր 25, 2012 |
Tcl: Օբյեկտներին կողմնորոշված ծրագրավորման օրինակ

Մի քանի օր առաջ նորությունների կայքում կարդացի Tcl ծրագրավորման լեզվի 8.6 (Tcl 8.6) տարբերակի թողարկման մասին։ Հաղորդագրության մեջ, ի թիվս այլ կետերի, նշվում էր նաև, որ TclOO փաթեթը արդեն հանդիսանում է լեզվի բաղկացուցիչ մաս՝ որպես օբյեկտներին կողմնորոշված ծրագրավորման հիմնական միջոց։ Փորձեցի մաթեմատիկական արտահայտությունների օրինակով գրել մի կարճ ծրագիր՝ օգտագործելով հենց այդ TclOO ընդլայնումը։ Այս օրինակս ընդհանուր պատկերացում [...]

Կարդալ ամբողջը

Python: Բառարանի օգտագործումը

| Դեկտեմբեր 22, 2012 |
Python: Բառարանի օգտագործումը

Այս գրառման մեջ ես առաջարկում եմ ևս մի լուծում իմ նախորդ գրառման մեջ առաջարկված և Tcl լեզվով լուծված խնդրի համար։ Նորից հիշեցնեմ խնդրի ձևակերպումը. Տրված է որևէ գեղարվեստական ստեղծագործության տեքստ։ Կազմել տեքստում հանդիպող բառերի հաճախության բառարան, որտեղ ամեն մի բառին համապատասխանեցված է տեքստում նրա հանդիպելու քանակը։ Հաշվել տեքստի առանձին բառերի քանակի հարաբերությունը բոլոր բառերի քանակին։ [...]

Կարդալ ամբողջը

90