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

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

Ժապավեն

Հեղինակի կայքը

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

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

Հետաքրքրությունները` C++ , go , Common Lisp , LISP , Java , AST , Tcl , lambda , binary search tree , բինար որոնման ծառ , parsing

[գիրք] Զրույցներ C լեզվի մասին

| Ապրիլ 6, 2014 |
[գիրք] Զրույցներ C լեզվի մասին

Ես նախաձեռնել եմ այս զրույցների շարքը որպես C ծրագրավորման լեզուն ներկայացնող կենդանի գիրք։ Կենդանի այն իմաստով, որ զրույցների պարունակությունը երբեք վերջնական չի լինելու։ Տեքստն անընդհատ թարմացվելու է և լրացվելու է նոր նյութով։ Որպես առաջին քայլ, ես կպատմեմ ամենաանհրաժեշտ, ամենակարևոր նյութը ․․․

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

Scheme: Չփոփոխվող բինար ծառերի մասին

| Մարտ 12, 2014 |
Scheme: Չփոփոխվող բինար ծառերի մասին

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

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

Տն. աշխ. #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 եղանակը, արժեքավորող ցուցակով կոնստրուկտորները, մի կոնստրուկտորում մեկ այլ կոնստրուկտորի օգտագործումը, և այլն։ * * * […]

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

99