Picsart Academy Library

Data Abstraction and Problem Solving with C++

F. M. Carrano, J. J. Prichard

Lia
Picsart Academy

--

Եթե Ձեզ համար էլ «ռեկուրսիա» և «աբստրակցիա» բառերը նման են գիշերային մղձավանջի, ապա այս գիրքը հենց Ձեզ համար է․այն կօգնի համոզվել, որ ամեն ինչ այդքան էլ սարսափելի չէ։

Գիրքը, որի մասին պատրաստվում ենք խոսել, կօգնի ուսանողներին համատեղել խնդիրների լուծման և ծրագրավորման տեխնիկաները՝ հավասարապես կարևորելով երկու գործընթացներն էլ, որոնք, ըստ էության, հենց կազմում են համակարգչային գիտնականի գործիքակազմը:

Գրքում խոսվում է ծրագրի մշակման վերլուծական մեթոդների մասին` օգտագործելով թեմատիկ, պարզ օրինակներ: Աբստրակցիան, ալգորիթմների և տվյալների կառուցվածքների աստիճանական ճշգրտումը և ռեկուրսիան այն հիմնական միջոցներն են, որոնք օգտագործվում են գրքի խնդիրները լուծելիս։
Գիրքը, որից ոգեշնչվել են Carrano-ն և Prichard-ը, պրոֆեսորներ Helman-ի և Veroff“Walls and Mirrors” աշխատությունն է՝ պատերի և հայելիների մասին իր անալոգիայով, որի օգտագործումն էլ գրքին առանձին կարևորություն տվեց՝ հեշտացնելով նյութի ներկայացումը և օգնելով ավելի լավ ընկալել ողջ ներկայացվող ինֆորմացիան։

Վերնագրում նշված «պատերն ու հայելիները» ներկայացնում են խնդիրների լուծման երկու հիմնական մեթոդներ. տվյալների աբստրակցիան մեկուսացնում և թաքցնում է մոդուլի իրականացման մանրամասները մնացած ծրագրից այնպես, ինչպես պատերն են մեկուսացնում և թաքցնում Ձեզ հետաքրքրասեր հարևաններից, իսկ ռեկուրսիան՝ սկզբնական խնդիրը նույն տիպի, բայց՝ ավելի փոքր չափերով խնդիրների նվազեցնելու միջոց է, ինչպես հայելիներն են նվազեցնում պատկերը` յուրաքանչյուր նոր արտացոլմամբ:

Գիրքը կօգնի սովորել օբյեկտ-կողմնորոշված ծրագրավորում, ծանոթանալ տվյալների աբստրակցիայի հիմունքներին, ինչպես նաև՝ խնդիրների լուծման ժամանակակից այլ մեթոդներին:

Այն նախատեսված է ընթերցողների համար, որոնք արդեն ծանոթ են C++ ծրագրավորման լեզվի հիմունքներին:
Գիրքը հասկանալու համար բավական է իմանալ if և switch պայմանի օպերատորների, ցիկլների՝ for, while և do, ֆունկցիաների և արգումենտների փոխանցման տարբերակների, զանգվածների, տողերի, ստրուկտուրաների և ֆայլերի մասին:

Իսկ նրանք, ովքեր դեռ ծանոթ չեն ռեկուրսիվ ֆունկցիաներին, բայց շատ են լսել դրանց մասին ու հասցրել են չսիրել, կարող են գտնել այդ ֆունկցիաների մանրամասն նկարագրությունը 2-րդ և 5-րդ գլուխներում, ինչպես նաև՝ ծանոթանալ կլասներին (1-ին, 3-րդ և 8-րդ գլուխներ), ժառանգմանը, վիրտուալ ֆունկցիաներին և template- ներին։
Այս ամենը սերտորեն փոխկապակցված է աբստրակտ տվյալների տիպերի (ATD) իրականացման հետ կլասների տեսքով, որտեղ շեշտը դրվում է հենց աբստրակցիայի, և ոչ՝ C ++ լեզվի առանձնահատկությունների վրա:
Հարկ է նշել, որ ամբողջ նյութը ներկայացված է օբյեկտ կողմնորոշված ծրագրավորման համատեքստում: Բացի այդ, գիրքը ներկայացնում է համընդհանուր մոդելավորման լեզվի (Unified Modeling Language) համառոտ ներածություն: Թեմաները և դրանց ներկայացման հերթականությունը կարող են ընտրվել Ձեր հայեցողությամբ:

Գլուխների միջև փոխադարձ կախվածությունները ներկայացված են ստորև՝

Գիրքը բաղկացած է երկու մասից՝

Մաս 1-ն ընդգրկում է ծրագրավորման և ծրագրային ապահովման մշակման հիմնական խնդիրները:

Հաջորդ գլուխը նկարագրում է ռեկուրսիան և ռեկուրսիվ մտածելու ունակության օգտակարությունը համակարգչային գիտնականների համար:
Գլուխ 3-ը ներկայացնում է աբստրակցիայի սկզբունքները և մանրամասն նկարագրում աբստրակտ տվյալների տիպերը (ATD): Այս գլուխում քննարկվում են C++ լեզվի կլասները, որոնք օգտագործվում են ADT-ների իրականացման համար:
Գլուխ 4-ում ներկայացված են ցուցիչները, կապակցված ցուցակները և դրանց դերը՝ աբստրակտ տվյալների տիպերի իրականացման գործում: Գլխում նկարագրվում են նաևtemplate կլասները, C++ Standard template գրադարանը (STL), կոնտեյներները և իտերատորները:

Մաս 2-ը ներկայացնում է խնդիրների լուծումներ՝ աբստրակտ տվյալների տիպերի օգտագործմամբ:

Այս հատվածում շարունակվում է աբստրակցիայի ուսումնասիրությունը՝ որպես խնդրի լուծման մեթոդ: Առաջին անգամ նկարագրվում են հիմնական աբստրակտ տվյալների տիպերը, այն է՝ stack, queue, binary tree, binary search tree, heap և queue with priorities:
Նշված տեսակներն իրականացվում են որպես կլասներ:

Գլուխ 8-ում ավելի մանրամասն խոսվում է կլասների, ժառանգման, template կլասների և իտերատորների մասին: Այս գլուխը ներկայացնում է նաև friend կլասները և վիրտուալ ֆունկցիաները: Գլուխ 9-ը նվիրված է ալգորիթմներին. վերլուծվում է որոնման և տեսակավորման մի քանի ալգորիթմների արդյունավետությունը՝ ներառյալ ռեկուրսիվ merge և quick sort-ը։ Երկրորդ մասը պարունակում է ավելի առաջադեմ թեմաներ, ինչպիսիք են՝ բալանսավորված որոնման ծառերը (2-3, 2-3-4, կարմիր-սև և AVL ծառեր) և հեշինգը:
Գրքի վերջում դիտարկվում են տվյալների պահպանման մեթոդները, նկարագրվում է merge sort-ը,ինչպես նաև՝ արտաքին հեշինգ և B-tree ինդեքսները: Այս որոնման ալգորիթմները ներքին հեշինգի սխեմաների և ավելի վաղ նկարագրված 2-3 ծառերի ընդհանրացումն են:

Այսպիսով, գիրքն օգնում է ուսանողներին սովորել ինտեգրել խնդիրների լուծման և ծրագրավորման հմտությունները՝ կենտրոնանալով մտածողության գործընթացների և մեթոդների վրա, որոնք օգտագործում են համակարգչային գիտնականները:

Հաճելի ընթերցում ենք մաղթում։

--

--